@hi-ui/tag-input 4.0.7 → 4.0.9
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 +35 -0
- package/lib/cjs/TagInput.js +47 -74
- package/lib/cjs/TagInputMock.js +81 -122
- package/lib/cjs/index.js +0 -4
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/use-tag-input.js +5 -11
- package/lib/esm/TagInput.js +45 -58
- package/lib/esm/TagInputMock.js +78 -105
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/use-tag-input.js +5 -8
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,40 @@
|
|
1
1
|
# @hi-ui/tag-input
|
2
2
|
|
3
|
+
## 4.0.9
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- fix: 修复 rollup3 打包 cjs 模块问题
|
8
|
+
- Updated dependencies
|
9
|
+
- @hi-ui/env@4.0.3
|
10
|
+
- @hi-ui/core@4.0.7
|
11
|
+
- @hi-ui/use-latest@4.0.3
|
12
|
+
- @hi-ui/use-merge-refs@4.0.3
|
13
|
+
- @hi-ui/use-outside-click@4.0.3
|
14
|
+
- @hi-ui/use-uncontrolled-state@4.0.3
|
15
|
+
- @hi-ui/icons@4.0.17
|
16
|
+
- @hi-ui/classname@4.0.3
|
17
|
+
- @hi-ui/func-utils@4.0.3
|
18
|
+
- @hi-ui/type-assertion@4.0.3
|
19
|
+
|
20
|
+
## 4.0.8
|
21
|
+
|
22
|
+
### Patch Changes
|
23
|
+
|
24
|
+
- [#2672](https://github.com/XiaoMi/hiui/pull/2672) [`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e) Thanks [@zyprepare](https://github.com/zyprepare)! - build: 升级到 rollup3,重新构建发布组件
|
25
|
+
|
26
|
+
- Updated dependencies [[`1ebe27830`](https://github.com/XiaoMi/hiui/commit/1ebe2783098b3a8cd980bd10076d67635463800e)]:
|
27
|
+
- @hi-ui/core@4.0.6
|
28
|
+
- @hi-ui/use-latest@4.0.2
|
29
|
+
- @hi-ui/use-merge-refs@4.0.2
|
30
|
+
- @hi-ui/use-outside-click@4.0.2
|
31
|
+
- @hi-ui/use-uncontrolled-state@4.0.2
|
32
|
+
- @hi-ui/icons@4.0.16
|
33
|
+
- @hi-ui/classname@4.0.2
|
34
|
+
- @hi-ui/env@4.0.2
|
35
|
+
- @hi-ui/func-utils@4.0.2
|
36
|
+
- @hi-ui/type-assertion@4.0.2
|
37
|
+
|
3
38
|
## 4.0.7
|
4
39
|
|
5
40
|
### Patch Changes
|
package/lib/cjs/TagInput.js
CHANGED
@@ -10,84 +10,63 @@
|
|
10
10
|
'use strict';
|
11
11
|
|
12
12
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
13
|
Object.defineProperty(exports, '__esModule', {
|
15
14
|
value: true
|
16
15
|
});
|
17
|
-
|
18
16
|
var tslib = require('tslib');
|
19
|
-
|
20
17
|
var React = require('react');
|
21
|
-
|
22
18
|
var classname = require('@hi-ui/classname');
|
23
|
-
|
24
19
|
var env = require('@hi-ui/env');
|
25
|
-
|
26
20
|
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
27
|
-
|
28
21
|
var icons = require('@hi-ui/icons');
|
29
|
-
|
30
22
|
var useMergeRefs = require('@hi-ui/use-merge-refs');
|
31
|
-
|
32
23
|
var useTagInput = require('./use-tag-input.js');
|
33
|
-
|
34
24
|
var useOutsideClick = require('@hi-ui/use-outside-click');
|
35
|
-
|
36
25
|
var useLatest = require('@hi-ui/use-latest');
|
37
|
-
|
38
|
-
function _interopDefaultLegacy(e) {
|
26
|
+
function _interopDefaultCompat(e) {
|
39
27
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
40
28
|
'default': e
|
41
29
|
};
|
42
30
|
}
|
43
|
-
|
44
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
45
|
-
|
31
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
46
32
|
var _role = 'tag-input';
|
47
|
-
|
48
33
|
var _prefix = classname.getPrefixCls(_role);
|
49
|
-
|
50
34
|
var NOOP_ARRAY = [];
|
51
35
|
/**
|
52
36
|
* 标签输入框
|
53
37
|
*/
|
54
|
-
|
55
38
|
var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
56
39
|
var _a$prefixCls = _a.prefixCls,
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
40
|
+
prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
|
41
|
+
_a$role = _a.role,
|
42
|
+
role = _a$role === void 0 ? _role : _a$role,
|
43
|
+
className = _a.className,
|
44
|
+
_a$defaultValue = _a.defaultValue,
|
45
|
+
defaultValue = _a$defaultValue === void 0 ? NOOP_ARRAY : _a$defaultValue,
|
46
|
+
valueProp = _a.value,
|
47
|
+
onChange = _a.onChange,
|
48
|
+
placeholder = _a.placeholder,
|
49
|
+
_a$data = _a.data,
|
50
|
+
data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
|
51
|
+
_a$wrap = _a.wrap,
|
52
|
+
wrap = _a$wrap === void 0 ? true : _a$wrap,
|
53
|
+
_a$clearable = _a.clearable,
|
54
|
+
clearable = _a$clearable === void 0 ? true : _a$clearable,
|
55
|
+
_a$disabled = _a.disabled,
|
56
|
+
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
57
|
+
suffix = _a.suffix,
|
58
|
+
displayRender = _a.displayRender,
|
59
|
+
onClick = _a.onClick,
|
60
|
+
_onMouseOver = _a.onMouseOver,
|
61
|
+
_onMouseLeave = _a.onMouseLeave,
|
62
|
+
onClear = _a.onClear,
|
63
|
+
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "defaultValue", "value", "onChange", "placeholder", "data", "wrap", "clearable", "disabled", "suffix", "displayRender", "onClick", "onMouseOver", "onMouseLeave", "onClear"]);
|
82
64
|
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
|
83
|
-
|
84
|
-
|
85
|
-
|
65
|
+
value = _useUncontrolledState[0],
|
66
|
+
tryChangeValue = _useUncontrolledState[1];
|
86
67
|
var tagInputRef = React.useRef(null);
|
87
|
-
|
88
68
|
var _useTagInput = useTagInput.useTagInput(data, tagInputRef),
|
89
|
-
|
90
|
-
|
69
|
+
tagMaxWidth = _useTagInput[0];
|
91
70
|
var onClearLatest = useLatest.useLatestCallback(onClear);
|
92
71
|
var tagList = React.useMemo(function () {
|
93
72
|
return value.map(function (id) {
|
@@ -105,24 +84,20 @@ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
105
84
|
tryChangeValue(NOOP_ARRAY, tagList, false);
|
106
85
|
onClearLatest();
|
107
86
|
}, [tryChangeValue, disabled, onClearLatest, tagList]);
|
108
|
-
|
109
87
|
var _useState = React.useState(false),
|
110
|
-
|
111
|
-
|
112
|
-
|
88
|
+
hover = _useState[0],
|
89
|
+
setHover = _useState[1];
|
113
90
|
var trySetHover = React.useCallback(function (hovered) {
|
114
91
|
if (disabled) return;
|
115
92
|
setHover(hovered);
|
116
93
|
}, [disabled]);
|
117
|
-
var tagCount = tagList.length;
|
118
|
-
|
94
|
+
var tagCount = tagList.length;
|
95
|
+
// 在开启 clearable 下展示 清除内容按钮,可点击进行内容清楚
|
119
96
|
var showClearableIcon = clearable && tagCount > 0 && !disabled;
|
120
97
|
var showTagCount = !wrap && tagCount > 0;
|
121
|
-
|
122
98
|
var _useState2 = React.useState(false),
|
123
|
-
|
124
|
-
|
125
|
-
|
99
|
+
expanded = _useState2[0],
|
100
|
+
setExpanded = _useState2[1];
|
126
101
|
useOutsideClick.useOutsideClick(tagInputRef, function () {
|
127
102
|
return setExpanded(false);
|
128
103
|
});
|
@@ -146,7 +121,7 @@ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
146
121
|
}, rest), /*#__PURE__*/React__default["default"].createElement("div", {
|
147
122
|
className: classname.cx(prefixCls + "__container", disabled && 'disabled'),
|
148
123
|
onClick: onClick
|
149
|
-
}, value.length !== 0 ? /*#__PURE__*/React__default["default"].createElement("span", {
|
124
|
+
}, value.length !== 0 ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
150
125
|
className: prefixCls + "__value"
|
151
126
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
152
127
|
className: classname.cx(prefixCls + "__tags", wrap && prefixCls + "__tags--all")
|
@@ -161,7 +136,7 @@ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
161
136
|
style: {
|
162
137
|
maxWidth: tagMaxWidth
|
163
138
|
}
|
164
|
-
}, title === true ? option.title : title), closeable ? /*#__PURE__*/React__default["default"].createElement("span", {
|
139
|
+
}, title === true ? option.title : title), closeable ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
165
140
|
className: prefixCls + "__tag-closed",
|
166
141
|
onClick: function onClick(evt) {
|
167
142
|
if (disabled) return;
|
@@ -171,20 +146,20 @@ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
171
146
|
});
|
172
147
|
tryChangeValue(nextValue, [option], false);
|
173
148
|
}
|
174
|
-
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseOutlined, null)) : null);
|
175
|
-
}))) : /*#__PURE__*/React__default["default"].createElement("span", {
|
149
|
+
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseOutlined, null))) : null);
|
150
|
+
})))) : ( /*#__PURE__*/React__default["default"].createElement("span", {
|
176
151
|
className: prefixCls + "__placeholder"
|
177
|
-
}, placeholder), !!suffix || showClearableIcon && hover || showTagCount ? /*#__PURE__*/React__default["default"].createElement("span", {
|
152
|
+
}, placeholder)), !!suffix || showClearableIcon && hover || showTagCount ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
178
153
|
className: prefixCls + "__suffix"
|
179
|
-
}, showTagCount ? /*#__PURE__*/React__default["default"].createElement("span", {
|
154
|
+
}, showTagCount ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
180
155
|
className: classname.cx(prefixCls + "__tag--total"),
|
181
156
|
onClick: handleExpand
|
182
|
-
}, "" + (tagCount > 99 ? '+99' : tagCount)) : showClearableIcon && hover ? /*#__PURE__*/React__default["default"].createElement("span", {
|
157
|
+
}, "" + (tagCount > 99 ? '+99' : tagCount))) : showClearableIcon && hover ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
183
158
|
className: prefixCls + "__clear",
|
184
159
|
role: "button",
|
185
160
|
tabIndex: -1,
|
186
161
|
onClick: handleClear
|
187
|
-
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, null)) : null, suffix) : null), value.length !== 0 && expanded ? /*#__PURE__*/React__default["default"].createElement("div", {
|
162
|
+
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, null))) : null, suffix)) : null), value.length !== 0 && expanded ? ( /*#__PURE__*/React__default["default"].createElement("div", {
|
188
163
|
className: prefixCls + "__container__expand"
|
189
164
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
190
165
|
className: classname.cx(prefixCls + "__value")
|
@@ -201,7 +176,7 @@ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
201
176
|
style: {
|
202
177
|
maxWidth: tagMaxWidth
|
203
178
|
}
|
204
|
-
}, title === true ? option.title : title), closeable ? /*#__PURE__*/React__default["default"].createElement("span", {
|
179
|
+
}, title === true ? option.title : title), closeable ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
205
180
|
className: prefixCls + "__tag-closed",
|
206
181
|
onClick: function onClick(evt) {
|
207
182
|
if (disabled) return;
|
@@ -211,19 +186,17 @@ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
211
186
|
});
|
212
187
|
tryChangeValue(nextValue);
|
213
188
|
}
|
214
|
-
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseOutlined, null)) : null);
|
215
|
-
}))), showClearableIcon ? /*#__PURE__*/React__default["default"].createElement("span", {
|
189
|
+
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseOutlined, null))) : null);
|
190
|
+
}))), showClearableIcon ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
216
191
|
className: prefixCls + "__suffix"
|
217
192
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
218
193
|
className: prefixCls + "__clear",
|
219
194
|
role: "button",
|
220
195
|
tabIndex: -1,
|
221
196
|
onClick: handleClear
|
222
|
-
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, null))) : null) : null);
|
197
|
+
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, null)))) : null)) : null);
|
223
198
|
});
|
224
|
-
|
225
199
|
if (env.__DEV__) {
|
226
200
|
TagInput.displayName = 'TagInput';
|
227
201
|
}
|
228
|
-
|
229
202
|
exports.TagInput = TagInput;
|
package/lib/cjs/TagInputMock.js
CHANGED
@@ -10,91 +10,73 @@
|
|
10
10
|
'use strict';
|
11
11
|
|
12
12
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
13
|
-
|
14
13
|
Object.defineProperty(exports, '__esModule', {
|
15
14
|
value: true
|
16
15
|
});
|
17
|
-
|
18
16
|
var tslib = require('tslib');
|
19
|
-
|
20
17
|
var React = require('react');
|
21
|
-
|
22
18
|
var classname = require('@hi-ui/classname');
|
23
|
-
|
24
19
|
var env = require('@hi-ui/env');
|
25
|
-
|
26
20
|
var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
|
27
|
-
|
28
21
|
var icons = require('@hi-ui/icons');
|
29
|
-
|
30
22
|
var useLatest = require('@hi-ui/use-latest');
|
31
|
-
|
32
23
|
var typeAssertion = require('@hi-ui/type-assertion');
|
33
|
-
|
34
24
|
var ResizeDetector = require('react-resize-detector');
|
35
|
-
|
36
|
-
function _interopDefaultLegacy(e) {
|
25
|
+
function _interopDefaultCompat(e) {
|
37
26
|
return e && _typeof(e) === 'object' && 'default' in e ? e : {
|
38
27
|
'default': e
|
39
28
|
};
|
40
29
|
}
|
41
|
-
|
42
|
-
var
|
43
|
-
|
44
|
-
var ResizeDetector__default = /*#__PURE__*/_interopDefaultLegacy(ResizeDetector);
|
45
|
-
|
30
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
31
|
+
var ResizeDetector__default = /*#__PURE__*/_interopDefaultCompat(ResizeDetector);
|
46
32
|
var _role = 'tag-input-mock';
|
47
|
-
|
48
33
|
var _prefix = classname.getPrefixCls(_role);
|
49
|
-
|
50
34
|
var NOOP_ARRAY = [];
|
51
35
|
var TagInputMock = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
52
36
|
var _a$prefixCls = _a.prefixCls,
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
37
|
+
prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
|
38
|
+
_a$role = _a.role,
|
39
|
+
role = _a$role === void 0 ? _role : _a$role,
|
40
|
+
className = _a.className,
|
41
|
+
_a$defaultValue = _a.defaultValue,
|
42
|
+
defaultValue = _a$defaultValue === void 0 ? NOOP_ARRAY : _a$defaultValue,
|
43
|
+
valueProp = _a.value,
|
44
|
+
onChange = _a.onChange,
|
45
|
+
placeholder = _a.placeholder,
|
46
|
+
_a$data = _a.data,
|
47
|
+
data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
|
48
|
+
_a$disabled = _a.disabled,
|
49
|
+
disabled = _a$disabled === void 0 ? false : _a$disabled,
|
50
|
+
_a$clearable = _a.clearable,
|
51
|
+
clearable = _a$clearable === void 0 ? true : _a$clearable,
|
52
|
+
_a$focused = _a.focused,
|
53
|
+
focused = _a$focused === void 0 ? false : _a$focused,
|
54
|
+
_a$invalid = _a.invalid,
|
55
|
+
invalid = _a$invalid === void 0 ? false : _a$invalid,
|
56
|
+
_a$readOnly = _a.readOnly,
|
57
|
+
readOnly = _a$readOnly === void 0 ? false : _a$readOnly,
|
58
|
+
_a$size = _a.size,
|
59
|
+
size = _a$size === void 0 ? 'md' : _a$size,
|
60
|
+
_a$appearance = _a.appearance,
|
61
|
+
appearance = _a$appearance === void 0 ? 'line' : _a$appearance,
|
62
|
+
_a$wrap = _a.wrap,
|
63
|
+
wrap = _a$wrap === void 0 ? false : _a$wrap,
|
64
|
+
_a$expandable = _a.expandable,
|
65
|
+
expandable = _a$expandable === void 0 ? false : _a$expandable,
|
66
|
+
_a$activeExpandable = _a.activeExpandable,
|
67
|
+
activeExpandable = _a$activeExpandable === void 0 ? false : _a$activeExpandable,
|
68
|
+
suffix = _a.suffix,
|
69
|
+
_a$tagWidth = _a.tagWidth,
|
70
|
+
tagWidth = _a$tagWidth === void 0 ? 20 : _a$tagWidth,
|
71
|
+
displayRender = _a.displayRender,
|
72
|
+
_onMouseOver = _a.onMouseOver,
|
73
|
+
_onMouseLeave = _a.onMouseLeave,
|
74
|
+
onClear = _a.onClear,
|
75
|
+
onExpand = _a.onExpand,
|
76
|
+
rest = tslib.__rest(_a, ["prefixCls", "role", "className", "defaultValue", "value", "onChange", "placeholder", "data", "disabled", "clearable", "focused", "invalid", "readOnly", "size", "appearance", "wrap", "expandable", "activeExpandable", "suffix", "tagWidth", "displayRender", "onMouseOver", "onMouseLeave", "onClear", "onExpand"]);
|
94
77
|
var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
|
95
|
-
|
96
|
-
|
97
|
-
|
78
|
+
value = _useUncontrolledState[0],
|
79
|
+
tryChangeValue = _useUncontrolledState[1];
|
98
80
|
var tagList = React.useMemo(function () {
|
99
81
|
return value.map(function (id) {
|
100
82
|
return data.find(function (item) {
|
@@ -106,57 +88,44 @@ var TagInputMock = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
106
88
|
});
|
107
89
|
}, [value, data]);
|
108
90
|
var tagCount = tagList.length;
|
109
|
-
|
110
91
|
var _useState = React.useState(),
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
92
|
+
_useState$ = _useState[0],
|
93
|
+
containerWidth = _useState$ === void 0 ? 0 : _useState$,
|
94
|
+
setContainerWidth = _useState[1];
|
115
95
|
var mergedTagList = React.useMemo(function () {
|
116
96
|
if (wrap) {
|
117
97
|
return tagList;
|
118
98
|
}
|
119
|
-
|
120
99
|
return tagList.slice(0, Math.min(tagList.length, containerWidth / tagWidth));
|
121
100
|
}, [tagList, tagWidth, containerWidth, wrap]);
|
122
101
|
var showTags = mergedTagList.length > 0;
|
123
102
|
var showTagCount = !wrap && showTags;
|
124
|
-
|
125
103
|
var _useState2 = React.useState({}),
|
126
|
-
|
127
|
-
|
128
|
-
|
104
|
+
tagsWidth = _useState2[0],
|
105
|
+
setTagsWidth = _useState2[1];
|
129
106
|
var getTagWidth = React.useCallback(function (index) {
|
130
107
|
return typeof mergedTagList[index] !== 'undefined' && tagsWidth[mergedTagList[index].id] || 0;
|
131
108
|
}, [tagsWidth, mergedTagList]);
|
132
|
-
|
133
109
|
var _useState3 = React.useState(0),
|
134
|
-
|
135
|
-
|
110
|
+
suffixWidth = _useState3[0],
|
111
|
+
setSuffixWidth = _useState3[1];
|
112
|
+
// TODO: 设置第一个 tagWidth 超出省略,预防无展示
|
136
113
|
// const [tagMaxWidth, setTagMaxWidth] = useState(0)
|
137
|
-
|
138
|
-
|
139
114
|
var _useState4 = React.useState(0),
|
140
|
-
|
141
|
-
|
142
|
-
|
115
|
+
tagMaxCount = _useState4[0],
|
116
|
+
setTagMaxCount = _useState4[1];
|
143
117
|
React.useLayoutEffect(function () {
|
144
118
|
var tagMaxCount = 0;
|
145
|
-
|
146
119
|
if (typeAssertion.isArrayNonEmpty(mergedTagList)) {
|
147
120
|
var len = mergedTagList.length;
|
148
121
|
var lastIndex = len - 1;
|
149
122
|
var totalWidth = suffixWidth;
|
150
|
-
|
151
123
|
for (var i = 0; i < len; ++i) {
|
152
124
|
var currentTagWidth = getTagWidth(i);
|
153
|
-
|
154
125
|
if (currentTagWidth === undefined) {
|
155
126
|
break;
|
156
127
|
}
|
157
|
-
|
158
128
|
totalWidth += currentTagWidth;
|
159
|
-
|
160
129
|
if (lastIndex === 0 && totalWidth <= containerWidth || i === lastIndex - 1 && totalWidth + getTagWidth(lastIndex) <= containerWidth) {
|
161
130
|
tagMaxCount = lastIndex;
|
162
131
|
break;
|
@@ -167,17 +136,15 @@ var TagInputMock = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
167
136
|
}
|
168
137
|
} else {
|
169
138
|
tagMaxCount = 0;
|
170
|
-
}
|
171
|
-
|
172
|
-
|
139
|
+
}
|
140
|
+
// 保底要展示 1 个
|
173
141
|
setTagMaxCount(typeAssertion.isArrayNonEmpty(mergedTagList) && tagMaxCount < 1 ? 1 : tagMaxCount);
|
174
|
-
}, [tagsWidth, suffixWidth, getTagWidth, containerWidth, mergedTagList, suffix]);
|
175
|
-
|
142
|
+
}, [tagsWidth, suffixWidth, getTagWidth, containerWidth, mergedTagList, suffix]);
|
143
|
+
// mergedTagList 更新后同步更新 tagsWidth
|
176
144
|
React.useEffect(function () {
|
177
145
|
var updatedTagsWidth = {};
|
178
146
|
mergedTagList.forEach(function (item) {
|
179
147
|
var _a;
|
180
|
-
|
181
148
|
var id = item.id;
|
182
149
|
updatedTagsWidth[id] = (_a = tagsWidth[id]) !== null && _a !== void 0 ? _a : 0;
|
183
150
|
});
|
@@ -190,16 +157,14 @@ var TagInputMock = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
190
157
|
tryChangeValue(NOOP_ARRAY, tagList, false);
|
191
158
|
onClearLatest();
|
192
159
|
}, [tryChangeValue, disabled, onClearLatest, tagList]);
|
193
|
-
|
194
160
|
var _useState5 = React.useState(false),
|
195
|
-
|
196
|
-
|
197
|
-
|
161
|
+
hover = _useState5[0],
|
162
|
+
setHover = _useState5[1];
|
198
163
|
var trySetHover = React.useCallback(function (hovered) {
|
199
164
|
if (disabled) return;
|
200
165
|
setHover(hovered);
|
201
|
-
}, [disabled]);
|
202
|
-
|
166
|
+
}, [disabled]);
|
167
|
+
// 在开启 clearable 下展示 清除内容按钮,可点击进行内容清楚
|
203
168
|
var showClearableIcon = clearable && showTags && !disabled;
|
204
169
|
var maxTagWidth = containerWidth - suffixWidth;
|
205
170
|
var cls = classname.cx(prefixCls, className, prefixCls + "--appearance-" + appearance, prefixCls + "--size-" + size, focused && "focused", readOnly && 'readonly', invalid && 'invalid', disabled && prefixCls + "--disabled", wrap && prefixCls + "--wrap", expandable && prefixCls + "--expandable");
|
@@ -222,7 +187,7 @@ var TagInputMock = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
222
187
|
trySetHover(false);
|
223
188
|
_onMouseLeave === null || _onMouseLeave === void 0 ? void 0 : _onMouseLeave(evt);
|
224
189
|
}
|
225
|
-
}, rest), showTags ? /*#__PURE__*/React__default["default"].createElement("span", {
|
190
|
+
}, rest), showTags ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
226
191
|
className: prefixCls + "__tags"
|
227
192
|
}, mergedTagList.map(function (option, index) {
|
228
193
|
return /*#__PURE__*/React__default["default"].createElement(MockTag, {
|
@@ -238,37 +203,34 @@ var TagInputMock = /*#__PURE__*/React.forwardRef(function (_a, ref) {
|
|
238
203
|
onTagResize: function onTagResize(id, w) {
|
239
204
|
return setTagsWidth(function (prev) {
|
240
205
|
var _Object$assign;
|
241
|
-
|
242
206
|
return Object.assign(Object.assign({}, prev), (_Object$assign = {}, _Object$assign[id] = w, _Object$assign));
|
243
207
|
});
|
244
208
|
}
|
245
209
|
});
|
246
|
-
})) : /*#__PURE__*/React__default["default"].createElement("span", {
|
210
|
+
}))) : ( /*#__PURE__*/React__default["default"].createElement("span", {
|
247
211
|
className: prefixCls + "__placeholder"
|
248
|
-
}, placeholder), /*#__PURE__*/React__default["default"].createElement(ResizeDetector__default["default"], {
|
212
|
+
}, placeholder)), /*#__PURE__*/React__default["default"].createElement(ResizeDetector__default["default"], {
|
249
213
|
skipOnMount: false,
|
250
214
|
onResize: function onResize(w) {
|
251
215
|
if (w) {
|
252
216
|
setSuffixWidth(w);
|
253
217
|
}
|
254
218
|
}
|
255
|
-
}, !!suffix || showClearableIcon && hover || showTagCount ? /*#__PURE__*/React__default["default"].createElement("span", {
|
219
|
+
}, !!suffix || showClearableIcon && hover || showTagCount ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
256
220
|
className: prefixCls + "__suffix"
|
257
|
-
}, showTagCount ? /*#__PURE__*/React__default["default"].createElement("span", {
|
221
|
+
}, showTagCount ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
258
222
|
className: classname.cx(prefixCls + "__tag--total", activeExpandable && prefixCls + "__tag--active"),
|
259
223
|
onClick: onExpand
|
260
|
-
}, "" + (tagCount > 99 ? '99+' : tagCount)) : null, showClearableIcon && hover ? /*#__PURE__*/React__default["default"].createElement("span", {
|
224
|
+
}, "" + (tagCount > 99 ? '99+' : tagCount))) : null, showClearableIcon && hover ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
261
225
|
className: prefixCls + "__clear",
|
262
226
|
role: "button",
|
263
227
|
tabIndex: -1,
|
264
228
|
onClick: handleClear
|
265
|
-
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, null)) : suffix) : null)));
|
229
|
+
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseCircleFilled, null))) : suffix)) : null)));
|
266
230
|
});
|
267
|
-
|
268
231
|
if (env.__DEV__) {
|
269
232
|
TagInputMock.displayName = 'TagInputMock';
|
270
233
|
}
|
271
|
-
|
272
234
|
var hiddenStyle = {
|
273
235
|
position: 'absolute',
|
274
236
|
opacity: 0,
|
@@ -277,18 +239,17 @@ var hiddenStyle = {
|
|
277
239
|
overflow: 'hidden',
|
278
240
|
display: 'none'
|
279
241
|
};
|
280
|
-
|
281
242
|
function MockTag(_ref) {
|
282
243
|
var prefixCls = _ref.prefixCls,
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
244
|
+
option = _ref.option,
|
245
|
+
disabled = _ref.disabled,
|
246
|
+
value = _ref.value,
|
247
|
+
onTagResize = _ref.onTagResize,
|
248
|
+
tryChangeValue = _ref.tryChangeValue,
|
249
|
+
displayRender = _ref.displayRender,
|
250
|
+
maxWidth = _ref.maxWidth,
|
251
|
+
_ref$hidden = _ref.hidden,
|
252
|
+
hidden = _ref$hidden === void 0 ? false : _ref$hidden;
|
292
253
|
var title = typeAssertion.isFunction(displayRender) ? displayRender(option) : true;
|
293
254
|
var closeable = !option.disabled;
|
294
255
|
return /*#__PURE__*/React__default["default"].createElement(ResizeDetector__default["default"], {
|
@@ -296,7 +257,6 @@ function MockTag(_ref) {
|
|
296
257
|
onResize: function onResize(width) {
|
297
258
|
// 隐藏后就不允许设置 tagSize,避免无限循环触发“宽度计算响应式策略”
|
298
259
|
if (hidden) return;
|
299
|
-
|
300
260
|
if (width !== undefined) {
|
301
261
|
onTagResize(option.id, width);
|
302
262
|
}
|
@@ -314,7 +274,7 @@ function MockTag(_ref) {
|
|
314
274
|
key: option.id
|
315
275
|
}, /*#__PURE__*/React__default["default"].createElement("span", {
|
316
276
|
className: prefixCls + "__tag-content"
|
317
|
-
}, title === true ? option.title : title), closeable ? /*#__PURE__*/React__default["default"].createElement("span", {
|
277
|
+
}, title === true ? option.title : title), closeable ? ( /*#__PURE__*/React__default["default"].createElement("span", {
|
318
278
|
className: prefixCls + "__tag-closed",
|
319
279
|
onClick: function onClick(evt) {
|
320
280
|
if (disabled) return;
|
@@ -324,7 +284,6 @@ function MockTag(_ref) {
|
|
324
284
|
});
|
325
285
|
tryChangeValue(nextValue, [option], false);
|
326
286
|
}
|
327
|
-
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseOutlined, null)) : null)));
|
287
|
+
}, /*#__PURE__*/React__default["default"].createElement(icons.CloseOutlined, null))) : null)));
|
328
288
|
}
|
329
|
-
|
330
289
|
exports.TagInputMock = TagInputMock;
|
package/lib/cjs/index.js
CHANGED
@@ -12,13 +12,9 @@
|
|
12
12
|
Object.defineProperty(exports, '__esModule', {
|
13
13
|
value: true
|
14
14
|
});
|
15
|
-
|
16
15
|
require('./styles/index.scss.js');
|
17
|
-
|
18
16
|
var TagInput = require('./TagInput.js');
|
19
|
-
|
20
17
|
var TagInputMock = require('./TagInputMock.js');
|
21
|
-
|
22
18
|
exports.TagInput = TagInput.TagInput;
|
23
19
|
exports["default"] = TagInput.TagInput;
|
24
20
|
exports.TagInputMock = TagInputMock.TagInputMock;
|