@aloudata/aloudata-design 2.8.6 → 2.8.7

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.
@@ -62,10 +62,7 @@ export default function Dropdown(props) {
62
62
  return;
63
63
  }
64
64
  if (!isOpenControlled) {
65
- // 修复关闭 dropdown 后,再次点击无法打开 dropdown 的问题,经测试 setTimeout 0 后可以修复
66
- setTimeout(function () {
67
- setDropdownOpen(false);
68
- }, 0);
65
+ setDropdownOpen(false);
69
66
  }
70
67
  }, [isOpenControlled, menu]);
71
68
  var onDropdownOpenChange = useCallback(function (isDropdownOpen) {
@@ -4,6 +4,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
5
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
6
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
7
8
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
9
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
10
  function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
@@ -36,7 +37,7 @@ export default function useRowSelection(props) {
36
37
  var changeSelectedRowKeys = useCallback(function (newSelectedRowKeys) {
37
38
  var _rowSelection$onChang;
38
39
  // 过滤出存在于 data 中的 selectedRowKeys
39
- var visibleSelectedRowKeys = data.map(function (record) {
40
+ var visibleSelectedRowKeys = getDataWithoutDisabled(data, rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.getCheckboxProps).map(function (record) {
40
41
  return getRowKey(record, rowKey);
41
42
  }).filter(function (key) {
42
43
  return newSelectedRowKeys.includes(key);
@@ -45,7 +46,7 @@ export default function useRowSelection(props) {
45
46
  var selectedRows = getSelectedRows(visibleSelectedRowKeys);
46
47
  rowSelection === null || rowSelection === void 0 ? void 0 : (_rowSelection$onChang = rowSelection.onChange) === null || _rowSelection$onChang === void 0 ? void 0 : _rowSelection$onChang.call(rowSelection, visibleSelectedRowKeys, selectedRows);
47
48
  }, [getSelectedRows, rowSelection, data, rowKey]);
48
- var checkboxAllStatus = getCheckboxAllStatus(data, selectedRowKeys, rowKey);
49
+ var checkboxAllStatus = getCheckboxAllStatus(data, selectedRowKeys, rowKey, rowSelection === null || rowSelection === void 0 ? void 0 : rowSelection.getCheckboxProps);
49
50
  var selectAll = useCallback(function () {
50
51
  var newKeys = data.map(function (record) {
51
52
  return getRowKey(record, rowKey);
@@ -101,18 +102,20 @@ export default function useRowSelection(props) {
101
102
  title: getCheckboxAllNode(),
102
103
  width: 48,
103
104
  render: function render(text, record) {
105
+ var _rowSelection$getChec;
104
106
  var key = getRowKey(record, rowKey);
105
107
  var isChecked = !!(selectedRowKeys !== null && selectedRowKeys !== void 0 && selectedRowKeys.includes(key));
108
+ var checkboxProps = ((_rowSelection$getChec = rowSelection.getCheckboxProps) === null || _rowSelection$getChec === void 0 ? void 0 : _rowSelection$getChec.call(rowSelection, record)) || {};
106
109
  return /*#__PURE__*/React.createElement("div", {
107
110
  className: prefixCls('row-selection-item')
108
- }, /*#__PURE__*/React.createElement(Checkbox, {
111
+ }, /*#__PURE__*/React.createElement(Checkbox, _extends({
109
112
  onClick: onClickCheckbox(key, isChecked),
110
113
  checked: isChecked
111
- }));
114
+ }, checkboxProps)));
112
115
  },
113
116
  fixed: rowSelection.fixed ? 'left' : undefined
114
117
  };
115
- var selectedRowKeysInCurrPage = data.map(function (record) {
118
+ var selectedRowKeysInCurrPage = getDataWithoutDisabled(data, rowSelection.getCheckboxProps).map(function (record) {
116
119
  return getRowKey(record, rowKey);
117
120
  }).filter(function (key) {
118
121
  return selectedRowKeys.includes(key);
@@ -136,7 +139,7 @@ export default function useRowSelection(props) {
136
139
  onChange: changeSelectedRowKeys
137
140
  };
138
141
  }
139
- function getCheckboxAllStatus(data, selectedRowKeys, rowKey) {
142
+ function getCheckboxAllStatus(data, selectedRowKeys, rowKey, getCheckboxProps) {
140
143
  var selectedKeysInData = data.map(function (record) {
141
144
  var key = getRowKey(record, rowKey);
142
145
  if (selectedRowKeys.includes(key)) {
@@ -149,8 +152,16 @@ function getCheckboxAllStatus(data, selectedRowKeys, rowKey) {
149
152
  if (selectedKeysInData.length === 0) {
150
153
  return 'none';
151
154
  }
152
- if (selectedKeysInData.length === data.length) {
155
+ var dataWithoutDisabled = getDataWithoutDisabled(data, getCheckboxProps);
156
+ if (selectedKeysInData.length === dataWithoutDisabled.length) {
153
157
  return 'all';
154
158
  }
155
159
  return 'indeterminate';
160
+ }
161
+ function getDataWithoutDisabled(data, getCheckboxProps) {
162
+ return data.filter(function (record) {
163
+ var checkboxProps = (getCheckboxProps === null || getCheckboxProps === void 0 ? void 0 : getCheckboxProps(record)) || {};
164
+ var disabled = checkboxProps.disabled;
165
+ return !disabled;
166
+ });
156
167
  }
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { ICheckboxProps } from '../Checkbox/type';
2
3
  import { IPaginationProps } from '../Pagination/types';
3
4
  export interface ITableProps<TDataItem extends object> {
4
5
  columns: ITableColumn<TDataItem>[];
@@ -52,6 +53,7 @@ export interface IRowSelection<TDataItem extends object> {
52
53
  defaultSelectedRowKeys?: string[];
53
54
  items?: IRowSelectionBtnItem<TDataItem>[];
54
55
  onChange?: (selectedRowKeys: string[], selectedRows: TDataItem[]) => void;
56
+ getCheckboxProps?: (record: TDataItem) => Pick<ICheckboxProps, 'disabled' | 'indeterminate' | 'checked'>;
55
57
  }
56
58
  export interface IRowSelectionBtnItem<TDataItem extends object> {
57
59
  key: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aloudata/aloudata-design",
3
- "version": "2.8.6",
3
+ "version": "2.8.7",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "module": "dist/index.js",