@hi-ui/hiui 3.9.0-rc → 3.9.0-rc.12

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
@@ -3,13 +3,15 @@
3
3
  # 3.8.0-rc
4
4
 
5
5
  - 新增 `Table` 组件 `hiddenColKeys` 和 `onHiddenColKeysChange` 受控控制列显隐 [#1994](https://github.com/XiaoMi/hiui/issues/1994)
6
- - 新增 `Input` 组件的支持 placeholder 受控动态更新 [#1982](https://github.com/XiaoMi/hiui/issues/1982)
6
+ - 新增 `Input` 组件支持 placeholder 受控动态更新 [#1982](https://github.com/XiaoMi/hiui/issues/1982)
7
+ - 新增 `Table` 组件支持 checkAll 复选框右侧自定义操作按钮 [#2007](https://github.com/XiaoMi/hiui/issues/2007)
7
8
  - 修复 `Select` 组件高亮词搜索存在正则注入 [#1972](https://github.com/XiaoMi/hiui/issues/1972)
8
9
  - 修复 `Table` 组件 resizable 调节列宽功能失效 [#1970](https://github.com/XiaoMi/hiui/issues/1970)
9
10
  - 修复 `Input` 组件的 placeholder 没法动态更新 [#1970](https://github.com/XiaoMi/hiui/issues/1982)
10
11
  - 优化 `Dropdown` 组件 props 中的 data 消除副作用 [#1991](https://github.com/XiaoMi/hiui/issues/1991)
11
12
  - 修复 `TimePicker` 组件使用 minusStep 当点击 clear 后会再次自动回显值 [#1986](https://github.com/XiaoMi/hiui/issues/1986)
12
13
  - 修复 `Table` 组件 window 系统 `draggable=false` 禁用失效 [#1993](https://github.com/XiaoMi/hiui/issues/1993)
14
+ - 修复 `Popper` 组件 Popper DOM 节点位置移动时未同步进行位置计算 [#2011](https://github.com/XiaoMi/hiui/issues/2011)
13
15
 
14
16
  # 3.8.0
15
17
 
@@ -212,7 +212,7 @@ var Carousel = /*#__PURE__*/function (_Component) {
212
212
  });
213
213
  })), showPages && /*#__PURE__*/_react["default"].createElement("div", {
214
214
  className: "hi-carousel__pages"
215
- }, /*#__PURE__*/_react["default"].createElement("span", null, active, " / ", len)));
215
+ }, /*#__PURE__*/_react["default"].createElement("span", null, active + 1, " / ", len)));
216
216
  }
217
217
  }]);
218
218
  return Carousel;
@@ -177,6 +177,8 @@ var BasePicker = function BasePicker(_ref) {
177
177
  }
178
178
  };
179
179
 
