@lemon-fe/components 1.4.12 → 1.4.13-alpha.0

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.
@@ -16,6 +16,10 @@ interface Props<KeyType> extends Omit<TreeProps, 'onSelect' | 'selectedKeys' | '
16
16
  defaultExpandedKeys?: KeyType[];
17
17
  active?: boolean;
18
18
  height?: number | 'auto';
19
+ /**
20
+ * @description 是否在搜索时保留父节点
21
+ */
22
+ filterKeepParents?: boolean;
19
23
  }
20
24
  declare function SiderTreeTabs(props: {
21
25
  tabs: {
@@ -1,5 +1,5 @@
1
1
  var _excluded = ["tabs", "children"],
2
- _excluded2 = ["data", "showSearch", "placeholder", "onSelect", "filterNode", "operation", "header", "footer", "height"];
2
+ _excluded2 = ["data", "showSearch", "placeholder", "onSelect", "filterNode", "operation", "header", "footer", "height", "filterKeepParents"];
3
3
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
4
4
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
5
5
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -73,6 +73,7 @@ export default function SiderTree(props) {
73
73
  header = props.header,
74
74
  footer = props.footer,
75
75
  heightProp = props.height,
76
+ filterKeepParents = props.filterKeepParents,
76
77
  restProps = _objectWithoutProperties(props, _excluded2);
77
78
  var _useState = useState(''),
78
79
  _useState2 = _slicedToArray(_useState, 2),
@@ -87,14 +88,13 @@ export default function SiderTree(props) {
87
88
  SiderTreeLocale = _useLocaleReceiver2[0];
88
89
  var tree = useMemo(function () {
89
90
  var list = mData;
90
- if (keywords) {
91
- list = list.filter(function (item) {
92
- if (filterNode) {
93
- return filterNode(keywords, item);
94
- } else {
95
- return item.title.toString().toLowerCase().includes(keywords.toLowerCase());
96
- }
97
- });
91
+ var items = new Set();
92
+ var addedNodes = new Set();
93
+ var shouldInclude = function shouldInclude(item) {
94
+ return filterNode ? filterNode(keywords, item) : item.title.toString().includes(keywords);
95
+ };
96
+ if (keywords && !filterKeepParents) {
97
+ list = list.filter(shouldInclude);
98
98
  }
99
99
  var map = new Map(list.map(function (item) {
100
100
  return [item.key, {
@@ -102,30 +102,32 @@ export default function SiderTree(props) {
102
102
  parent: item.parent,
103
103
  icon: item.icon,
104
104
  data: item,
105
- title: /*#__PURE__*/React.createElement(TreeNodeTitle, {
106
- operation: operation,
107
- node: item,
108
- prefixCls: prefix()
109
- })
105
+ title: item.title
110
106
  }];
111
107
  }));
112
- var items = [];
113
- _toConsumableArray(map.values()).forEach(function (item) {
114
- var parent;
115
- if (item.parent !== undefined) {
116
- parent = map.get(item.parent);
108
+ list.forEach(function (item) {
109
+ if (keywords && !shouldInclude(item)) {
110
+ return;
117
111
  }
118
- if (!parent) {
119
- items.push(item);
120
- } else {
121
- if (parent.children === undefined) {
122
- parent.children = [];
112
+ var parent;
113
+ var node = map.get(item.key);
114
+ while (node) {
115
+ if (addedNodes.has(node)) {
116
+ return;
117
+ }
118
+ parent = node.parent ? map.get(node.parent) : undefined;
119
+ if (parent) {
120
+ parent.children = parent.children || [];
121
+ parent.children.push(node);
122
+ } else {
123
+ items.add(node);
123
124
  }
124
- parent.children.push(item);
125
+ addedNodes.add(node);
126
+ node = parent;
125
127
  }
126
128
  });
127
- return items;
128
- }, [mData, keywords]);
129
+ return _toConsumableArray(items);
130
+ }, [mData, keywords, filterKeepParents]);
129
131
  var handleChange = useDebounce(function (value) {
130
132
  setKeywords(value);
131
133
  }, 300);
@@ -141,14 +143,23 @@ export default function SiderTree(props) {
141
143
  prefix: /*#__PURE__*/React.createElement(Icons.Search, null)
142
144
  });
143
145
  }
146
+ var prefixCls = prefix();
144
147
  var bodyContent = tree.length <= 0 ? /*#__PURE__*/React.createElement("div", {
145
148
  className: prefix('empty')
146
149
  }, /*#__PURE__*/React.createElement(EmptyImage, null), /*#__PURE__*/React.createElement("div", null, SiderTreeLocale.noDataText)) : /*#__PURE__*/React.createElement(Tree, _extends({
150
+ // @ts-ignore antd Tree type error
147
151
  treeData: tree,
148
152
  itemHeight: 28,
149
153
  showLine: true,
150
154
  height: height,
151
- onSelect: function onSelect(_, info) {
155
+ titleRender: function titleRender(node) {
156
+ return /*#__PURE__*/React.createElement(TreeNodeTitle, {
157
+ operation: operation,
158
+ node: node.data,
159
+ prefixCls: prefixCls
160
+ });
161
+ },
162
+ onSelect: function onSelect(keys, info) {
152
163
  if (_onSelect) {
153
164
  _onSelect(info.node.data, info);
154
165
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemon-fe/components",
3
- "version": "1.4.12",
3
+ "version": "1.4.13-alpha.0",
4
4
  "description": "> TODO: description",
5
5
  "homepage": "",
6
6
  "license": "MIT",
@@ -58,5 +58,5 @@
58
58
  "publishConfig": {
59
59
  "registry": "https://registry.npmjs.org"
60
60
  },
61
- "gitHead": "3115130fcdb626142ac775355fc2ae79a79dd647"
61
+ "gitHead": "00899f57f0b55f7f3a06850c2d264a47ba675a44"
62
62
  }