@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 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
@@ -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
- 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"]);
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 cls = classname.cx(prefixCls, className);
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
@@ -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
- 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"]);
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 cls = cx(prefixCls, className);
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 interface CheckSelectProps extends Omit<PickerProps, 'trigger' | 'scrollable' | 'header' | 'footer'>, UseCheckSelectProps {
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 {
@@ -1,20 +1,27 @@
1
- export declare const CheckSelectProvider: import("react").Provider<Omit<{
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: import("react").ReactText[];
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"> | null>;
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: import("react").ReactText[];
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
+ };
@@ -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.1",
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.0",
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.0",
54
- "@hi-ui/icons": "^5.0.0-experimental.0",
55
- "@hi-ui/input": "^5.0.0-experimental.1",
56
- "@hi-ui/picker": "^5.0.0-experimental.1",
57
- "@hi-ui/popper": "^5.0.0-experimental.0",
58
- "@hi-ui/tag-input": "^5.0.0-experimental.1",
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.0"
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.0",
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.0",
79
- "@hi-ui/core-css": "^5.0.0-experimental.1",
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
  }