acud 1.0.7 → 1.0.10

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.
Files changed (72) hide show
  1. package/CHANGELOG.md +466 -0
  2. package/dist/acud.css +4 -32
  3. package/dist/acud.css.map +1 -1
  4. package/dist/acud.js +1091 -482
  5. package/dist/acud.js.map +1 -1
  6. package/dist/acud.min.css +1 -1
  7. package/dist/acud.min.css.map +1 -1
  8. package/dist/acud.min.js +8 -6
  9. package/dist/acud.min.js.map +1 -1
  10. package/es/card/style/index.css +0 -1
  11. package/es/date-picker/src/PickerPanel.js +0 -1
  12. package/es/date-picker/src/RangePicker.js +0 -1
  13. package/es/dialog-box/style/index.css +0 -1
  14. package/es/form/style/index.css +1 -2
  15. package/es/input-number/src/hooks/useFrame.d.ts +1 -1
  16. package/es/input-number/style/index.css +0 -7
  17. package/es/locale/zh_CN.js +2 -1
  18. package/es/modal/style/index.css +0 -1
  19. package/es/pagination/pagination.js +3 -3
  20. package/es/pagination/rc-pagination/Options.js +1 -1
  21. package/es/pagination/style/index.css +0 -2
  22. package/es/popover/style/index.css +0 -1
  23. package/es/rate/style/index.css +0 -1
  24. package/es/select/style/index.css +0 -2
  25. package/es/slider/style/index.css +0 -1
  26. package/es/switch/style/index.css +0 -1
  27. package/es/tabs/style/index.css +0 -1
  28. package/es/tag/style/index.css +0 -1
  29. package/es/timeline/style/index.css +0 -2
  30. package/es/transfer/DataSource.d.ts +2 -0
  31. package/es/transfer/DataSource.js +54 -24
  32. package/es/transfer/Target.d.ts +2 -0
  33. package/es/transfer/Target.js +86 -18
  34. package/es/transfer/index.d.ts +3 -0
  35. package/es/transfer/index.js +14 -5
  36. package/es/transfer/style/index.css +2 -1
  37. package/es/transfer/style/index.less +2 -1
  38. package/es/tree/style/index.css +0 -3
  39. package/es/tree-select/style/index.css +0 -3
  40. package/es/virtual-list/List.js +0 -7
  41. package/lib/card/style/index.css +0 -1
  42. package/lib/date-picker/src/PickerPanel.js +0 -1
  43. package/lib/date-picker/src/RangePicker.js +0 -1
  44. package/lib/dialog-box/style/index.css +0 -1
  45. package/lib/form/style/index.css +1 -2
  46. package/lib/input-number/src/hooks/useFrame.d.ts +1 -1
  47. package/lib/input-number/style/index.css +0 -7
  48. package/lib/locale/zh_CN.js +2 -1
  49. package/lib/modal/style/index.css +0 -1
  50. package/lib/pagination/pagination.js +3 -3
  51. package/lib/pagination/rc-pagination/Options.js +1 -1
  52. package/lib/pagination/style/index.css +0 -2
  53. package/lib/popover/style/index.css +0 -1
  54. package/lib/rate/style/index.css +0 -1
  55. package/lib/select/style/index.css +0 -2
  56. package/lib/slider/style/index.css +0 -1
  57. package/lib/switch/style/index.css +0 -1
  58. package/lib/tabs/style/index.css +0 -1
  59. package/lib/tag/style/index.css +0 -1
  60. package/lib/timeline/style/index.css +0 -2
  61. package/lib/transfer/DataSource.d.ts +2 -0
  62. package/lib/transfer/DataSource.js +54 -24
  63. package/lib/transfer/Target.d.ts +2 -0
  64. package/lib/transfer/Target.js +88 -18
  65. package/lib/transfer/index.d.ts +3 -0
  66. package/lib/transfer/index.js +15 -5
  67. package/lib/transfer/style/index.css +2 -1
  68. package/lib/transfer/style/index.less +2 -1
  69. package/lib/tree/style/index.css +0 -3
  70. package/lib/tree-select/style/index.css +0 -3
  71. package/lib/virtual-list/List.js +0 -7
  72. package/package.json +1 -1
