acud 1.1.13 → 1.1.14

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.
@@ -242,6 +242,40 @@ var OptionList = function OptionList(_, ref) {
242
242
  triggerChange([].concat(_toConsumableArray(allDisabledCheckedKeys), _toConsumableArray(allAbleKeys)));
243
243
  }
244
244
  }, [selectAllStatus, allAbleKeys, allDisabledCheckedKeys]);
245
+ var formatContent = React.useCallback(function (content, searchValue, prefixCls) {
246
+ if (typeof content !== 'string' && typeof content !== 'number') {
247
+ return /*#__PURE__*/React.createElement(React.Fragment, null, content);
248
+ }
249
+ var contentStr = content.toString();
250
+ var lowerContent = contentStr.toLowerCase();
251
+ var lowerSearch = searchValue.toLowerCase().trim();
252
+ var searchStartIndex = lowerContent.indexOf(lowerSearch);
253
+ var len = lowerSearch.length;
254
+ // 存在搜索值不在content的情况,比如key与children不一致时
255
+ if (searchStartIndex === -1) {
256
+ return /*#__PURE__*/React.createElement(React.Fragment, null, content);
257
+ }
258
+ return /*#__PURE__*/React.createElement(React.Fragment, null, contentStr.slice(0, searchStartIndex), /*#__PURE__*/React.createElement("span", {
259
+ className: "".concat(prefixCls, "-search-highlight")
260
+ }, contentStr.slice(searchStartIndex, searchStartIndex + len)), contentStr.slice(searchStartIndex + len));
261
+ }, []);
262
+ var formatTreeData = React.useMemo(function () {
263
+ if ((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toString().trim()) === '') {
264
+ return memoTreeData;
265
+ }
266
+ var loopTree = function loopTree(arr) {
267
+ return arr.map(function (item) {
268
+ var newItem = _extends(_extends({}, item), {
269
+ title: formatContent(item.title, searchValue, prefixCls)
270
+ });
271
+ if (newItem.children && newItem.children.length) {
272
+ newItem.children = loopTree(newItem.children);
273
+ }
274
+ return newItem;
275
+ });
276
+ };
277
+ return loopTree(memoTreeData);
278
+ }, [memoTreeData, searchValue, prefixCls, formatContent]);
245
279
  // ========================== Render ==========================
246
280
  if (memoTreeData.length === 0) {
247
281
  return /*#__PURE__*/React.createElement("div", {
@@ -265,7 +299,7 @@ var OptionList = function OptionList(_, ref) {
265
299
  ref: treeRef,
266
300
  focusable: false,
267
301
  prefixCls: "".concat(prefixCls, "-tree"),
268
- treeData: memoTreeData,
302
+ treeData: formatTreeData,
269
303
  height: listHeight,
270
304
  itemHeight: listItemHeight,
271
305
  virtual: virtual !== false && dropdownMatchSelectWidth !== false,
@@ -252,6 +252,40 @@ var OptionList = function OptionList(_, ref) {
252
252
  triggerChange([].concat((0, _toConsumableArray2["default"])(allDisabledCheckedKeys), (0, _toConsumableArray2["default"])(allAbleKeys)));
253
253
  }
254
254
  }, [selectAllStatus, allAbleKeys, allDisabledCheckedKeys]);
255
+ var formatContent = React.useCallback(function (content, searchValue, prefixCls) {
256
+ if (typeof content !== 'string' && typeof content !== 'number') {
257
+ return /*#__PURE__*/React.createElement(React.Fragment, null, content);
258
+ }
259
+ var contentStr = content.toString();
260
+ var lowerContent = contentStr.toLowerCase();
261
+ var lowerSearch = searchValue.toLowerCase().trim();
262
+ var searchStartIndex = lowerContent.indexOf(lowerSearch);
263
+ var len = lowerSearch.length;
264
+ // 存在搜索值不在content的情况,比如key与children不一致时
265
+ if (searchStartIndex === -1) {
266
+ return /*#__PURE__*/React.createElement(React.Fragment, null, content);
267
+ }
268
+ return /*#__PURE__*/React.createElement(React.Fragment, null, contentStr.slice(0, searchStartIndex), /*#__PURE__*/React.createElement("span", {
269
+ className: "".concat(prefixCls, "-search-highlight")
270
+ }, contentStr.slice(searchStartIndex, searchStartIndex + len)), contentStr.slice(searchStartIndex + len));
271
+ }, []);
272
+ var formatTreeData = React.useMemo(function () {
273
+ if ((searchValue === null || searchValue === void 0 ? void 0 : searchValue.toString().trim()) === '') {
274
+ return memoTreeData;
275
+ }
276
+ var loopTree = function loopTree(arr) {
277
+ return arr.map(function (item) {
278
+ var newItem = (0, _extends2["default"])((0, _extends2["default"])({}, item), {
279
+ title: formatContent(item.title, searchValue, prefixCls)
280
+ });
281
+ if (newItem.children && newItem.children.length) {
282
+ newItem.children = loopTree(newItem.children);
283
+ }
284
+ return newItem;
285
+ });
286
+ };
287
+ return loopTree(memoTreeData);
288
+ }, [memoTreeData, searchValue, prefixCls, formatContent]);
255
289
  // ========================== Render ==========================
256
290
  if (memoTreeData.length === 0) {
257
291
  return /*#__PURE__*/React.createElement("div", {
@@ -275,7 +309,7 @@ var OptionList = function OptionList(_, ref) {
275
309
  ref: treeRef,
276
310
  focusable: false,
277
311
  prefixCls: "".concat(prefixCls, "-tree"),
278
- treeData: memoTreeData,
312
+ treeData: formatTreeData,
279
313
  height: listHeight,
280
314
  itemHeight: listItemHeight,
281
315
  virtual: virtual !== false && dropdownMatchSelectWidth !== false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "acud",
3
- "version": "1.1.13",
3
+ "version": "1.1.14",
4
4
  "description": "acg react 组件库",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",