@fe-free/core 2.8.0 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +2 -2
- package/src/tree/file_tree.tsx +4 -2
- package/src/tree/tree.tsx +17 -10
package/CHANGELOG.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fe-free/core",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"author": "",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"remark-gfm": "^4.0.1",
|
|
42
42
|
"vanilla-jsoneditor": "^0.23.1",
|
|
43
43
|
"zustand": "^4.5.4",
|
|
44
|
-
"@fe-free/tool": "2.8.
|
|
44
|
+
"@fe-free/tool": "2.8.1"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@ant-design/pro-components": "2.8.9",
|
package/src/tree/file_tree.tsx
CHANGED
|
@@ -141,14 +141,16 @@ function FileTree<D extends DataNode>(props: FileTreeProps<D>) {
|
|
|
141
141
|
|
|
142
142
|
const titleRender = useCallback(
|
|
143
143
|
(nodeData) => {
|
|
144
|
-
console.log(nodeData);
|
|
145
144
|
const hasMore = props.actions?.includes('update') || props.actions?.includes('delete');
|
|
146
145
|
return (
|
|
147
146
|
<div className="group flex gap-1">
|
|
148
147
|
{nodeData.children ? (
|
|
149
148
|
<FileCard.FileIcon isDirectory className="text-base" />
|
|
150
149
|
) : (
|
|
151
|
-
<FileCard.FileIcon
|
|
150
|
+
<FileCard.FileIcon
|
|
151
|
+
name={nodeData.originData?.title || nodeData.title}
|
|
152
|
+
className="text-base"
|
|
153
|
+
/>
|
|
152
154
|
)}
|
|
153
155
|
<div className="flex-1 truncate">{nodeData.title}</div>
|
|
154
156
|
<div className={classNames('text-desc', { 'group-hover:hidden': hasMore })}>
|
package/src/tree/tree.tsx
CHANGED
|
@@ -30,10 +30,10 @@ function useHighLightTreeData({ treeData, search }) {
|
|
|
30
30
|
|
|
31
31
|
const loop = (data) => {
|
|
32
32
|
return data.map((item) => {
|
|
33
|
-
const
|
|
34
|
-
const index =
|
|
35
|
-
const beforeStr =
|
|
36
|
-
const afterStr =
|
|
33
|
+
const originStrTitle = item.title as string;
|
|
34
|
+
const index = originStrTitle.indexOf(search);
|
|
35
|
+
const beforeStr = originStrTitle.substring(0, index);
|
|
36
|
+
const afterStr = originStrTitle.slice(index + search.length);
|
|
37
37
|
const title =
|
|
38
38
|
index > -1 ? (
|
|
39
39
|
<span key={item.key}>
|
|
@@ -42,7 +42,7 @@ function useHighLightTreeData({ treeData, search }) {
|
|
|
42
42
|
{afterStr}
|
|
43
43
|
</span>
|
|
44
44
|
) : (
|
|
45
|
-
<span key={item.key}>{
|
|
45
|
+
<span key={item.key}>{originStrTitle}</span>
|
|
46
46
|
);
|
|
47
47
|
|
|
48
48
|
if (item.children) {
|
|
@@ -52,6 +52,7 @@ function useHighLightTreeData({ treeData, search }) {
|
|
|
52
52
|
return {
|
|
53
53
|
...item,
|
|
54
54
|
title,
|
|
55
|
+
originData: item,
|
|
55
56
|
};
|
|
56
57
|
});
|
|
57
58
|
};
|
|
@@ -76,21 +77,23 @@ function useFilterTreeData({ treeData, search }) {
|
|
|
76
77
|
|
|
77
78
|
// 递归过滤树形数据
|
|
78
79
|
const filterTree = (nodes) => {
|
|
80
|
+
// 返回自己。 而非 [] undefined,因为要保留原数据格式。
|
|
79
81
|
if (!nodes || nodes.length === 0) {
|
|
80
|
-
return
|
|
82
|
+
return nodes;
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
return nodes
|
|
84
86
|
.map((node) => {
|
|
85
|
-
const children = node.children ? filterTree(node.children) : [];
|
|
86
87
|
const isMatch = isNodeMatch(node);
|
|
87
|
-
|
|
88
|
+
|
|
89
|
+
const children = filterTree(node.children);
|
|
90
|
+
const hasMatchingChildren = children?.length > 0;
|
|
88
91
|
|
|
89
92
|
// 如果当前节点匹配或者有匹配的子节点,则保留该节点
|
|
90
93
|
if (isMatch || hasMatchingChildren) {
|
|
91
94
|
return {
|
|
92
95
|
...node,
|
|
93
|
-
children
|
|
96
|
+
children,
|
|
94
97
|
};
|
|
95
98
|
}
|
|
96
99
|
|
|
@@ -105,7 +108,11 @@ function useFilterTreeData({ treeData, search }) {
|
|
|
105
108
|
|
|
106
109
|
function useIsAllLeaf(treeData?: DataNode[]) {
|
|
107
110
|
return useMemo(() => {
|
|
108
|
-
|
|
111
|
+
if (treeData) {
|
|
112
|
+
return !treeData.find((item) => item.children);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return true;
|
|
109
116
|
}, [treeData]);
|
|
110
117
|
}
|
|
111
118
|
|