180
+ var _weekOffset = weekOffset !== undefined ? weekOffset : locale === 'en-US' ? 0 : 1;
181
+
180
182
  var callback = function callback(dates) {
181
183
  var emitOnChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
182
184
 
@@ -185,12 +187,28 @@ var BasePicker = function BasePicker(_ref) {
185
187
  var returnDate = {};
186
188
  var returnDateStr = '';
187
189
 
188
- if (type.includes('range') || type === 'timeperiod' || type === 'week') {
190
+ var formatWeek = function formatWeek(disposeDate) {
191
+ if (!disposeDate) return '';
192
+ if (typeof format !== 'undefined') return disposeDate.format(iFormat);
193
+ var clone = (0, _utils.normalizeWeekOffset)(disposeDate, _weekOffset);
194
+ return clone.weekYear() + '-W' + clone.week();
195
+ };
196
+
197
+ if (type.includes('week')) {
198
+ returnDate = {
199
+ start: _dates[0].toDate(),
200
+ end: _dates[1].toDate()
201
+ };
202
+ returnDateStr = type.includes('range') ? {
203
+ start: formatWeek(_dates[0]),
204
+ end: formatWeek(_dates[1])
205
+ } : formatWeek(_dates[0]);
206
+ } else if (type.includes('range') || type === 'timeperiod') {
189
207
  returnDate = {
190
208
  start: _dates[0].toDate(),
191
209
  end: _dates[1].toDate()
192
210
  };
193
- returnDateStr = type === 'week' ? _dates[0].format(iFormat) : {
211
+ returnDateStr = {
194
212
  start: _dates[0].format(iFormat),
195
213
  end: _dates[1].format(iFormat)
196
214
  };
@@ -258,9 +276,6 @@ var BasePicker = function BasePicker(_ref) {
258
276
  }
259
277
  }, [propsOnSelect]);
260
278
  var popperCls = (0, _classnames["default"])('hi-datepicker__popper', type === 'date' && showTime && 'hi-datepicker__popper--time', type.includes('range') && 'hi-datepicker__popper--range', type === 'timeperiod' && 'hi-datepicker__popper--timeperiod', shortcuts && 'hi-datepicker__popper--shortcuts', isLarge && 'hi-datepicker__popper--large');
261
-
262
- var _weekOffset = weekOffset !== undefined ? weekOffset : locale === 'en-US' ? 0 : 1;
263
-
264
279
  return /*#__PURE__*/_react["default"].createElement(_context["default"].Provider, {
265
280
  value: _objectSpread(_objectSpread({}, otherPorps), {}, {
266
281
  locale: locale,
@@ -19,6 +19,8 @@ var _context = _interopRequireDefault(require("../context"));
19
19
 
20
20
  var _hooks = require("../hooks");
21
21
 
22
+ var _utils = require("../utils");
23
+
22
24
  var Input = function Input(_ref) {
23
25
  var date = _ref.date,
24
26
  onChange = _ref.onChange,
@@ -35,6 +37,7 @@ var Input = function Input(_ref) {
35
37
  minuteStep = _useContext.minuteStep,
36
38
  secondStep = _useContext.secondStep,
37
39
  inputReadOnly = _useContext.inputReadOnly,
40
+ weekOffset = _useContext.weekOffset,
38
41
  locale = _useContext.locale;
39
42
 
40
43
  var _useFormat = (0, _hooks.useFormat)({
@@ -57,14 +60,15 @@ var Input = function Input(_ref) {
57
60
  var vals = date && (0, _moment["default"])(date).format(iFormat);
58
61
 
59
62
  if (type.includes('week') && date) {
60
- var y = (0, _moment["default"])(date).weekYear();
61
-
62
- var _date = (0, _moment["default"])(date).year(y);
63
+ if (typeof format === 'undefined') {
64
+ var clone = (0, _utils.normalizeWeekOffset)(date, weekOffset);
65
+ vals = clone.weekYear() + '-W' + clone.week();
66
+ } else {
67
+ var y = (0, _moment["default"])(date).weekYear();
63
68
 
64
- vals = (0, _moment["default"])(_date).format(iFormat);
69
+ var _date = (0, _moment["default"])(date).year(y);
65
70
 
66
- if (locale === 'zh-CN' && typeof format === 'undefined') {
67
- vals = y + '-W' + (0, _moment["default"])(_date).week();
71
+ vals = (0, _moment["default"])(_date).format(iFormat);
68
72
  }
69
73
  }
70
74
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.parseValue = exports.getInRangeDate = exports.getFullTime = exports.getPRCDate = exports.showLargeCalendar = exports.getTimePeriodData = exports.parseRenderDates = exports.genNewDates = exports.getView = exports.deconstructDate = void 0;
8
+ exports.normalizeWeekOffset = exports.parseValue = exports.getInRangeDate = exports.getFullTime = exports.getPRCDate = exports.showLargeCalendar = exports.getTimePeriodData = exports.parseRenderDates = exports.genNewDates = exports.getView = exports.deconstructDate = void 0;
9
9
 
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
11
 
@@ -342,6 +342,15 @@ var parseValue = function parseValue(value, type, format, weekOffset) {
342
342
  }
343
343
 
344
344
  return [isValid ? _value : null];
345
+ }; // fix: 周计算 52 53 周偏差
346
+
347
+
348
+ exports.parseValue = parseValue;
349
+
350
+ var normalizeWeekOffset = function normalizeWeekOffset(date, weekOffset) {
351
+ var clone = date.clone();
352
+ clone.locale(weekOffset === 1 ? 'zh-CN' : 'en-US');
353
+ return clone;
345
354
  };
346
355
 
347
- exports.parseValue = parseValue;
356
+ exports.normalizeWeekOffset = normalizeWeekOffset;
package/es/form/Form.js CHANGED
@@ -164,11 +164,15 @@ var InternalForm = function InternalForm(props) {
164
164
 
165
165
  Object.keys(changeValues).forEach(function (changeValuesKey) {
166
166
  fields.forEach(function (filedItem) {
167
- var realField = filedItem.realField,
167
+ var field = filedItem.field,
168
+ realField = filedItem.realField,
168
169
  _type = filedItem._type,
169
- listname = filedItem.listname;
170
+ listname = filedItem.listname; // bugfix: https://github.com/XiaoMi/hiui/issues/2077
170
171
 
171
- if (realField === changeValuesKey && _type === 'list') {
172
+ if (_type === 'SchemaForm' && field === changeValuesKey) {
173
+ _changeValues[realField] = _transformValues[realField];
174
+ delete _changeValues[changeValuesKey];
175
+ } else if (realField === changeValuesKey && _type === 'list') {
172
176
  _changeValues[listname] = _transformValues[listname];
173
177
  delete _changeValues[changeValuesKey];
174
178
  }
package/es/form/Item.js CHANGED
@@ -407,7 +407,16 @@ var FormItem = function FormItem(props) {
407
407
  }
408
408
 
409
409
  if (_field && !isExist) {
410
- _value = initialValues && typeof initialValues[field] !== 'undefined' ? initialValues[_field] : _value;
410
+ // 初始化值
411
+ if (initialValues) {
412
+ // TODO: 如果 field 是数组,无法完成嵌套对象初始化值,感觉这块实现没想清楚,暂时维护现状,对用户不建议使用数组模式
413
+ // 这里逻辑判断 field,但是最终操作的是 _field,暂时不调整,暂不清楚是否存在破坏性更新
414
+ if (typeof initialValues[field] !== 'undefined') {
415
+ _value = initialValues[_field];
416
+ } else if (_type === 'SchemaForm' && typeof initialValues[realField] !== 'undefined') {
417
+ _value = initialValues[realField];
418
+ }
419
+ }
411
420
 
412
421
  if (_type === 'list' && listItemValue) {
413
422
  _value = Object.keys(listItemValue).includes(name) ? listItemValue[name] : listItemValue;
@@ -494,6 +503,7 @@ var FormItem = function FormItem(props) {
494
503
  var _labelWidth = labelWidth();
495
504
 
496
505
  var contentWidth = formProps.labelPlacement === 'top' ? '100%' : "calc(100% - ".concat(_labelWidth, "px)");
506
+ var alignItems = getItemPosition(contentPosition);
497
507
  return /*#__PURE__*/_react["default"].createElement("div", {
498
508
  className: (0, _classnames["default"])('hi-form-item', className, obj),
499
509
  style: style,
@@ -519,7 +529,7 @@ var FormItem = function FormItem(props) {
519
529
  }, /*#__PURE__*/_react["default"].createElement("div", {
520
530
  className: 'hi-form-item' + '__children',
521
531
  style: {
522
- alignItems: getItemPosition(contentPosition)
532
+ alignItems: alignItems
523
533
  }
524
534
  }, renderChildren()), /*#__PURE__*/_react["default"].createElement("div", {
525
535
  className: (0, _classnames["default"])('hi-form-item--msg__error', {
package/es/form/utils.js CHANGED
@@ -33,6 +33,7 @@ var transformValues = function transformValues(allvalue, fields) {
33
33
 
34
34
  sortfields.forEach(function (filedItem) {
35
35
  var realField = filedItem.realField,
36
+ field = filedItem.field,
36
37
  propsField = filedItem.propsField,
37
38
  _type = filedItem._type,
38
39
  listname = filedItem.listname;
@@ -57,13 +58,21 @@ var transformValues = function transformValues(allvalue, fields) {
57
58
  tranformValues[listname] = [allvalue[realField]];
58
59
  }
59
60
  } else {
61
+ var readField = realField; // bugfix: https://github.com/XiaoMi/hiui/issues/2077
62
+
63
+ if (_type === 'SchemaForm' && field) {
64
+ if (Object.keys(allvalue).includes(field)) {
65
+ readField = field;
66
+ }
67
+ }
68
+
60
69
  if (Array.isArray(propsField)) {
61
70
  var chainKeys = propsField.reduceRight(function (pre, next) {
62
71
  return (0, _defineProperty2["default"])({}, next, pre);
63
- }, allvalue[realField]);
72
+ }, allvalue[readField]);
64
73
  tranformValues = _lodash["default"].merge(tranformValues, chainKeys);
65
74
  } else {
66
- tranformValues = _lodash["default"].merge(tranformValues, (0, _defineProperty2["default"])({}, realField, allvalue[realField]));
75
+ tranformValues = _lodash["default"].merge(tranformValues, (0, _defineProperty2["default"])({}, realField, allvalue[readField]));
67
76
  }
68
77
  }
69
78
  });
package/es/input/Input.js CHANGED
@@ -11,6 +11,8 @@ exports["default"] = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
14
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
17
 
16
18
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
@@ -31,6 +33,10 @@ var _classnames = _interopRequireDefault(require("classnames"));
31
33
 
32
34
  var _util = require("./util");
33
35
 
36
+ 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; }
37
+
38
+ 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; }
39
+
34
40
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
35
41
 
36
42
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
@@ -202,8 +208,11 @@ var Input = /*#__PURE__*/function (_Component) {
202
208
 
203
209
  value = (0, _util.format)(value, type); // 保证 onChange 拿到的是值是最新的 formatted value
204
210
 
205
- e.target.value = value;
206
- _this2.props.onChange && _this2.props.onChange(e, valueTrue);
211
+ var event = Object.create(e);
212
+ event.target = _objectSpread(_objectSpread({}, e.target), {}, {
213
+ value: value
214
+ });
215
+ _this2.props.onChange && _this2.props.onChange(event, valueTrue);
207
216
  _this2.props.value === undefined && _this2.setState({
208
217
  value: value,
209
218
  valueTrue: valueTrue
@@ -302,6 +311,7 @@ var Input = /*#__PURE__*/function (_Component) {
302
311
  attrs = (0, _objectWithoutProperties2["default"])(_this$attrs2, ["defaultValue"]);
303
312
  var filterAttrs = (0, _util.filterObjProps)(attrs, ['locale', 'theme', 'suffixicon', 'suffix', 'prepend', 'prefixicon', 'prefix', 'localeDatas', 'append', 'innerRef', 'clearable']);
304
313
  return /*#__PURE__*/_react["default"].createElement("textarea", (0, _extends2["default"])({
314
+ ref: this._Input,
305
315
  className: "hi-input theme__".concat(theme, " ").concat(active ? 'active' : '', " ").concat(disabled ? 'disabled' : '', " ").concat(className || ''),
306
316
  style: this.props.style,
307
317
  autoComplete: "off",
@@ -151,6 +151,8 @@ var Overlay = function Overlay(props) {
151
151
  }
152
152
  });
153
153
  (0, _react.useEffect)(function () {
154
+ if (!show) return;
155
+
154
156
  if (state.popperRef) {
155
157
  var _offset = (0, _positionUtils.getOffset)(props, state);
156
158
 
@@ -158,7 +160,7 @@ var Overlay = function Overlay(props) {
158
160
  offset: _offset
159
161
  }));
160
162
  }
161
- }, [state.popperRef]); // DidMount
163
+ }, [show, state.popperRef]); // DidMount
162
164
 
163
165
  (0, _react.useEffect)(function () {
164
166
  var container = props.container;
@@ -73,6 +73,7 @@ var Search = function Search(_ref) {
73
73
  var optionsClick = (0, _react.useCallback)(function (value, item) {
74
74
  setInputVal(value);
75
75
  setDropdownShow(false);
76
+ _onChange && _onChange(value);
76
77
  onSearch && onSearch(value, item);
77
78
  }, [onSearch]);
78
79
  var moveFocus = (0, _react.useCallback)(function (direction) {
@@ -422,30 +422,29 @@ 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;
425
+ var resultMayBePromise = typeof dataSource === 'function' ? dataSource(keyword) : dataSource;
426
+ if ((0, _lodash.isNil)(resultMayBePromise)) return;
426
427
 
427
- if (Array.isArray(_dataSource)) {
428
- setDropdownItems(_dataSource);
428
+ if (Array.isArray(resultMayBePromise)) {
429
+ setDropdownItems(resultMayBePromise);
429
430
  return;
430
- } // 处理promise函数
431
-
431
+ }
432
432
 
433
- if (_dataSource.toString() === '[object Promise]') {
433
+ if (resultMayBePromise.toString() === '[object Promise]') {
434
434
  setLoading(true);
435
-
436
- _dataSource.then(function (res) {
435
+ resultMayBePromise.then(function (res) {
437
436
  setLoading(false);
437
+ if ((0, _lodash.isNil)(res)) return;
438
438
  setDropdownItems(Array.isArray(res) ? res : []);
439
439
  }, function () {
440
440
  setLoading(false);
441
441
  setDropdownItems([]);
442
442
  });
443
-
444
443
  return;
445
- } // 调用接口
444
+ } // 传入对象, 调用接口
446
445
 
447
446
 
448
- HiRequestSearch(_dataSource, keyword);
447
+ HiRequestSearch(resultMayBePromise, keyword);
449
448
  }, [dataSource, keyword]);
450
449
  var HiRequestSearch = (0, _react.useCallback)(function (_dataSource, keyword) {
451
450
  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
  // 获取元素索引
@@ -32,6 +32,7 @@ var BodyTable = function BodyTable(_ref) {
32
32
  emptyContent = _ref.emptyContent;
33
33
 
34
34
  var _useContext = (0, _react.useContext)(_context["default"]),
35
+ checkboxColWidth = _useContext.checkboxColWidth,
35
36
  bordered = _useContext.bordered,
36
37
  _useContext$data = _useContext.data,
37
38
  data = _useContext$data === void 0 ? [] : _useContext$data,
@@ -72,7 +73,7 @@ var BodyTable = function BodyTable(_ref) {
72
73
  setDragRowKey = _useState4[1]; // **************** 获取colgroup
73
74
 
74
75
 
75
- var _columns = _lodash["default"].cloneDeep(columns);
76
+ var _columns = (0, _util.cloneArray)(columns);
76
77
 
77
78
  var depthArray = [];
78
79
  (0, _util.setDepth)(_columns, 0, depthArray);
@@ -238,7 +239,7 @@ var BodyTable = function BodyTable(_ref) {
238
239
  }, /*#__PURE__*/_react["default"].createElement("table", {
239
240
  ref: tableRef
240
241
  }, /*#__PURE__*/_react["default"].createElement("colgroup", null, columnsgroup.map(function (c, index) {
241
- var width = c === 'checkbox' ? 50 : c.width;
242
+ var width = c === 'checkbox' ? checkboxColWidth : c.width;
242
243
  return /*#__PURE__*/_react["default"].createElement("col", {
243
244
  key: index,
244
245
  className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, "".concat(prefix, "__col__hover--highlight"), showColHighlight && hoverColIndex === c.dataKey)),
package/es/table/Cell.js CHANGED
@@ -55,7 +55,8 @@ var Cell = function Cell(_ref) {
55
55
  loadChildren = _useContext.loadChildren,
56
56
  hoverColIndex = _useContext.hoverColIndex,
57
57
  setHoverColIndex = _useContext.setHoverColIndex,
58
- showColHighlight = _useContext.showColHighlight;
58
+ showColHighlight = _useContext.showColHighlight,
59
+ cellRender = _useContext.cellRender;
59
60
 
60
61
  var _useState = (0, _react.useState)(false),
61
62
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
@@ -63,7 +64,14 @@ var Cell = function Cell(_ref) {
63
64
  setLoading = _useState2[1]; // 处理自定义 render 或者合并单元格情况
64
65
 
65
66
 
66
- var cellContent = column.render ? column.render(allRowData[column.dataKey], allRowData, rowIndex, column.dataKey) : allRowData[column.dataKey];
67
+ var cellContent = allRowData[column.dataKey];
68
+
69
+ if (column.render) {
70
+ cellContent = column.render(cellContent, allRowData, rowIndex, column.dataKey);
71
+ } else if (cellRender) {
72
+ cellContent = cellRender(cellContent);
73
+ }
74
+
67
75
  var isMergeCell = cellContent && (0, _typeof2["default"])(cellContent) === 'object' && !cellContent.$$typeof;
68
76
 
69
77
  if (isMergeCell && (cellContent.props.colSpan === 0 || cellContent.props.rowSpan === 0)) {
@@ -74,11 +82,12 @@ var Cell = function Cell(_ref) {
74
82
  leftStickyWidth = column.leftStickyWidth,
75
83
  dataKey = column.dataKey;
76
84
  var isSticky = typeof rightStickyWidth !== 'undefined' || typeof leftStickyWidth !== 'undefined';
77
- var defatultTextAlign = column.align ? column.align : 'left';
85
+ var defaultTextAlign = column.align ? column.align : 'left';
86
+ var textAlign = alignRightColumns.includes(dataKey) ? 'right' : defaultTextAlign;
78
87
  return /*#__PURE__*/_react["default"].createElement("td", {
79
88
  key: dataKey,
80
89
  style: {
81
- textAlign: alignRightColumns.includes(dataKey) ? 'right' : defatultTextAlign,
90
+ textAlign: textAlign,
82
91
  right: rightStickyWidth + 'px',
83
92
  left: leftStickyWidth + 'px'
84
93
  },
@@ -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"));
@@ -39,6 +37,7 @@ var HeaderTable = function HeaderTable(_ref) {
39
37
  var rightFixedIndex = _ref.rightFixedIndex;
40
38
 
41
39
  var _useContext = (0, _react.useContext)(_context["default"]),
40
+ checkboxColWidth = _useContext.checkboxColWidth,
42
41
  rowSelection = _useContext.rowSelection,
43
42
  propsData = _useContext.data,
44
43
  columns = _useContext.columns,
@@ -64,13 +63,13 @@ var HeaderTable = function HeaderTable(_ref) {
64
63
  sticky = _useContext.sticky,
65
64
  disabledData = _useContext.disabledData;
66
65
 
67
- var _useState = (0, _react.useState)(_lodash["default"].cloneDeep(propsData)),
66
+ var _useState = (0, _react.useState)((0, _util.cloneArray)(propsData)),
68
67
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
69
68
  data = _useState2[0],
70
69
  setDate = _useState2[1];
71
70
 
72
71
  (0, _react.useEffect)(function () {
73
- setDate(_lodash["default"].cloneDeep(propsData));
72
+ setDate((0, _util.cloneArray)(propsData));
74
73
  }, [propsData]);
75
74
 
76
75
  var _useState3 = (0, _react.useState)(false),
@@ -116,7 +115,7 @@ var HeaderTable = function HeaderTable(_ref) {
116
115
  if (rowSelection) {
117
116
  var _rowSelection$selecte = rowSelection.selectedRowKeys,
118
117
  selectedRowKeys = _rowSelection$selecte === void 0 ? [] : _rowSelection$selecte;
119
- var flattedData = (0, _util.flatTreeData)(_lodash["default"].cloneDeep(data));
118
+ var flattedData = (0, _util.flatTreeData)((0, _util.cloneArray)(data));
120
119
 
121
120
  var _isAllChecked = flattedData.filter(function (data) {
122
121
  return !disabledData.current.includes(data.key);
@@ -129,7 +128,7 @@ var HeaderTable = function HeaderTable(_ref) {
129
128
  }, [data, rowSelection]); // 处理列的深度
130
129
 
131
130
  (0, _react.useEffect)(function () {
132
- var _columns = _lodash["default"].cloneDeep(columns);
131
+ var _columns = (0, _util.cloneArray)(columns);
133
132
 
134
133
  var depthArray = [];
135
134
  (0, _util.setDepth)(_columns, 0, depthArray);
@@ -189,7 +188,9 @@ var HeaderTable = function HeaderTable(_ref) {
189
188
  return col.sorter;
190
189
  }).map(function (sorterCol) {
191
190
  return sorterCol.dataKey;
192
- }); // ******************** 行渲染 ***********************
191
+ }); // 自定义 checkboxAll 侧边 icon
192
+
193
+ var checkboxFilterIcon = rowSelection && rowSelection.checkAllOptions && rowSelection.checkAllOptions.filterIcon || null; // ******************** 行渲染 ***********************
193
194
 
194
195
  var renderBaseRow = function renderBaseRow(cols, index, isSticky) {
195
196
  var _colums = [rowSelection && index === 0 && 'checkbox', expandedRender && index === 0 && 'expandedButton'].concat(cols).filter(function (column) {
@@ -197,7 +198,7 @@ var HeaderTable = function HeaderTable(_ref) {
197
198
  });
198
199
 
199
200
  var isStickyCol = _colums.some(function (item) {
200
- return typeof item.leftStickyWidth !== 'undefined' || typeof item.rightStickyWidth !== 'undefined';
201
+ return typeof item.leftStickyWidth !== 'undefined';
201
202
  });
202
203
 
203
204
  return /*#__PURE__*/_react["default"].createElement("tr", {
@@ -214,7 +215,7 @@ var HeaderTable = function HeaderTable(_ref) {
214
215
  }),
215
216
  style: {
216
217
  boxSizing: 'border-box',
217
- width: 50,
218
+ width: checkboxColWidth,
218
219
  height: 'auto',
219
220
  backgroundColor: '#fbfbfb'
220
221
  }
@@ -223,7 +224,7 @@ var HeaderTable = function HeaderTable(_ref) {
223
224
  indeterminate: !isAllChecked && rowSelection.selectedRowKeys.length > 0,
224
225
  onChange: function onChange(e) {
225
226
  if (rowSelection.onChange) {
226
- 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) {
227
228
  return !disabledData.current.includes(data.key);
228
229
  });
229
230
  var selectedIds = isAllChecked ? [] : targetItems.map(function (item) {
@@ -232,7 +233,7 @@ var HeaderTable = function HeaderTable(_ref) {
232
233
  rowSelection.onChange(selectedIds, targetItems, !isAllChecked);
233
234
  }
234
235
  }
235
- }));
236
+ }), checkboxFilterIcon);
236
237
  } else if (c === 'expandedButton') {
237
238
  cell = /*#__PURE__*/_react["default"].createElement("th", {
238
239
  key: "expandedButton",
@@ -261,7 +262,7 @@ var HeaderTable = function HeaderTable(_ref) {
261
262
 
262
263
  var isRowActive = highlightedColKeys.includes(dataKey) || highlightColumns.includes(dataKey);
263
264
  var isColActive = showColHighlight && hoverColIndex === dataKey;
264
- var defatultTextAlign = align || 'left';
265
+ var textAlign = alignRightColumns.includes(dataKey) ? 'right' : align || 'left';
265
266
  cell = /*#__PURE__*/_react["default"].createElement("th", (0, _extends2["default"])({
266
267
  key: idx,
267
268
  colSpan: colSpan,
@@ -274,7 +275,7 @@ var HeaderTable = function HeaderTable(_ref) {
274
275
  style: {
275
276
  height: 'auto',
276
277
  boxSizing: 'border-box',
277
- textAlign: alignRightColumns.includes(dataKey) ? 'right' : defatultTextAlign,
278
+ textAlign: textAlign,
278
279
  background: isRowActive || isColActive ? '#F4F4F4' : '#fbfbfb',
279
280
  right: rightStickyWidth + 'px',
280
281
  left: leftStickyWidth + 'px'
@@ -343,7 +344,7 @@ var HeaderTable = function HeaderTable(_ref) {
343
344
  return /*#__PURE__*/_react["default"].createElement("col", {
344
345
  key: index,
345
346
  style: {
346
- width: c === 'checkbox' ? 50 : width,
347
+ width: c === 'checkbox' ? checkboxColWidth : width,
347
348
  minWidth: width
348
349
  }
349
350
  });
package/es/table/Row.js CHANGED
@@ -9,6 +9,8 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports["default"] = void 0;
11
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
12
14
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
15
 
14
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -23,8 +25,6 @@ var _context = _interopRequireDefault(require("./context"));
23
25
 
24
26
  var _classnames = _interopRequireDefault(require("classnames"));
25
27
 
26
- var _lodash = _interopRequireDefault(require("lodash"));
27
-
28
28
  var _checkbox = _interopRequireDefault(require("../checkbox"));
29
29
 
30
30
  var _loading = _interopRequireDefault(require("../loading"));
@@ -76,6 +76,7 @@ var Row = function Row(_ref) {
76
76
  }, [propsExpanded]);
77
77
 
78
78
  var _useContext = (0, _react.useContext)(_context["default"]),
79
+ checkboxColWidth = _useContext.checkboxColWidth,
79
80
  errorRowKeys = _useContext.errorRowKeys,
80
81
  rowSelection = _useContext.rowSelection,
81
82
  highlightedRowKeys = _useContext.highlightedRowKeys,
@@ -89,9 +90,10 @@ var Row = function Row(_ref) {
89
90
  disabledData = _useContext.disabledData,
90
91
  draggable = _useContext.draggable,
91
92
  onDragStart = _useContext.onDragStart,
92
- dargInfo = _useContext.dargInfo;
93
+ dargInfo = _useContext.dargInfo,
94
+ onRow = _useContext.onRow;
93
95
 
94
- var _columns = _lodash["default"].cloneDeep(columns);
96
+ var _columns = (0, _util.cloneArray)(columns);
95
97
 
96
98
  var depthArray = [];
97
99
  (0, _util.setDepth)(_columns, 0, depthArray);
@@ -99,7 +101,7 @@ var Row = function Row(_ref) {
99
101
  return col.isLast;
100
102
  });
101
103
  var isSticky = rowColumns.some(function (item) {
102
- return typeof item.leftStickyWidth !== 'undefined' || typeof item.rightStickyWidth !== 'undefined';
104
+ return typeof item.leftStickyWidth !== 'undefined';
103
105
  });
104
106
  var checkboxConfig = rowSelection && rowSelection.getCheckboxConfig && rowSelection.getCheckboxConfig(allRowData);
105
107
  var checkboxDisabled = checkboxConfig && checkboxConfig.disabled || false;
@@ -138,13 +140,15 @@ var Row = function Row(_ref) {
138
140
  });
139
141
  dragKey !== rowKey && setDropHightLineStatus(clienY < startClientY ? 'top' : 'bottom');
140
142
  }, [rowKey, dropHightLineStatus, draggable]);
141
- return [/*#__PURE__*/_react["default"].createElement("tr", {
143
+ var rowProps = onRow();
144
+ return [/*#__PURE__*/_react["default"].createElement("tr", (0, _extends2["default"])({
142
145
  style: isFixed && rowHeight ? {
143
146
  height: rowHeight
144
147
  } : {},
145
148
  ref: innerRef,
146
149
  id: rowKey,
147
- draggable: draggable,
150
+ draggable: draggable
151
+ }, rowProps, {
148
152
  onMouseMove: function onMouseMove() {
149
153
  setDragRowKey(null);
150
154
  setDragStatus(false);
@@ -167,6 +171,10 @@ var Row = function Row(_ref) {
167
171
  className: (0, _classnames["default"])("".concat(prefix, "__row"), (_classNames = {}, (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--error"), errorRowKeys.includes(rowData.key)), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--highlight"), hoverRow === rowData.key || highlightedRowKeys.includes(rowData.key)), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--total"), isSumRow), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--draggable"), draggable), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--draging"), draggable && dragRowKey === rowKey), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--draggable__border--top"), draggable && typeof dargInfo.current.dropKey !== 'undefined' && dropHightLineStatus === 'top'), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--draggable__border--bottom"), draggable && typeof dargInfo.current.dropKey !== 'undefined' && dropHightLineStatus === 'bottom'), (0, _defineProperty2["default"])(_classNames, "".concat(prefix, "__row--avg"), isAvgRow), _classNames)),
168
172
  key: "row",
169
173
  onDoubleClick: function onDoubleClick(e) {
174
+ if (rowProps && rowProps.onDoubleClick) {
175
+ rowProps.onDoubleClick(e);
176
+ }
177
+
170
178
  if (highlightedRowKeys.includes(rowData.key)) {
171
179
  setHighlightRows(highlightedRowKeys.filter(function (r) {
172
180
  return r !== rowData.key;
@@ -175,9 +183,9 @@ var Row = function Row(_ref) {
175
183
  setHighlightRows(highlightedRowKeys.concat(rowData.key));
176
184
  }
177
185
  }
178
- }, rowSelection && isFixed !== 'right' && !isSumRow && !isAvgRow && /*#__PURE__*/_react["default"].createElement("td", {
186
+ }), rowSelection && isFixed !== 'right' && !isSumRow && !isAvgRow && /*#__PURE__*/_react["default"].createElement("td", {
179
187
  style: {
180
- width: 50
188
+ width: checkboxColWidth
181
189
  },
182
190
  className: (0, _classnames["default"])((0, _defineProperty2["default"])({}, "".concat(prefix, "__col--sticky"), isSticky))
183
191
  }, /*#__PURE__*/_react["default"].createElement(_checkbox["default"], {
@@ -241,12 +249,12 @@ var Row = function Row(_ref) {
241
249
  key: "expanded-row",
242
250
  className: "".concat(prefix, "--expanded"),
243
251
  style: {
244
- background: 'rgba(251,251,251,1)'
252
+ background: 'rgba(251, 251, 251, 1)'
245
253
  }
246
254
  }, rowSelection && /*#__PURE__*/_react["default"].createElement("td", null), /*#__PURE__*/_react["default"].createElement("td", {
247
255
  colSpan: columns.length + 1,
248
256
  style: {
249
- color: '#666666'
257
+ color: '#666'
250
258
  }
251
259
  }, /*#__PURE__*/_react["default"].createElement(_Expandcol["default"], {
252
260
  rowData: rowData,
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"));
@@ -73,8 +71,12 @@ var Table = function Table(_ref) {
73
71
  propsExpandRowKeys = _ref.expandedRowKeys,
74
72
  expandRowKeys = _ref.expandRowKeys,
75
73
  onExpand = _ref.onExpand,
74
+ _ref$fixedColumnTrigg = _ref.fixedColumnTrigger,
75
+ fixedColumnTrigger = _ref$fixedColumnTrigg === void 0 ? 'auto' : _ref$fixedColumnTrigg,
76
76
  _ref$onHeaderRow = _ref.onHeaderRow,
77
77
  onHeaderRow = _ref$onHeaderRow === void 0 ? defaultHeaderRow : _ref$onHeaderRow,
78
+ _ref$onRow = _ref.onRow,
79
+ onRow = _ref$onRow === void 0 ? defaultHeaderRow : _ref$onRow,
78
80
  _ref$columns = _ref.columns,
79
81
  propsColumns = _ref$columns === void 0 ? [] : _ref$columns,
80
82
  expandedRender = _ref.expandedRender,
@@ -112,6 +114,7 @@ var Table = function Table(_ref) {
112
114
  onDragStart = _ref.onDragStart,
113
115
  onDrop = _ref.onDrop,
114
116
  onDropEnd = _ref.onDropEnd,
117
+ cellRender = _ref.cellRender,
115
118
  _ref$emptyContent = _ref.emptyContent,
116
119
  emptyContent = _ref$emptyContent === void 0 ? localeDatas.table.emptyContent : _ref$emptyContent;
117
120
  var dargInfo = (0, _react.useRef)({
@@ -142,9 +145,10 @@ var Table = function Table(_ref) {
142
145
  var _dargInfo$current = dargInfo.current,
143
146
  rowData = _dargInfo$current.rowData,
144
147
  dropRowData = _dargInfo$current.dropRowData;
145
- var restData = (0, _util.deleteRowByKey)(_lodash["default"].cloneDeep(data), dargInfo.current);
148
+ if (dropRowData.key === rowData.key) return;
149
+ var restData = (0, _util.deleteRowByKey)((0, _util.cloneArray)(data), dargInfo.current);
146
150
 
147
- var _data = (0, _util.setRowByKey)(_lodash["default"].cloneDeep(restData), dargInfo.current);
151
+ var _data = (0, _util.setRowByKey)((0, _util.cloneArray)(restData), dargInfo.current);
148
152
 
149
153
  dargInfo.current = {};
150
154
  onDropEnd && onDropEnd(rowData, dropRowData, _data);
@@ -272,7 +276,7 @@ var Table = function Table(_ref) {
272
276
  var firstRowRef = (0, _react.useRef)(null); // 处理拉平数据
273
277
 
274
278
  (0, _react.useEffect)(function () {
275
- var _columns = _lodash["default"].cloneDeep(dataSource ? serverTableConfig.columns || [] : propsColumns);
279
+ var _columns = (0, _util.cloneArray)(dataSource ? serverTableConfig.columns || [] : propsColumns);
276
280
 
277
281
  var _flattedColumns = (0, _util.flatTreeData)(_columns);
278
282
 
@@ -302,7 +306,7 @@ var Table = function Table(_ref) {
302
306
  _columns[index] = currentItem;
303
307
  }); // 右侧
304
308
 
305
- var rightCloumns = _lodash["default"].cloneDeep(_columns.slice(rightFixedIndex || _flattedColumns.length).reverse());
309
+ var rightCloumns = (0, _util.cloneArray)(_columns.slice(rightFixedIndex || _flattedColumns.length).reverse());
306
310
 
307
311
  if (rightFixedIndex) {
308
312
  rightCloumns.forEach(function (currentItem, index) {
@@ -445,9 +449,14 @@ var Table = function Table(_ref) {
445
449
  } else {
446
450
  onDropCallback && updateData();
447
451
  }
448
- }, [data, draggable]);
452
+ }, [data, draggable]); // 自定义设置 checkbox 列宽度
453
+
454
+ var checkboxColWidth = rowSelection && typeof rowSelection.checkboxColWidth === 'number' ? rowSelection.checkboxColWidth : 50;
455
+ var alwaysFixedColumn = fixedColumnTrigger === 'always';
449
456
  return /*#__PURE__*/_react["default"].createElement(_context["default"].Provider, {
450
457
  value: {
458
+ cellRender: cellRender,
459
+ checkboxColWidth: checkboxColWidth,
451
460
  disabledData: disabledData,
452
461
  rowExpandable: rowExpandable,
453
462
  setting: setting,
@@ -467,6 +476,7 @@ var Table = function Table(_ref) {
467
476
  expandedRowKeys: expandedRowKeys,
468
477
  // 标题点击回调事件
469
478
  onHeaderRow: onHeaderRow,
479
+ onRow: onRow,
470
480
  onExpand: onExpand,
471
481
  realColumnsWidth: realColumnsWidth,
472
482
  setRealColumnsWidth: setRealColumnsWidth,
@@ -539,14 +549,14 @@ var Table = function Table(_ref) {
539
549
  }, /*#__PURE__*/_react["default"].createElement(_HeaderTable["default"], null), /*#__PURE__*/_react["default"].createElement(_BodyTable["default"], {
540
550
  fatherRef: hiTable,
541
551
  emptyContent: emptyContent
542
- }), scrollSize.scrollLeft > 0 && realLeftFixedColumns.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
552
+ }), (alwaysFixedColumn || scrollSize.scrollLeft > 0) && realLeftFixedColumns.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
543
553
  className: "".concat(prefix, "__shadow-mask ").concat(prefix, "__shadow-left"),
544
554
  style: {
545
555
  width: fixedColumnsWidth.left + 'px'
546
556
  }
547
557
  }, /*#__PURE__*/_react["default"].createElement("div", {
548
558
  className: "".concat(prefix, "__shadow-lock")
549
- })), scrollSize.scrollRight > 0 && realRightFixedColumns.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
559
+ })), (alwaysFixedColumn || scrollSize.scrollRight > 0) && realRightFixedColumns.length > 0 && /*#__PURE__*/_react["default"].createElement("div", {
550
560
  className: "".concat(prefix, "__shadow-mask ").concat(prefix, "__shadow-right"),
551
561
  style: {
552
562
  width: fixedColumnsWidth.right + 'px'
@@ -18,7 +18,7 @@ export type TableColumnItem = {
18
18
  filterDropdownWidth?: number
19
19
  filterDropdownClassName?: string
20
20
  onFilterDropdownVisibleChange?: (filterDropdownVisible: boolean, ColumnItem: ColumnItem) => void
21
- render?: (text: string, record: object, index: number, dataKey: string) => JSX.Element
21
+ render?: (text: any, record: object, index: number, dataKey: string) => JSX.Element
22
22
  }
23
23
 
24
24
  export type TableDataSource = {
@@ -38,10 +38,17 @@ export type TableFixedOption = {
38
38
  left?: string
39
39
  right?: string
40
40
  }
41
+
42
+ export type TableCheckAllOptions = {
43
+ filterIcon?: React.ReactNode
44
+ }
45
+
41
46
  export type TableRowSelection = {
42
- selectedRowKeys?: string[] | number[]
47
+ selectedRowKeys?: React.ReactText[]
43
48
  getCheckboxConfig?: (rowData: object) => object
44
- onChange?: (selectedRowKeys: string | number, targetRow?: object | object[], shouldChecked?: boolean) => void
49
+ onChange?: (selectedRowKeys: React.ReactText[], targetRow?: object | object[], shouldChecked?: boolean) => void
50
+ checkboxColWidth?: number
51
+ checkAllOptions?: TableCheckAllOptions
45
52
  }
46
53
 
47
54
  export type TableHeaderRowReturn = {
@@ -54,6 +61,8 @@ export type TableHeaderRowReturn = {
54
61
 
55
62
  export type HeaderRowFunc = (colums: TableColumnItem[], index: number) => TableHeaderRowReturn
56
63
 
64
+ export type RowFunc = () => TableHeaderRowReturn
65
+
57
66
  export interface TableProps {
58
67
  size?: 'small' | 'large' | 'default' | 'mini'
59
68
  fieldKey?: string
@@ -63,8 +72,9 @@ export interface TableProps {
63
72
  sticky?: boolean
64
73
  draggable?: boolean
65
74
  stickyTop?: number
66
- expandRowKeys?: number[]
67
- highlightedColKeys?: string[] | number[]
75
+ fixedColumnTrigger?: 'auto' | 'always'
76
+ expandRowKeys?: React.ReactText[]
77
+ highlightedColKeys?: string[]
68
78
  expandedRender?: (record: object, index: number) => JSX.Element | Promise
69
79
  onLoadChildren?: (record: object) => object[] | Promise
70
80
  onExpand?: (expanded: boolean, rowData: object) => void
@@ -73,8 +83,8 @@ export interface TableProps {
73
83
  scrollWidth?: number
74
84
  fixedToColumn?: string | TableFixedOption
75
85
  pagination?: PaginationProps
76
- errorRowKeys?: string[] | number[]
77
- highlightedRowKeys?: string[] | number[]
86
+ errorRowKeys?: React.ReactText[]
87
+ highlightedRowKeys?: React.ReactText[]
78
88
  rowSelection?: TableRowSelection
79
89
  dataSource?: (current: number) => TableDataSource
80
90
  showColMenu?: boolean
@@ -85,6 +95,7 @@ export interface TableProps {
85
95
  standard?: boolean
86
96
  emptyContent?: string | JSX.Element
87
97
  onHeaderRow?: HeaderRowFunc
98
+ onRow?: RowFunc
88
99
  columns: TableColumnItem[]
89
100
  data: object[]
90
101
  style?: React.CSSProperties
@@ -95,6 +106,7 @@ export interface TableProps {
95
106
  onDropEnd?: (dragRowData: object, dropRowData: object, data: object) => void
96
107
  hiddenColKeys?: string[]
97
108
  onHiddenColKeysChange?: (hiddenColKeys: string[]) => void
109
+ cellRender?: (text: any) => React.ReactNode
98
110
  }
99
111
  declare const Table: React.ComponentType<TableProps>
100
112
  export default Table
@@ -1 +1 @@
1
- .hi-table{position:relative}.hi-table__container{position:relative;z-index:1}.hi-table__shadow-mask{position:absolute;top:0;bottom:0;z-index:20;pointer-events:none;overflow:hidden;height:100%;width:200px}.hi-table__shadow-lock{height:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table__shadow-left{margin-right:10px;left:0;-webkit-box-shadow:6px 0 6px -4px rgba(0,0,0,0.15);box-shadow:6px 0 6px -4px rgba(0,0,0,0.15)}.hi-table__shadow-right{margin-left:10px;right:0;-webkit-box-shadow:-6px 0 6px -4px rgba(0,0,0,0.15);box-shadow:-6px 0 6px -4px rgba(0,0,0,0.15)}.hi-table__container table{width:100%;border-collapse:separate;background:var(--color-white);margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;display:table;border-spacing:0;overflow:auto}.hi-table__container table col{display:table-column}.hi-table__container table td,.hi-table__container table th{padding-left:8px;padding-right:16px;border-bottom:1px solid #e7e7e7;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table__container table th{background-color:#fbfbfb;color:var(--color-gray-70)}.hi-table__container table th i:hover{color:var(--color-primary)}.hi-table__container table td{color:var(--color-black);word-break:break-word}.hi-table__container table tr{font-size:14px;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:var(--color-white)}.hi-table__setting-menu div,.hi-table__setting-menu p,.hi-table__setting-menu ul,.hi-table__setting-menu li{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table__col-menu{width:124px;font-size:14px;background:var(--color-white);-webkit-box-shadow:0 2px 8px 0 rgba(56,62,71,0.1);box-shadow:0 2px 8px 0 rgba(56,62,71,0.1);border-radius:4px;border:1px solid #e7e7e7;padding:7px 0}.hi-table__col-menu__item{cursor:pointer;color:var(--color-black);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 12px}.hi-table__col-menu__item:hover{color:var(--color-primary)}.hi-table__col-menu__item.col-menu__item--highlight{color:var(--color-primary)}.hi-table__col-menu__item .hi-icon{font-size:16px}.hi-table__setting-menu .btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;border-top:1px solid #e7e7e7;height:48px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hi-table__setting-menu .btn-group .btn{width:50%;text-align:center;cursor:pointer}.hi-table__setting-menu .btn-group .btn--left{border-right:1px solid #e7e7e7}.hi-table .hi-checkbox__input:not(.hi-checkbox__input--checked){background:var(--color-white)}.hi-table .hi-checkbox--disabled .hi-checkbox__input{border-color:#d8d8d8;background:#f2f2f2}.hi-table .hi-checkbox{height:auto}.hi-table th{font-weight:500;white-space:normal}.hi-table td{white-space:normal}.hi-table__setting-btn{position:absolute;height:100%;z-index:11;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:1px solid #e0e1e2;border-bottom:1px solid #e0e1e2;border-top:none;color:#999;cursor:pointer;font-size:14px;width:16px;background:#fbfbfb}.hi-table__pagination{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:20px}.hi-table__pagination--left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.hi-table__pagination--middle{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.hi-table--small table tr{font-size:14px !important}.hi-table--small table tr>td{padding:8px !important}.hi-table--small table thead>tr>th{padding:8px !important}.hi-table--mini table tr{font-size:14px !important}.hi-table--mini table tr>td{padding:4px !important}.hi-table--mini table thead>tr>th{padding:4px !important}.hi-table--large table tr{font-size:14px !important}.hi-table--large table tr>td{padding:20px !important}.hi-table--large table thead>tr>th{padding:20px !important}.hi-table--striped table tr:nth-child(2n){background:#fbfbfb}.hi-table--striped table tr:nth-child(2n) .hi-table__col--sticky{background:#fbfbfb}.hi-table--bordered table thead>tr>th{border-right:1px solid #e6e7e8}.hi-table--bordered table td{border-right:1px solid var(--color-gray-20)}.hi-table--bordered .hi-table_header>table{border-top:1px solid #e6e7e8;border-left:1px solid #e6e7e8}.hi-table__container--fixed-left{z-index:1;position:absolute;top:0;-webkit-box-shadow:2px 0 4px rgba(187,187,187,0.4);box-shadow:2px 0 4px rgba(187,187,187,0.4);overflow:hidden}.hi-table__container--fixed-right{z-index:1;position:absolute;top:0;-webkit-box-shadow:-2px 0 4px rgba(187,187,187,0.4);box-shadow:-2px 0 4px rgba(187,187,187,0.4);overflow:hidden}.hi-table__header{overflow:hidden;position:relative}.hi-table__header>table{position:relative}.hi-table__header__title{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.hi-table__header--sticky{position:fixed;z-index:10;top:0;overflow-x:hidden}.hi-table__body--draging table tr:hover:not(.hi-table__row--draging){background:var(--color-white)}.hi-table__body--draging table tr:hover:not(.hi-table__row--draging) .hi-table__col--sticky{background:var(--color-white)}.hi-table__body--draging table tr.hi-table__row--draging{background:var(--color-primary-20)}.hi-table__body--draging table tr.hi-table__row--draging .hi-table__col--sticky{background:var(--color-primary-20)}.hi-table table{table-layout:fixed}.hi-table table thead>tr>th{background:#fbfbfb;color:var(--color-gray-70);padding:15px;border-bottom:1px solid #e6e7e8;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table table tr{min-height:52px}.hi-table table tr .hi-table__col--sticky{position:sticky;left:0;z-index:5;background:var(--color-white)}.hi-table table tr:hover{background:var(--color-primary-20)}.hi-table table tr:hover .hi-table__col--sticky{background:var(--color-primary-20)}.hi-table table tr>td{color:var(--color-black);padding:15px;border-bottom:1px solid var(--color-gray-20);-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table table tr.hi-table__row--draggable__border--top td{border-top:2px dashed var(--color-primary)}.hi-table table tr.hi-table__row--draggable__border--bottom td{border-bottom:2px dashed var(--color-primary)}.hi-table table .hi-table__row .hi-table__indent{display:inline-block;width:14px;height:100%}.hi-table table .hi-table__row--expanded{background:#fbfbfb}.hi-table table .hi-table__row--expanded>td{color:var(--color-gray-80)}.hi-table table .hi-table__row.hi-table__row--error>td{color:#f44343}.hi-table table .hi-table__row.hi-table__row--highlight>td{background:var(--color-primary-20)}.hi-table table .hi-table__row.hi-table__row--total>td{background-color:#fbfbfb}.hi-table table .hi-table__row.hi-table__row--avg>td{background-color:#fbfbfb}.hi-table table .hi-table__row.hi-table__row--draggable{cursor:move}.hi-table table .hi-table__row>.hi-table__col--highlight{background:var(--color-primary-20)}.hi-table table .hi-table__row .hi-table__col__hover--highlight{background:var(--color-primary-10)}.react-resizable{position:relative;background-clip:padding-box}.react-resizable-handle{position:absolute;width:10px;height:100%;bottom:0;right:-5px;cursor:col-resize;z-index:1}
1
+ .hi-table{position:relative}.hi-table__container{position:relative;z-index:1}.hi-table__shadow-mask{position:absolute;top:0;bottom:0;z-index:20;pointer-events:none;overflow:hidden;height:100%;width:200px}.hi-table__shadow-lock{height:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table__shadow-left{margin-right:10px;left:0;-webkit-box-shadow:6px 0 6px -4px rgba(0,0,0,0.15);box-shadow:6px 0 6px -4px rgba(0,0,0,0.15)}.hi-table__shadow-right{margin-left:10px;right:0;-webkit-box-shadow:-6px 0 6px -4px rgba(0,0,0,0.15);box-shadow:-6px 0 6px -4px rgba(0,0,0,0.15)}.hi-table__container table{width:100%;border-collapse:separate;background:var(--color-white);margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;display:table;border-spacing:0;overflow:auto}.hi-table__container table col{display:table-column}.hi-table__container table td,.hi-table__container table th{padding-left:8px;padding-right:16px;border-bottom:1px solid #e7e7e7;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table__container table th{background-color:#fbfbfb;color:var(--color-gray-70)}.hi-table__container table th i:hover{color:var(--color-primary)}.hi-table__container table td{color:var(--color-black);word-break:break-word}.hi-table__container table tr{font-size:14px;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:var(--color-white)}.hi-table__setting-menu div,.hi-table__setting-menu p,.hi-table__setting-menu ul,.hi-table__setting-menu li{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table__col-menu{width:124px;font-size:14px;background:var(--color-white);-webkit-box-shadow:0 2px 8px 0 rgba(56,62,71,0.1);box-shadow:0 2px 8px 0 rgba(56,62,71,0.1);border-radius:4px;border:1px solid #e7e7e7;padding:7px 0}.hi-table__col-menu__item{cursor:pointer;color:var(--color-black);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:4px 12px}.hi-table__col-menu__item:hover{color:var(--color-primary)}.hi-table__col-menu__item.col-menu__item--highlight{color:var(--color-primary)}.hi-table__col-menu__item .hi-icon{font-size:16px}.hi-table__setting-menu .btn-group{display:-webkit-box;display:-ms-flexbox;display:flex;border-top:1px solid #e7e7e7;height:48px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.hi-table__setting-menu .btn-group .btn{width:50%;text-align:center;cursor:pointer}.hi-table__setting-menu .btn-group .btn--left{border-right:1px solid #e7e7e7}.hi-table .hi-checkbox__input:not(.hi-checkbox__input--checked):not(.hi-checkbox__input--indeterminate){background:var(--color-white)}.hi-table .hi-checkbox--disabled .hi-checkbox__input{border-color:#d8d8d8;background:#f2f2f2}.hi-table .hi-checkbox{height:auto}.hi-table th{font-weight:500;white-space:normal}.hi-table td{white-space:normal}.hi-table__setting-btn{position:absolute;height:100%;z-index:11;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-left:1px solid #e0e1e2;border-bottom:1px solid #e0e1e2;border-top:none;color:#999;cursor:pointer;font-size:14px;width:16px;background:#fbfbfb}.hi-table__pagination{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-top:20px}.hi-table__pagination--left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.hi-table__pagination--middle{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.hi-table--small table tr{font-size:14px !important}.hi-table--small table tr>td{padding:8px !important}.hi-table--small table thead>tr>th{padding:8px !important}.hi-table--mini table tr{font-size:14px !important}.hi-table--mini table tr>td{padding:4px !important}.hi-table--mini table thead>tr>th{padding:4px !important}.hi-table--large table tr{font-size:14px !important}.hi-table--large table tr>td{padding:20px !important}.hi-table--large table thead>tr>th{padding:20px !important}.hi-table--striped table tr:nth-child(2n){background:#fbfbfb}.hi-table--striped table tr:nth-child(2n) .hi-table__col--sticky{background:#fbfbfb}.hi-table--bordered table thead>tr>th{border-right:1px solid #e6e7e8}.hi-table--bordered table td{border-right:1px solid var(--color-gray-20)}.hi-table--bordered .hi-table_header>table{border-top:1px solid #e6e7e8;border-left:1px solid #e6e7e8}.hi-table__container--fixed-left{z-index:1;position:absolute;top:0;-webkit-box-shadow:2px 0 4px rgba(187,187,187,0.4);box-shadow:2px 0 4px rgba(187,187,187,0.4);overflow:hidden}.hi-table__container--fixed-right{z-index:1;position:absolute;top:0;-webkit-box-shadow:-2px 0 4px rgba(187,187,187,0.4);box-shadow:-2px 0 4px rgba(187,187,187,0.4);overflow:hidden}.hi-table__header{overflow:hidden;position:relative}.hi-table__header>table{position:relative}.hi-table__header__title{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.hi-table__header--sticky{position:fixed;z-index:10;top:0;overflow-x:hidden}.hi-table__body--draging table tr:hover:not(.hi-table__row--draging){background:var(--color-white)}.hi-table__body--draging table tr:hover:not(.hi-table__row--draging) .hi-table__col--sticky{background:var(--color-white)}.hi-table__body--draging table tr.hi-table__row--draging{background:var(--color-primary-20)}.hi-table__body--draging table tr.hi-table__row--draging .hi-table__col--sticky{background:var(--color-primary-20)}.hi-table table{table-layout:fixed}.hi-table table thead>tr>th{background:#fbfbfb;color:var(--color-gray-70);padding:15px;border-bottom:1px solid #e6e7e8;-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table table tr{min-height:52px}.hi-table table tr .hi-table__col--sticky{position:sticky;left:0;z-index:5;background:var(--color-white)}.hi-table table tr:hover{background:var(--color-primary-20)}.hi-table table tr:hover .hi-table__col--sticky{background:var(--color-primary-20)}.hi-table table tr>td{color:var(--color-black);padding:15px;border-bottom:1px solid var(--color-gray-20);-webkit-box-sizing:border-box;box-sizing:border-box}.hi-table table tr.hi-table__row--draggable__border--top td{border-top:2px dashed var(--color-primary)}.hi-table table tr.hi-table__row--draggable__border--bottom td{border-bottom:2px dashed var(--color-primary)}.hi-table table .hi-table__row .hi-table__indent{display:inline-block;width:14px;height:100%}.hi-table table .hi-table__row--expanded{background:#fbfbfb}.hi-table table .hi-table__row--expanded>td{color:var(--color-gray-80)}.hi-table table .hi-table__row.hi-table__row--error>td{color:#f44343}.hi-table table .hi-table__row.hi-table__row--highlight>td{background:var(--color-primary-20)}.hi-table table .hi-table__row.hi-table__row--total>td{background-color:#fbfbfb}.hi-table table .hi-table__row.hi-table__row--avg>td{background-color:#fbfbfb}.hi-table table .hi-table__row.hi-table__row--draggable{cursor:move}.hi-table table .hi-table__row>.hi-table__col--highlight{background:var(--color-primary-20)}.hi-table table .hi-table__row .hi-table__col__hover--highlight{background:var(--color-primary-10)}.react-resizable{position:relative;background-clip:padding-box}.react-resizable-handle{position:absolute;width:10px;height:100%;bottom:0;right:-5px;cursor:col-resize;z-index:1}
File without changes
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/es/tree/Tree.js CHANGED
@@ -492,10 +492,13 @@ var Tree = function Tree(props) {
492
492
  type: 'deleteNode'
493
493
  }];
494
494
 
495
- if (contextMenu) {
495
+ if (Array.isArray(contextMenu)) {
496
+ menu = contextMenu;
497
+ } else if (typeof contextMenu === 'function') {
496
498
  menu = contextMenu(node);
497
499
  }
498
500
 
501
+ if (!(Array.isArray(menu) && menu.length > 0)) return null;
499
502
  return /*#__PURE__*/_react["default"].createElement("ul", {
500
503
  className: "".concat(PREFIX, "__menu theme__").concat(theme)
501
504
  }, menu.map(function (m, index) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hi-ui/hiui",
3
- "version": "3.9.0-rc",
3
+ "version": "3.9.0-rc.12",
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",