@hi-ui/check-select 4.3.1 → 4.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/lib/cjs/CheckSelect.js +145 -237
- package/lib/cjs/context.js +0 -9
- package/lib/cjs/hooks/use-cache/lib/esm/index.js +3 -10
- package/lib/cjs/hooks/use-data.js +12 -31
- package/lib/cjs/hooks/use-flatten-data.js +9 -22
- package/lib/cjs/index.js +0 -3
- package/lib/cjs/styles/index.scss.js +0 -3
- package/lib/cjs/use-check-select.js +32 -60
- package/lib/cjs/utils/index.js +0 -8
- package/lib/esm/CheckSelect.js +128 -179
- package/lib/esm/context.js +0 -4
- package/lib/esm/hooks/use-cache/lib/esm/index.js +3 -5
- package/lib/esm/hooks/use-data.js +12 -24
- package/lib/esm/hooks/use-flatten-data.js +9 -16
- package/lib/esm/styles/index.scss.js +0 -2
- package/lib/esm/use-check-select.js +32 -45
- package/lib/esm/utils/index.js +0 -5
- package/package.json +27 -27
package/lib/esm/CheckSelect.js
CHANGED
@@ -31,104 +31,95 @@ import '@hi-ui/use-children';
|
|
31
31
|
import { flattenData } from './hooks/use-flatten-data.js';
|
32
32
|
import { getAllCheckedStatus, isCheckableOption, isOption } from './utils/index.js';
|
33
33
|
var _role = 'check-select';
|
34
|
-
|
35
34
|
var _prefix = getPrefixCls(_role);
|
36
|
-
|
37
35
|
var DEFAULT_FIELD_NAMES = {};
|
38
36
|
/**
|
39
37
|
* 多项选择器
|
40
38
|
*/
|
41
|
-
|
42
39
|
var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
43
40
|
// ************************** 国际化 ************************* //
|
44
41
|
var _a$prefixCls = _a.prefixCls,
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
42
|
+
prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
|
43
|
+
className = _a.className,
|
44
|
+
children = _a.children,
|
45
|
+
_a$disabled = _a.disabled,
|
46
|
+
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
47
|
+
_a$clearable = _a.clearable,
|
48
|
+
clearable = _a$clearable === void 0 ? true : _a$clearable,
|
49
|
+
_a$showCheckAll = _a.showCheckAll,
|
50
|
+
showCheckAll = _a$showCheckAll === void 0 ? false : _a$showCheckAll,
|
51
|
+
_a$showOnlyShowChecke = _a.showOnlyShowChecked,
|
52
|
+
showOnlyShowChecked = _a$showOnlyShowChecke === void 0 ? false : _a$showOnlyShowChecke,
|
53
|
+
placeholderProp = _a.placeholder,
|
54
|
+
displayRenderProp = _a.displayRender,
|
55
|
+
onSelectProp = _a.onSelect,
|
56
|
+
height = _a.height,
|
57
|
+
_a$itemHeight = _a.itemHeight,
|
58
|
+
itemHeight = _a$itemHeight === void 0 ? 40 : _a$itemHeight,
|
59
|
+
_a$virtual = _a.virtual,
|
60
|
+
virtual = _a$virtual === void 0 ? true : _a$virtual,
|
61
|
+
visible = _a.visible,
|
62
|
+
onOpen = _a.onOpen,
|
63
|
+
onClose = _a.onClose,
|
64
|
+
appearance = _a.appearance,
|
65
|
+
invalid = _a.invalid,
|
66
|
+
dataSource = _a.dataSource,
|
67
|
+
filterOption = _a.filterOption,
|
68
|
+
searchableProp = _a.searchable,
|
69
|
+
titleRender = _a.render,
|
70
|
+
renderExtraFooter = _a.renderExtraFooter,
|
71
|
+
onSearchProp = _a.onSearch,
|
72
|
+
_a$fieldNames = _a.fieldNames,
|
73
|
+
fieldNames = _a$fieldNames === void 0 ? DEFAULT_FIELD_NAMES : _a$fieldNames,
|
74
|
+
customRender = _a.customRender,
|
75
|
+
tagInputProps = _a.tagInputProps,
|
76
|
+
_a$size = _a.size,
|
77
|
+
size = _a$size === void 0 ? 'md' : _a$size,
|
78
|
+
onKeyDownProp = _a.onKeyDown,
|
79
|
+
rest = __rest(_a, ["prefixCls", "role", "className", "children", "disabled", "clearable", "showCheckAll", "showOnlyShowChecked", "placeholder", "displayRender", "onSelect", "height", "itemHeight", "virtual", "visible", "onOpen", "onClose", "appearance", "invalid", "dataSource", "filterOption", "searchable", "render", "renderExtraFooter", "onSearch", "fieldNames", "customRender", "tagInputProps", "size", "onKeyDown"]);
|
84
80
|
var i18n = useLocaleContext();
|
85
|
-
var placeholder = isUndef(placeholderProp) ? i18n.get('checkSelect.placeholder') : placeholderProp;
|
86
|
-
|
81
|
+
var placeholder = isUndef(placeholderProp) ? i18n.get('checkSelect.placeholder') : placeholderProp;
|
82
|
+
// ************************** Picker ************************* //
|
87
83
|
var _useUncontrolledToggl = useUncontrolledToggle({
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
84
|
+
visible: visible,
|
85
|
+
disabled: disabled,
|
86
|
+
onOpen: onOpen,
|
87
|
+
onClose: onClose
|
88
|
+
}),
|
89
|
+
menuVisible = _useUncontrolledToggl[0],
|
90
|
+
menuVisibleAction = _useUncontrolledToggl[1];
|
96
91
|
var displayRender = useCallback(function (item) {
|
97
92
|
if (isFunction(displayRenderProp)) {
|
98
93
|
return displayRenderProp(item);
|
99
94
|
}
|
100
|
-
|
101
95
|
return item.title;
|
102
96
|
}, [displayRenderProp]);
|
103
|
-
|
104
97
|
var _b = useCheckSelect(Object.assign(Object.assign({}, rest), {
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
98
|
+
children: children,
|
99
|
+
fieldNames: fieldNames,
|
100
|
+
onSelect: onSelectProp
|
101
|
+
})),
|
102
|
+
rootProps = _b.rootProps,
|
103
|
+
context = __rest(_b, ["rootProps"]);
|
112
104
|
var value = context.value,
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
105
|
+
tryChangeValue = context.tryChangeValue,
|
106
|
+
flattedData = context.flattedData,
|
107
|
+
checkedItems = context.checkedItems,
|
108
|
+
onSelect = context.onSelect,
|
109
|
+
isCheckedId = context.isCheckedId;
|
110
|
+
// ************************** 搜索 ************************* //
|
119
111
|
var _c = useAsyncSearch({
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
112
|
+
dataSource: dataSource,
|
113
|
+
dataTransform: function dataTransform(data) {
|
114
|
+
return flattenData({
|
115
|
+
data: data,
|
116
|
+
fieldNames: fieldNames
|
117
|
+
});
|
118
|
+
}
|
119
|
+
}),
|
120
|
+
loading = _c.loading,
|
121
|
+
hasError = _c.hasError,
|
122
|
+
dataSourceStrategy = __rest(_c, ["loading", "hasError"]);
|
132
123
|
var customSearchStrategy = useTreeCustomSearch({
|
133
124
|
data: flattedData,
|
134
125
|
filterOption: filterOption
|
@@ -138,26 +129,22 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
138
129
|
flattedData: flattedData,
|
139
130
|
enabled: searchableProp
|
140
131
|
});
|
141
|
-
|
142
132
|
var _useSearchMode = useSearchMode({
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
133
|
+
searchable: searchableProp,
|
134
|
+
strategies: [dataSourceStrategy, customSearchStrategy, filterSearchStrategy]
|
135
|
+
}),
|
136
|
+
stateInSearch = _useSearchMode.state,
|
137
|
+
searchable = _useSearchMode.searchable,
|
138
|
+
searchMode = _useSearchMode.searchMode,
|
139
|
+
onSearch = _useSearchMode.onSearch,
|
140
|
+
searchValue = _useSearchMode.keyword;
|
141
|
+
// 拦截 titleRender,自定义高亮展示
|
153
142
|
var proxyTitleRender = useCallback(function (node) {
|
154
143
|
if (titleRender) {
|
155
144
|
var _ret = titleRender(node);
|
156
|
-
|
157
145
|
if (_ret && _ret !== true) return _ret;
|
158
|
-
}
|
159
|
-
|
160
|
-
|
146
|
+
}
|
147
|
+
// 本地搜索执行默认高亮规则
|
161
148
|
var highlight = !!searchValue && searchMode === 'filter';
|
162
149
|
var ret = highlight ? /*#__PURE__*/React.createElement(Checkbox, {
|
163
150
|
checked: node.checked,
|
@@ -170,42 +157,35 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
170
157
|
var shouldUseSearch = !!searchValue && !hasError;
|
171
158
|
var showData = useMemo(function () {
|
172
159
|
return shouldUseSearch ? stateInSearch.data : flattedData;
|
173
|
-
}, [shouldUseSearch, flattedData, stateInSearch.data]);
|
174
|
-
|
160
|
+
}, [shouldUseSearch, flattedData, stateInSearch.data]);
|
161
|
+
// 根据 id 进行合并,注意必须是扁平数据
|
175
162
|
var mergedData = useMemo(function () {
|
176
163
|
var nextData = checkedItems.concat(flattedData);
|
177
164
|
return uniqBy(nextData, 'id');
|
178
165
|
}, [checkedItems, flattedData]);
|
179
|
-
|
180
166
|
var _useState = useState(null),
|
181
|
-
|
182
|
-
|
183
|
-
|
167
|
+
filterItems = _useState[0],
|
168
|
+
setFilterItems = _useState[1];
|
184
169
|
var dropdownItems = filterItems || showData;
|
185
170
|
var activeExpandable = showOnlyShowChecked && !!filterItems && menuVisible;
|
186
|
-
|
187
171
|
var _useMemo = useMemo(function () {
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
172
|
+
return getAllCheckedStatus(dropdownItems, value, isOption);
|
173
|
+
}, [dropdownItems, value]),
|
174
|
+
showAllChecked = _useMemo[0],
|
175
|
+
showIndeterminate = _useMemo[1];
|
193
176
|
var valueLatestRef = useLatestRef(value);
|
194
177
|
var toggleCheckAll = useCallback(function () {
|
195
178
|
var value = valueLatestRef.current;
|
196
|
-
|
197
179
|
var _getAllCheckedStatus = getAllCheckedStatus(dropdownItems, value, isCheckableOption),
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
180
|
+
currentAllChecked = _getAllCheckedStatus[0];
|
181
|
+
var shouldChecked = !currentAllChecked;
|
182
|
+
// 当前页的数据选项
|
202
183
|
var items = dropdownItems.filter(isCheckableOption);
|
203
184
|
var targetIds = items.map(function (_ref) {
|
204
185
|
var id = _ref.id;
|
205
186
|
return id;
|
206
187
|
});
|
207
188
|
var allData = uniqBy(items.concat(mergedData), 'id');
|
208
|
-
|
209
189
|
if (shouldChecked) {
|
210
190
|
var nextCheckedIds = Array.from(new Set(value.concat(targetIds)));
|
211
191
|
var changedIds = nextCheckedIds.filter(function (id) {
|
@@ -220,48 +200,38 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
220
200
|
var _nextCheckedIds = value.filter(function (id) {
|
221
201
|
return !targetIds.includes(id);
|
222
202
|
});
|
223
|
-
|
224
203
|
var _changedIds = value.filter(function (id) {
|
225
204
|
return !_nextCheckedIds.includes(id);
|
226
205
|
});
|
227
|
-
|
228
206
|
var _changedItems = allData.filter(function (_ref3) {
|
229
207
|
var id = _ref3.id;
|
230
208
|
return _changedIds.includes(id);
|
231
209
|
}); // items
|
232
|
-
|
233
|
-
|
234
210
|
tryChangeValue(_nextCheckedIds, _changedItems, shouldChecked);
|
235
211
|
}
|
236
|
-
}, [dropdownItems, mergedData, valueLatestRef, tryChangeValue]);
|
237
|
-
|
212
|
+
}, [dropdownItems, mergedData, valueLatestRef, tryChangeValue]);
|
213
|
+
// ************************** 回车选中处理 ************************* //
|
238
214
|
var defaultIndex = showData.findIndex(function (item) {
|
239
215
|
return !item.disabled;
|
240
216
|
});
|
241
|
-
|
242
217
|
var _useState2 = useState(defaultIndex),
|
243
|
-
|
244
|
-
|
245
|
-
|
218
|
+
focusedIndex = _useState2[0],
|
219
|
+
setFocusedIndex = _useState2[1];
|
246
220
|
var handleKeyDown = useLatestCallback(function (evt) {
|
247
221
|
var key = evt.key;
|
248
|
-
|
249
222
|
if (key === 'Enter') {
|
250
223
|
var focusedItem = showData[focusedIndex];
|
251
|
-
|
252
224
|
if (focusedItem) {
|
253
225
|
onSelect(focusedItem, !isCheckedId(focusedItem.id));
|
254
226
|
}
|
255
227
|
}
|
256
|
-
});
|
257
|
-
|
228
|
+
});
|
229
|
+
// 更新 focused 索引
|
258
230
|
useEffect(function () {
|
259
231
|
setFocusedIndex(defaultIndex);
|
260
232
|
}, [defaultIndex, menuVisible]);
|
261
|
-
|
262
233
|
var renderDefaultFooter = function renderDefaultFooter() {
|
263
234
|
var extra = renderExtraFooter ? renderExtraFooter() : null;
|
264
|
-
|
265
235
|
if (showCheckAll) {
|
266
236
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
|
267
237
|
indeterminate: showIndeterminate,
|
@@ -269,10 +239,8 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
269
239
|
onChange: toggleCheckAll
|
270
240
|
}, i18n.get('checkSelect.checkAll')), extra);
|
271
241
|
}
|
272
|
-
|
273
242
|
return extra;
|
274
243
|
};
|
275
|
-
|
276
244
|
var expandedViewRef = useRef('normal');
|
277
245
|
var virtualListProps = {
|
278
246
|
height: height,
|
@@ -280,16 +248,13 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
280
248
|
virtual: virtual,
|
281
249
|
data: dropdownItems
|
282
250
|
};
|
283
|
-
|
284
251
|
var _useCheckInVirtual = useCheckInVirtual(virtualListProps),
|
285
|
-
|
286
|
-
|
252
|
+
inVirtual = _useCheckInVirtual.inVirtual;
|
287
253
|
var cls = cx(prefixCls, className, prefixCls + "--" + (menuVisible ? 'open' : 'closed'));
|
288
254
|
var listRef = useRef(null);
|
289
255
|
useEffect(function () {
|
290
|
-
var _a;
|
291
|
-
|
292
|
-
|
256
|
+
var _a;
|
257
|
+
// 每次打开或数据改变时触发一次滚动条显示
|
293
258
|
if (menuVisible && isArrayNonEmpty(showData)) {
|
294
259
|
(_a = listRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo(undefined);
|
295
260
|
}
|
@@ -326,14 +291,12 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
326
291
|
invalid: invalid,
|
327
292
|
onClick: function onClick(evt) {
|
328
293
|
if (!showOnlyShowChecked) return;
|
329
|
-
if (disabled) return;
|
330
|
-
|
294
|
+
if (disabled) return;
|
295
|
+
// 阻止 Picker 调用 onOpen/onClose
|
331
296
|
evt.preventDefault();
|
332
|
-
|
333
297
|
if (filterItems) {
|
334
298
|
setFilterItems(null);
|
335
299
|
}
|
336
|
-
|
337
300
|
if (menuVisible) {
|
338
301
|
if (expandedViewRef.current === 'normal') {
|
339
302
|
menuVisibleAction.off();
|
@@ -341,15 +304,14 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
341
304
|
} else {
|
342
305
|
menuVisibleAction.on();
|
343
306
|
}
|
344
|
-
|
345
307
|
expandedViewRef.current = 'normal';
|
346
308
|
},
|
347
309
|
expandable: showOnlyShowChecked,
|
348
310
|
activeExpandable: activeExpandable,
|
349
311
|
onExpand: function onExpand(evt) {
|
350
312
|
if (!showOnlyShowChecked) return;
|
351
|
-
if (disabled) return;
|
352
|
-
|
313
|
+
if (disabled) return;
|
314
|
+
// 阻止冒泡触发外层 onClick
|
353
315
|
evt.stopPropagation();
|
354
316
|
evt.preventDefault();
|
355
317
|
setFilterItems(function () {
|
@@ -357,7 +319,6 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
357
319
|
return value.includes(item.id);
|
358
320
|
});
|
359
321
|
});
|
360
|
-
|
361
322
|
if (menuVisible) {
|
362
323
|
if (expandedViewRef.current !== 'normal') {
|
363
324
|
menuVisibleAction.off();
|
@@ -365,7 +326,6 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
365
326
|
} else {
|
366
327
|
menuVisibleAction.on();
|
367
328
|
}
|
368
|
-
|
369
329
|
expandedViewRef.current = 'onlyChecked';
|
370
330
|
}
|
371
331
|
}))
|
@@ -387,34 +347,30 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
387
347
|
focused: focusedIndex === index
|
388
348
|
});
|
389
349
|
}) : null));
|
390
|
-
});
|
391
|
-
|
350
|
+
});
|
351
|
+
// @ts-ignore
|
392
352
|
CheckSelect.HiName = 'CheckSelect';
|
393
|
-
|
394
353
|
if (__DEV__) {
|
395
354
|
CheckSelect.displayName = 'CheckSelect';
|
396
355
|
}
|
397
|
-
|
398
356
|
var optionPrefix = getPrefixCls('check-select-option');
|
399
357
|
var CheckSelectOption = /*#__PURE__*/forwardRef(function (_a, ref) {
|
400
358
|
var _a$prefixCls2 = _a.prefixCls,
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
359
|
+
prefixCls = _a$prefixCls2 === void 0 ? optionPrefix : _a$prefixCls2,
|
360
|
+
className = _a.className,
|
361
|
+
_a$option = _a.option,
|
362
|
+
option = _a$option === void 0 ? {} : _a$option,
|
363
|
+
onClick = _a.onClick,
|
364
|
+
titleRender = _a.titleRender,
|
365
|
+
depth = _a.depth,
|
366
|
+
focused = _a.focused,
|
367
|
+
rest = __rest(_a, ["prefixCls", "className", "children", "option", "onClick", "titleRender", "depth", "focused"]);
|
411
368
|
var _useCheckSelectContex = useCheckSelectContext(),
|
412
|
-
|
413
|
-
|
414
|
-
|
369
|
+
isCheckedId = _useCheckSelectContex.isCheckedId,
|
370
|
+
onSelect = _useCheckSelectContex.onSelect;
|
415
371
|
var id = option.id,
|
416
|
-
|
417
|
-
|
372
|
+
_option$disabled = option.disabled,
|
373
|
+
disabled = _option$disabled === void 0 ? false : _option$disabled;
|
418
374
|
var checked = isCheckedId(id);
|
419
375
|
var eventNodeRef = useLatestRef(Object.assign({}, option, {
|
420
376
|
disabled: disabled,
|
@@ -441,39 +397,33 @@ var CheckSelectOption = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
441
397
|
}, rest, {
|
442
398
|
onClick: handleOptionCheck
|
443
399
|
}), renderIndent(prefixCls, depth), renderTitle(eventNodeRef.current, titleRender));
|
444
|
-
});
|
445
|
-
|
400
|
+
});
|
401
|
+
// @ts-ignore
|
446
402
|
CheckSelectOption.HiName = 'CheckSelectOption';
|
447
|
-
|
448
403
|
if (__DEV__) {
|
449
404
|
CheckSelectOption.displayName = 'CheckSelectOption';
|
450
405
|
}
|
451
|
-
|
452
406
|
var optionGroupPrefix = getPrefixCls('select-option-group');
|
453
407
|
var CheckSelectOptionGroup = /*#__PURE__*/forwardRef(function (_a, ref) {
|
454
408
|
var _a$prefixCls3 = _a.prefixCls,
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
409
|
+
prefixCls = _a$prefixCls3 === void 0 ? optionGroupPrefix : _a$prefixCls3,
|
410
|
+
className = _a.className,
|
411
|
+
label = _a.label,
|
412
|
+
rest = __rest(_a, ["prefixCls", "className", "label"]);
|
460
413
|
var cls = cx(prefixCls, className);
|
461
414
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
462
415
|
ref: ref,
|
463
416
|
className: cls
|
464
417
|
}, rest), /*#__PURE__*/React.createElement("span", null, label));
|
465
|
-
});
|
466
|
-
|
418
|
+
});
|
419
|
+
// @ts-ignore
|
467
420
|
CheckSelectOptionGroup.HiName = 'CheckSelectOptionGroup';
|
468
|
-
|
469
421
|
if (__DEV__) {
|
470
422
|
CheckSelectOptionGroup.displayName = 'CheckSelectOptionGroup';
|
471
423
|
}
|
472
424
|
/**
|
473
425
|
* 渲染空白占位
|
474
426
|
*/
|
475
|
-
|
476
|
-
|
477
427
|
var renderIndent = function renderIndent(prefixCls, depth) {
|
478
428
|
return times(depth, function (index) {
|
479
429
|
return /*#__PURE__*/React.createElement("span", {
|
@@ -486,5 +436,4 @@ var renderIndent = function renderIndent(prefixCls, depth) {
|
|
486
436
|
}));
|
487
437
|
});
|
488
438
|
};
|
489
|
-
|
490
439
|
export { CheckSelect, CheckSelectOption, CheckSelectOptionGroup };
|
package/lib/esm/context.js
CHANGED
@@ -10,15 +10,11 @@
|
|
10
10
|
import { useContext, createContext } from 'react';
|
11
11
|
var checkSelectContext = /*#__PURE__*/createContext(null);
|
12
12
|
var CheckSelectProvider = checkSelectContext.Provider;
|
13
|
-
|
14
13
|
var useCheckSelectContext = function useCheckSelectContext() {
|
15
14
|
var context = useContext(checkSelectContext);
|
16
|
-
|
17
15
|
if (!context) {
|
18
16
|
throw new Error('The checkSelectContext context should using in CheckSelect.');
|
19
17
|
}
|
20
|
-
|
21
18
|
return context;
|
22
19
|
};
|
23
|
-
|
24
20
|
export { CheckSelectProvider, useCheckSelectContext };
|
@@ -8,6 +8,7 @@
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
9
9
|
*/
|
10
10
|
import { useState, useEffect } from 'react';
|
11
|
+
|
11
12
|
/** @LICENSE
|
12
13
|
* @hi-ui/use-cache
|
13
14
|
* https://github.com/XiaoMi/hiui/tree/master/packages/hooks/use-cache#readme
|
@@ -21,16 +22,13 @@ import { useState, useEffect } from 'react';
|
|
21
22
|
/**
|
22
23
|
* A hook using for data cache that compatible with the controlled and uncontrolled modes coexist.
|
23
24
|
*/
|
24
|
-
|
25
25
|
var useCache = function useCache(data) {
|
26
26
|
var _useState = useState(data),
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
internalData = _useState[0],
|
28
|
+
setInternalData = _useState[1];
|
30
29
|
useEffect(function () {
|
31
30
|
setInternalData(data);
|
32
31
|
}, [data]);
|
33
32
|
return [internalData, setInternalData];
|
34
33
|
};
|
35
|
-
|
36
34
|
export { useCache };
|
@@ -11,23 +11,20 @@ import { __rest } from 'tslib';
|
|
11
11
|
import { useMemo, isValidElement } from 'react';
|
12
12
|
import { toArray } from '@hi-ui/use-children';
|
13
13
|
var NOOP_ARRAY = [];
|
14
|
-
|
15
14
|
var useData = function useData(_ref) {
|
16
15
|
var data = _ref.data,
|
17
|
-
|
16
|
+
children = _ref.children;
|
18
17
|
return useMemo(function () {
|
19
|
-
var mergedData;
|
20
|
-
|
18
|
+
var mergedData;
|
19
|
+
// data 优先级大于内嵌式组合
|
21
20
|
if (Array.isArray(data)) {
|
22
21
|
mergedData = data;
|
23
22
|
} else if (children) {
|
24
23
|
mergedData = parseChildren(children);
|
25
24
|
}
|
26
|
-
|
27
25
|
return mergedData || NOOP_ARRAY;
|
28
26
|
}, [children, data]);
|
29
27
|
};
|
30
|
-
|
31
28
|
var parseChildren = function parseChildren(children) {
|
32
29
|
var data = [];
|
33
30
|
var list = toArray(children);
|
@@ -35,13 +32,11 @@ var parseChildren = function parseChildren(children) {
|
|
35
32
|
if (! /*#__PURE__*/isValidElement(item)) return;
|
36
33
|
if (!item.type) return;
|
37
34
|
var HiName = item.type.HiName;
|
38
|
-
|
39
35
|
switch (HiName) {
|
40
36
|
case 'CheckSelectOption':
|
41
37
|
var option = parseOption(item);
|
42
38
|
data.push(option);
|
43
39
|
break;
|
44
|
-
|
45
40
|
case 'CheckSelectOptionGroup':
|
46
41
|
var optGroup = parseOptionGroup(item);
|
47
42
|
data.push(optGroup);
|
@@ -50,14 +45,12 @@ var parseChildren = function parseChildren(children) {
|
|
50
45
|
});
|
51
46
|
return data;
|
52
47
|
};
|
53
|
-
|
54
48
|
var parseOption = function parseOption(node) {
|
55
49
|
var _a = node.props,
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
50
|
+
value = _a.value,
|
51
|
+
children = _a.children,
|
52
|
+
disabled = _a.disabled,
|
53
|
+
rest = __rest(_a, ["value", "children", "disabled", "groupTitle"]);
|
61
54
|
var option = {
|
62
55
|
id: value,
|
63
56
|
title: children,
|
@@ -67,27 +60,22 @@ var parseOption = function parseOption(node) {
|
|
67
60
|
};
|
68
61
|
return option;
|
69
62
|
};
|
70
|
-
|
71
63
|
var parseOptionGroup = function parseOptionGroup(node) {
|
72
64
|
var key = node.key,
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
65
|
+
_a = node.props,
|
66
|
+
groupId = _a.groupId,
|
67
|
+
label = _a.label,
|
68
|
+
children = _a.children,
|
69
|
+
rest = __rest(_a, ["groupId", "label", "children"]);
|
79
70
|
var optGroup = {
|
80
71
|
groupId: groupId !== null && groupId !== void 0 ? groupId : key,
|
81
72
|
groupTitle: label,
|
82
73
|
rootProps: rest,
|
83
74
|
children: []
|
84
75
|
};
|
85
|
-
|
86
76
|
if (children) {
|
87
77
|
optGroup.children = parseChildren(children);
|
88
78
|
}
|
89
|
-
|
90
79
|
return optGroup;
|
91
80
|
};
|
92
|
-
|
93
81
|
export { parseChildren, useData };
|