@react-fabric/data 1.0.0-beta.9 → 1.0.2
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 +59 -33
- package/dist/cjs/histogram/Histogram.js +41 -26
- package/dist/cjs/hooks/useFilteredList.js +100 -17
- package/dist/cjs/hooks/usePagination.js +29 -8
- package/dist/cjs/hooks/useSelectableList.js +30 -5
- package/dist/cjs/i18n/{ar.json.js → ar/data.json.js} +8 -1
- package/dist/cjs/i18n/{en.json.js → en/data.json.js} +8 -1
- package/dist/cjs/i18n/index.js +4 -4
- package/dist/cjs/index.js +30 -0
- package/dist/cjs/json/JsonViewer.js +80 -43
- package/dist/cjs/pagination/Pagination.js +24 -15
- package/dist/cjs/table/AddColumn.js +5 -5
- package/dist/cjs/table/BodyCell.js +20 -13
- package/dist/cjs/table/BodyRow.js +41 -28
- package/dist/cjs/table/CheckboxCell.js +10 -9
- package/dist/cjs/table/ColumnFilters.js +100 -0
- package/dist/cjs/table/EmptyCell.js +4 -4
- package/dist/cjs/table/HeaderCell.js +79 -53
- package/dist/cjs/table/HtmlTable.js +84 -0
- package/dist/cjs/table/{Context.js → Provider.js} +8 -10
- package/dist/cjs/table/Table.js +99 -33
- package/dist/cjs/{tree/types.js → table/context.js} +9 -5
- package/dist/cjs/table/types.js +29 -0
- package/dist/cjs/table/useResizer.js +10 -10
- package/dist/cjs/table/useTableColumns.js +4 -4
- package/dist/cjs/table/useVirtualTable.js +129 -22
- package/dist/cjs/tree/TreeNode.js +66 -46
- package/dist/cjs/tree/TreePanel.js +60 -24
- package/dist/cjs/tree/useTree.js +212 -47
- package/dist/cjs/tree/utils.js +63 -34
- package/dist/cjs/utils/getColor.js +58 -0
- package/dist/cjs/virtual/Gallery.js +119 -61
- package/dist/cjs/virtual/List.js +116 -55
- package/dist/cjs/virtual/Scroller.js +16 -8
- package/dist/esm/checklist/CheckList.js +61 -35
- package/dist/esm/histogram/Histogram.js +43 -28
- package/dist/esm/hooks/useFilteredList.js +101 -18
- package/dist/esm/hooks/usePagination.js +29 -8
- package/dist/esm/hooks/useSelectableList.js +30 -5
- package/dist/esm/i18n/{ar.json.js → ar/data.json.js} +8 -2
- package/dist/esm/i18n/{en.json.js → en/data.json.js} +8 -2
- package/dist/esm/i18n/index.js +2 -2
- package/dist/esm/index.js +31 -0
- package/dist/esm/json/JsonViewer.js +82 -45
- package/dist/esm/pagination/Pagination.js +25 -16
- package/dist/esm/table/AddColumn.js +6 -6
- package/dist/esm/table/BodyCell.js +21 -14
- package/dist/esm/table/BodyRow.js +41 -28
- package/dist/esm/table/CheckboxCell.js +11 -10
- package/dist/esm/table/ColumnFilters.js +100 -0
- package/dist/esm/table/EmptyCell.js +4 -4
- package/dist/esm/table/HeaderCell.js +80 -54
- package/dist/esm/table/HtmlTable.js +84 -0
- package/dist/esm/table/{Context.js → Provider.js} +11 -12
- package/dist/esm/table/Table.js +100 -34
- package/dist/esm/{tree/types.js → table/context.js} +8 -4
- package/dist/esm/table/types.js +29 -0
- package/dist/esm/table/useResizer.js +10 -10
- package/dist/esm/table/useTableColumns.js +4 -4
- package/dist/esm/table/useVirtualTable.js +131 -24
- package/dist/esm/tree/TreeNode.js +69 -49
- package/dist/esm/tree/TreePanel.js +62 -26
- package/dist/esm/tree/useTree.js +215 -50
- package/dist/esm/tree/utils.js +64 -35
- package/dist/esm/utils/getColor.js +58 -0
- package/dist/esm/virtual/Gallery.js +121 -63
- package/dist/esm/virtual/List.js +118 -57
- package/dist/esm/virtual/Scroller.js +17 -9
- package/dist/types/checklist/CheckList.d.ts +25 -6
- package/dist/types/histogram/Histogram.d.ts +28 -6
- package/dist/types/hooks/useFilteredList.d.ts +62 -5
- package/dist/types/hooks/usePagination.d.ts +18 -2
- package/dist/types/hooks/useSelectableList.d.ts +24 -1
- package/dist/types/index.d.ts +27 -0
- package/dist/types/json/JsonViewer.d.ts +23 -3
- package/dist/types/pagination/Pagination.d.ts +8 -2
- package/dist/types/table/AddColumn.d.ts +2 -2
- package/dist/types/table/BodyCell.d.ts +2 -2
- package/dist/types/table/BodyRow.d.ts +9 -9
- package/dist/types/table/CheckboxCell.d.ts +3 -3
- package/dist/types/table/ColumnFilters.d.ts +12 -0
- package/dist/types/table/EmptyCell.d.ts +1 -1
- package/dist/types/table/HeaderCell.d.ts +1 -1
- package/dist/types/table/HtmlTable.d.ts +21 -0
- package/dist/types/table/Provider.d.ts +2 -0
- package/dist/types/table/Table.d.ts +10 -1
- package/dist/types/table/context.d.ts +7 -0
- package/dist/types/table/types.d.ts +52 -10
- package/dist/types/table/useResizer.d.ts +1 -1
- package/dist/types/table/useTableColumns.d.ts +1 -1
- package/dist/types/table/useVirtualTable.d.ts +31 -12
- package/dist/types/tree/TreeNode.d.ts +1 -1
- package/dist/types/tree/TreePanel.d.ts +36 -1
- package/dist/types/tree/types.d.ts +75 -28
- package/dist/types/tree/useTree.d.ts +8 -12
- package/dist/types/tree/utils.d.ts +15 -8
- package/dist/types/utils/getColor.d.ts +43 -0
- package/dist/types/virtual/Gallery.d.ts +37 -6
- package/dist/types/virtual/List.d.ts +38 -6
- package/dist/types/virtual/Scroller.d.ts +1 -1
- package/package.json +17 -19
- package/src/checklist/CheckList.tsx +68 -71
- package/src/histogram/Histogram.tsx +47 -48
- package/src/hooks/useFilteredList.tsx +111 -28
- package/src/hooks/usePagination.tsx +39 -39
- package/src/hooks/useSelectableList.ts +45 -33
- package/src/i18n/{ar.json → ar/data.json} +5 -0
- package/src/i18n/{en.json → en/data.json} +5 -0
- package/src/i18n/index.ts +2 -2
- package/src/index.ts +23 -17
- package/src/json/JsonViewer.tsx +89 -120
- package/src/pagination/Pagination.tsx +104 -105
- package/src/table/AddColumn.tsx +6 -15
- package/src/table/BodyCell.tsx +27 -36
- package/src/table/BodyRow.tsx +36 -59
- package/src/table/CheckboxCell.tsx +12 -15
- package/src/table/ColumnFilters.tsx +93 -0
- package/src/table/EmptyCell.tsx +5 -18
- package/src/table/HeaderCell.tsx +72 -53
- package/src/table/HtmlTable.tsx +106 -0
- package/src/table/{Context.tsx → Provider.tsx} +11 -28
- package/src/table/Table.tsx +98 -83
- package/src/table/context.ts +33 -0
- package/src/table/types.ts +53 -27
- package/src/table/useResizer.ts +5 -9
- package/src/table/useTableColumns.ts +4 -6
- package/src/table/useVirtualTable.ts +136 -37
- package/src/tree/TreeNode.tsx +91 -86
- package/src/tree/TreePanel.tsx +87 -51
- package/src/tree/types.ts +85 -46
- package/src/tree/useTree.ts +210 -65
- package/src/tree/utils.ts +81 -62
- package/src/utils/getColor.ts +55 -0
- package/src/virtual/Gallery.tsx +129 -120
- package/src/virtual/List.tsx +124 -91
- package/src/virtual/Scroller.tsx +25 -9
- package/dist/cjs/histogram/Histogram.module.css +0 -1
- package/dist/esm/histogram/Histogram.module.css +0 -1
- package/dist/types/table/Context.d.ts +0 -8
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
|
-
import { getBadgeProps, Icon,
|
|
5
|
-
import
|
|
6
|
-
import { useMemo } from 'react';
|
|
7
|
-
import {
|
|
4
|
+
import { getBadgeProps, Icon, getIconProps, Badge } from '@react-fabric/core';
|
|
5
|
+
import { cn, isTrue, isString, isEmpty } from '@react-fabric/utilities';
|
|
6
|
+
import { useMemo, isValidElement } from 'react';
|
|
7
|
+
import { useTranslation } from 'react-i18next';
|
|
8
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
8
9
|
|
|
9
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; }
|
|
10
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t),
|
|
11
|
-
|
|
11
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
|
|
12
|
+
function TreeNode(_ref) {
|
|
12
13
|
var node = _ref.node,
|
|
13
14
|
noLines = _ref.noLines,
|
|
14
15
|
expanders = _ref.expanders,
|
|
@@ -17,35 +18,45 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
17
18
|
defaultLeafIcon = _ref.defaultLeafIcon,
|
|
18
19
|
defaultNodeIcon = _ref.defaultNodeIcon,
|
|
19
20
|
onToggle = _ref.onToggle,
|
|
21
|
+
onClick = _ref.onClick,
|
|
20
22
|
onSelect = _ref.onSelect,
|
|
21
23
|
onChecked = _ref.onChecked,
|
|
22
|
-
children = _ref.children
|
|
24
|
+
children = _ref.children,
|
|
25
|
+
leafClassName = _ref.leafClassName,
|
|
26
|
+
nodeClassName = _ref.nodeClassName;
|
|
27
|
+
var _useTranslation = useTranslation("data"),
|
|
28
|
+
t = _useTranslation.t;
|
|
23
29
|
var badgeProps = useMemo(function () {
|
|
24
30
|
return getBadgeProps(node.badge);
|
|
25
31
|
}, [node.badge]);
|
|
26
32
|
var filler = useMemo(function () {
|
|
27
|
-
return node.lines.slice(
|
|
28
|
-
return /*#__PURE__*/
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
return node.lines.slice(1).map(function (line, idx) {
|
|
34
|
+
return /*#__PURE__*/jsx("div", {
|
|
35
|
+
className: cn("flex-initial self-stretch flex items-center w-6 relative", !noLines && line > 0 && "before:absolute before:top-0 before:inset-s-[calc(7px)] before:bg-tint-200 before:min-h-[50%] before:w-0.5 before:scale-x-[.625]", !noLines && line !== 2 && "before:h-full"),
|
|
36
|
+
children: /*#__PURE__*/jsxs("svg", {
|
|
37
|
+
viewBox: "0 0 24 24",
|
|
38
|
+
className: "fill-tint-200 rtl:-scale-x-100",
|
|
39
|
+
children: [line === 0 && /*#__PURE__*/jsx("path", {
|
|
40
|
+
d: ""
|
|
41
|
+
}), !noLines && line === 1 && /*#__PURE__*/jsx("path", {
|
|
42
|
+
d: "M7.45 26.1v-28.2h1.1v28.2h-1.1z"
|
|
43
|
+
}), !noLines && line === 2 && /*#__PURE__*/jsx("path", {
|
|
44
|
+
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"
|
|
45
|
+
}), !noLines && line === 3 && /*#__PURE__*/jsx("path", {
|
|
46
|
+
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"
|
|
47
|
+
})]
|
|
48
|
+
})
|
|
40
49
|
}, idx);
|
|
41
50
|
});
|
|
42
51
|
}, [noLines, node.lines]);
|
|
43
52
|
var nodeIcon = useMemo(function () {
|
|
44
53
|
if (node.icon) return node.icon;
|
|
45
|
-
return
|
|
46
|
-
|
|
54
|
+
return {
|
|
55
|
+
icon: node.leaf ? defaultLeafIcon : defaultNodeIcon
|
|
56
|
+
};
|
|
57
|
+
}, [defaultLeafIcon, defaultNodeIcon, node.icon, node.leaf]);
|
|
47
58
|
var canCheck = useMemo(function () {
|
|
48
|
-
return checkable
|
|
59
|
+
return isTrue(checkable) || checkable === "leafOnly" && node.leaf;
|
|
49
60
|
}, [node.leaf, checkable]);
|
|
50
61
|
var canSelect = useMemo(function () {
|
|
51
62
|
return !node.disabled && (selectable === true || selectable === "leafOnly" && node.leaf);
|
|
@@ -53,43 +64,49 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
53
64
|
return /*#__PURE__*/jsxs("div", {
|
|
54
65
|
role: "treeitem",
|
|
55
66
|
"aria-selected": node.selected,
|
|
56
|
-
className: "flex flex-nowrap",
|
|
67
|
+
className: cn("flex flex-nowrap items-center"),
|
|
57
68
|
"data-testid": node["data-testid"],
|
|
58
69
|
"data-test-value": node["data-test-value"],
|
|
59
|
-
|
|
70
|
+
"data-id": node.id,
|
|
71
|
+
children: [filler, node.loading && /*#__PURE__*/jsx("div", {
|
|
60
72
|
className: "flex-initial w-6",
|
|
73
|
+
children: /*#__PURE__*/jsx(Icon, {
|
|
74
|
+
icon: "icon-[svg-spinners--eclipse]",
|
|
75
|
+
className: "text-muted"
|
|
76
|
+
})
|
|
77
|
+
}), !node.leaf && !node.childFiltered && !node.loading && /*#__PURE__*/jsx("button", {
|
|
78
|
+
type: "button",
|
|
79
|
+
className: "flex-initial w-6",
|
|
80
|
+
onClick: function onClick() {
|
|
81
|
+
return !node.leaf && onToggle(node.id);
|
|
82
|
+
},
|
|
61
83
|
children: /*#__PURE__*/jsx(Icon, {
|
|
62
84
|
rtlFlip: true,
|
|
63
|
-
onClick: function onClick() {
|
|
64
|
-
return !node.leaf && onToggle(node.id);
|
|
65
|
-
},
|
|
66
85
|
icon: node.open ? expanders[1] : expanders[0],
|
|
67
86
|
className: "text-tint-600 hover:text-primary-600"
|
|
68
87
|
})
|
|
69
|
-
}), canCheck && /*#__PURE__*/jsx("
|
|
88
|
+
}), canCheck && /*#__PURE__*/jsx("button", {
|
|
89
|
+
type: "button",
|
|
70
90
|
className: "flex-initial w-6",
|
|
91
|
+
onClick: function onClick() {
|
|
92
|
+
return !node.disabled && onChecked(node.id);
|
|
93
|
+
},
|
|
71
94
|
children: /*#__PURE__*/jsx(Icon, {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
},
|
|
75
|
-
icon: node.checked === 2 ? CoreIcons.checkboxInt : node.checked === 1 ? CoreIcons.checkboxOn : CoreIcons.checkboxOff,
|
|
76
|
-
className: classNames(node.disabled ? "text-muted" : "text-primary-500 hover:text-primary-600")
|
|
95
|
+
icon: node.checked === 2 ? "icon-[mdi--checkbox-intermediate]" : node.checked === 1 ? "icon-[mdi--checkbox-marked]" : "icon-[mdi--checkbox-blank-outline]",
|
|
96
|
+
className: cn(node.disabled ? "text-muted" : "text-primary-500 hover:text-primary-600")
|
|
77
97
|
})
|
|
78
|
-
}), /*#__PURE__*/jsxs("div", {
|
|
98
|
+
}), !node.empty && /*#__PURE__*/jsxs("div", {
|
|
79
99
|
role: "none",
|
|
80
|
-
className:
|
|
100
|
+
className: cn("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
101
|
"data-selected": node.selected,
|
|
82
|
-
onClick: function
|
|
83
|
-
|
|
102
|
+
onClick: node.disabled ? undefined : function (e) {
|
|
103
|
+
onClick === null || onClick === void 0 || onClick(node.id, node.data);
|
|
104
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-expressions
|
|
105
|
+
canSelect ? onSelect(node.id, e.shiftKey) : canCheck ? onChecked(node.id) : onToggle(node.id);
|
|
84
106
|
},
|
|
85
|
-
children: [nodeIcon && /*#__PURE__*/
|
|
86
|
-
className: "flex-content w-6",
|
|
87
|
-
children: /*#__PURE__*/jsx(Icon, {
|
|
88
|
-
icon: nodeIcon,
|
|
89
|
-
bg: node.iconBg,
|
|
90
|
-
color: node.iconColor,
|
|
91
|
-
rtlFlip: node.rtlFlip
|
|
92
|
-
})
|
|
107
|
+
children: [nodeIcon && /*#__PURE__*/jsxs("div", {
|
|
108
|
+
className: "flex-content max-w-6 me-1 self-center leading-none",
|
|
109
|
+
children: [/*#__PURE__*/isValidElement(nodeIcon) && nodeIcon, isString(nodeIcon) && /*#__PURE__*/jsx(Icon, _objectSpread({}, getIconProps(nodeIcon)))]
|
|
93
110
|
}), node.childSelected && !node.open && /*#__PURE__*/jsx("span", {
|
|
94
111
|
className: " flex-content text-primary-500",
|
|
95
112
|
children: "\u2022"
|
|
@@ -97,11 +114,14 @@ var TreeNode = function TreeNode(_ref) {
|
|
|
97
114
|
role: "none",
|
|
98
115
|
className: "flex-1 truncate",
|
|
99
116
|
children: children
|
|
100
|
-
}), node.badge && /*#__PURE__*/jsx(Badge, _objectSpread(_objectSpread({}, badgeProps), {}, {
|
|
101
|
-
className:
|
|
117
|
+
}), !isEmpty(node.badge) && /*#__PURE__*/jsx(Badge, _objectSpread(_objectSpread({}, badgeProps), {}, {
|
|
118
|
+
className: cn("me-1 self-center flex-content bg-opacity-50", badgeProps.className)
|
|
102
119
|
}))]
|
|
120
|
+
}), node.empty && /*#__PURE__*/jsx("div", {
|
|
121
|
+
className: "text-muted text-sm select-none",
|
|
122
|
+
children: t("tree.noItems")
|
|
103
123
|
})]
|
|
104
124
|
});
|
|
105
|
-
}
|
|
125
|
+
}
|
|
106
126
|
|
|
107
127
|
export { TreeNode };
|
|
@@ -2,19 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
4
4
|
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
5
|
-
import {
|
|
5
|
+
import { Layout, Header, Icon, ButtonGroup, Button } from '@react-fabric/core';
|
|
6
6
|
import { Search } from '@react-fabric/form';
|
|
7
7
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
8
|
-
import { useRef, useMemo, useImperativeHandle } from 'react';
|
|
8
|
+
import { useRef, useMemo, useImperativeHandle, useEffect } from 'react';
|
|
9
9
|
import { TreeNode } from './TreeNode.js';
|
|
10
|
-
import { iconExpandAll, iconCollapseAll } from './types.js';
|
|
11
10
|
import { useTree } from './useTree.js';
|
|
12
11
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
13
12
|
|
|
14
|
-
var _excluded = ["ref", "items", "selected", "checked", "checkable", "noLines", "
|
|
13
|
+
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
14
|
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),
|
|
17
|
-
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).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; }
|
|
16
|
+
function TreePanel(_ref) {
|
|
18
17
|
var _virtualItems$;
|
|
19
18
|
var ref = _ref.ref,
|
|
20
19
|
items = _ref.items,
|
|
@@ -22,33 +21,51 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
22
21
|
checked = _ref.checked,
|
|
23
22
|
checkable = _ref.checkable,
|
|
24
23
|
noLines = _ref.noLines,
|
|
25
|
-
renderer = _ref.renderer,
|
|
26
24
|
searchable = _ref.searchable,
|
|
27
25
|
selectable = _ref.selectable,
|
|
26
|
+
multiple = _ref.multiple,
|
|
28
27
|
matcher = _ref.matcher,
|
|
29
28
|
filterPlaceholder = _ref.filterPlaceholder,
|
|
30
29
|
defaultLeafIcon = _ref.defaultLeafIcon,
|
|
31
30
|
defaultNodeIcon = _ref.defaultNodeIcon,
|
|
32
31
|
_ref$expander = _ref.expander,
|
|
33
32
|
expander = _ref$expander === void 0 ? "box" : _ref$expander,
|
|
34
|
-
onChecked = _ref.onChecked
|
|
35
|
-
_ref.onLoad
|
|
36
|
-
|
|
33
|
+
onChecked = _ref.onChecked,
|
|
34
|
+
onLoad = _ref.onLoad,
|
|
35
|
+
onQuery = _ref.onQuery,
|
|
36
|
+
onSelect = _ref.onSelect,
|
|
37
|
+
onClick = _ref.onClick,
|
|
38
|
+
sorter = _ref.sorter,
|
|
39
|
+
makeLabel = _ref.makeLabel,
|
|
40
|
+
makeIcon = _ref.makeIcon,
|
|
41
|
+
defaultExpanded = _ref.defaultExpanded,
|
|
42
|
+
onExpandToggle = _ref.onExpandToggle,
|
|
43
|
+
leafClassName = _ref.leafClassName,
|
|
44
|
+
nodeClassName = _ref.nodeClassName,
|
|
37
45
|
aria = _objectWithoutProperties(_ref, _excluded);
|
|
38
46
|
var _useTree = useTree({
|
|
39
47
|
items: items,
|
|
40
48
|
checked: checked,
|
|
41
49
|
selected: selected,
|
|
50
|
+
multiple: multiple,
|
|
42
51
|
matcher: matcher,
|
|
52
|
+
sorter: sorter,
|
|
53
|
+
onLoad: onLoad,
|
|
54
|
+
onQuery: onQuery,
|
|
43
55
|
onSelect: onSelect,
|
|
44
|
-
onChecked: onChecked
|
|
56
|
+
onChecked: onChecked,
|
|
57
|
+
defaultExpanded: defaultExpanded,
|
|
58
|
+
onExpandToggle: onExpandToggle
|
|
45
59
|
}),
|
|
46
60
|
tree = _useTree.tree,
|
|
61
|
+
query = _useTree.query,
|
|
62
|
+
currentSelected = _useTree.selected,
|
|
47
63
|
toggleExpand = _useTree.toggleExpand,
|
|
48
64
|
toggleCheck = _useTree.toggleCheck,
|
|
49
65
|
expandAll = _useTree.expandAll,
|
|
50
66
|
collapseAll = _useTree.collapseAll,
|
|
51
|
-
|
|
67
|
+
expandAndLoad = _useTree.expandAndLoad,
|
|
68
|
+
_select = _useTree.select,
|
|
52
69
|
expand = _useTree.expand,
|
|
53
70
|
onFilter = _useTree.onFilter;
|
|
54
71
|
var scrollerRef = useRef(null);
|
|
@@ -63,32 +80,47 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
63
80
|
});
|
|
64
81
|
var virtualItems = virtualizer.getVirtualItems();
|
|
65
82
|
var expanders = useMemo(function () {
|
|
66
|
-
if (expander === "caret") return [
|
|
67
|
-
if (expander === "chevron") return [
|
|
68
|
-
if (expander === "folder") return [
|
|
69
|
-
return [
|
|
83
|
+
if (expander === "caret") return ["icon-[mdi--menu-right]", "icon-[mdi--menu-down]"];
|
|
84
|
+
if (expander === "chevron") return ["icon-[mdi--chevron-right]", "icon-[mdi--chevron-down]"];
|
|
85
|
+
if (expander === "folder") return ["icon-[mdi--folder-outline]", "icon-[mdi--folder-open-outline]"];
|
|
86
|
+
return ["icon-[mdi--plus-box-outline]", "icon-[mdi--minus-box-outline]"];
|
|
70
87
|
}, [expander]);
|
|
71
88
|
useImperativeHandle(ref, function () {
|
|
72
89
|
return {
|
|
73
90
|
open: function open(id) {
|
|
74
91
|
return expand(id);
|
|
75
92
|
},
|
|
93
|
+
openAndLoad: function openAndLoad(list) {
|
|
94
|
+
return expandAndLoad(list);
|
|
95
|
+
},
|
|
76
96
|
select: function select(id) {
|
|
77
|
-
return
|
|
97
|
+
return _select(id);
|
|
78
98
|
}
|
|
79
99
|
};
|
|
80
|
-
},
|
|
81
|
-
|
|
100
|
+
},
|
|
101
|
+
// eslint-disable-next-line @eslint-react/exhaustive-deps
|
|
102
|
+
[]);
|
|
103
|
+
useEffect(function () {
|
|
104
|
+
var index = tree.findIndex(function (n) {
|
|
105
|
+
return n.id === currentSelected;
|
|
106
|
+
});
|
|
107
|
+
virtualizer.scrollToIndex(index, {
|
|
108
|
+
align: "auto"
|
|
109
|
+
});
|
|
110
|
+
// eslint-disable-next-line @eslint-react/exhaustive-deps
|
|
111
|
+
}, [currentSelected]);
|
|
112
|
+
return /*#__PURE__*/jsxs(Layout, {
|
|
82
113
|
children: [/*#__PURE__*/jsxs(Header, {
|
|
83
114
|
flex: true,
|
|
84
115
|
className: "items-center p-px justify-end overflow-hidden border-b",
|
|
85
116
|
children: [searchable && /*#__PURE__*/jsx(Search, {
|
|
117
|
+
value: query,
|
|
86
118
|
onSearch: onFilter,
|
|
87
119
|
allowClear: true,
|
|
88
120
|
placeholder: filterPlaceholder,
|
|
89
121
|
noBorder: true,
|
|
90
122
|
decorateStart: /*#__PURE__*/jsx(Icon, {
|
|
91
|
-
icon:
|
|
123
|
+
icon: "icon-[mdi--filter-variant]",
|
|
92
124
|
className: "p-1"
|
|
93
125
|
})
|
|
94
126
|
}), /*#__PURE__*/jsxs(ButtonGroup, {
|
|
@@ -97,12 +129,12 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
97
129
|
children: [/*#__PURE__*/jsx(Button, {
|
|
98
130
|
size: "sm",
|
|
99
131
|
"aria-label": "expand all",
|
|
100
|
-
icon:
|
|
132
|
+
icon: "icon-[mdi--arrow-expand-vertical]",
|
|
101
133
|
onClick: expandAll
|
|
102
134
|
}), /*#__PURE__*/jsx(Button, {
|
|
103
135
|
size: "sm",
|
|
104
136
|
"aria-label": "collapse all",
|
|
105
|
-
icon:
|
|
137
|
+
icon: "icon-[mdi--arrow-collapse-vertical]",
|
|
106
138
|
onClick: collapseAll
|
|
107
139
|
})]
|
|
108
140
|
})]
|
|
@@ -120,6 +152,7 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
120
152
|
height: (_virtualItems$ = virtualItems[0]) === null || _virtualItems$ === void 0 ? void 0 : _virtualItems$.start
|
|
121
153
|
}
|
|
122
154
|
}), virtualItems.map(function (_ref2) {
|
|
155
|
+
var _makeIcon, _ref3;
|
|
123
156
|
var index = _ref2.index,
|
|
124
157
|
key = _ref2.key;
|
|
125
158
|
return /*#__PURE__*/jsx("div", {
|
|
@@ -132,17 +165,20 @@ var TreePanel = function TreePanel(_ref) {
|
|
|
132
165
|
checkable: checkable,
|
|
133
166
|
selectable: selectable,
|
|
134
167
|
defaultLeafIcon: defaultLeafIcon,
|
|
135
|
-
defaultNodeIcon: defaultNodeIcon,
|
|
168
|
+
defaultNodeIcon: (_makeIcon = makeIcon === null || makeIcon === void 0 ? void 0 : makeIcon(tree[index].data)) !== null && _makeIcon !== void 0 ? _makeIcon : defaultNodeIcon,
|
|
136
169
|
onToggle: toggleExpand,
|
|
137
170
|
onChecked: toggleCheck,
|
|
138
|
-
onSelect:
|
|
139
|
-
|
|
171
|
+
onSelect: _select,
|
|
172
|
+
onClick: onClick,
|
|
173
|
+
leafClassName: leafClassName,
|
|
174
|
+
nodeClassName: nodeClassName,
|
|
175
|
+
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
176
|
})
|
|
141
177
|
}, key);
|
|
142
178
|
})]
|
|
143
179
|
})
|
|
144
180
|
}))]
|
|
145
181
|
});
|
|
146
|
-
}
|
|
182
|
+
}
|
|
147
183
|
|
|
148
184
|
export { TreePanel };
|