@hi-ui/hiui 3.9.0-rc.2 → 3.9.0-rc.3

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.
@@ -422,30 +422,36 @@ var InternalSelect = function InternalSelect(props) {
422
422
  return shouldMatch || String(item[(0, _utils.transKeys)(fieldNames, 'id')] || '').includes(keyword) || String(item[(0, _utils.transKeys)(fieldNames, 'title')] || '').includes(keyword);
423
423
  }, [dataSource, searchable, keyword, filterOption]);
424
424
  var remoteSearch = (0, _react.useCallback)(function (keyword) {
425
- var _dataSource = typeof dataSource === 'function' ? dataSource(keyword) : dataSource;
426
-
427
- if (Array.isArray(_dataSource)) {
428
- setDropdownItems(_dataSource);
429
- return;
430
- } // 处理promise函数
431
-
432
-
433
- if (_dataSource.toString() === '[object Promise]') {
434
- setLoading(true);
435
-
436
- _dataSource.then(function (res) {
437
- setLoading(false);
438
- setDropdownItems(Array.isArray(res) ? res : []);
439
- }, function () {
440
- setLoading(false);
441
- setDropdownItems([]);
442
- });
425
+ if (typeof dataSource === 'function') {
426
+ var resultMayBePromise = dataSource(keyword);
427
+
428
+ if (resultMayBePromise !== undefined && resultMayBePromise !== null) {
429
+ if (resultMayBePromise.toString() === '[object Promise]') {
430
+ // 处理promise函数
431
+ setLoading(true);
432
+ resultMayBePromise.then(function (res) {
433
+ setLoading(false);
434
+
435
+ if (res !== undefined && res !== null) {
436
+ setDropdownItems(Array.isArray(res) ? res : []);
437
+ }
438
+ })["catch"](function () {
439
+ setLoading(false);
440
+ setDropdownItems([]);
441
+ });
442
+ } else {
443
+ setDropdownItems(Array.isArray(resultMayBePromise) ? resultMayBePromise : []);
444
+ }
445
+ }
443
446
 
444
447
  return;
445
- } // 调用接口
448
+ } // 支持传入对象
446
449
 
447
450
 
448
- HiRequestSearch(_dataSource, keyword);
451
+ if (dataSource) {
452
+ // 调用接口
453
+ HiRequestSearch(dataSource, keyword);
454
+ }
449
455
  }, [dataSource, keyword]);
