@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.
- package/lib/cjs/CheckSelect.js +38 -2
- package/lib/esm/CheckSelect.js +39 -3
- package/lib/types/CheckSelect.d.ts +6 -2
- package/lib/types/types.d.ts +15 -0
- package/package.json +1 -1
package/lib/cjs/CheckSelect.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
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';
|
|
@@ -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
|
-
|
|
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 {
|
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
|
+
}
|