@@ -869,7 +869,6 @@
869
869
  .acud-card-loading .acud-card-body {
870
870
  -webkit-user-select: none;
871
871
  -moz-user-select: none;
872
- -ms-user-select: none;
873
872
  user-select: none;
874
873
  }
875
874
  .acud-card-loading-content p {
@@ -122,7 +122,6 @@ function PickerPanel(props) {
122
122
  var now = generateConfig.getNow();
123
123
  if (!date) return now; // When value is null and set showTime
124
124
 
125
- // When value is null and set showTime
126
125
  if (!mergedValue && showTime) {
127
126
  if (_typeof(showTime) === 'object') {
128
127
  return setDateTime(generateConfig, date, showTime.defaultValue || now);
@@ -172,7 +172,6 @@ function InnerRangePicker(props) {
172
172
  } // Fill disabled unit
173
173
 
174
174
 
175
- // Fill disabled unit
176
175
  for (var i = 0; i < 2; i += 1) {
177
176
  if (mergedDisabled[i] && !getValue(postValues, i) && !getValue(allowEmpty, i)) {
178
177
  postValues = updateValues(postValues, generateConfig.getNow(), i);
@@ -26,7 +26,6 @@
26
26
  animation-duration: 0.3s;
27
27
  -webkit-user-select: none;
28
28
  -moz-user-select: none;
29
- -ms-user-select: none;
30
29
  user-select: none;
31
30
  }
32
31
  .acud-dialogbox-mask {
@@ -742,8 +742,7 @@
742
742
  .acud-form-item-label > label .acud-form-item-tooltip {
743
743
  color: #B8BABF;
744
744
  cursor: help;
745
- -ms-writing-mode: lr-tb;
746
- writing-mode: horizontal-tb;
745
+ writing-mode: horizontal-tb;
747
746
  -webkit-margin-start: 4px;
748
747
  margin-inline-start: 4px;
749
748
  }
@@ -1,5 +1,5 @@
1
- declare const _default: () => (callback: () => void) => void;
2
1
  /**
3
2
  * Always trigger latest once when call multiple time
4
3
  */
4
+ declare const _default: () => (callback: () => void) => void;
5
5
  export default _default;
@@ -249,7 +249,6 @@
249
249
  transition: all 0.1s linear;
250
250
  -webkit-user-select: none;
251
251
  -moz-user-select: none;
252
- -ms-user-select: none;
253
252
  user-select: none;
254
253
  }
255
254
  .acud-input-number-handler-up-inner > *,
@@ -314,18 +313,12 @@
314
313
  .acud-input-number-input::-moz-placeholder {
315
314
  opacity: 1;
316
315
  }
317
- .acud-input-number-input:-ms-input-placeholder {
318
- color: #D4D6D9;
319
- }
320
316
  .acud-input-number-input::placeholder {
321
317
  color: #D4D6D9;
322
318
  }
323
319
  .acud-input-number-input:-moz-placeholder-shown {
324
320
  text-overflow: ellipsis;
325
321
  }
326
- .acud-input-number-input:-ms-input-placeholder {
327
- text-overflow: ellipsis;
328
- }
329
322
  .acud-input-number-input:placeholder-shown {
330
323
  text-overflow: ellipsis;
331
324
  }
@@ -44,7 +44,8 @@ var localeValues = {
44
44
  sourceNoData: '暂无数据',
45
45
  targetTitle: '已选项',
46
46
  targetNoData: '请选择左侧数据',
47
- clearAll: '清空'
47
+ clearAll: '清空',
48
+ workerLoadingTip: '数据计算中...'
48
49
  },
49
50
  Upload: {
50
51
  uploading: '上传中',
@@ -28,7 +28,6 @@
28
28
  animation-duration: 0.3s;
29
29
  -webkit-user-select: none;
30
30
  -moz-user-select: none;
31
- -ms-user-select: none;
32
31
  user-select: none;
33
32
  }
34
33
  .acud-modal-mask {
@@ -87,7 +87,8 @@ var Pagination = function Pagination(_a) {
87
87
  mini: isSmall
88
88
  }, 'rtl', direction === 'rtl'), className);
89
89
  return /*#__PURE__*/React.createElement(RcPagination, _extends({
90
- showSizeChanger: showSizeChanger
90
+ showSizeChanger: showSizeChanger,
91
+ locale: LOCALE
91
92
  }, restProps, {
92
93
  prefixCls: prefixCls,
93
94
  selectPrefixCls: selectPrefixCls
@@ -95,8 +96,7 @@ var Pagination = function Pagination(_a) {
95
96
  className: extendedClassName,
96
97
  selectComponentClass: showSizeChanger ? Select : undefined,
97
98
  Option: Option,
98
- showQuickJumper: showQuickJumper,
99
- locale: LOCALE
99
+ showQuickJumper: showQuickJumper
100
100
  }));
101
101
  };
102
102
 
@@ -24,7 +24,7 @@ var Options = function Options(_ref) {
24
24
  }, []);
25
25
  buildOptionText = React.useCallback(function (value) {
26
26
  return "".concat(value, " ").concat(locale.items_per_page);
27
- }, []);
27
+ }, [locale]);
28
28
  var handleChangeSize = React.useCallback(function (value) {
29
29
  changeSize(Number(value));
30
30
  }, [changeSize]);
@@ -67,7 +67,6 @@
67
67
  cursor: pointer;
68
68
  -webkit-user-select: none;
69
69
  -moz-user-select: none;
70
- -ms-user-select: none;
71
70
  user-select: none;
72
71
  box-sizing: border-box;
73
72
  font-weight: 400;
@@ -251,7 +250,6 @@
251
250
  cursor: pointer;
252
251
  -webkit-user-select: none;
253
252
  -moz-user-select: none;
254
- -ms-user-select: none;
255
253
  user-select: none;
256
254
  }
