@hi-ui/check-select 5.0.0-experimental.2 → 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.
@@ -107,7 +107,8 @@ var CheckSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
107
107
  renderExtraHeader = _a.renderExtraHeader,
108
108
  classNamesProp = _a.classNames,
109
109
  stylesProp = _a.styles,
110
- 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"]);
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"]);
111
112
  var _useGlobalContext = core.useGlobalContext(),
112
113
  globalSize = _useGlobalContext.size,
113
114
  checkSelectConfig = _useGlobalContext.checkSelect;
@@ -337,7 +338,8 @@ var CheckSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
337
338
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Checkbox__default["default"], {
338
339
  indeterminate: showIndeterminate,
339
340
  checked: showAllChecked,
340
- onChange: toggleCheckAll
341
+ onChange: toggleCheckAll,
342
+ disabled: !(dropdownItems === null || dropdownItems === void 0 ? void 0 : dropdownItems.length)
341
343
  }, i18n.get('checkSelect.checkAll')), extra);
342
344
  }
343
345
  return extra;
@@ -380,6 +382,40 @@ var CheckSelect = /*#__PURE__*/React.forwardRef(function (_a, ref) {
380
382
  }
381
383
  return acc;
382
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
+ });
383
419
  return /*#__PURE__*/React__default["default"].createElement(context.CheckSelectProvider, {
384
420
  value: Object.assign(Object.assign({}, context$1), {
385
421
  classNames: classNames,
@@ -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';
@@ -93,7 +93,8 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
93
93
  renderExtraHeader = _a.renderExtraHeader,
94
94
  classNamesProp = _a.classNames,
95
95
  stylesProp = _a.styles,
96
- 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"]);
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"]);
97
98
  var _useGlobalContext = useGlobalContext(),
98
99
  globalSize = _useGlobalContext.size,
99
100
  checkSelectConfig = _useGlobalContext.checkSelect;
@@ -323,7 +324,8 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
323
324
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
324
325
  indeterminate: showIndeterminate,
325
326
  checked: showAllChecked,
326
- onChange: toggleCheckAll
327
+ onChange: toggleCheckAll,
328
+ disabled: !(dropdownItems === null || dropdownItems === void 0 ? void 0 : dropdownItems.length)
327
329
  }, i18n.get('checkSelect.checkAll')), extra);
328
330
  }
329
331
  return extra;
@@ -366,6 +368,40 @@ var CheckSelect = /*#__PURE__*/forwardRef(function (_a, ref) {
366
368
  }
367
369
  return acc;
368
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
+ });
369
405
  return /*#__PURE__*/React.createElement(CheckSelectProvider, {
370
406
  value: Object.assign(Object.assign({}, context), {
371
407
  classNames: classNames,
@@ -1,7 +1,7 @@
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
6
  import { PickerProps, PickerSemanticName } from '@hi-ui/picker';
7
7
  import type { ComponentSemantic, SemanticClassNamesType, SemanticStylesType } from '@hi-ui/use-merge-semantic';
@@ -14,7 +14,7 @@ export type CheckSelectSemanticName = PickerSemanticName | 'option' | 'optionGro
14
14
  export type CheckSelectSemanticClassNames = SemanticClassNamesType<CheckSelectProps, CheckSelectSemanticName>;
15
15
  export type CheckSelectSemanticStyles = SemanticStylesType<CheckSelectProps, CheckSelectSemanticName>;
16
16
  export type CheckSelectSemantic = ComponentSemantic<CheckSelectSemanticClassNames, CheckSelectSemanticStyles>;
17
- export interface CheckSelectProps extends Omit<PickerProps, 'trigger' | 'scrollable' | 'header' | 'footer' | 'classNames' | 'styles'>, UseCheckSelectProps, CheckSelectSemantic {
17
+ export interface CheckSelectProps extends Omit<PickerProps, 'trigger' | 'scrollable' | 'header' | 'footer' | 'classNames' | 'styles' | 'innerRef'>, UseCheckSelectProps, CheckSelectSemantic {
18
18
  /**
19
19
  * 设置虚拟滚动容器的可视高度。暂不对外暴露
20
20
  * @private
@@ -143,6 +143,10 @@ export interface CheckSelectProps extends Omit<PickerProps, 'trigger' | 'scrolla
143
143
  * 是否展示箭头
144
144
  */
145
145
  showIndicator?: boolean;
146
+ /**
147
+ * 提供辅助方法的内部引用
148
+ */
149
+ innerRef?: React.Ref<CheckSelectHelper>;
146
150
  }
147
151
  export declare const CheckSelectOption: React.ForwardRefExoticComponent<Pick<CheckSelectOptionProps, keyof CheckSelectOptionProps> & React.RefAttributes<HTMLDivElement | null>>;
148
152
  export interface CheckSelectOptionProps extends HiBaseHTMLProps {
@@ -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.2",
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>",