@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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # @fe-free/core
2
2
 
3
+ ## 2.8.1
4
+
5
+ ### Patch Changes
6
+
7
+ - fix: tree
8
+ - @fe-free/tool@2.8.1
9
+
3
10
  ## 2.8.0
4
11
 
5
12
  ### Minor Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fe-free/core",
3
- "version": "2.8.0",
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.0"
44
+ "@fe-free/tool": "2.8.1"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@ant-design/pro-components": "2.8.9",
@@ -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 name={nodeData.title} className="text-base" />
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 strTitle = item.title as string;
34
- const index = strTitle.indexOf(search);
35
- const beforeStr = strTitle.substring(0, index);
36
- const afterStr = strTitle.slice(index + search.length);
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}>{strTitle}</span>
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
- const hasMatchingChildren = children.length > 0;
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: hasMatchingChildren ? children : undefined,
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
- return treeData?.every((item) => item.children === undefined) || true;
111
+ if (treeData) {
112
+ return !treeData.find((item) => item.children);
113
+ }
114
+
115
+ return true;
109
116
  }, [treeData]);
110
117
  }
111
118