257
255
  .acud-pagination-prev.acud-pagination-disabled button,
@@ -22,7 +22,6 @@
22
22
  cursor: auto;
23
23
  -webkit-user-select: text;
24
24
  -moz-user-select: text;
25
- -ms-user-select: text;
26
25
  user-select: text;
27
26
  }
28
27
  .acud-popover::after {
@@ -130,7 +130,6 @@
130
130
  margin-bottom: 4px;
131
131
  -webkit-user-select: none;
132
132
  -moz-user-select: none;
133
- -ms-user-select: none;
134
133
  user-select: none;
135
134
  transition: all 0.3s;
136
135
  cursor: pointer;
@@ -38,7 +38,6 @@
38
38
  position: relative;
39
39
  -webkit-user-select: none;
40
40
  -moz-user-select: none;
41
- -ms-user-select: none;
42
41
  user-select: none;
43
42
  color: #151B26;
44
43
  }
@@ -191,7 +190,6 @@
191
190
  transition: font-size 0.3s, line-height 0.3s, height 0.3s;
192
191
  -webkit-user-select: none;
193
192
  -moz-user-select: none;
194
- -ms-user-select: none;
195
193
  user-select: none;
196
194
  -webkit-margin-end: 5px;
197
195
  margin-inline-end: 5px;
@@ -253,7 +253,6 @@
253
253
  cursor: pointer;
254
254
  -webkit-user-select: none;
255
255
  -moz-user-select: none;
256
- -ms-user-select: none;
257
256
  user-select: none;
258
257
  }
259
258
  .acud-slider-mark-text:first-child {
@@ -202,7 +202,6 @@
202
202
  vertical-align: middle;
203
203
  -webkit-user-select: text;
204
204
  -moz-user-select: text;
205
- -ms-user-select: text;
206
205
  user-select: text;
207
206
  pointer-events: none;
208
207
  }
@@ -537,7 +537,6 @@
537
537
  cursor: pointer;
538
538
  -webkit-user-select: none;
539
539
  -moz-user-select: none;
540
- -ms-user-select: none;
541
540
  user-select: none;
542
541
  color: #151B26;
543
542
  }
@@ -312,7 +312,6 @@
312
312
  .acud-tag-type-edit {
313
313
  -webkit-user-select: none;
314
314
  -moz-user-select: none;
315
- -ms-user-select: none;
316
315
  user-select: none;
317
316
  padding-right: 4px;
318
317
  line-height: 24px;
@@ -166,7 +166,6 @@
166
166
  cursor: pointer;
167
167
  -webkit-user-select: none;
168
168
  -moz-user-select: none;
169
- -ms-user-select: none;
170
169
  user-select: none;
171
170
  }