450
456
  var HiRequestSearch = (0, _react.useCallback)(function (_dataSource, keyword) {
451
457
  var url = _dataSource.url,
@@ -85,7 +85,14 @@ var SelectTree = function SelectTree(_ref) {
85
85
  _ref$bordered = _ref.bordered,
86
86
  bordered = _ref$bordered === void 0 ? true : _ref$bordered,
87
87
  _ref$fieldNames = _ref.fieldNames,
88
- fieldNames = _ref$fieldNames === void 0 ? {} : _ref$fieldNames;
88
+ fieldNames = _ref$fieldNames === void 0 ? {} : _ref$fieldNames,
89
+ filterOption = _ref.filterOption;
90
+ var isCustomFilter = typeof filterOption === 'function';
91
+
92
+ if (isCustomFilter) {
93
+ searchMode = '';
94
+ }
95
+
89
96
  (0, _util.setFieldNames)(fieldNames || {});
90
97
 
91
98
  var _useState = (0, _react.useState)(false),
@@ -308,13 +315,13 @@ var SelectTree = function SelectTree(_ref) {
308
315
  }, []); // 过滤方法
309
316
 
310
317
  var searchTreeNode = function searchTreeNode(val) {
318
+ var _keyword = val;
311
319
  var matchNodes = [];
312
320
 
313
321
  var _data = _lodash["default"].cloneDeep(flattenData);
314
322
 
315
323
  if (searchMode === 'highlight') {
316
324
  var filterArr = _data.map(function (node) {
317
- var _keyword = val;
318
325
  _keyword = val.includes('[') ? _keyword.replace(/\[/gi, '\\[') : _keyword;
319
326
  _keyword = val.includes('(') ? _keyword.replace(/\(/gi, '\\(') : _keyword;
320
327
  _keyword = val.includes(')') ? _keyword.replace(/\)/gi, '\\)') : _keyword;
@@ -337,6 +344,18 @@ var SelectTree = function SelectTree(_ref) {
337
344
  });
338
345
  matchNodesSet = _lodash["default"].uniq(matchNodesSet);
339
346
  setExpandIds(matchNodesSet);
347
+ } else if (searchMode === '' && isCustomFilter) {
348
+ // filterOption 模式展开全部
349
+ var _matchNodesSet = [];
350
+
351
+ _data.forEach(function (mn) {
352
+ _matchNodesSet.push(mn[(0, _util.transKeys)(fieldNames, 'id')]);
353
+
354
+ _matchNodesSet = _matchNodesSet.concat(mn.ancestors || []);
355
+ });
356
+
357
+ _matchNodesSet = _lodash["default"].uniq(_matchNodesSet);
358
+ setExpandIds(_matchNodesSet);
340
359
  }
341
360
  };
342
361
  /**
@@ -543,7 +562,7 @@ var SelectTree = function SelectTree(_ref) {
543
562
 
544
563
  var debouncedFilterItems = _lodash["default"].debounce(changeEvents, 300);
545
564
 
546
- var searchable = searchMode === 'filter' || searchMode === 'highlight'; // 按键操作
565
+ var searchable = searchMode === 'filter' || searchMode === 'highlight' || isCustomFilter; // 按键操作
547
566
 
548
567
  var handleKeyDown = (0, _react.useCallback)(function (evt) {
549
568
  // space
@@ -741,7 +760,8 @@ var SelectTree = function SelectTree(_ref) {
741
760
  onClick: selectedEvents,
742
761
  emptyContent: emptyContent,
743
762
  isRemoteLoadData: !!dataSource,
744
- onCheck: checkedEvents
763
+ onCheck: checkedEvents,
764
+ filterOption: filterOption
745
765
  })))));
746
766
  };
747
767
 
@@ -67,7 +67,8 @@ var TreeNode = function TreeNode(_ref2) {
67
67
  isRemoteLoadData = _useContext.isRemoteLoadData,
68
68
  activeId = _useContext.activeId,
69
69
  searchMode = _useContext.searchMode,
70
- searchValue = _useContext.searchValue;
70
+ searchValue = _useContext.searchValue,
71
+ filterOption = _useContext.filterOption;
71
72
 
72
73
  var treeNodeRef = (0, _react.useRef)(null);
73
74
  var renderIndent = (0, _react.useCallback)(function () {
@@ -131,7 +132,14 @@ var TreeNode = function TreeNode(_ref2) {
131
132
  isLeaf = node.isLeaf;
132
133
  var childrenNodes = (0, _util.getChildrenNodes)(node, flttenData);
133
134
  var expand = expandIds.includes(node[(0, _util.transKeys)(fieldNames, 'id')]);
134
- var needFilter = searchMode === 'filter' ? !!(0, _util.matchAllDataFilterKey)(node, searchValue) : true;
135
+ var needFilter = true;
136
+
137
+ if (searchMode === 'filter') {
138
+ needFilter = !!(0, _util.matchAllDataFilterKey)(node, searchValue);
139
+ } else if (typeof filterOption === 'function') {
140
+ needFilter = filterOption(searchValue, node);
141
+ }
142
+
135
143
  return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, {
136
144
  key: index
137
145
  }, needFilter ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("li", {
@@ -39,6 +39,7 @@ var Tree = function Tree(_ref) {
39
39
  emptyContent = _ref.emptyContent,
40
40
  searchMode = _ref.searchMode,
41
41
  searchValue = _ref.searchValue,
42
+ filterOption = _ref.filterOption,
42
43
  fieldNames = _ref.fieldNames;
43
44
  return /*#__PURE__*/_react["default"].createElement(_context["default"].Provider, {
44
45
  value: {
@@ -57,7 +58,8 @@ var Tree = function Tree(_ref) {
57
58
  isRemoteLoadData: isRemoteLoadData,
58
59
  activeId: activeId,
59
60
  searchMode: searchMode,
60
- searchValue: searchValue
61
+ searchValue: searchValue,
62
+ filterOption: filterOption
61
63
  }
62
64
  }, /*#__PURE__*/_react["default"].createElement("div", {
63
65
  className: "".concat(PREFIX)
@@ -47,9 +47,9 @@ var CustomFilter = function CustomFilter(_ref) {
47
47
  }, /*#__PURE__*/_react["default"].createElement("div", {
48
48
  className: "".concat(prefix, "-icon"),
49
49
  ref: popperAttachEle,
50
- onClick: function onClick() {
50
+ onClick: filterDropdown ? function () {
51
51
  return setFilterDropdownVisible(true);
52
- }
52
+ } : undefined
53
53
  }, filterIcon), /*#__PURE__*/_react["default"].createElement(_popper["default"] // 弹出层的显示隐藏
54
54
  , {
55
55
  show: filterDropdownVisible // 依附的元素
@@ -39,6 +39,8 @@ var _utils = require("../../../select/utils");
39
39
 
40
40
  require("./style");
41
41
 
42
+ var _util = require("../../util");
43
+
42
44
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
43
45
 
44
46
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -106,7 +108,7 @@ var InternalSelect = function InternalSelect(props) {
106
108
  setCacheSelectItem = _useState8[1]; // value 有可能是0的情况
107
109
 
108
110
 
109
- var _useState9 = (0, _react.useState)((0, _utils.resetSelectedItems)(value === undefined ? defaultValue : value, _lodash["default"].cloneDeep(data), (0, _utils.transKeys)(fieldNames, 'id'))),
111
+ var _useState9 = (0, _react.useState)((0, _utils.resetSelectedItems)(value === undefined ? defaultValue : value, (0, _util.cloneArray)(data), (0, _utils.transKeys)(fieldNames, 'id'))),
110
112
  _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
111
113
  selectedItems = _useState10[0],
112
114
  setSelectedItems = _useState10[1];
@@ -145,7 +147,7 @@ var InternalSelect = function InternalSelect(props) {
145
147
  resetFocusedIndex();
146
148
  }, []);
147
149
  (0, _react.useEffect)(function () {
148
- historyData.current = _lodash["default"].cloneDeep(data);
150
+ historyData.current = (0, _util.cloneArray)(data);
149
151
  }, [data]);
150
152
  (0, _react.useEffect)(function () {
151
153
  if (dropdownItems && dropdownItems.length) {
@@ -174,7 +176,7 @@ var InternalSelect = function InternalSelect(props) {
174
176
  }
175
177
  }, [value, cacheSelectItem]);
176
178
  (0, _react.useEffect)(function () {
177
- var _data = _lodash["default"].cloneDeep(data);
179
+ var _data = (0, _util.cloneArray)(data);
178
180
 
179
181
  var selectedItems = (0, _utils.resetSelectedItems)(value === undefined ? defaultValue : value, historyData.current, (0, _utils.transKeys)(fieldNames, 'id')); // setSelectedItems(selectedItems)
180
182
 
@@ -213,7 +215,7 @@ var InternalSelect = function InternalSelect(props) {
213
215
  var onClickOption = (0, _react.useCallback)(function (item, index) {
214
216
  if (!item || item[(0, _utils.transKeys)(fieldNames, 'disabled')]) return;
215
217
 
216
- var _selectedItems = _lodash["default"].cloneDeep(selectedItems);
218
+ var _selectedItems = (0, _util.cloneArray)(selectedItems);
217
219
 
218
220
  if (type === 'multiple') {
219
221
  // 获取元素索引
@@ -73,7 +73,7 @@ var BodyTable = function BodyTable(_ref) {
73
73
  setDragRowKey = _useState4[1]; // **************** 获取colgroup
74
74
 
75
75
 
76
- var _columns = _lodash["default"].cloneDeep(columns);
76
+ var _columns = (0, _util.cloneArray)(columns);
77
77
 
78
78
  var depthArray = [];
79
79
  (0, _util.setDepth)(_columns, 0, depthArray);
@@ -19,8 +19,6 @@ var _react = _interopRequireWildcard(require("react"));
19
19
 
20
20
  var _reactResizable = require("react-resizable");
21
21
 
22
- var _lodash = _interopRequireDefault(require("lodash"));
23
-
24
22
  var _classnames = _interopRequireDefault(require("classnames"));
25
23
 
26
24
  var _context = _interopRequireDefault(require("./context"));
@@ -65,13 +63,13 @@ var HeaderTable = function HeaderTable(_ref) {
65
63
  sticky = _useContext.sticky,
66
64
  disabledData = _useContext.disabledData;
67
65
 
68
- var _useState = (0, _react.useState)(_lodash["default"].cloneDeep(propsData)),
66
+ var _useState = (0, _react.useState)((0, _util.cloneArray)(propsData)),
69
67
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
70
68
  data = _useState2[0],
71
69
  setDate = _useState2[1];
72
70
 
73
71
  (0, _react.useEffect)(function () {
74
- setDate(_lodash["default"].cloneDeep(propsData));
72
+ setDate((0, _util.cloneArray)(propsData));
75
73
  }, [propsData]);
76
74
 
77
75
  var _useState3 = (0, _react.useState)(false),
@@ -117,7 +115,7 @@ var HeaderTable = function HeaderTable(_ref) {
117
115
  if (rowSelection) {
118
116
  var _rowSelection$selecte = rowSelection.selectedRowKeys,
119
117
  selectedRowKeys = _rowSelection$selecte === void 0 ? [] : _rowSelection$selecte;
120
- var flattedData = (0, _util.flatTreeData)(_lodash["default"].cloneDeep(data));
118
+ var flattedData = (0, _util.flatTreeData)((0, _util.cloneArray)(data));
121
119
 
122
120
  var _isAllChecked = flattedData.filter(function (data) {
123
121
  return !disabledData.current.includes(data.key);
@@ -130,7 +128,7 @@ var HeaderTable = function HeaderTable(_ref) {
130
128
  }, [data, rowSelection]); // 处理列的深度
131
129
 
132
130
  (0, _react.useEffect)(function () {
133
- var _columns = _lodash["default"].cloneDeep(columns);
131
+ var _columns = (0, _util.cloneArray)(columns);
134
132
 
135
133
  var depthArray = [];
136
134
  (0, _util.setDepth)(_columns, 0, depthArray);
@@ -226,7 +224,7 @@ var HeaderTable = function HeaderTable(_ref) {
226
224
  indeterminate: !isAllChecked && rowSelection.selectedRowKeys.length > 0,
227
225
  onChange: function onChange(e) {
228
226
  if (rowSelection.onChange) {
229
- var targetItems = (0, _util.flatTreeData)(_lodash["default"].cloneDeep(data)).filter(function (data) {
227
+ var targetItems = (0, _util.flatTreeData)((0, _util.cloneArray)(data)).filter(function (data) {
230
228
  return !disabledData.current.includes(data.key);
231
229
  });
232
230
  var selectedIds = isAllChecked ? [] : targetItems.map(function (item) {
package/es/table/Row.js CHANGED
@@ -23,8 +23,6 @@ var _context = _interopRequireDefault(require("./context"));
23
23
 
24
24
  var _classnames = _interopRequireDefault(require("classnames"));
25
25
 
26
- var _lodash = _interopRequireDefault(require("lodash"));
27
-
28
26
  var _checkbox = _interopRequireDefault(require("../checkbox"));
29
27
 
30
28
  var _loading = _interopRequireDefault(require("../loading"));
@@ -92,7 +90,7 @@ var Row = function Row(_ref) {
92
90
  onDragStart = _useContext.onDragStart,
93
91
  dargInfo = _useContext.dargInfo;
94
92
 
95
- var _columns = _lodash["default"].cloneDeep(columns);
93
+ var _columns = (0, _util.cloneArray)(columns);
96
94
 
97
95
  var depthArray = [];
98
96
  (0, _util.setDepth)(_columns, 0, depthArray);
package/es/table/Table.js CHANGED
@@ -35,8 +35,6 @@ var _pagination2 = _interopRequireDefault(require("../pagination"));
35
35
 
36
36
  var _axios = _interopRequireDefault(require("axios"));
37
37
 
38
- var _lodash = _interopRequireDefault(require("lodash"));
39
-
40
38
  var _context2 = _interopRequireDefault(require("../context"));
41
39
 
42
40
  var _loading = _interopRequireDefault(require("../loading"));
@@ -142,9 +140,9 @@ var Table = function Table(_ref) {
142
140
  var _dargInfo$current = dargInfo.current,
143
141
  rowData = _dargInfo$current.rowData,
144
142
  dropRowData = _dargInfo$current.dropRowData;
145
- var restData = (0, _util.deleteRowByKey)(_lodash["default"].cloneDeep(data), dargInfo.current);
143
+ var restData = (0, _util.deleteRowByKey)((0, _util.cloneArray)(data), dargInfo.current);
146
144
 
147
- var _data = (0, _util.setRowByKey)(_lodash["default"].cloneDeep(restData), dargInfo.current);
145
+ var _data = (0, _util.setRowByKey)((0, _util.cloneArray)(restData), dargInfo.current);
148
146
 
149
147
  dargInfo.current = {};
150
148
  onDropEnd && onDropEnd(rowData, dropRowData, _data);
@@ -272,7 +270,7 @@ var Table = function Table(_ref) {
272
270
  var firstRowRef = (0, _react.useRef)(null); // 处理拉平数据
273
271
 
274
272
  (0, _react.useEffect)(function () {
275
- var _columns = _lodash["default"].cloneDeep(dataSource ? serverTableConfig.columns || [] : propsColumns);
273
+ var _columns = (0, _util.cloneArray)(dataSource ? serverTableConfig.columns || [] : propsColumns);
276
274
 
277
275
  var _flattedColumns = (0, _util.flatTreeData)(_columns);
278
276
 
@@ -302,7 +300,7 @@ var Table = function Table(_ref) {
302
300
  _columns[index] = currentItem;
303
301
  }); // 右侧
304
302
 
305
- var rightCloumns = _lodash["default"].cloneDeep(_columns.slice(rightFixedIndex || _flattedColumns.length).reverse());
303
+ var rightCloumns = (0, _util.cloneArray)(_columns.slice(rightFixedIndex || _flattedColumns.length).reverse());
306
304
 
307
305
  if (rightFixedIndex) {
308
306
  rightCloumns.forEach(function (currentItem, index) {
package/es/table/util.js CHANGED
@@ -6,12 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.getScrollBarSize = getScrollBarSize;
9
- exports.deleteRowByKey = exports.setRowByKey = exports.getMaskNums = exports.setColumnsDefaultWidth = exports.parseFixedcolumns = exports.getTotalOrEvgRowData = exports.checkNeedTotalOrEvg = exports.checkIsNumberStr = exports.getStyle = exports.getFixedDataByFixedColumn = exports.groupDataByDepth = exports.getLeafChildren = exports.setDepth = exports.flatTreeData = void 0;
9
+ exports.cloneArray = exports.deleteRowByKey = exports.setRowByKey = exports.getMaskNums = exports.setColumnsDefaultWidth = exports.parseFixedcolumns = exports.getTotalOrEvgRowData = exports.checkNeedTotalOrEvg = exports.checkIsNumberStr = exports.getStyle = exports.getFixedDataByFixedColumn = exports.groupDataByDepth = exports.getLeafChildren = exports.setDepth = exports.flatTreeData = void 0;
10
10
 
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
12
 
13
13
  var _lodash = _interopRequireDefault(require("lodash"));
14
14
 
15
+ var _treeUtils = require("@hi-ui/tree-utils");
16
+
15
17
  // 将树状数据拍平
16
18
  var flatTreeData = function flatTreeData() {
17
19
  var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
@@ -309,4 +311,10 @@ var deleteRowByKey = function deleteRowByKey(data, dragInfo) {
309
311
  return data;
310
312
  };
311
313
 
312
- exports.deleteRowByKey = deleteRowByKey;
314
+ exports.deleteRowByKey = deleteRowByKey;
315
+
316
+ var cloneArray = function cloneArray(arr) {
317
+ return Array.isArray(arr) ? (0, _treeUtils.cloneTree)(arr) : [];
318
+ };
319
+
320
+ exports.cloneArray = cloneArray;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/hiui",
3
- "version": "3.9.0-rc.2",
3
+ "version": "3.9.0-rc.3",
4
4
  "description": "HIUI for React",
5
5
  "scripts": {
6
6
  "test": "node_modules/.bin/standard && node_modules/.bin/stylelint --config .stylelintrc 'components/**/*.scss'",
@@ -54,6 +54,7 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@hi-ui/core-css": "^2.0.1",
57
+ "@hi-ui/tree-utils": "^4.0.0-alpha.3",
57
58
  "@hi-ui/use-latest": "~4.0.0-alpha.2",
58
59
  "@hi-ui/use-uncontrolled-state": "~4.0.0-alpha.5",
59
60
  "async-validator": "^3.3.0",