@hi-ui/check-cascader 4.0.0-alpha.23 → 4.0.0-alpha.28
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/README.md +97 -7
- package/lib/cjs/CheckCascader.js +184 -66
- package/lib/cjs/CheckCascader.js.map +1 -1
- package/lib/cjs/CheckCascaderMenus.js +2 -2
- package/lib/cjs/CheckCascaderPanel.js +2 -2
- package/lib/cjs/styles/index.scss.js +1 -1
- package/lib/cjs/utils/index.js +0 -36
- package/lib/cjs/utils/index.js.map +1 -1
- package/lib/esm/CheckCascader.js +178 -64
- package/lib/esm/CheckCascader.js.map +1 -1
- package/lib/esm/CheckCascaderMenus.js +2 -2
- package/lib/esm/CheckCascaderPanel.js +1 -1
- package/lib/esm/styles/index.scss.js +1 -1
- package/lib/esm/utils/index.js +1 -36
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/types/CheckCascader.d.ts +17 -20
- package/lib/types/hooks/index.d.ts +0 -1
- package/package.json +13 -7
- package/lib/cjs/TagInput.js +0 -241
- package/lib/cjs/TagInput.js.map +0 -1
- package/lib/cjs/hooks/use-tag-input.js +0 -122
- package/lib/cjs/hooks/use-tag-input.js.map +0 -1
- package/lib/esm/TagInput.js +0 -210
- package/lib/esm/TagInput.js.map +0 -1
- package/lib/esm/hooks/use-tag-input.js +0 -113
- package/lib/esm/hooks/use-tag-input.js.map +0 -1
- package/lib/types/TagInput.d.ts +0 -68
- package/lib/types/hooks/use-tag-input.d.ts +0 -3
@@ -1,113 +0,0 @@
|
|
1
|
-
/** @LICENSE
|
2
|
-
* @hi-ui/check-cascader
|
3
|
-
* https://github.com/XiaoMi/hiui/tree/master/packages/ui/check-cascader#readme
|
4
|
-
*
|
5
|
-
* Copyright (c) HIUI <mi-hiui@xiaomi.com>.
|
6
|
-
*
|
7
|
-
* This source code is licensed under the MIT license found in the
|
8
|
-
* LICENSE file in the root directory of this source tree.
|
9
|
-
*/
|
10
|
-
import { useRef, useState, useReducer, useEffect, useCallback, useLayoutEffect } from 'react';
|
11
|
-
import { debounce } from '../utils/index.js';
|
12
|
-
var TAG_MARGIN_RIGHT = 4; // 留给显示剩余选项的宽度:suffix + paddingLeft + paddingRight + leftCountTag (16 + 10 + + 10 + 54)
|
13
|
-
|
14
|
-
var LEFT_SPACE_WIDTH = 100 + TAG_MARGIN_RIGHT;
|
15
|
-
|
16
|
-
var useTagInput = function useTagInput(wrap, selector, tags, ref) {
|
17
|
-
var shouldCalcTagCountRef = useRef(false);
|
18
|
-
|
19
|
-
var _useState = useState(0),
|
20
|
-
showCount = _useState[0],
|
21
|
-
setShowCount = _useState[1];
|
22
|
-
|
23
|
-
var _useReducer = useReducer(function (v) {
|
24
|
-
return !v;
|
25
|
-
}, false),
|
26
|
-
trigger = _useReducer[0],
|
27
|
-
forceUpdate = _useReducer[1];
|
28
|
-
|
29
|
-
var inputWidth = useResizeWidth(ref);
|
30
|
-
useEffect(function () {
|
31
|
-
forceUpdate();
|
32
|
-
}, [inputWidth, tags]);
|
33
|
-
var calSowCount = useCallback(function () {
|
34
|
-
if (shouldCalcTagCountRef.current && ref.current) {
|
35
|
-
// tags 多个展示超过一行时,以数字显示
|
36
|
-
var tagElements = ref.current.querySelectorAll(selector);
|
37
|
-
var tagWrapperWidth = ref.current.getBoundingClientRect().width;
|
38
|
-
var width = 0;
|
39
|
-
|
40
|
-
for (var i = 0; i < tagElements.length; ++i) {
|
41
|
-
var tag = tagElements[i];
|
42
|
-
var tagRect = tag.getBoundingClientRect();
|
43
|
-
width += tagRect.width + TAG_MARGIN_RIGHT;
|
44
|
-
|
45
|
-
if (shouldCalcTagCountRef.current && width + LEFT_SPACE_WIDTH > tagWrapperWidth) {
|
46
|
-
shouldCalcTagCountRef.current = false; // 开始显示折行的位置,如果为 0,则必展示一个
|
47
|
-
|
48
|
-
var nextShowCount = i === 0 ? 1 : i;
|
49
|
-
setShowCount(nextShowCount);
|
50
|
-
break;
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
54
|
-
}, [ref, selector]);
|
55
|
-
var debouncedResizeRef = useRef();
|
56
|
-
useEffect(function () {
|
57
|
-
var _a;
|
58
|
-
|
59
|
-
(_a = debouncedResizeRef.current) === null || _a === void 0 ? void 0 : _a.cancel();
|
60
|
-
debouncedResizeRef.current = debounce(calSowCount, 60);
|
61
|
-
}, [calSowCount]);
|
62
|
-
useEffect(function () {
|
63
|
-
var _a;
|
64
|
-
|
65
|
-
setShowCount(0);
|
66
|
-
shouldCalcTagCountRef.current = true;
|
67
|
-
(_a = debouncedResizeRef.current) === null || _a === void 0 ? void 0 : _a.call(debouncedResizeRef);
|
68
|
-
return function () {
|
69
|
-
var _a;
|
70
|
-
|
71
|
-
shouldCalcTagCountRef.current = false;
|
72
|
-
(_a = debouncedResizeRef.current) === null || _a === void 0 ? void 0 : _a.cancel();
|
73
|
-
};
|
74
|
-
}, [trigger, ref]);
|
75
|
-
var showTagCount = showCount > 0 ? showCount : tags.length;
|
76
|
-
var leftTagCount = tags.length - showTagCount;
|
77
|
-
var tagMaxWidth = inputWidth ? inputWidth - (LEFT_SPACE_WIDTH + 1) : '100%';
|
78
|
-
|
79
|
-
if (wrap) {
|
80
|
-
return [tagMaxWidth, tags.length, 0];
|
81
|
-
}
|
82
|
-
|
83
|
-
return [tagMaxWidth, showTagCount, leftTagCount];
|
84
|
-
};
|
85
|
-
|
86
|
-
var useResizeWidth = function useResizeWidth(ref) {
|
87
|
-
var _useState2 = useState(0),
|
88
|
-
width = _useState2[0],
|
89
|
-
setWidth = _useState2[1];
|
90
|
-
|
91
|
-
var tryUpdateWidth = useCallback(function () {
|
92
|
-
var _a;
|
93
|
-
|
94
|
-
var nextWidth = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
|
95
|
-
setWidth(function (prev) {
|
96
|
-
return nextWidth || prev || 0;
|
97
|
-
});
|
98
|
-
}, [ref]);
|
99
|
-
useLayoutEffect(function () {
|
100
|
-
// init with resize
|
101
|
-
tryUpdateWidth();
|
102
|
-
var debouncedResize = debounce(tryUpdateWidth, 60);
|
103
|
-
window.addEventListener('resize', debouncedResize);
|
104
|
-
return function () {
|
105
|
-
window.removeEventListener('resize', debouncedResize);
|
106
|
-
debouncedResize.cancel();
|
107
|
-
};
|
108
|
-
}, [tryUpdateWidth]);
|
109
|
-
return width;
|
110
|
-
};
|
111
|
-
|
112
|
-
export { useResizeWidth, useTagInput };
|
113
|
-
//# sourceMappingURL=use-tag-input.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"use-tag-input.js","sources":["../../../src/hooks/use-tag-input.ts"],"sourcesContent":[null],"names":["TAG_MARGIN_RIGHT","LEFT_SPACE_WIDTH","useTagInput","wrap","selector","tags","ref","shouldCalcTagCountRef","useRef","useState","showCount","setShowCount","useReducer","v","trigger","forceUpdate","inputWidth","useResizeWidth","useEffect","calSowCount","useCallback","current","tagElements","querySelectorAll","tagWrapperWidth","getBoundingClientRect","width","i","length","tag","tagRect","nextShowCount","debouncedResizeRef","cancel","debounce","showTagCount","leftTagCount","tagMaxWidth","setWidth","tryUpdateWidth","nextWidth","prev","useLayoutEffect","debouncedResize","window","addEventListener","removeEventListener"],"mappings":"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"}
|
package/lib/types/TagInput.d.ts
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { CheckCascaderItem, FlattedCheckCascaderItem } from './types';
|
3
|
-
/**
|
4
|
-
* TODO: What is TagInput
|
5
|
-
*/
|
6
|
-
export declare const TagInput: React.ForwardRefExoticComponent<TagInputProps & React.RefAttributes<HTMLDivElement | null>>;
|
7
|
-
export interface TagInputProps {
|
8
|
-
/**
|
9
|
-
* 组件默认的选择器类
|
10
|
-
*/
|
11
|
-
prefixCls?: string;
|
12
|
-
/**
|
13
|
-
* 组件的语义化 Role 属性
|
14
|
-
*/
|
15
|
-
role?: string;
|
16
|
-
/**
|
17
|
-
* 组件的注入选择器类
|
18
|
-
*/
|
19
|
-
className?: string;
|
20
|
-
/**
|
21
|
-
* 组件的注入样式
|
22
|
-
*/
|
23
|
-
style?: React.CSSProperties;
|
24
|
-
/**
|
25
|
-
* 设置当前多选值
|
26
|
-
*/
|
27
|
-
value?: React.ReactText[];
|
28
|
-
/**
|
29
|
-
* 设置当前多选值默认值
|
30
|
-
*/
|
31
|
-
defaultValue?: React.ReactText[];
|
32
|
-
/**
|
33
|
-
* 多选值改变时的回调
|
34
|
-
*/
|
35
|
-
onChange?: (values: React.ReactText[]) => void;
|
36
|
-
/**
|
37
|
-
* 是否可清空 boolean true | false true
|
38
|
-
*/
|
39
|
-
clearable?: boolean;
|
40
|
-
/**
|
41
|
-
* 是否禁止使用 boolean true | false false
|
42
|
-
*/
|
43
|
-
disabled?: boolean;
|
44
|
-
/**
|
45
|
-
* 自定义选择后触发器所展示的内容
|
46
|
-
*/
|
47
|
-
displayRender?: (checkedOption: FlattedCheckCascaderItem) => React.ReactNode;
|
48
|
-
/**
|
49
|
-
* 输入框占位符
|
50
|
-
*/
|
51
|
-
placeholder?: string;
|
52
|
-
/**
|
53
|
-
* 是否开启换行全展示
|
54
|
-
*/
|
55
|
-
wrap?: boolean;
|
56
|
-
/**
|
57
|
-
* 输入框后置内容
|
58
|
-
*/
|
59
|
-
suffix?: React.ReactNode;
|
60
|
-
/**
|
61
|
-
* 点击 Tag Input 时触发回调
|
62
|
-
*/
|
63
|
-
onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
|
64
|
-
/**
|
65
|
-
* tag 列表数据源
|
66
|
-
*/
|
67
|
-
data: CheckCascaderItem[];
|
68
|
-
}
|
@@ -1,3 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
export declare const useTagInput: <T>(wrap: boolean, selector: string, tags: T[], ref: React.MutableRefObject<HTMLDivElement | null>) => readonly [number | "100%", number, number];
|
3
|
-
export declare const useResizeWidth: <T extends Element>(ref: React.MutableRefObject<T | null>) => number;
|