172
171
  .common-content-link {
@@ -579,7 +578,6 @@
579
578
  cursor: pointer;
580
579
  -webkit-user-select: none;
581
580
  -moz-user-select: none;
582
- -ms-user-select: none;
583
581
  user-select: none;
584
582
  }
585
583
  .acud-timeline-item-content-link {
@@ -4,5 +4,7 @@ export interface DataSourceProps<RecordType> extends TransferProps<RecordType> {
4
4
  tKeys: string[];
5
5
  setTKeys: (t: string[]) => void;
6
6
  expansionSource: RecordType[];
7
+ loading: boolean;
8
+ setLoading: (loading: boolean) => void;
7
9
  }
8
10
  export default function dataSource<RecordType extends TransferItem = TransferItem>(props: DataSourceProps<RecordType>): JSX.Element;
@@ -38,23 +38,30 @@ export default function dataSource(props) {
38
38
  useWorker = _props$useWorker === void 0 ? false : _props$useWorker,
39
39
  tKeys = props.tKeys,
40
40
  setTKeys = props.setTKeys,
41
+ loading = props.loading,
42
+ setLoading = props.setLoading,
43
+ _props$workerLimit = props.workerLimit,
44
+ workerLimit = _props$workerLimit === void 0 ? 20000 : _props$workerLimit,
45
+ _props$workerLoading = props.workerLoading,
46
+ workerLoading = _props$workerLoading === void 0 ? true : _props$workerLoading,
41
47
  leftStyle = props.leftStyle,
42
48
  locale = props.locale;
43
49
  var filterOption = filterOptionProp || (displayType === 'table' ? defaultTableFilterOption : defaultFilterOption);
44
50
  var dataSourceCls = "".concat(prefixCls, "-datasource");
45
51
  var sourceTitle = locale.sourceTitle,
46
52
  searchPlaceholder = locale.searchPlaceholder,
47
- sourceNoData = locale.sourceNoData; // 搜索关键字
53
+ sourceNoData = locale.sourceNoData,
54
+ workerLoadingTip = locale.workerLoadingTip; // 搜索关键字
48
55
 
49
56
  var _React$useState = React.useState(''),
50
57
  _React$useState2 = _slicedToArray(_React$useState, 2),
51
58
  searchValue = _React$useState2[0],
52
59
  setSearchValue = _React$useState2[1];
53
60
 
54
- var _React$useState3 = React.useState(false),
61
+ var _React$useState3 = React.useState([]),
55
62
  _React$useState4 = _slicedToArray(_React$useState3, 2),
56
- loading = _React$useState4[0],
57
- setLoading = _React$useState4[1];
63
+ totalSelectedUndisabledKeys = _React$useState4[0],
64
+ setTotalSelectedUndisabledKeys = _React$useState4[1];
58
65
 
59
66
  var filterSource = React.useMemo(function () {
60
67
  if (searchValue === '') {
@@ -100,37 +107,60 @@ export default function dataSource(props) {
100
107
  var unDisabledDataSource = filterSource.filter(function (data) {
101
108
  return !data.group && !data.disabled;
102
109
  });
103
- return unDisabledDataSource.map(function (data) {
110
+ var udd = unDisabledDataSource.map(function (data) {
104
111
  return data.key;
105
112
  });
113
+ return udd;
106
114
  }, [filterSource]);
107
- var totalSelectedUndisabledKeys = React.useMemo(function () {
108
- return tKeys.filter(function (key) {
109
- return totalUndisabledKeys.includes(key);
110
- });
111
- }, [totalUndisabledKeys, tKeys]);
115
+ React.useEffect(function () {
116
+ if (useWorker && tKeys.length >= workerLimit && totalUndisabledKeys.length >= workerLimit) {
117
+ workerLoading && setLoading(true);
118
+ var tsuWorker = createWorker(function (e) {
119
+ var _e$data = e.data,
120
+ tKeys = _e$data.tKeys,
121
+ totalUndisabledKeys = _e$data.totalUndisabledKeys;
122
+ var tsu = tKeys.filter(function (key) {
123
+ return totalUndisabledKeys.includes(key);
124
+ });
125
+ self.postMessage(tsu);
126
+ });
127
+ tsuWorker.addEventListener('message', function (event) {
128
+ setTotalSelectedUndisabledKeys(event.data);
129
+ tsuWorker.terminate();
130
+ workerLoading && setLoading(false);
131
+ });
132
+ tsuWorker.postMessage({
133
+ tKeys: tKeys,
134
+ totalUndisabledKeys: totalUndisabledKeys
135
+ });
136
+ } else {
137
+ var tsu = tKeys.filter(function (key) {
138
+ return totalUndisabledKeys.includes(key);
139
+ });
140
+ setTotalSelectedUndisabledKeys(tsu);
141
+ }
142
+ }, [totalUndisabledKeys, tKeys, useWorker, workerLimit, workerLoading]);
112
143
  var allChecked = totalUndisabledKeys.length === totalSelectedUndisabledKeys.length;
113
144
  var indeterminate = totalSelectedUndisabledKeys.length && totalUndisabledKeys.length > totalSelectedUndisabledKeys.length;
114
145
  var selectAll = React.useCallback(function () {
115
146
  var newTKeys = []; // 取消全选
116
147
 
117
148
  if (allChecked) {
118
- if (useWorker) {
119
- setLoading(true);
149
+ if (useWorker && tKeys.length > workerLimit && totalUndisabledKeys.length >= workerLimit) {
150
+ workerLoading && setLoading(true);
120
151
  var cancelAllWorker = createWorker(function (e) {
121
- var _e$data = e.data,
122
- tKeys = _e$data.tKeys,
123
- totalUndisabledKeys = _e$data.totalUndisabledKeys;
152
+ var _e$data2 = e.data,
153
+ tKeys = _e$data2.tKeys,
154
+ totalUndisabledKeys = _e$data2.totalUndisabledKeys;
124
155
  var nKeys = tKeys.filter(function (key) {
125
156
  return !totalUndisabledKeys.includes(key);
126
157
  });
127
158
  self.postMessage(nKeys);
128
- }); // 主线程监听worker线程返回的数据
129
-
159
+ });
130
160
  cancelAllWorker.addEventListener('message', function (event) {
131
161
  setTKeys(event.data);
132
162
  cancelAllWorker.terminate();
133
- setLoading(false);
163
+ workerLoading && setLoading(false);
134
164
  });
135
165
  cancelAllWorker.postMessage({
136
166
  tKeys: tKeys,
@@ -146,7 +176,7 @@ export default function dataSource(props) {
146
176
  newTKeys = _toConsumableArray(new Set([].concat(_toConsumableArray(tKeys), _toConsumableArray(totalUndisabledKeys))));
147
177
  setTKeys(newTKeys);
148
178
  }
149
- }, [totalSelectedUndisabledKeys, totalUndisabledKeys, allChecked, tKeys]);
179
+ }, [expansionSource, totalSelectedUndisabledKeys, totalUndisabledKeys, useWorker, workerLimit, workerLoading, allChecked, tKeys]);
150
180
  var searchChange = React.useCallback(function (e) {
151
181
  var searchValue = e.target.value;
152
182
  setSearchValue(searchValue);
@@ -167,13 +197,13 @@ export default function dataSource(props) {
167
197
  onChange: onSelectChange,
168
198
  selectedRowKeys: tKeys
169
199
  };
170
- return /*#__PURE__*/React.createElement("div", {
171
- className: dataSourceCls,
172
- style: leftStyle
173
- }, /*#__PURE__*/React.createElement(Loading, {
200
+ return /*#__PURE__*/React.createElement(Loading, {
174
201
  loading: loading,
175
- tip: "\u52A0\u8F7D\u4E2D...",
202
+ tip: workerLoadingTip,
176
203
  size: "small"
204
+ }, /*#__PURE__*/React.createElement("div", {
205
+ className: dataSourceCls,
206
+ style: leftStyle
177
207
  }, /*#__PURE__*/React.createElement("div", {
178
208
  className: "".concat(dataSourceCls, "-header")
179
209
  }, showSelectAll && displayType === 'single' && /*#__PURE__*/React.createElement(Checkbox, {
@@ -3,6 +3,8 @@ import { TransferItem, TransferProps } from '.';
3
3
  export interface DataSourceProps<RecordType> extends TransferProps<RecordType> {
4
4
  tKeys: string[];
5
5
  setTKeys: (t: string[]) => void;
6
+ loading: boolean;
7
+ setLoading: (loading: boolean) => void;
6
8
  expansionSource: RecordType[];
7
9
  }
8
10
  export default function target<RecordType extends TransferItem = TransferItem>(props: DataSourceProps<RecordType>): JSX.Element;
@@ -10,6 +10,8 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
10
10
  import * as React from 'react';
11
11
  import classnames from 'classnames/dedupe';
12
12
  import { OutlinedClose } from 'acud-icon';
13
+ import { createWorker } from '../_util/createWorker';
14
+ import Loading from '../loading';
13
15
  import Table from '../table';
14
16
  import TargetList from './TargetList';
15
17
  import Search from '../search';
@@ -32,6 +34,13 @@ export default function target(props) {
32
34
  showSearchClear = _props$showSearchClea === void 0 ? true : _props$showSearchClea,
33
35
  tKeys = props.tKeys,
34
36
  setTKeys = props.setTKeys,
37
+ loading = props.loading,
38
+ setLoading = props.setLoading,
39
+ useWorker = props.useWorker,
40
+ _props$workerLimit = props.workerLimit,
41
+ workerLimit = _props$workerLimit === void 0 ? 20000 : _props$workerLimit,
42
+ _props$workerLoading = props.workerLoading,
43
+ workerLoading = _props$workerLoading === void 0 ? true : _props$workerLoading,
35
44
  rightStyle = props.rightStyle,
36
45
  locale = props.locale,
37
46
  expansionSource = props.expansionSource,
@@ -40,26 +49,58 @@ export default function target(props) {
40
49
  var targetTitle = locale.targetTitle,
41
50
  searchPlaceholder = locale.searchPlaceholder,
42
51
  targetNoData = locale.targetNoData,
43
- clearAll = locale.clearAll;
44
- var targetSource = React.useMemo(function () {
45
- return expansionSource.filter(function (data) {
46
- return tKeys.includes(data.key) || data.group && data.childrenKeys.some(function (childKey) {
47
- return tKeys.includes(childKey);
52
+ clearAll = locale.clearAll,
53
+ workerLoadingTip = locale.workerLoadingTip;
54
+
55
+ var _React$useState = React.useState([]),
56
+ _React$useState2 = _slicedToArray(_React$useState, 2),
57
+ targetSource = _React$useState2[0],
58
+ setTargetSource = _React$useState2[1];
59
+
60
+ React.useEffect(function () {
61
+ if (useWorker && expansionSource.length > workerLimit && tKeys.length > workerLimit) {
62
+ workerLoading && setLoading(true);
63
+ var tsWorker = createWorker(function (e) {
64
+ var _e$data = e.data,
65
+ expansionSource = _e$data.expansionSource,
66
+ tKeys = _e$data.tKeys;
67
+ var tsArr = expansionSource.filter(function (data) {
68
+ return tKeys.includes(data.key) || data.group && data.childrenKeys.some(function (childKey) {
69
+ return tKeys.includes(childKey);
70
+ });
71
+ });
72
+ self.postMessage(tsArr);
48
73
  });
49
- });
74
+ tsWorker.addEventListener('message', function (event) {
75
+ setTargetSource(event.data);
76
+ tsWorker.terminate();
77
+ workerLoading && setLoading(false);
78
+ });
79
+ tsWorker.postMessage({
80
+ expansionSource: expansionSource,
81
+ tKeys: tKeys
82
+ });
83
+ } else {
84
+ var ts = expansionSource.filter(function (data) {
85
+ return tKeys.includes(data.key) || data.group && data.childrenKeys.some(function (childKey) {
86
+ return tKeys.includes(childKey);
87
+ });
88
+ });
89
+ setTargetSource(ts);
90
+ }
50
91
  }, [expansionSource, tKeys]); // 搜索关键字
51
92
 
52
- var _React$useState = React.useState(''),
53
- _React$useState2 = _slicedToArray(_React$useState, 2),
54
- searchValue = _React$useState2[0],
55
- setSearchValue = _React$useState2[1];
93
+ var _React$useState3 = React.useState(''),
94
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
95
+ searchValue = _React$useState4[0],
96
+ setSearchValue = _React$useState4[1];
56
97
 
57
98
  var filterSource = React.useMemo(function () {
58
99
  if (searchValue === '') {
59
100
  return targetSource;
60
101
  }
61
102
 
62
- return targetSource.filter(function (data) {
103
+ var tfs = targetSource.filter(function (data) {
63
104
  if (data.group) {
64
105
  return filterOption(searchValue, data) || data.children.some(function (child) {
65
106
  return tKeys.includes(child.key) && filterOption(searchValue, child);
@@ -75,6 +116,7 @@ export default function target(props) {
75
116
 
76
117
  return filterOption(searchValue, data);
77
118
  });
119
+ return tfs;
78
120
  }, [searchValue, targetSource]); // 已选项
79
121
 
80
122
  var optionSource = React.useMemo(function () {
@@ -101,11 +143,33 @@ export default function target(props) {
101
143
  });
102
144
  }, [optionSource]);
103
145
  var handleClearAll = React.useCallback(function () {
104
- var newTKeys = tKeys.filter(function (key) {
105
- return !totalUndisabledKeys.includes(key);
106
- });
107
- setTKeys(newTKeys);
108
- }, [totalUndisabledKeys, tKeys]);
146
+ if (useWorker && tKeys.length > workerLimit && totalUndisabledKeys.length > workerLimit) {
147
+ workerLoading && setLoading(true);
148
+ var tkWorker = createWorker(function (e) {
149
+ var _e$data2 = e.data,
150
+ totalUndisabledKeys = _e$data2.totalUndisabledKeys,
151
+ tKeys = _e$data2.tKeys;
152
+ var newTKeys = tKeys.filter(function (key) {
153
+ return !totalUndisabledKeys.includes(key);
154
+ });
155
+ self.postMessage(newTKeys);
156
+ });
157
+ tkWorker.addEventListener('message', function (event) {
158
+ setTKeys(event.data);
159
+ tkWorker.terminate();
160
+ workerLoading && setLoading(false);
161
+ });
162
+ tkWorker.postMessage({
163
+ totalUndisabledKeys: totalUndisabledKeys,
164
+ tKeys: tKeys
165
+ });
166
+ } else {
167
+ var newTKeys = tKeys.filter(function (key) {
168
+ return !totalUndisabledKeys.includes(key);
169
+ });
170
+ setTKeys(newTKeys);
171
+ }
172
+ }, [totalUndisabledKeys, tKeys, useWorker, workerLimit, workerLoading]);
109
173
  var searchChange = React.useCallback(function (e) {
110
174
  var searchValue = e.target.value;
111
175
  setSearchValue(searchValue);
@@ -156,7 +220,11 @@ export default function target(props) {
156
220
  return tColumns;
157
221
  }, [columns, tKeys]);
158
222
  var clearCls = classnames((_classnames = {}, _defineProperty(_classnames, "".concat(targetCls, "-clear-all"), true), _defineProperty(_classnames, "".concat(targetCls, "-clear-all-disabled"), filterSource.length === totalDisabledKeys.length), _classnames));
159
- return /*#__PURE__*/React.createElement("div", {
223
+ return /*#__PURE__*/React.createElement(Loading, {
224
+ loading: loading,
225
+ tip: workerLoadingTip,
226
+ size: "small"
227
+ }, /*#__PURE__*/React.createElement("div", {
160
228
  className: targetCls,
161
229
  style: rightStyle
162
230
  }, /*#__PURE__*/React.createElement("div", {
@@ -185,5 +253,5 @@ export default function target(props) {
185
253
  filterSource: filterSource
186
254
  })), filterSource.length === 0 && /*#__PURE__*/React.createElement("p", {
187
255
  className: "".concat(prefixCls, "-target-nodata")
188
- }, /*#__PURE__*/React.createElement("span", null, targetNoData))));
256
+ }, /*#__PURE__*/React.createElement("span", null, targetNoData)))));
189
257
  }
@@ -14,6 +14,7 @@ export interface TransferLocale {
14
14
  sourceNoData: React.ReactNode;
15
15
  targetNoData: React.ReactNode;
16
16
  clearAll: string;
17
+ workerLoadingTip: string;
17
18
  }
18
19
  export interface TransferItem {
19
20
  key?: string;
@@ -45,6 +46,8 @@ export interface TransferProps<RecordType> {
45
46
  defaultExpandGroupKey?: string[] | string | number[] | number | boolean;
46
47
  virtual?: boolean;
47
48
  useWorker?: boolean;
49
+ workerLimit?: number;
50
+ workerLoading?: boolean;
48
51
  columns?: ColumnsType<RecordType>;
49
52
  }
50
53
  export default function transfer<RecordType extends TransferItem = TransferItem>(props: TransferProps<RecordType>): JSX.Element;
@@ -24,7 +24,12 @@ export default function transfer(props) {
24
24
  locale = _props$locale === void 0 ? {} : _props$locale,
25
25
  dataSource = props.dataSource;
26
26
 
27
- var userLocale = _extends(_extends({}, baseLocale.Transfer), locale); // 二级数据展开成一级数据
27
+ var userLocale = _extends(_extends({}, baseLocale.Transfer), locale);
28
+
29
+ var _React$useState = React.useState(false),
30
+ _React$useState2 = _slicedToArray(_React$useState, 2),
31
+ loading = _React$useState2[0],
32
+ setLoading = _React$useState2[1]; // 二级数据展开成一级数据
28
33
 
29
34
 
30
35
  var expansionSource = React.useMemo(function () {
@@ -55,10 +60,10 @@ export default function transfer(props) {
55
60
  return expansionArr;
56
61
  }, [dataSource]);
57
62
 
58
- var _React$useState = React.useState(targetKeys || []),
59
- _React$useState2 = _slicedToArray(_React$useState, 2),
60
- tKeys = _React$useState2[0],
61
- setTKeys = _React$useState2[1];
63
+ var _React$useState3 = React.useState(targetKeys || []),
64
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
65
+ tKeys = _React$useState4[0],
66
+ setTKeys = _React$useState4[1];
62
67
 
63
68
  var mergedKeys = 'targetKeys' in props ? targetKeys : tKeys;
64
69
  React.useEffect(function () {
@@ -73,6 +78,8 @@ export default function transfer(props) {
73
78
  prefixCls: prefixCls,
74
79
  tKeys: mergedKeys,
75
80
  setTKeys: setTKeys,
81
+ loading: loading,
82
+ setLoading: setLoading,
76
83
  expansionSource: expansionSource
77
84
  })), /*#__PURE__*/React.createElement(Target, _extends({}, props, {
78
85
  displayType: displayType,
@@ -80,6 +87,8 @@ export default function transfer(props) {
80
87
  prefixCls: prefixCls,
81
88
  tKeys: mergedKeys,
82
89
  setTKeys: setTKeys,
90
+ loading: loading,
91
+ setLoading: setLoading,
83
92
  expansionSource: expansionSource
84
93
  })));
85
94
  }
@@ -49,7 +49,8 @@
49
49
  .acud-transfer-datasource-label {
50
50
  color: #151B26;
51
51
  font-size: 12px;
52
- font-weight: #FFECD4;
52
+ font-weight: 400;
53
+ word-break: break-all;
53
54
  }
54
55
  .acud-transfer-datasource-body {
55
56
  overflow: hidden;
@@ -42,7 +42,8 @@
42
42
  &-label {
43
43
  color: @G2;
44
44
  font-size: @T2;
45
- font-weight: @W2;
45
+ font-weight: @font-weight-400;
46
+ word-break: break-all;
46
47
  }
47
48
  &-body {
48
49
  overflow: hidden;
@@ -277,7 +277,6 @@
277
277
  white-space: nowrap;
278
278
  -webkit-user-select: none;
279
279
  -moz-user-select: none;
280
- -ms-user-select: none;
281
280
  user-select: none;
282
281
  }
283
282
  .acud-tree-indent-unit {
@@ -295,7 +294,6 @@
295
294
  cursor: pointer;
296
295
  -webkit-user-select: none;
297
296
  -moz-user-select: none;
298
- -ms-user-select: none;
299
297
  user-select: none;
300
298
  }
301
299
  .acud-tree-switcher .acud-tree-switcher-icon,
@@ -437,7 +435,6 @@
437
435
  line-height: 24px;
438
436
  -webkit-user-select: none;
439
437
  -moz-user-select: none;
440
- -ms-user-select: none;
441
438
  user-select: none;
442
439
  }
443
440
  .acud-tree-node-content-wrapper .acud-tree-drop-indicator {