@hi-ui/check-select 5.0.0-experimental.1 → 5.0.0-experimental.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 +25 -0
- package/lib/cjs/CheckSelect.js +91 -10
- package/lib/esm/CheckSelect.js +92 -11
- package/lib/types/CheckSelect.d.ts +12 -3
- package/lib/types/context.d.ts +12 -5
- package/lib/types/types.d.ts +15 -0
- package/package.json +13 -12
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @hi-ui/check-select
|
|
2
2
|
|
|
3
|
+
## 5.0.0-experimental.2
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 59cef699f: feat: 组件语义化样式改造,增加 styles 和 classNames 属性 (5.0)
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- eb17c4697: style: 修复 UI/样式问题 (5.0)
|
|
12
|
+
- Updated dependencies [7f204c892]
|
|
13
|
+
- Updated dependencies [eb17c4697]
|
|
14
|
+
- Updated dependencies [eb17c4697]
|
|
15
|
+
- Updated dependencies [c407744fe]
|
|
16
|
+
- Updated dependencies [59cef699f]
|
|
17
|
+
- @hi-ui/icons@5.0.0-experimental.1
|
|
18
|
+
- @hi-ui/core@5.0.0-experimental.1
|
|
19
|
+
- @hi-ui/checkbox@5.0.0-experimental.1
|
|
20
|
+
- @hi-ui/highlighter@5.0.0-experimental.1
|
|
21
|
+
- @hi-ui/input@5.0.0-experimental.2
|
|
22
|
+
- @hi-ui/picker@5.0.0-experimental.2
|
|
23
|
+
- @hi-ui/popper@5.0.0-experimental.1
|
|
24
|
+
- @hi-ui/tag-input@5.0.0-experimental.2
|
|
25
|
+
- @hi-ui/virtual-list@5.0.0-experimental.1
|
|
26
|
+
- @hi-ui/use-merge-semantic@5.0.0-experimental.0
|
|
27
|
+
|
|
3
28
|
## 5.0.0-experimental.1
|
|
4
29
|
|
|
5
30
|
### Minor Changes
|
package/lib/cjs/CheckSelect.js
CHANGED
|
@@ -26,6 +26,7 @@ var tagInput = require('@hi-ui/tag-input');
|
|
|
26
26
|
var typeAssertion = require('@hi-ui/type-assertion');
|
|
27
27
|
var VirtualList = require('@hi-ui/virtual-list');
|
|
28
28
|
var picker = require('@hi-ui/picker');
|
|
29
|
+
var useMergeSemantic = require('@hi-ui/use-merge-semantic');
|
|
29
30
|
var domUtils = require('@hi-ui/dom-utils');
|
|
30
31
|
var arrayUtils = require('@hi-ui/array-utils');
|
|
31
32
|
var highlighter = require('@hi-ui/highlighter');
|
|
@@ -104,10 +105,29 @@ var CheckSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
104
105
|
_a$showIndicator = _a.showIndicator,
|
|
105
106
|
showIndicator = _a$showIndicator === void 0 ? true : _a$showIndicator,
|
|
106
107
|
renderExtraHeader = _a.renderExtraHeader,
|
|
107
|
-
|
|
108
|
+
classNamesProp = _a.classNames,
|
|
109
|
+
stylesProp = _a.styles,
|
|
110
|
+
innerRef = _a.innerRef,
|
|
111
|
+
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "children", "disabled", "clearable", "showCheckAll", "showOnlyShowChecked", "placeholder", "displayRender", "onSelect", "height", "itemHeight", "virtual", "visible", "onOpen", "onClose", "onClear", "appearance", "invalid", "dataSource", "searchOnInit", "filterOption", "searchable", "render", "renderExtraFooter", "onSearch", "onItemCreate", "creatableInSearch", "fieldNames", "checkedOnEntered", "customRender", "tagInputProps", "size", "prefix", "suffix", "onKeyDown", "keyword", "clearSearchOnClosed", "label", "showIndicator", "renderExtraHeader", "classNames", "styles", "innerRef"]);
|
|
108
112
|
var _useGlobalContext = core.useGlobalContext(),
|
|
109
|
-
globalSize = _useGlobalContext.size
|
|
113
|
+
globalSize = _useGlobalContext.size,
|
|
114
|
+
checkSelectConfig = _useGlobalContext.checkSelect;
|
|
110
115
|
var size = (_b = sizeProp !== null && sizeProp !== void 0 ? sizeProp : globalSize) !== null && _b !== void 0 ? _b : 'md';
|
|
116
|
+
var _useMergeSemantic = useMergeSemantic.useMergeSemantic({
|
|
117
|
+
classNamesList: [checkSelectConfig === null || checkSelectConfig === void 0 ? void 0 : checkSelectConfig.classNames, classNamesProp],
|
|
118
|
+
stylesList: [checkSelectConfig === null || checkSelectConfig === void 0 ? void 0 : checkSelectConfig.styles, stylesProp],
|
|
119
|
+
info: {
|
|
120
|
+
props: Object.assign(Object.assign({}, rest), {
|
|
121
|
+
disabled: disabled,
|
|
122
|
+
searchable: searchableProp,
|
|
123
|
+
visible: visible,
|
|
124
|
+
size: size,
|
|
125
|
+
appearance: appearance
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
}),
|
|
129
|
+
classNames = _useMergeSemantic.classNames,
|
|
130
|
+
styles = _useMergeSemantic.styles;
|
|
111
131
|
// ************************** 国际化 ************************* //
|
|
112
132
|
var i18n = core.useLocaleContext();
|
|
113
133
|
var placeholder = typeAssertion.isUndef(placeholderProp) ? i18n.get('checkSelect.placeholder') : placeholderProp;
|
|
@@ -318,7 +338,8 @@ var CheckSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
318
338
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
|
|
319
339
|
indeterminate: showIndeterminate,
|
|
320
340
|
checked: showAllChecked,
|
|
321
|
-
onChange: toggleCheckAll
|
|
341
|
+
onChange: toggleCheckAll,
|
|
342
|
+
disabled: !(dropdownItems === null || dropdownItems === void 0 ? void 0 : dropdownItems.length)
|
|
322
343
|
}, i18n.get('checkSelect.checkAll')), extra);
|
|
323
344
|
}
|
|
324
345
|
return extra;
|
|
@@ -348,12 +369,64 @@ var CheckSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
348
369
|
}
|
|
349
370
|
}
|
|
350
371
|
}, [menuVisible, showData]);
|
|
372
|
+
var pickerSemanticKeys = ['root', 'container', 'panel', 'header', 'search', 'body', 'footer', 'loading', 'empty', 'creator'];
|
|
373
|
+
var pickerClassNames = pickerSemanticKeys.reduce(function (acc, key) {
|
|
374
|
+
if ((classNames === null || classNames === void 0 ? void 0 : classNames[key]) !== undefined) {
|
|
375
|
+
acc[key] = classNames[key];
|
|
376
|
+
}
|
|
377
|
+
return acc;
|
|
378
|
+
}, {});
|
|
379
|
+
var pickerStyles = pickerSemanticKeys.reduce(function (acc, key) {
|
|
380
|
+
if (styles === null || styles === void 0 ? void 0 : styles[key]) {
|
|
381
|
+
acc[key] = styles[key];
|
|
382
|
+
}
|
|
383
|
+
return acc;
|
|
384
|
+
}, {});
|
|
385
|
+
React.useImperativeHandle(innerRef, function () {
|
|
386
|
+
return {
|
|
387
|
+
checkAll: function checkAll(checked) {
|
|
388
|
+
if (checked === void 0) {
|
|
389
|
+
checked = true;
|
|
390
|
+
}
|
|
391
|
+
if (checked) {
|
|
392
|
+
if (!showAllChecked) toggleCheckAll();
|
|
393
|
+
} else {
|
|
394
|
+
if (showAllChecked) toggleCheckAll();
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
showOnlyChecked: function showOnlyChecked(onlyChecked) {
|
|
398
|
+
if (onlyChecked === void 0) {
|
|
399
|
+
onlyChecked = true;
|
|
400
|
+
}
|
|
401
|
+
if (!showOnlyShowChecked) return;
|
|
402
|
+
if (disabled) return;
|
|
403
|
+
if (onlyChecked) {
|
|
404
|
+
setFilterItems(function () {
|
|
405
|
+
return mergedData.filter(function (item) {
|
|
406
|
+
return value.includes(item.id);
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
menuVisibleAction.on();
|
|
410
|
+
expandedViewRef.current = 'onlyChecked';
|
|
411
|
+
} else {
|
|
412
|
+
if (filterItems) setFilterItems(null);
|
|
413
|
+
menuVisibleAction.on();
|
|
414
|
+
expandedViewRef.current = 'normal';
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
});
|
|
351
419
|
return /*#__PURE__*/React__default["default"].createElement(context.CheckSelectProvider, {
|
|
352
|
-
value: context$1
|
|
420
|
+
value: Object.assign(Object.assign({}, context$1), {
|
|
421
|
+
classNames: classNames,
|
|
422
|
+
styles: styles
|
|
423
|
+
})
|
|
353
424
|
}, /*#__PURE__*/React__default["default"].createElement(picker.Picker, Object.assign({
|
|
354
425
|
ref: ref,
|
|
355
426
|
innerRef: pickerInnerRef,
|
|
356
|
-
className: cls
|
|
427
|
+
className: cls,
|
|
428
|
+
classNames: pickerClassNames,
|
|
429
|
+
styles: pickerStyles
|
|
357
430
|
}, rootProps, {
|
|
358
431
|
visible: menuVisible,
|
|
359
432
|
disabled: disabled,
|
|
@@ -471,7 +544,9 @@ var CheckSelectOption = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
471
544
|
rest = tslib.__rest(_a, ["prefixCls", "className", "children", "option", "onClick", "titleRender", "depth", "focused"]);
|
|
472
545
|
var _useCheckSelectContex = context.useCheckSelectContext(),
|
|
473
546
|
isCheckedId = _useCheckSelectContex.isCheckedId,
|
|
474
|
-
onSelect = _useCheckSelectContex.onSelect
|
|
547
|
+
onSelect = _useCheckSelectContex.onSelect,
|
|
548
|
+
classNames = _useCheckSelectContex.classNames,
|
|
549
|
+
styles = _useCheckSelectContex.styles;
|
|
475
550
|
var id = option.id,
|
|
476
551
|
_option$disabled = option.disabled,
|
|
477
552
|
disabled = _option$disabled === void 0 ? false : _option$disabled;
|
|
@@ -480,7 +555,7 @@ var CheckSelectOption = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
480
555
|
disabled: disabled,
|
|
481
556
|
checked: checked
|
|
482
557
|
}));
|
|
483
|
-
var cls = classname.cx(prefixCls, className, checked && prefixCls + "--checked", disabled && prefixCls + "--disabled", focused && prefixCls + "--focused");
|
|
558
|
+
var cls = classname.cx(prefixCls, className, classNames === null || classNames === void 0 ? void 0 : classNames.option, checked && prefixCls + "--checked", disabled && prefixCls + "--disabled", focused && prefixCls + "--focused");
|
|
484
559
|
var handleOptionCheck = React.useCallback(function (evt) {
|
|
485
560
|
onSelect(option, !checked);
|
|
486
561
|
onClick === null || onClick === void 0 ? void 0 : onClick(evt);
|
|
@@ -497,7 +572,8 @@ var CheckSelectOption = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
497
572
|
}, [prefixCls]);
|
|
498
573
|
return /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
499
574
|
ref: ref,
|
|
500
|
-
className: cls
|
|
575
|
+
className: cls,
|
|
576
|
+
style: styles === null || styles === void 0 ? void 0 : styles.option
|
|
501
577
|
}, rest, {
|
|
502
578
|
onClick: handleOptionCheck
|
|
503
579
|
}), renderTitle(eventNodeRef.current, titleRender));
|
|
@@ -514,12 +590,17 @@ var CheckSelectOptionGroup = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
|
514
590
|
className = _a.className,
|
|
515
591
|
label = _a.label,
|
|
516
592
|
rest = tslib.__rest(_a, ["prefixCls", "className", "label", "depth"]);
|
|
517
|
-
var
|
|
593
|
+
var _useCheckSelectContex2 = context.useCheckSelectContext(),
|
|
594
|
+
classNames = _useCheckSelectContex2.classNames,
|
|
595
|
+
styles = _useCheckSelectContex2.styles;
|
|
596
|
+
var cls = classname.cx(prefixCls, className, classNames === null || classNames === void 0 ? void 0 : classNames.optionGroup);
|
|
597
|
+
var groupStyle = styles === null || styles === void 0 ? void 0 : styles.optionGroup;
|
|
518
598
|
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
519
599
|
className: prefixCls + "__divider"
|
|
520
600
|
}), /*#__PURE__*/React__default["default"].createElement("div", Object.assign({
|
|
521
601
|
ref: ref,
|
|
522
|
-
className: cls
|
|
602
|
+
className: cls,
|
|
603
|
+
style: groupStyle
|
|
523
604
|
}, rest), /*#__PURE__*/React__default["default"].createElement("span", null, label)));
|
|
524
605
|
});
|
|
525
606
|
// @ts-ignore
|
package/lib/esm/CheckSelect.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
9
|
*/
|
|
10
10
|
import { __rest } from 'tslib';
|
|
11
|
-
import React, { forwardRef, useRef, useCallback, useMemo, useState, useEffect } from 'react';
|
|
11
|
+
import React, { forwardRef, useRef, useCallback, useMemo, useState, useEffect, useImperativeHandle } from 'react';
|
|
12
12
|
import { getPrefixCls, cx } from '@hi-ui/classname';
|
|
13
13
|
import { __DEV__ } from '@hi-ui/env';
|
|
14
14
|
import { useCheckSelect } from './use-check-select.js';
|
|
@@ -20,6 +20,7 @@ import { TagInputMock } from '@hi-ui/tag-input';
|
|
|
20
20
|
import { isUndef, isFunction, isArrayNonEmpty } from '@hi-ui/type-assertion';
|
|
21
21
|
import VirtualList, { useCheckInVirtual } from '@hi-ui/virtual-list';
|
|
22
22
|
import { Picker } from '@hi-ui/picker';
|
|
23
|
+
import { useMergeSemantic } from '@hi-ui/use-merge-semantic';
|
|
23
24
|
import { mockDefaultHandlers } from '@hi-ui/dom-utils';
|
|
24
25
|
import { uniqBy } from '@hi-ui/array-utils';
|
|
25
26
|
import { Highlighter } from '@hi-ui/highlighter';
|
|
@@ -90,10 +91,29 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
90
91
|
_a$showIndicator = _a.showIndicator,
|
|
91
92
|
showIndicator = _a$showIndicator === void 0 ? true : _a$showIndicator,
|
|
92
93
|
renderExtraHeader = _a.renderExtraHeader,
|
|
93
|
-
|
|
94
|
+
classNamesProp = _a.classNames,
|
|
95
|
+
stylesProp = _a.styles,
|
|
96
|
+
innerRef = _a.innerRef,
|
|
97
|
+
rest = __rest(_a, ["prefixCls", "role", "className", "children", "disabled", "clearable", "showCheckAll", "showOnlyShowChecked", "placeholder", "displayRender", "onSelect", "height", "itemHeight", "virtual", "visible", "onOpen", "onClose", "onClear", "appearance", "invalid", "dataSource", "searchOnInit", "filterOption", "searchable", "render", "renderExtraFooter", "onSearch", "onItemCreate", "creatableInSearch", "fieldNames", "checkedOnEntered", "customRender", "tagInputProps", "size", "prefix", "suffix", "onKeyDown", "keyword", "clearSearchOnClosed", "label", "showIndicator", "renderExtraHeader", "classNames", "styles", "innerRef"]);
|
|
94
98
|
var _useGlobalContext = useGlobalContext(),
|
|
95
|
-
globalSize = _useGlobalContext.size
|
|
99
|
+
globalSize = _useGlobalContext.size,
|
|
100
|
+
checkSelectConfig = _useGlobalContext.checkSelect;
|
|
96
101
|
var size = (_b = sizeProp !== null && sizeProp !== void 0 ? sizeProp : globalSize) !== null && _b !== void 0 ? _b : 'md';
|
|
102
|
+
var _useMergeSemantic = useMergeSemantic({
|
|
103
|
+
classNamesList: [checkSelectConfig === null || checkSelectConfig === void 0 ? void 0 : checkSelectConfig.classNames, classNamesProp],
|
|
104
|
+
stylesList: [checkSelectConfig === null || checkSelectConfig === void 0 ? void 0 : checkSelectConfig.styles, stylesProp],
|
|
105
|
+
info: {
|
|
106
|
+
props: Object.assign(Object.assign({}, rest), {
|
|
107
|
+
disabled: disabled,
|
|
108
|
+
searchable: searchableProp,
|
|
109
|
+
visible: visible,
|
|
110
|
+
size: size,
|
|
111
|
+
appearance: appearance
|
|
112
|
+
})
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
classNames = _useMergeSemantic.classNames,
|
|
116
|
+
styles = _useMergeSemantic.styles;
|
|
97
117
|
// ************************** 国际化 ************************* //
|
|
98
118
|
var i18n = useLocaleContext();
|
|
99
119
|
var placeholder = isUndef(placeholderProp) ? i18n.get('checkSelect.placeholder') : placeholderProp;
|
|
@@ -304,7 +324,8 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
304
324
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
|
|
305
325
|
indeterminate: showIndeterminate,
|
|
306
326
|
checked: showAllChecked,
|
|
307
|
-
onChange: toggleCheckAll
|
|
327
|
+
onChange: toggleCheckAll,
|
|
328
|
+
disabled: !(dropdownItems === null || dropdownItems === void 0 ? void 0 : dropdownItems.length)
|
|
308
329
|
}, i18n.get('checkSelect.checkAll')), extra);
|
|
309
330
|
}
|
|
310
331
|
return extra;
|
|
@@ -334,12 +355,64 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
334
355
|
}
|
|
335
356
|
}
|
|
336
357
|
}, [menuVisible, showData]);
|
|
358
|
+
var pickerSemanticKeys = ['root', 'container', 'panel', 'header', 'search', 'body', 'footer', 'loading', 'empty', 'creator'];
|
|
359
|
+
var pickerClassNames = pickerSemanticKeys.reduce(function (acc, key) {
|
|
360
|
+
if ((classNames === null || classNames === void 0 ? void 0 : classNames[key]) !== undefined) {
|
|
361
|
+
acc[key] = classNames[key];
|
|
362
|
+
}
|
|
363
|
+
return acc;
|
|
364
|
+
}, {});
|
|
365
|
+
var pickerStyles = pickerSemanticKeys.reduce(function (acc, key) {
|
|
366
|
+
if (styles === null || styles === void 0 ? void 0 : styles[key]) {
|
|
367
|
+
acc[key] = styles[key];
|
|
368
|
+
}
|
|
369
|
+
return acc;
|
|
370
|
+
}, {});
|
|
371
|
+
useImperativeHandle(innerRef, function () {
|
|
372
|
+
return {
|
|
373
|
+
checkAll: function checkAll(checked) {
|
|
374
|
+
if (checked === void 0) {
|
|
375
|
+
checked = true;
|
|
376
|
+
}
|
|
377
|
+
if (checked) {
|
|
378
|
+
if (!showAllChecked) toggleCheckAll();
|
|
379
|
+
} else {
|
|
380
|
+
if (showAllChecked) toggleCheckAll();
|
|
381
|
+
}
|
|
382
|
+
},
|
|
383
|
+
showOnlyChecked: function showOnlyChecked(onlyChecked) {
|
|
384
|
+
if (onlyChecked === void 0) {
|
|
385
|
+
onlyChecked = true;
|
|
386
|
+
}
|
|
387
|
+
if (!showOnlyShowChecked) return;
|
|
388
|
+
if (disabled) return;
|
|
389
|
+
if (onlyChecked) {
|
|
390
|
+
setFilterItems(function () {
|
|
391
|
+
return mergedData.filter(function (item) {
|
|
392
|
+
return value.includes(item.id);
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
menuVisibleAction.on();
|
|
396
|
+
expandedViewRef.current = 'onlyChecked';
|
|
397
|
+
} else {
|
|
398
|
+
if (filterItems) setFilterItems(null);
|
|
399
|
+
menuVisibleAction.on();
|
|
400
|
+
expandedViewRef.current = 'normal';
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
});
|
|
337
405
|
return /*#__PURE__*/React.createElement(CheckSelectProvider, {
|
|
338
|
-
value: context
|
|
406
|
+
value: Object.assign(Object.assign({}, context), {
|
|
407
|
+
classNames: classNames,
|
|
408
|
+
styles: styles
|
|
409
|
+
})
|
|
339
410
|
}, /*#__PURE__*/React.createElement(Picker, Object.assign({
|
|
340
411
|
ref: ref,
|
|
341
412
|
innerRef: pickerInnerRef,
|
|
342
|
-
className: cls
|
|
413
|
+
className: cls,
|
|
414
|
+
classNames: pickerClassNames,
|
|
415
|
+
styles: pickerStyles
|
|
343
416
|
}, rootProps, {
|
|
344
417
|
visible: menuVisible,
|
|
345
418
|
disabled: disabled,
|
|
@@ -457,7 +530,9 @@ var CheckSelectOption = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
457
530
|
rest = __rest(_a, ["prefixCls", "className", "children", "option", "onClick", "titleRender", "depth", "focused"]);
|
|
458
531
|
var _useCheckSelectContex = useCheckSelectContext(),
|
|
459
532
|
isCheckedId = _useCheckSelectContex.isCheckedId,
|
|
460
|
-
onSelect = _useCheckSelectContex.onSelect
|
|
533
|
+
onSelect = _useCheckSelectContex.onSelect,
|
|
534
|
+
classNames = _useCheckSelectContex.classNames,
|
|
535
|
+
styles = _useCheckSelectContex.styles;
|
|
461
536
|
var id = option.id,
|
|
462
537
|
_option$disabled = option.disabled,
|
|
463
538
|
disabled = _option$disabled === void 0 ? false : _option$disabled;
|
|
@@ -466,7 +541,7 @@ var CheckSelectOption = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
466
541
|
disabled: disabled,
|
|
467
542
|
checked: checked
|
|
468
543
|
}));
|
|
469
|
-
var cls = cx(prefixCls, className, checked && prefixCls + "--checked", disabled && prefixCls + "--disabled", focused && prefixCls + "--focused");
|
|
544
|
+
var cls = cx(prefixCls, className, classNames === null || classNames === void 0 ? void 0 : classNames.option, checked && prefixCls + "--checked", disabled && prefixCls + "--disabled", focused && prefixCls + "--focused");
|
|
470
545
|
var handleOptionCheck = useCallback(function (evt) {
|
|
471
546
|
onSelect(option, !checked);
|
|
472
547
|
onClick === null || onClick === void 0 ? void 0 : onClick(evt);
|
|
@@ -483,7 +558,8 @@ var CheckSelectOption = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
483
558
|
}, [prefixCls]);
|
|
484
559
|
return /*#__PURE__*/React.createElement("div", Object.assign({
|
|
485
560
|
ref: ref,
|
|
486
|
-
className: cls
|
|
561
|
+
className: cls,
|
|
562
|
+
style: styles === null || styles === void 0 ? void 0 : styles.option
|
|
487
563
|
}, rest, {
|
|
488
564
|
onClick: handleOptionCheck
|
|
489
565
|
}), renderTitle(eventNodeRef.current, titleRender));
|
|
@@ -500,12 +576,17 @@ var CheckSelectOptionGroup = /*#__PURE__*/forwardRef(function (_a, ref) {
|
|
|
500
576
|
className = _a.className,
|
|
501
577
|
label = _a.label,
|
|
502
578
|
rest = __rest(_a, ["prefixCls", "className", "label", "depth"]);
|
|
503
|
-
var
|
|
579
|
+
var _useCheckSelectContex2 = useCheckSelectContext(),
|
|
580
|
+
classNames = _useCheckSelectContex2.classNames,
|
|
581
|
+
styles = _useCheckSelectContex2.styles;
|
|
582
|
+
var cls = cx(prefixCls, className, classNames === null || classNames === void 0 ? void 0 : classNames.optionGroup);
|
|
583
|
+
var groupStyle = styles === null || styles === void 0 ? void 0 : styles.optionGroup;
|
|
504
584
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
505
585
|
className: prefixCls + "__divider"
|
|
506
586
|
}), /*#__PURE__*/React.createElement("div", Object.assign({
|
|
507
587
|
ref: ref,
|
|
508
|
-
className: cls
|
|
588
|
+
className: cls,
|
|
589
|
+
style: groupStyle
|
|
509
590
|
}, rest), /*#__PURE__*/React.createElement("span", null, label)));
|
|
510
591
|
});
|
|
511
592
|
// @ts-ignore
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { UseCheckSelectProps } from './use-check-select';
|
|
3
3
|
import type { HiBaseHTMLProps, HiBaseSizeEnum } from '@hi-ui/core';
|
|
4
|
-
import { CheckSelectAppearanceEnum, CheckSelectDataItem, CheckSelectItemEventData, CheckSelectMergedItem } from './types';
|
|
4
|
+
import { CheckSelectAppearanceEnum, CheckSelectDataItem, CheckSelectItemEventData, CheckSelectMergedItem, CheckSelectHelper } from './types';
|
|
5
5
|
import { TagInputMockProps } from '@hi-ui/tag-input';
|
|
6
|
-
import { PickerProps } from '@hi-ui/picker';
|
|
6
|
+
import { PickerProps, PickerSemanticName } from '@hi-ui/picker';
|
|
7
|
+
import type { ComponentSemantic, SemanticClassNamesType, SemanticStylesType } from '@hi-ui/use-merge-semantic';
|
|
7
8
|
import { UseDataSource } from '@hi-ui/use-data-source';
|
|
8
9
|
/**
|
|
9
10
|
* 多项选择器
|
|
10
11
|
*/
|
|
11
12
|
export declare const CheckSelect: React.ForwardRefExoticComponent<CheckSelectProps & React.RefAttributes<HTMLDivElement | null>>;
|
|
12
|
-
export
|
|
13
|
+
export type CheckSelectSemanticName = PickerSemanticName | 'option' | 'optionGroup';
|
|
14
|
+
export type CheckSelectSemanticClassNames = SemanticClassNamesType<CheckSelectProps, CheckSelectSemanticName>;
|
|
15
|
+
export type CheckSelectSemanticStyles = SemanticStylesType<CheckSelectProps, CheckSelectSemanticName>;
|
|
16
|
+
export type CheckSelectSemantic = ComponentSemantic<CheckSelectSemanticClassNames, CheckSelectSemanticStyles>;
|
|
17
|
+
export interface CheckSelectProps extends Omit<PickerProps, 'trigger' | 'scrollable' | 'header' | 'footer' | 'classNames' | 'styles' | 'innerRef'>, UseCheckSelectProps, CheckSelectSemantic {
|
|
13
18
|
/**
|
|
14
19
|
* 设置虚拟滚动容器的可视高度。暂不对外暴露
|
|
15
20
|
* @private
|
|
@@ -138,6 +143,10 @@ export interface CheckSelectProps extends Omit<PickerProps, 'trigger' | 'scrolla
|
|
|
138
143
|
* 是否展示箭头
|
|
139
144
|
*/
|
|
140
145
|
showIndicator?: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* 提供辅助方法的内部引用
|
|
148
|
+
*/
|
|
149
|
+
innerRef?: React.Ref<CheckSelectHelper>;
|
|
141
150
|
}
|
|
142
151
|
export declare const CheckSelectOption: React.ForwardRefExoticComponent<Pick<CheckSelectOptionProps, keyof CheckSelectOptionProps> & React.RefAttributes<HTMLDivElement | null>>;
|
|
143
152
|
export interface CheckSelectOptionProps extends HiBaseHTMLProps {
|
package/lib/types/context.d.ts
CHANGED
|
@@ -1,20 +1,27 @@
|
|
|
1
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare const CheckSelectProvider: React.Provider<(Omit<{
|
|
2
3
|
rootProps: {};
|
|
3
4
|
data: any[];
|
|
4
5
|
flattedData: import("packages/utils/tree-utils/lib/types/types").BaseFlattedTreeNodeData<any, any>[];
|
|
5
|
-
value:
|
|
6
|
+
value: React.ReactText[];
|
|
6
7
|
tryChangeValue: (value: React.ReactText[], item: import("./types").CheckSelectItemEventData | import("./types").CheckSelectItemEventData[], shouldChecked: boolean) => void;
|
|
7
8
|
onSelect: (targetItem: import("packages/hooks/use-check/lib/types").UseCheckItem, shouldChecked: boolean) => void;
|
|
8
9
|
isCheckedId: (id: React.ReactText) => boolean;
|
|
9
10
|
checkedItems: import("./types").CheckSelectItemEventData[];
|
|
10
|
-
}, "rootProps">
|
|
11
|
+
}, "rootProps"> & {
|
|
12
|
+
classNames?: Partial<Record<string, string>>;
|
|
13
|
+
styles?: Partial<Record<string, React.CSSProperties>>;
|
|
14
|
+
}) | null>;
|
|
11
15
|
export declare const useCheckSelectContext: () => Omit<{
|
|
12
16
|
rootProps: {};
|
|
13
17
|
data: any[];
|
|
14
18
|
flattedData: import("packages/utils/tree-utils/lib/types/types").BaseFlattedTreeNodeData<any, any>[];
|
|
15
|
-
value:
|
|
19
|
+
value: React.ReactText[];
|
|
16
20
|
tryChangeValue: (value: React.ReactText[], item: import("./types").CheckSelectItemEventData | import("./types").CheckSelectItemEventData[], shouldChecked: boolean) => void;
|
|
17
21
|
onSelect: (targetItem: import("packages/hooks/use-check/lib/types").UseCheckItem, shouldChecked: boolean) => void;
|
|
18
22
|
isCheckedId: (id: React.ReactText) => boolean;
|
|
19
23
|
checkedItems: import("./types").CheckSelectItemEventData[];
|
|
20
|
-
}, "rootProps"
|
|
24
|
+
}, "rootProps"> & {
|
|
25
|
+
classNames?: Partial<Record<string, string>>;
|
|
26
|
+
styles?: Partial<Record<string, React.CSSProperties>>;
|
|
27
|
+
};
|
package/lib/types/types.d.ts
CHANGED
|
@@ -50,3 +50,18 @@ export interface FlattedCheckSelectDataItem extends CheckSelectDataItem {
|
|
|
50
50
|
export interface CheckSelectItemEventData extends FlattedCheckSelectDataItem, CheckSelectRequiredProps {
|
|
51
51
|
}
|
|
52
52
|
export type CheckSelectAppearanceEnum = HiBaseAppearanceEnum | 'contained' | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* CheckSelect 通过 innerRef 暴露的辅助方法
|
|
55
|
+
*/
|
|
56
|
+
export interface CheckSelectHelper {
|
|
57
|
+
/**
|
|
58
|
+
* 全选/取消全选当前列表中的可选项
|
|
59
|
+
* @param checked 默认 true:全选 (非全选状态下);传 false 时取消全选 (全选状态下)
|
|
60
|
+
*/
|
|
61
|
+
checkAll: (checked?: boolean) => void;
|
|
62
|
+
/**
|
|
63
|
+
* 仅显示已选 / 显示全部
|
|
64
|
+
* @param onlyChecked 默认 true:仅显示已选项并打开下拉;传 false 时显示全部并打开下拉
|
|
65
|
+
*/
|
|
66
|
+
showOnlyChecked: (onlyChecked?: boolean) => void;
|
|
67
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hi-ui/check-select",
|
|
3
|
-
"version": "5.0.0-experimental.
|
|
3
|
+
"version": "5.0.0-experimental.3",
|
|
4
4
|
"description": "A sub-package for @hi-ui/hiui.",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "HiUI <mi-hiui@xiaomi.com>",
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@hi-ui/array-utils": "^5.0.0-experimental.0",
|
|
48
|
-
"@hi-ui/checkbox": "^5.0.0-experimental.
|
|
48
|
+
"@hi-ui/checkbox": "^5.0.0-experimental.1",
|
|
49
49
|
"@hi-ui/classname": "^5.0.0-experimental.0",
|
|
50
50
|
"@hi-ui/dom-utils": "^5.0.0-experimental.0",
|
|
51
51
|
"@hi-ui/env": "^5.0.0-experimental.0",
|
|
52
52
|
"@hi-ui/func-utils": "^5.0.0-experimental.0",
|
|
53
|
-
"@hi-ui/highlighter": "^5.0.0-experimental.
|
|
54
|
-
"@hi-ui/icons": "^5.0.0-experimental.
|
|
55
|
-
"@hi-ui/input": "^5.0.0-experimental.
|
|
56
|
-
"@hi-ui/picker": "^5.0.0-experimental.
|
|
57
|
-
"@hi-ui/popper": "^5.0.0-experimental.
|
|
58
|
-
"@hi-ui/tag-input": "^5.0.0-experimental.
|
|
53
|
+
"@hi-ui/highlighter": "^5.0.0-experimental.1",
|
|
54
|
+
"@hi-ui/icons": "^5.0.0-experimental.1",
|
|
55
|
+
"@hi-ui/input": "^5.0.0-experimental.2",
|
|
56
|
+
"@hi-ui/picker": "^5.0.0-experimental.2",
|
|
57
|
+
"@hi-ui/popper": "^5.0.0-experimental.1",
|
|
58
|
+
"@hi-ui/tag-input": "^5.0.0-experimental.2",
|
|
59
59
|
"@hi-ui/times": "^5.0.0-experimental.0",
|
|
60
60
|
"@hi-ui/tree-utils": "^5.0.0-experimental.0",
|
|
61
61
|
"@hi-ui/type-assertion": "^5.0.0-experimental.0",
|
|
@@ -67,16 +67,17 @@
|
|
|
67
67
|
"@hi-ui/use-search-mode": "^5.0.0-experimental.0",
|
|
68
68
|
"@hi-ui/use-toggle": "^5.0.0-experimental.0",
|
|
69
69
|
"@hi-ui/use-uncontrolled-state": "^5.0.0-experimental.0",
|
|
70
|
-
"@hi-ui/virtual-list": "^5.0.0-experimental.
|
|
70
|
+
"@hi-ui/virtual-list": "^5.0.0-experimental.1",
|
|
71
|
+
"@hi-ui/use-merge-semantic": "^5.0.0-experimental.0"
|
|
71
72
|
},
|
|
72
73
|
"peerDependencies": {
|
|
73
|
-
"@hi-ui/core": ">=5.0.0-experimental.
|
|
74
|
+
"@hi-ui/core": ">=5.0.0-experimental.1",
|
|
74
75
|
"react": ">=16.8.6",
|
|
75
76
|
"react-dom": ">=16.8.6"
|
|
76
77
|
},
|
|
77
78
|
"devDependencies": {
|
|
78
|
-
"@hi-ui/core": "^5.0.0-experimental.
|
|
79
|
-
"@hi-ui/core-css": "^5.0.0-experimental.
|
|
79
|
+
"@hi-ui/core": "^5.0.0-experimental.1",
|
|
80
|
+
"@hi-ui/core-css": "^5.0.0-experimental.2",
|
|
80
81
|
"react": "^17.0.1",
|
|
81
82
|
"react-dom": "^17.0.1"
|
|
82
83
|
}
|