@kdcloudjs/table 1.2.0-canary.1 → 1.2.0-canary.2

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.
@@ -6,6 +6,9 @@ import React from 'react';
6
6
  import { internals } from '../../internals';
7
7
  import { always, arrayUtils } from '../../utils/others';
8
8
  import { collectNodes, mergeCellProps } from '../../utils';
9
+ var fullRowsSetKey = 'fullRowsSetKey';
10
+ var allEnableKeys = 'allEnableKeys';
11
+ var selectValueSetKey = 'selectValueSetKey';
9
12
  export function multiSelect() {
10
13
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
11
14
  return function multiSelectStep(pipeline) {
@@ -36,10 +39,9 @@ export function multiSelect() {
36
39
  action: action
37
40
  });
38
41
  };
39
-
40
- var dataSource = pipeline.getDataSource();
41
42
  /** dataSource 中包含的所有 keys */
42
43
 
44
+
43
45
  var fullKeySet = new _Set();
44
46
  /** 所有有效的 keys(disable 状态为 false) */
45
47
 
@@ -48,7 +50,7 @@ export function multiSelect() {
48
50
  var isAllChecked = set.size !== 0; // 当前不存在选中则默认为false
49
51
 
50
52
  var isAnyChecked = false;
51
- var flatDataSource = collectNodes(dataSource);
53
+ var flatDataSource = collectNodes(pipeline.getDataSource());
52
54
  flatDataSource.forEach(function (row, rowIndex) {
53
55
  var rowKey = internals.safeGetRowKey(primaryKey, row, rowIndex);
54
56
  fullKeySet.add(rowKey); // 在 allKeys 中排除被禁用的 key
@@ -76,6 +78,8 @@ export function multiSelect() {
76
78
  checked: isAllChecked,
77
79
  indeterminate: !isAllChecked && isAnyChecked,
78
80
  onChange: function onChange(_) {
81
+ var allKeys = pipeline.getFeatureOptions(allEnableKeys);
82
+
79
83
  if (isAllChecked) {
80
84
  _onChange(arrayUtils.diff(value, allKeys), '', allKeys, 'uncheck-all');
81
85
  } else {
@@ -96,9 +100,11 @@ export function multiSelect() {
96
100
  var rowKey = internals.safeGetRowKey(primaryKey, row, rowIndex);
97
101
  var checkboxCellProps = {};
98
102
  var preCellProps = (_b = (_a = opts.checkboxColumn) === null || _a === void 0 ? void 0 : _a.getCellProps) === null || _b === void 0 ? void 0 : _b.call(_a, value, row, rowIndex);
103
+ var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new _Set();
104
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _Set();
99
105
 
100
- if (fullKeySet.has(rowKey) && clickArea === 'cell') {
101
- var prevChecked = set.has(rowKey);
106
+ if (fullRowsSet.has(rowKey) && clickArea === 'cell') {
107
+ var prevChecked = selectValueSet.has(rowKey);
102
108
  var disabled = isDisabled(row, rowIndex);
103
109
  checkboxCellProps = {
104
110
  style: {
@@ -122,7 +128,8 @@ export function multiSelect() {
122
128
  }
123
129
 
124
130
  var key = internals.safeGetRowKey(primaryKey, row, rowIndex);
125
- var checked = set.has(key);
131
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _Set();
132
+ var checked = selectValueSet.has(key);
126
133
  return /*#__PURE__*/React.createElement(Checkbox, {
127
134
  checked: checked,
128
135
  disabled: isDisabled(row, rowIndex),
@@ -161,8 +168,9 @@ export function multiSelect() {
161
168
 
162
169
  pipeline.appendRowPropsGetter(function (row, rowIndex) {
163
170
  var rowKey = internals.safeGetRowKey(primaryKey, row, rowIndex);
171
+ var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new _Set();
164
172
 
165
- if (!fullKeySet.has(rowKey)) {
173
+ if (!fullRowsSet.has(rowKey)) {
166
174
  // rowKey 不在 fullKeySet 中说明这一行是在 multiSelect 之后才生成的,multiSelect 不对之后生成的行进行处理
167
175
  return;
168
176
  }
@@ -170,7 +178,8 @@ export function multiSelect() {
170
178
  var style = {};
171
179
  var className;
172
180
  var onClick;
173
- var checked = set.has(rowKey);
181
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _Set();
182
+ var checked = selectValueSet.has(rowKey);
174
183
 
175
184
  if (opts.highlightRowWhenSelected && checked) {
176
185
  className = 'highlight';
@@ -197,22 +206,32 @@ export function multiSelect() {
197
206
  style: style,
198
207
  onClick: onClick
199
208
  };
200
- });
209
+ }); // 只保留一份到pipeline, 避免行数据过多时内容被握住
210
+
211
+ pipeline.setFeatureOptions(fullRowsSetKey, fullKeySet);
212
+ pipeline.setFeatureOptions(allEnableKeys, allKeys);
213
+ pipeline.setFeatureOptions(selectValueSetKey, set);
214
+ fullKeySet = null;
215
+ allKeys = null;
216
+ set = null;
201
217
  return pipeline;
202
218
 
203
219
  function onCheckboxChange(prevChecked, key, batch) {
204
220
  var batchKeys = [key];
205
221
 
206
222
  if (batch && lastKey) {
207
- var lastIdx = allKeys.indexOf(lastKey);
208
- var cntIdx = allKeys.indexOf(key);
223
+ var _allKeys = pipeline.getFeatureOptions(allEnableKeys);
224
+
225
+ var lastIdx = _allKeys.indexOf(lastKey);
226
+
227
+ var cntIdx = _allKeys.indexOf(key);
209
228
 
210
229
  var _ref = lastIdx < cntIdx ? [lastIdx, cntIdx] : [cntIdx, lastIdx],
211
230
  _ref2 = _slicedToArray(_ref, 2),
212
231
  start = _ref2[0],
213
232
  end = _ref2[1];
214
233
 
215
- batchKeys = _sliceInstanceProperty(allKeys).call(allKeys, start, end + 1);
234
+ batchKeys = _sliceInstanceProperty(_allKeys).call(_allKeys, start, end + 1);
216
235
  }
217
236
 
218
237
  if (prevChecked) {
@@ -23,6 +23,10 @@ var _others = require("../../utils/others");
23
23
 
24
24
  var _utils = require("../../utils");
25
25
 
26
+ var fullRowsSetKey = 'fullRowsSetKey';
27
+ var allEnableKeys = 'allEnableKeys';
28
+ var selectValueSetKey = 'selectValueSetKey';
29
+
26
30
  function multiSelect() {
27
31
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
28
32
  return function multiSelectStep(pipeline) {
@@ -53,10 +57,9 @@ function multiSelect() {
53
57
  action: action
54
58
  });
55
59
  };
56
-
57
- var dataSource = pipeline.getDataSource();
58
60
  /** dataSource 中包含的所有 keys */
59
61
 
62
+
60
63
  var fullKeySet = new _set.default();
61
64
  /** 所有有效的 keys(disable 状态为 false) */
62
65
 
@@ -65,7 +68,7 @@ function multiSelect() {
65
68
  var isAllChecked = set.size !== 0; // 当前不存在选中则默认为false
66
69
 
67
70
  var isAnyChecked = false;
68
- var flatDataSource = (0, _utils.collectNodes)(dataSource);
71
+ var flatDataSource = (0, _utils.collectNodes)(pipeline.getDataSource());
69
72
  flatDataSource.forEach(function (row, rowIndex) {
70
73
  var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
71
74
 
@@ -94,6 +97,8 @@ function multiSelect() {
94
97
  checked: isAllChecked,
95
98
  indeterminate: !isAllChecked && isAnyChecked,
96
99
  onChange: function onChange(_) {
100
+ var allKeys = pipeline.getFeatureOptions(allEnableKeys);
101
+
97
102
  if (isAllChecked) {
98
103
  _onChange(_others.arrayUtils.diff(value, allKeys), '', allKeys, 'uncheck-all');
99
104
  } else {
@@ -115,9 +120,11 @@ function multiSelect() {
115
120
 
116
121
  var checkboxCellProps = {};
117
122
  var preCellProps = (_b = (_a = opts.checkboxColumn) === null || _a === void 0 ? void 0 : _a.getCellProps) === null || _b === void 0 ? void 0 : _b.call(_a, value, row, rowIndex);
123
+ var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new _set.default();
124
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _set.default();
118
125
 
119
- if (fullKeySet.has(rowKey) && clickArea === 'cell') {
120
- var prevChecked = set.has(rowKey);
126
+ if (fullRowsSet.has(rowKey) && clickArea === 'cell') {
127
+ var prevChecked = selectValueSet.has(rowKey);
121
128
  var disabled = isDisabled(row, rowIndex);
122
129
  checkboxCellProps = {
123
130
  style: {
@@ -142,7 +149,8 @@ function multiSelect() {
142
149
 
143
150
  var key = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
144
151
 
145
- var checked = set.has(key);
152
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _set.default();
153
+ var checked = selectValueSet.has(key);
146
154
  return /*#__PURE__*/_react.default.createElement(Checkbox, {
147
155
  checked: checked,
148
156
  disabled: isDisabled(row, rowIndex),
@@ -180,7 +188,9 @@ function multiSelect() {
180
188
  pipeline.appendRowPropsGetter(function (row, rowIndex) {
181
189
  var rowKey = _internals.internals.safeGetRowKey(primaryKey, row, rowIndex);
182
190
 
183
- if (!fullKeySet.has(rowKey)) {
191
+ var fullRowsSet = pipeline.getFeatureOptions(fullRowsSetKey) || new _set.default();
192
+
193
+ if (!fullRowsSet.has(rowKey)) {
184
194
  // rowKey 不在 fullKeySet 中说明这一行是在 multiSelect 之后才生成的,multiSelect 不对之后生成的行进行处理
185
195
  return;
186
196
  }
@@ -188,7 +198,8 @@ function multiSelect() {
188
198
  var style = {};
189
199
  var className;
190
200
  var onClick;
191
- var checked = set.has(rowKey);
201
+ var selectValueSet = pipeline.getFeatureOptions(selectValueSetKey) || new _set.default();
202
+ var checked = selectValueSet.has(rowKey);
192
203
 
193
204
  if (opts.highlightRowWhenSelected && checked) {
194
205
  className = 'highlight';
@@ -215,22 +226,32 @@ function multiSelect() {
215
226
  style: style,
216
227
  onClick: onClick
217
228
  };
218
- });
229
+ }); // 只保留一份到pipeline, 避免行数据过多时内容被握住
230
+
231
+ pipeline.setFeatureOptions(fullRowsSetKey, fullKeySet);
232
+ pipeline.setFeatureOptions(allEnableKeys, allKeys);
233
+ pipeline.setFeatureOptions(selectValueSetKey, set);
234
+ fullKeySet = null;
235
+ allKeys = null;
236
+ set = null;
219
237
  return pipeline;
220
238
 
221
239
  function onCheckboxChange(prevChecked, key, batch) {
222
240
  var batchKeys = [key];
223
241
 
224
242
  if (batch && lastKey) {
225
- var lastIdx = allKeys.indexOf(lastKey);
226
- var cntIdx = allKeys.indexOf(key);
243
+ var _allKeys = pipeline.getFeatureOptions(allEnableKeys);
244
+
245
+ var lastIdx = _allKeys.indexOf(lastKey);
246
+
247
+ var cntIdx = _allKeys.indexOf(key);
227
248
 
228
249
  var _ref = lastIdx < cntIdx ? [lastIdx, cntIdx] : [cntIdx, lastIdx],
229
250
  _ref2 = (0, _slicedToArray2.default)(_ref, 2),
230
251
  start = _ref2[0],
231
252
  end = _ref2[1];
232
253
 
233
- batchKeys = (0, _slice.default)(allKeys).call(allKeys, start, end + 1);
254
+ batchKeys = (0, _slice.default)(_allKeys).call(_allKeys, start, end + 1);
234
255
  }
235
256
 
236
257
  if (prevChecked) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/table",
3
- "version": "1.2.0-canary.1",
3
+ "version": "1.2.0-canary.2",
4
4
  "description": "金蝶 react table 组件",
5
5
  "title": "table",
6
6
  "keywords": [