@hi-ui/tag-input 4.0.0-alpha.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2018 Xiaomi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # `@hi-ui/tag-input`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const TagInput = require('@hi-ui/tag-input');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
@@ -0,0 +1,225 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ 'use strict';
11
+
12
+ var _typeof = require("@babel/runtime/helpers/typeof");
13
+
14
+ Object.defineProperty(exports, '__esModule', {
15
+ value: true
16
+ });
17
+
18
+ var tslib = require('tslib');
19
+
20
+ var React = require('react');
21
+
22
+ var classname = require('@hi-ui/classname');
23
+
24
+ var env = require('@hi-ui/env');
25
+
26
+ var useUncontrolledState = require('@hi-ui/use-uncontrolled-state');
27
+
28
+ var icons = require('@hi-ui/icons');
29
+
30
+ var useMergeRefs = require('@hi-ui/use-merge-refs');
31
+
32
+ var useTagInput = require('./use-tag-input.js');
33
+
34
+ var useOutsideClick = require('@hi-ui/use-outside-click');
35
+
36
+ function _interopDefaultLegacy(e) {
37
+ return e && _typeof(e) === 'object' && 'default' in e ? e : {
38
+ 'default': e
39
+ };
40
+ }
41
+
42
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
43
+
44
+ var _role = 'tag-input';
45
+
46
+ var _prefix = classname.getPrefixCls(_role);
47
+
48
+ var NOOP_ARRAY = [];
49
+ /**
50
+ * TODO: What is TagInput
51
+ */
52
+
53
+ var TagInput = /*#__PURE__*/React.forwardRef(function (_a, ref) {
54
+ var _a$prefixCls = _a.prefixCls,
55
+ prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
56
+ _a$role = _a.role,
57
+ role = _a$role === void 0 ? _role : _a$role,
58
+ className = _a.className,
59
+ _a$defaultValue = _a.defaultValue,
60
+ defaultValue = _a$defaultValue === void 0 ? NOOP_ARRAY : _a$defaultValue,
61
+ valueProp = _a.value,
62
+ onChange = _a.onChange,
63
+ placeholder = _a.placeholder,
64
+ _a$data = _a.data,
65
+ data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
66
+ _a$wrap = _a.wrap,
67
+ wrap = _a$wrap === void 0 ? true : _a$wrap,
68
+ _a$clearable = _a.clearable,
69
+ clearable = _a$clearable === void 0 ? false : _a$clearable,
70
+ _a$disabled = _a.disabled,
71
+ disabled = _a$disabled === void 0 ? false : _a$disabled,
72
+ suffix = _a.suffix,
73
+ displayRender = _a.displayRender,
74
+ onClick = _a.onClick,
75
+ _onMouseOver = _a.onMouseOver,
76
+ _onMouseLeave = _a.onMouseLeave,
77
+ rest = tslib.__rest(_a, ["prefixCls", "role", "className", "defaultValue", "value", "onChange", "placeholder", "data", "wrap", "clearable", "disabled", "suffix", "displayRender", "onClick", "onMouseOver", "onMouseLeave"]);
78
+
79
+ var _useUncontrolledState = useUncontrolledState.useUncontrolledState(defaultValue, valueProp, onChange),
80
+ value = _useUncontrolledState[0],
81
+ tryChangeValue = _useUncontrolledState[1];
82
+
83
+ var tagInputRef = React.useRef(null);
84
+
85
+ var _useTagInput = useTagInput.useTagInput(data, tagInputRef),
86
+ tagMaxWidth = _useTagInput[0];
87
+
88
+ var handleClear = React.useCallback(function (evt) {
89
+ if (disabled) return;
90
+ evt.stopPropagation();
91
+ tryChangeValue(NOOP_ARRAY);
92
+ }, [tryChangeValue, disabled]);
93
+ var tagList = React.useMemo(function () {
94
+ return value.map(function (id) {
95
+ return data.find(function (item) {
96
+ return item.id === id;
97
+ }) || {
98
+ id: id,
99
+ title: id
100
+ };
101
+ });
102
+ }, [value, data]);
103
+
104
+ var _useState = React.useState(false),
105
+ hover = _useState[0],
106
+ setHover = _useState[1];
107
+
108
+ var trySetHover = React.useCallback(function (hovered) {
109
+ if (disabled) return;
110
+ setHover(hovered);
111
+ }, [disabled]);
112
+ var tagCount = tagList.length; // 在开启 clearable 下展示 清除内容按钮,可点击进行内容清楚
113
+
114
+ var showClearableIcon = clearable && tagCount > 0 && !disabled;
115
+ var showTagCount = !wrap && tagCount > 0;
116
+
117
+ var _useState2 = React.useState(false),
118
+ expanded = _useState2[0],
119
+ setExpanded = _useState2[1];
120
+
121
+ useOutsideClick.useOutsideClick(tagInputRef, function () {
122
+ return setExpanded(false);
123
+ });
124
+ var handleExpand = React.useCallback(function (evt) {
125
+ evt.stopPropagation();
126
+ setExpanded(true);
127
+ }, []);
128
+ var cls = classname.cx(prefixCls, className, expanded ? prefixCls + "--expanded" : wrap ? prefixCls + "--wrap" : prefixCls + "--nowrap");
129
+ return /*#__PURE__*/React__default['default'].createElement("div", Object.assign({
130
+ ref: useMergeRefs.useMergeRefs(ref, tagInputRef),
131
+ role: role,
132
+ className: cls,
133
+ onMouseOver: function onMouseOver(evt) {
134
+ trySetHover(true);
135
+ _onMouseOver === null || _onMouseOver === void 0 ? void 0 : _onMouseOver(evt);
136
+ },
137
+ onMouseLeave: function onMouseLeave(evt) {
138
+ trySetHover(false);
139
+ _onMouseLeave === null || _onMouseLeave === void 0 ? void 0 : _onMouseLeave(evt);
140
+ }
141
+ }, rest), /*#__PURE__*/React__default['default'].createElement("div", {
142
+ className: classname.cx(prefixCls + "__container", disabled && 'disabled'),
143
+ onClick: onClick
144
+ }, value.length !== 0 ? /*#__PURE__*/React__default['default'].createElement("span", {
145
+ className: prefixCls + "__value"
146
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
147
+ className: classname.cx(prefixCls + "__tags", wrap && prefixCls + "__tags--all")
148
+ }, tagList.map(function (option) {
149
+ var title = displayRender ? displayRender(option) : true;
150
+ var closeable = !option.disabled;
151
+ return /*#__PURE__*/React__default['default'].createElement("span", {
152
+ className: prefixCls + "__tag",
153
+ key: option.id
154
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
155
+ className: prefixCls + "__tag-content",
156
+ style: {
157
+ maxWidth: tagMaxWidth
158
+ }
159
+ }, title === true ? option.title : title), closeable ? /*#__PURE__*/React__default['default'].createElement("span", {
160
+ className: prefixCls + "__tag-closed",
161
+ onClick: function onClick(evt) {
162
+ if (disabled) return;
163
+ evt.stopPropagation();
164
+ var nextValue = [].concat(value).filter(function (id) {
165
+ return id !== option.id;
166
+ });
167
+ tryChangeValue(nextValue);
168
+ }
169
+ }, /*#__PURE__*/React__default['default'].createElement(icons.CloseOutlined, null)) : null);
170
+ }))) : /*#__PURE__*/React__default['default'].createElement("span", {
171
+ className: prefixCls + "__placeholder"
172
+ }, placeholder), !!suffix || showClearableIcon && hover || showTagCount ? /*#__PURE__*/React__default['default'].createElement("span", {
173
+ className: prefixCls + "__suffix"
174
+ }, showTagCount ? /*#__PURE__*/React__default['default'].createElement("span", {
175
+ className: classname.cx(prefixCls + "__tag--total"),
176
+ onClick: handleExpand
177
+ }, "" + (tagCount > 99 ? '+99' : tagCount)) : showClearableIcon && hover ? /*#__PURE__*/React__default['default'].createElement("span", {
178
+ className: prefixCls + "__clear",
179
+ role: "button",
180
+ tabIndex: -1,
181
+ onClick: handleClear
182
+ }, /*#__PURE__*/React__default['default'].createElement(icons.CloseCircleFilled, null)) : null, suffix) : null), value.length !== 0 && expanded ? /*#__PURE__*/React__default['default'].createElement("div", {
183
+ className: prefixCls + "__container__expand"
184
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
185
+ className: classname.cx(prefixCls + "__value")
186
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
187
+ className: classname.cx(prefixCls + "__tags", prefixCls + "__tags--all")
188
+ }, tagList.map(function (option) {
189
+ var title = displayRender ? displayRender(option) : true;
190
+ var closeable = !option.disabled;
191
+ return /*#__PURE__*/React__default['default'].createElement("span", {
192
+ className: prefixCls + "__tag",
193
+ key: option.id
194
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
195
+ className: prefixCls + "__tag-content",
196
+ style: {
197
+ maxWidth: tagMaxWidth
198
+ }
199
+ }, title === true ? option.title : title), closeable ? /*#__PURE__*/React__default['default'].createElement("span", {
200
+ className: prefixCls + "__tag-closed",
201
+ onClick: function onClick(evt) {
202
+ if (disabled) return;
203
+ evt.stopPropagation();
204
+ var nextValue = [].concat(value).filter(function (id) {
205
+ return id !== option.id;
206
+ });
207
+ tryChangeValue(nextValue);
208
+ }
209
+ }, /*#__PURE__*/React__default['default'].createElement(icons.CloseOutlined, null)) : null);
210
+ }))), showClearableIcon ? /*#__PURE__*/React__default['default'].createElement("span", {
211
+ className: prefixCls + "__suffix"
212
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
213
+ className: prefixCls + "__clear",
214
+ role: "button",
215
+ tabIndex: -1,
216
+ onClick: handleClear
217
+ }, /*#__PURE__*/React__default['default'].createElement(icons.CloseCircleFilled, null))) : null) : null);
218
+ });
219
+
220
+ if (env.__DEV__) {
221
+ TagInput.displayName = 'TagInput';
222
+ }
223
+
224
+ exports.TagInput = TagInput;
225
+ //# sourceMappingURL=TagInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagInput.js","sources":["../../src/TagInput.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","NOOP_ARRAY","TagInput","forwardRef","_a","ref","prefixCls","role","className","defaultValue","valueProp","value","onChange","placeholder","data","wrap","clearable","disabled","suffix","displayRender","onClick","onMouseOver","onMouseLeave","rest","useUncontrolledState","tryChangeValue","tagInputRef","useRef","useTagInput","tagMaxWidth","handleClear","useCallback","evt","stopPropagation","tagList","useMemo","map","id","find","item","title","useState","hover","setHover","trySetHover","hovered","tagCount","length","showClearableIcon","showTagCount","expanded","setExpanded","useOutsideClick","handleExpand","cls","cx","React","useMergeRefs","option","closeable","key","style","maxWidth","nextValue","filter","CloseOutlined","tabIndex","CloseCircleFilled","__DEV__","displayName"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ require('./styles/index.scss.js');
17
+
18
+ var TagInput = require('./TagInput.js');
19
+
20
+ exports.TagInput = TagInput.TagInput;
21
+ exports["default"] = TagInput.TagInput;
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,22 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+ var css_248z = ".hi-v4-tag-input {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1; }\n .hi-v4-tag-input__container {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n min-width: 160px;\n font-size: 14px;\n vertical-align: middle;\n color: var(--color-black);\n border: 1px solid transparent;\n background-color: var(--color-white);\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n padding: 4px 10px;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n min-height: 32px;\n overflow: hidden;\n border-color: var(--color-gray-30);\n border-radius: 4px; }\n .hi-v4-tag-input__container:not(.disabled):hover {\n border-color: var(--color-primary); }\n .hi-v4-tag-input__container:not(.disabled).focused {\n border-color: var(--color-primary); }\n .hi-v4-tag-input__container.disabled {\n cursor: not-allowed;\n color: var(--color-gray-50);\n background-color: var(--color-gray-10); }\n .hi-v4-tag-input__placeholder {\n color: var(--color-gray-50); }\n .hi-v4-tag-input__suffix {\n font-size: 16px;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .hi-v4-tag-input__clear {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: 16px;\n height: 16px;\n font-size: 14px;\n color: var(--color-gray-50);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n cursor: pointer;\n -webkit-transition: all 0.3s;\n transition: all 0.3s; }\n .hi-v4-tag-input__clear:hover {\n color: var(--color-black); }\n .hi-v4-tag-input__value {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n height: 22px;\n line-height: 22px; }\n .hi-v4-tag-input__tags {\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n display: inline-block;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n white-space: nowrap;\n height: 100%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin-top: -4px; }\n .hi-v4-tag-input__tag, .hi-v4-tag-input__tag--left {\n display: inline-block;\n margin-right: 4px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0 8px;\n vertical-align: middle;\n font-size: 12px;\n color: #333;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background: #f2f2f2;\n border-radius: 4px; }\n .hi-v4-tag-input__tag--total {\n display: inline-block;\n margin-right: 6px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0 8px;\n vertical-align: middle;\n font-size: 12px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: var(--color-primary-20);\n color: var(--color-primary);\n border-radius: 4px;\n line-height: 22px;\n cursor: pointer; }\n .hi-v4-tag-input__tag {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .hi-v4-tag-input__tag-content {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .hi-v4-tag-input__tag-closed {\n margin-left: 8px;\n font-size: 12px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #8e8e8e;\n cursor: pointer; }\n .disabled .hi-v4-tag-input__tag-closed {\n cursor: not-allowed; }\n .hi-v4-tag-input__tag--left {\n margin: 0;\n max-width: 54px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle; }\n .hi-v4-tag-input--nowrap .hi-v4-tag-input__value {\n width: calc(100% - 64px);\n overflow-x: hidden; }\n .hi-v4-tag-input--wrap .hi-v4-tag-input__value {\n height: auto; }\n .hi-v4-tag-input--wrap .hi-v4-tag-input__tags {\n white-space: normal;\n margin-top: -4px; }\n .hi-v4-tag-input--wrap .hi-v4-tag-input__tag {\n margin-top: 4px; }\n .hi-v4-tag-input--expanded {\n position: relative; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand {\n position: absolute;\n top: 0;\n left: 0;\n height: auto;\n z-index: 1;\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n min-width: 160px;\n font-size: 14px;\n vertical-align: middle;\n color: var(--color-black);\n border: 1px solid transparent;\n background-color: var(--color-white);\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n padding: 3px 0;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n min-height: 32px;\n overflow: hidden;\n border-radius: 4px;\n border-color: var(--color-primary); }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__value {\n height: -webkit-fit-content;\n height: -moz-fit-content;\n height: fit-content;\n max-height: 74px;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n overflow: scroll;\n padding-left: 10px; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__tags {\n white-space: normal;\n margin-top: -4px; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__tag {\n margin-top: 4px; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__suffix {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n padding: 4px 10px 4px 0;\n position: sticky;\n top: 0; }\n";
16
+
17
+ var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
18
+
19
+ __styleInject__(css_248z);
20
+
21
+ exports["default"] = css_248z;
22
+ //# sourceMappingURL=index.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,58 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var React = require('react');
17
+
18
+ var index = require('./utils/index.js');
19
+
20
+ var TAG_MARGIN_RIGHT = 4; // 留给显示剩余选项的宽度:suffix + paddingLeft + paddingRight + leftCountTag (16 + 10 + + 10 + 54)
21
+
22
+ var LEFT_SPACE_WIDTH = 100 + TAG_MARGIN_RIGHT;
23
+
24
+ var useTagInput = function useTagInput(tags, ref) {
25
+ var inputWidth = useResizeWidth(ref);
26
+ var tagMaxWidth = inputWidth ? inputWidth - (LEFT_SPACE_WIDTH + 1) : undefined;
27
+ return [tagMaxWidth];
28
+ };
29
+
30
+ var useResizeWidth = function useResizeWidth(ref) {
31
+ var _useState = React.useState(0),
32
+ width = _useState[0],
33
+ setWidth = _useState[1];
34
+
35
+ var tryUpdateWidth = React.useCallback(function () {
36
+ var _a;
37
+
38
+ var nextWidth = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
39
+ setWidth(function (prev) {
40
+ return nextWidth || prev || 0;
41
+ });
42
+ }, [ref]);
43
+ React.useLayoutEffect(function () {
44
+ // init with resize
45
+ tryUpdateWidth();
46
+ var debouncedResize = index.debounce(tryUpdateWidth, 60);
47
+ window.addEventListener('resize', debouncedResize);
48
+ return function () {
49
+ window.removeEventListener('resize', debouncedResize);
50
+ debouncedResize.cancel();
51
+ };
52
+ }, [tryUpdateWidth]);
53
+ return width;
54
+ };
55
+
56
+ exports.useResizeWidth = useResizeWidth;
57
+ exports.useTagInput = useTagInput;
58
+ //# sourceMappingURL=use-tag-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-tag-input.js","sources":["../../src/use-tag-input.ts"],"sourcesContent":[null],"names":["TAG_MARGIN_RIGHT","LEFT_SPACE_WIDTH","useTagInput","tags","ref","inputWidth","useResizeWidth","tagMaxWidth","undefined","useState","width","setWidth","tryUpdateWidth","useCallback","nextWidth","current","getBoundingClientRect","prev","useLayoutEffect","debouncedResize","debounce","window","addEventListener","removeEventListener","cancel"],"mappings":";;;;;;;;;;;;;;;;;;;AAIA,IAAMA,gBAAgB,GAAG,CAAzB;;AAEA,IAAMC,gBAAgB,GAAG,MAAMD,gBAA/B;;IAEaE,WAAW,GAAG,SAAdA,WAAc,CAAIC,IAAJ,EAAeC,GAAf;MACnBC,UAAU,GAAGC,cAAc,CAACF,GAAD;MAC3BG,WAAW,GAAGF,UAAU,GAAGA,UAAU,IAAIJ,gBAAgB,GAAG,CAAvB,CAAb,GAAyCO;SAEhE,CAACD,WAAD;;;IAGID,cAAc,GAAG,SAAjBA,cAAiB,CAAoBF,GAApB;kBACFK,cAAAA,CAAS,CAATA;MAAnBC,KAAP;MAAcC,QAAd;;MAEMC,cAAc,GAAGC,iBAAAA,CAAY;;;QAC3BC,SAAS,GAAG,MAAAV,GAAG,CAACW,OAAJ,UAAA,iBAAA,SAAA,MAAaC,wBAAwBN;AACvDC,IAAAA,QAAQ,CAAC,UAACM,IAAD;aAAUH,SAAS,IAAIG,IAAbH,IAAqB;AAAhC,KAAA,CAARH;AAFgC,GAAXE,EAGpB,CAACT,GAAD,CAHoBS;AAKvBK,EAAAA,qBAAAA,CAAgB;;AAEdN,IAAAA,cAAc;QACRO,eAAe,GAAGC,cAAAA,CAASR,cAATQ,EAAyB,EAAzBA;AACxBC,IAAAA,MAAM,CAACC,gBAAPD,CAAwB,QAAxBA,EAAkCF,eAAlCE;WACO;AACLA,MAAAA,MAAM,CAACE,mBAAPF,CAA2B,QAA3BA,EAAqCF,eAArCE;AACAF,MAAAA,eAAe,CAACK,MAAhBL;AAFF;AALa,GAAfD,EASG,CAACN,cAAD,CATHM;SAWOR;;;;"}
@@ -0,0 +1,52 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ 'use strict';
11
+
12
+ Object.defineProperty(exports, '__esModule', {
13
+ value: true
14
+ });
15
+
16
+ var debounce = function debounce(func, delay) {
17
+ if (delay === void 0) {
18
+ delay = 150;
19
+ }
20
+
21
+ var timer = 0;
22
+
23
+ var cancel = function cancel() {
24
+ if (timer) {
25
+ window.clearTimeout(timer);
26
+ timer = 0;
27
+ }
28
+ };
29
+
30
+ var debounceFn = function debounceFn() {
31
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
32
+ args[_key] = arguments[_key];
33
+ }
34
+
35
+ if (timer) {
36
+ cancel();
37
+ }
38
+
39
+ if (func) {
40
+ timer = window.setTimeout(function () {
41
+ func.apply(null, args);
42
+ timer = 0;
43
+ }, delay);
44
+ }
45
+ };
46
+
47
+ debounceFn.cancel = cancel;
48
+ return debounceFn;
49
+ };
50
+
51
+ exports.debounce = debounce;
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/index.ts"],"sourcesContent":[null],"names":["debounce","func","delay","timer","cancel","window","clearTimeout","debounceFn","args","setTimeout","apply"],"mappings":";;;;;;;;;;;;;;;IAAaA,QAAQ,GAAG,SAAXA,QAAW,CAAqCC,IAArC,EAA+CC,KAA/C;MAA+CA;AAAAA,IAAAA,QAAQ,GAARA;;;MACjEC,KAAK,GAAG;;MAENC,MAAM,GAAG,SAATA,MAAS;QACTD,OAAO;AACTE,MAAAA,MAAM,CAACC,YAAPD,CAAoBF,KAApBE;AACAF,MAAAA,KAAK,GAAG,CAARA;;AAHJ;;MAOMI,UAAU,GAAG,SAAbA,UAAa;sCAAIC;AAAAA,MAAAA,UAAAA,kBAAAA;;;QACjBL,OAAO;AACTC,MAAAA,MAAM;;;QAGJH,MAAM;AACRE,MAAAA,KAAK,GAAGE,MAAM,CAACI,UAAPJ,CAAkB;AACxBJ,QAAAA,IAAI,CAACS,KAALT,CAAW,IAAXA,EAAiBO,IAAjBP;AACAE,QAAAA,KAAK,GAAG,CAARA;AAFM,OAAAE,EAGLH,KAHKG,CAARF;;AANJ;;AAaAI,EAAAA,UAAU,CAACH,MAAXG,GAAoBH,MAApBG;SAEOA;;;"}
@@ -0,0 +1,200 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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 { __rest } from 'tslib';
11
+ import React, { forwardRef, useRef, useCallback, useMemo, useState } from 'react';
12
+ import { getPrefixCls, cx } from '@hi-ui/classname';
13
+ import { __DEV__ } from '@hi-ui/env';
14
+ import { useUncontrolledState } from '@hi-ui/use-uncontrolled-state';
15
+ import { CloseOutlined, CloseCircleFilled } from '@hi-ui/icons';
16
+ import { useMergeRefs } from '@hi-ui/use-merge-refs';
17
+ import { useTagInput } from './use-tag-input.js';
18
+ import { useOutsideClick } from '@hi-ui/use-outside-click';
19
+ var _role = 'tag-input';
20
+
21
+ var _prefix = getPrefixCls(_role);
22
+
23
+ var NOOP_ARRAY = [];
24
+ /**
25
+ * TODO: What is TagInput
26
+ */
27
+
28
+ var TagInput = /*#__PURE__*/forwardRef(function (_a, ref) {
29
+ var _a$prefixCls = _a.prefixCls,
30
+ prefixCls = _a$prefixCls === void 0 ? _prefix : _a$prefixCls,
31
+ _a$role = _a.role,
32
+ role = _a$role === void 0 ? _role : _a$role,
33
+ className = _a.className,
34
+ _a$defaultValue = _a.defaultValue,
35
+ defaultValue = _a$defaultValue === void 0 ? NOOP_ARRAY : _a$defaultValue,
36
+ valueProp = _a.value,
37
+ onChange = _a.onChange,
38
+ placeholder = _a.placeholder,
39
+ _a$data = _a.data,
40
+ data = _a$data === void 0 ? NOOP_ARRAY : _a$data,
41
+ _a$wrap = _a.wrap,
42
+ wrap = _a$wrap === void 0 ? true : _a$wrap,
43
+ _a$clearable = _a.clearable,
44
+ clearable = _a$clearable === void 0 ? false : _a$clearable,
45
+ _a$disabled = _a.disabled,
46
+ disabled = _a$disabled === void 0 ? false : _a$disabled,
47
+ suffix = _a.suffix,
48
+ displayRender = _a.displayRender,
49
+ onClick = _a.onClick,
50
+ _onMouseOver = _a.onMouseOver,
51
+ _onMouseLeave = _a.onMouseLeave,
52
+ rest = __rest(_a, ["prefixCls", "role", "className", "defaultValue", "value", "onChange", "placeholder", "data", "wrap", "clearable", "disabled", "suffix", "displayRender", "onClick", "onMouseOver", "onMouseLeave"]);
53
+
54
+ var _useUncontrolledState = useUncontrolledState(defaultValue, valueProp, onChange),
55
+ value = _useUncontrolledState[0],
56
+ tryChangeValue = _useUncontrolledState[1];
57
+
58
+ var tagInputRef = useRef(null);
59
+
60
+ var _useTagInput = useTagInput(data, tagInputRef),
61
+ tagMaxWidth = _useTagInput[0];
62
+
63
+ var handleClear = useCallback(function (evt) {
64
+ if (disabled) return;
65
+ evt.stopPropagation();
66
+ tryChangeValue(NOOP_ARRAY);
67
+ }, [tryChangeValue, disabled]);
68
+ var tagList = useMemo(function () {
69
+ return value.map(function (id) {
70
+ return data.find(function (item) {
71
+ return item.id === id;
72
+ }) || {
73
+ id: id,
74
+ title: id
75
+ };
76
+ });
77
+ }, [value, data]);
78
+
79
+ var _useState = useState(false),
80
+ hover = _useState[0],
81
+ setHover = _useState[1];
82
+
83
+ var trySetHover = useCallback(function (hovered) {
84
+ if (disabled) return;
85
+ setHover(hovered);
86
+ }, [disabled]);
87
+ var tagCount = tagList.length; // 在开启 clearable 下展示 清除内容按钮,可点击进行内容清楚
88
+
89
+ var showClearableIcon = clearable && tagCount > 0 && !disabled;
90
+ var showTagCount = !wrap && tagCount > 0;
91
+
92
+ var _useState2 = useState(false),
93
+ expanded = _useState2[0],
94
+ setExpanded = _useState2[1];
95
+
96
+ useOutsideClick(tagInputRef, function () {
97
+ return setExpanded(false);
98
+ });
99
+ var handleExpand = useCallback(function (evt) {
100
+ evt.stopPropagation();
101
+ setExpanded(true);
102
+ }, []);
103
+ var cls = cx(prefixCls, className, expanded ? prefixCls + "--expanded" : wrap ? prefixCls + "--wrap" : prefixCls + "--nowrap");
104
+ return /*#__PURE__*/React.createElement("div", Object.assign({
105
+ ref: useMergeRefs(ref, tagInputRef),
106
+ role: role,
107
+ className: cls,
108
+ onMouseOver: function onMouseOver(evt) {
109
+ trySetHover(true);
110
+ _onMouseOver === null || _onMouseOver === void 0 ? void 0 : _onMouseOver(evt);
111
+ },
112
+ onMouseLeave: function onMouseLeave(evt) {
113
+ trySetHover(false);
114
+ _onMouseLeave === null || _onMouseLeave === void 0 ? void 0 : _onMouseLeave(evt);
115
+ }
116
+ }, rest), /*#__PURE__*/React.createElement("div", {
117
+ className: cx(prefixCls + "__container", disabled && 'disabled'),
118
+ onClick: onClick
119
+ }, value.length !== 0 ? /*#__PURE__*/React.createElement("span", {
120
+ className: prefixCls + "__value"
121
+ }, /*#__PURE__*/React.createElement("span", {
122
+ className: cx(prefixCls + "__tags", wrap && prefixCls + "__tags--all")
123
+ }, tagList.map(function (option) {
124
+ var title = displayRender ? displayRender(option) : true;
125
+ var closeable = !option.disabled;
126
+ return /*#__PURE__*/React.createElement("span", {
127
+ className: prefixCls + "__tag",
128
+ key: option.id
129
+ }, /*#__PURE__*/React.createElement("span", {
130
+ className: prefixCls + "__tag-content",
131
+ style: {
132
+ maxWidth: tagMaxWidth
133
+ }
134
+ }, title === true ? option.title : title), closeable ? /*#__PURE__*/React.createElement("span", {
135
+ className: prefixCls + "__tag-closed",
136
+ onClick: function onClick(evt) {
137
+ if (disabled) return;
138
+ evt.stopPropagation();
139
+ var nextValue = [].concat(value).filter(function (id) {
140
+ return id !== option.id;
141
+ });
142
+ tryChangeValue(nextValue);
143
+ }
144
+ }, /*#__PURE__*/React.createElement(CloseOutlined, null)) : null);
145
+ }))) : /*#__PURE__*/React.createElement("span", {
146
+ className: prefixCls + "__placeholder"
147
+ }, placeholder), !!suffix || showClearableIcon && hover || showTagCount ? /*#__PURE__*/React.createElement("span", {
148
+ className: prefixCls + "__suffix"
149
+ }, showTagCount ? /*#__PURE__*/React.createElement("span", {
150
+ className: cx(prefixCls + "__tag--total"),
151
+ onClick: handleExpand
152
+ }, "" + (tagCount > 99 ? '+99' : tagCount)) : showClearableIcon && hover ? /*#__PURE__*/React.createElement("span", {
153
+ className: prefixCls + "__clear",
154
+ role: "button",
155
+ tabIndex: -1,
156
+ onClick: handleClear
157
+ }, /*#__PURE__*/React.createElement(CloseCircleFilled, null)) : null, suffix) : null), value.length !== 0 && expanded ? /*#__PURE__*/React.createElement("div", {
158
+ className: prefixCls + "__container__expand"
159
+ }, /*#__PURE__*/React.createElement("span", {
160
+ className: cx(prefixCls + "__value")
161
+ }, /*#__PURE__*/React.createElement("span", {
162
+ className: cx(prefixCls + "__tags", prefixCls + "__tags--all")
163
+ }, tagList.map(function (option) {
164
+ var title = displayRender ? displayRender(option) : true;
165
+ var closeable = !option.disabled;
166
+ return /*#__PURE__*/React.createElement("span", {
167
+ className: prefixCls + "__tag",
168
+ key: option.id
169
+ }, /*#__PURE__*/React.createElement("span", {
170
+ className: prefixCls + "__tag-content",
171
+ style: {
172
+ maxWidth: tagMaxWidth
173
+ }
174
+ }, title === true ? option.title : title), closeable ? /*#__PURE__*/React.createElement("span", {
175
+ className: prefixCls + "__tag-closed",
176
+ onClick: function onClick(evt) {
177
+ if (disabled) return;
178
+ evt.stopPropagation();
179
+ var nextValue = [].concat(value).filter(function (id) {
180
+ return id !== option.id;
181
+ });
182
+ tryChangeValue(nextValue);
183
+ }
184
+ }, /*#__PURE__*/React.createElement(CloseOutlined, null)) : null);
185
+ }))), showClearableIcon ? /*#__PURE__*/React.createElement("span", {
186
+ className: prefixCls + "__suffix"
187
+ }, /*#__PURE__*/React.createElement("span", {
188
+ className: prefixCls + "__clear",
189
+ role: "button",
190
+ tabIndex: -1,
191
+ onClick: handleClear
192
+ }, /*#__PURE__*/React.createElement(CloseCircleFilled, null))) : null) : null);
193
+ });
194
+
195
+ if (__DEV__) {
196
+ TagInput.displayName = 'TagInput';
197
+ }
198
+
199
+ export { TagInput };
200
+ //# sourceMappingURL=TagInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagInput.js","sources":["../../src/TagInput.tsx"],"sourcesContent":[null],"names":["_role","_prefix","getPrefixCls","NOOP_ARRAY","TagInput","forwardRef","_a","ref","prefixCls","role","className","defaultValue","valueProp","value","onChange","placeholder","data","wrap","clearable","disabled","suffix","displayRender","onClick","onMouseOver","onMouseLeave","rest","useUncontrolledState","tryChangeValue","tagInputRef","useRef","useTagInput","tagMaxWidth","handleClear","useCallback","evt","stopPropagation","tagList","useMemo","map","id","find","item","title","useState","hover","setHover","trySetHover","hovered","tagCount","length","showClearableIcon","showTagCount","expanded","setExpanded","useOutsideClick","handleExpand","cls","cx","React","useMergeRefs","option","closeable","key","style","maxWidth","nextValue","filter","CloseOutlined","tabIndex","CloseCircleFilled","__DEV__","displayName"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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 './styles/index.scss.js';
11
+ export { TagInput, TagInput as default } from './TagInput.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ var css_248z = ".hi-v4-tag-input {\n position: relative;\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1; }\n .hi-v4-tag-input__container {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n min-width: 160px;\n font-size: 14px;\n vertical-align: middle;\n color: var(--color-black);\n border: 1px solid transparent;\n background-color: var(--color-white);\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n padding: 4px 10px;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n min-height: 32px;\n overflow: hidden;\n border-color: var(--color-gray-30);\n border-radius: 4px; }\n .hi-v4-tag-input__container:not(.disabled):hover {\n border-color: var(--color-primary); }\n .hi-v4-tag-input__container:not(.disabled).focused {\n border-color: var(--color-primary); }\n .hi-v4-tag-input__container.disabled {\n cursor: not-allowed;\n color: var(--color-gray-50);\n background-color: var(--color-gray-10); }\n .hi-v4-tag-input__placeholder {\n color: var(--color-gray-50); }\n .hi-v4-tag-input__suffix {\n font-size: 16px;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .hi-v4-tag-input__clear {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n width: 16px;\n height: 16px;\n font-size: 14px;\n color: var(--color-gray-50);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n cursor: pointer;\n -webkit-transition: all 0.3s;\n transition: all 0.3s; }\n .hi-v4-tag-input__clear:hover {\n color: var(--color-black); }\n .hi-v4-tag-input__value {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n height: 22px;\n line-height: 22px; }\n .hi-v4-tag-input__tags {\n -webkit-box-flex: 0;\n -ms-flex: 0 1 auto;\n flex: 0 1 auto;\n display: inline-block;\n width: -webkit-fit-content;\n width: -moz-fit-content;\n width: fit-content;\n white-space: nowrap;\n height: 100%;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n margin-top: -4px; }\n .hi-v4-tag-input__tag, .hi-v4-tag-input__tag--left {\n display: inline-block;\n margin-right: 4px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0 8px;\n vertical-align: middle;\n font-size: 12px;\n color: #333;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background: #f2f2f2;\n border-radius: 4px; }\n .hi-v4-tag-input__tag--total {\n display: inline-block;\n margin-right: 6px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0 8px;\n vertical-align: middle;\n font-size: 12px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: var(--color-primary-20);\n color: var(--color-primary);\n border-radius: 4px;\n line-height: 22px;\n cursor: pointer; }\n .hi-v4-tag-input__tag {\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center; }\n .hi-v4-tag-input__tag-content {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n -webkit-box-sizing: border-box;\n box-sizing: border-box; }\n .hi-v4-tag-input__tag-closed {\n margin-left: 8px;\n font-size: 12px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n color: #8e8e8e;\n cursor: pointer; }\n .disabled .hi-v4-tag-input__tag-closed {\n cursor: not-allowed; }\n .hi-v4-tag-input__tag--left {\n margin: 0;\n max-width: 54px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n vertical-align: middle; }\n .hi-v4-tag-input--nowrap .hi-v4-tag-input__value {\n width: calc(100% - 64px);\n overflow-x: hidden; }\n .hi-v4-tag-input--wrap .hi-v4-tag-input__value {\n height: auto; }\n .hi-v4-tag-input--wrap .hi-v4-tag-input__tags {\n white-space: normal;\n margin-top: -4px; }\n .hi-v4-tag-input--wrap .hi-v4-tag-input__tag {\n margin-top: 4px; }\n .hi-v4-tag-input--expanded {\n position: relative; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand {\n position: absolute;\n top: 0;\n left: 0;\n height: auto;\n z-index: 1;\n -webkit-box-flex: 1;\n -ms-flex: 1 1;\n flex: 1 1;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 100%;\n min-width: 160px;\n font-size: 14px;\n vertical-align: middle;\n color: var(--color-black);\n border: 1px solid transparent;\n background-color: var(--color-white);\n -webkit-transition: all 0.3s;\n transition: all 0.3s;\n padding: 3px 0;\n display: -webkit-inline-box;\n display: -ms-inline-flexbox;\n display: inline-flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n min-height: 32px;\n overflow: hidden;\n border-radius: 4px;\n border-color: var(--color-primary); }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__value {\n height: -webkit-fit-content;\n height: -moz-fit-content;\n height: fit-content;\n max-height: 74px;\n -webkit-box-align: stretch;\n -ms-flex-align: stretch;\n align-items: stretch;\n overflow: scroll;\n padding-left: 10px; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__tags {\n white-space: normal;\n margin-top: -4px; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__tag {\n margin-top: 4px; }\n .hi-v4-tag-input--expanded .hi-v4-tag-input__container__expand .hi-v4-tag-input__suffix {\n -webkit-box-align: start;\n -ms-flex-align: start;\n align-items: flex-start;\n padding: 4px 10px 4px 0;\n position: sticky;\n top: 0; }\n";
11
+
12
+ var __styleInject__ = require('style-inject/dist/style-inject.es.js')["default"];
13
+
14
+ __styleInject__(css_248z);
15
+
16
+ export default css_248z;
17
+ //# sourceMappingURL=index.scss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,49 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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 { useState, 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(tags, ref) {
17
+ var inputWidth = useResizeWidth(ref);
18
+ var tagMaxWidth = inputWidth ? inputWidth - (LEFT_SPACE_WIDTH + 1) : undefined;
19
+ return [tagMaxWidth];
20
+ };
21
+
22
+ var useResizeWidth = function useResizeWidth(ref) {
23
+ var _useState = useState(0),
24
+ width = _useState[0],
25
+ setWidth = _useState[1];
26
+
27
+ var tryUpdateWidth = useCallback(function () {
28
+ var _a;
29
+
30
+ var nextWidth = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width;
31
+ setWidth(function (prev) {
32
+ return nextWidth || prev || 0;
33
+ });
34
+ }, [ref]);
35
+ useLayoutEffect(function () {
36
+ // init with resize
37
+ tryUpdateWidth();
38
+ var debouncedResize = debounce(tryUpdateWidth, 60);
39
+ window.addEventListener('resize', debouncedResize);
40
+ return function () {
41
+ window.removeEventListener('resize', debouncedResize);
42
+ debouncedResize.cancel();
43
+ };
44
+ }, [tryUpdateWidth]);
45
+ return width;
46
+ };
47
+
48
+ export { useResizeWidth, useTagInput };
49
+ //# sourceMappingURL=use-tag-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-tag-input.js","sources":["../../src/use-tag-input.ts"],"sourcesContent":[null],"names":["TAG_MARGIN_RIGHT","LEFT_SPACE_WIDTH","useTagInput","tags","ref","inputWidth","useResizeWidth","tagMaxWidth","undefined","useState","width","setWidth","tryUpdateWidth","useCallback","nextWidth","current","getBoundingClientRect","prev","useLayoutEffect","debouncedResize","debounce","window","addEventListener","removeEventListener","cancel"],"mappings":";;;;;;;;;;;AAIA,IAAMA,gBAAgB,GAAG,CAAzB;;AAEA,IAAMC,gBAAgB,GAAG,MAAMD,gBAA/B;;IAEaE,WAAW,GAAG,SAAdA,WAAc,CAAIC,IAAJ,EAAeC,GAAf;MACnBC,UAAU,GAAGC,cAAc,CAACF,GAAD;MAC3BG,WAAW,GAAGF,UAAU,GAAGA,UAAU,IAAIJ,gBAAgB,GAAG,CAAvB,CAAb,GAAyCO;SAEhE,CAACD,WAAD;;;IAGID,cAAc,GAAG,SAAjBA,cAAiB,CAAoBF,GAApB;kBACFK,QAAQ,CAAC,CAAD;MAA3BC,KAAP;MAAcC,QAAd;;MAEMC,cAAc,GAAGC,WAAW,CAAC;;;QAC3BC,SAAS,GAAG,MAAAV,GAAG,CAACW,OAAJ,UAAA,iBAAA,SAAA,MAAaC,wBAAwBN;AACvDC,IAAAA,QAAQ,CAAC,UAACM,IAAD;aAAUH,SAAS,IAAIG,IAAbH,IAAqB;AAAhC,KAAA,CAARH;AAFgC,GAAA,EAG/B,CAACP,GAAD,CAH+B;AAKlCc,EAAAA,eAAe,CAAC;;AAEdN,IAAAA,cAAc;QACRO,eAAe,GAAGC,QAAQ,CAACR,cAAD,EAAiB,EAAjB;AAChCS,IAAAA,MAAM,CAACC,gBAAPD,CAAwB,QAAxBA,EAAkCF,eAAlCE;WACO;AACLA,MAAAA,MAAM,CAACE,mBAAPF,CAA2B,QAA3BA,EAAqCF,eAArCE;AACAF,MAAAA,eAAe,CAACK,MAAhBL;AAFF;AALa,GAAA,EASZ,CAACP,cAAD,CATY,CAAfM;SAWOR;;;"}
@@ -0,0 +1,46 @@
1
+ /** @LICENSE
2
+ * @hi-ui/tag-input
3
+ * https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#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
+ var debounce = function debounce(func, delay) {
11
+ if (delay === void 0) {
12
+ delay = 150;
13
+ }
14
+
15
+ var timer = 0;
16
+
17
+ var cancel = function cancel() {
18
+ if (timer) {
19
+ window.clearTimeout(timer);
20
+ timer = 0;
21
+ }
22
+ };
23
+
24
+ var debounceFn = function debounceFn() {
25
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
26
+ args[_key] = arguments[_key];
27
+ }
28
+
29
+ if (timer) {
30
+ cancel();
31
+ }
32
+
33
+ if (func) {
34
+ timer = window.setTimeout(function () {
35
+ func.apply(null, args);
36
+ timer = 0;
37
+ }, delay);
38
+ }
39
+ };
40
+
41
+ debounceFn.cancel = cancel;
42
+ return debounceFn;
43
+ };
44
+
45
+ export { debounce };
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/utils/index.ts"],"sourcesContent":[null],"names":["debounce","func","delay","timer","cancel","window","clearTimeout","debounceFn","args","setTimeout","apply"],"mappings":";;;;;;;;;IAAaA,QAAQ,GAAG,SAAXA,QAAW,CAAqCC,IAArC,EAA+CC,KAA/C;MAA+CA;AAAAA,IAAAA,QAAQ,GAARA;;;MACjEC,KAAK,GAAG;;MAENC,MAAM,GAAG,SAATA,MAAS;QACTD,OAAO;AACTE,MAAAA,MAAM,CAACC,YAAPD,CAAoBF,KAApBE;AACAF,MAAAA,KAAK,GAAG,CAARA;;AAHJ;;MAOMI,UAAU,GAAG,SAAbA,UAAa;sCAAIC;AAAAA,MAAAA,UAAAA,kBAAAA;;;QACjBL,OAAO;AACTC,MAAAA,MAAM;;;QAGJH,MAAM;AACRE,MAAAA,KAAK,GAAGE,MAAM,CAACI,UAAPJ,CAAkB;AACxBJ,QAAAA,IAAI,CAACS,KAALT,CAAW,IAAXA,EAAiBO,IAAjBP;AACAE,QAAAA,KAAK,GAAG,CAARA;AAFM,OAAAE,EAGLH,KAHKG,CAARF;;AANJ;;AAaAI,EAAAA,UAAU,CAACH,MAAXG,GAAoBH,MAApBG;SAEOA;;;"}
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import { TagInputOption } from './types';
3
+ import { HiBaseHTMLProps } from '@hi-ui/core';
4
+ /**
5
+ * TODO: What is TagInput
6
+ */
7
+ export declare const TagInput: React.ForwardRefExoticComponent<Pick<TagInputProps, string | number> & React.RefAttributes<HTMLDivElement | null>>;
8
+ export interface TagInputProps extends HiBaseHTMLProps {
9
+ /**
10
+ * 设置当前多选值
11
+ */
12
+ value?: React.ReactText[];
13
+ /**
14
+ * 设置当前多选值默认值
15
+ */
16
+ defaultValue?: React.ReactText[];
17
+ /**
18
+ * 多选值改变时的回调
19
+ */
20
+ onChange?: (values: React.ReactText[]) => void;
21
+ /**
22
+ * 是否可清空 boolean true | false true
23
+ */
24
+ clearable?: boolean;
25
+ /**
26
+ * 是否禁止使用 boolean true | false false
27
+ */
28
+ disabled?: boolean;
29
+ /**
30
+ * 自定义选择后触发器所展示的内容
31
+ */
32
+ displayRender?: (checkedOption: TagInputOption) => React.ReactNode;
33
+ /**
34
+ * 输入框占位符
35
+ */
36
+ placeholder?: string;
37
+ /**
38
+ * 是否开启换行全展示
39
+ */
40
+ wrap?: boolean;
41
+ /**
42
+ * 输入框后置内容
43
+ */
44
+ suffix?: React.ReactNode;
45
+ /**
46
+ * tag 列表数据源
47
+ */
48
+ data?: TagInputOption[];
49
+ }
@@ -0,0 +1,3 @@
1
+ import './styles/index.scss';
2
+ export * from './TagInput';
3
+ export { TagInput as default } from './TagInput';
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface TagInputOption {
3
+ id: React.ReactText;
4
+ title?: React.ReactNode;
5
+ disabled?: boolean;
6
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const useTagInput: <T>(tags: T[], ref: React.MutableRefObject<HTMLDivElement | null>) => readonly [number | undefined];
3
+ export declare const useResizeWidth: <T extends Element>(ref: React.MutableRefObject<T | null>) => number;
@@ -0,0 +1,3 @@
1
+ export declare const debounce: <T extends (...args: any[]) => void>(func?: T | undefined, delay?: number) => T & {
2
+ cancel: () => void;
3
+ };
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@hi-ui/tag-input",
3
+ "version": "4.0.0-alpha.1",
4
+ "description": "A sub-package for @hi-ui/hiui.",
5
+ "keywords": [],
6
+ "author": "HIUI <mi-hiui@xiaomi.com>",
7
+ "homepage": "https://github.com/XiaoMi/hiui/tree/master/packages/ui/tag-input#readme",
8
+ "license": "MIT",
9
+ "directories": {
10
+ "lib": "lib",
11
+ "test": "__tests__"
12
+ },
13
+ "files": [
14
+ "lib"
15
+ ],
16
+ "main": "lib/cjs/index.js",
17
+ "module": "lib/esm/index.js",
18
+ "types": "lib/types/index.d.ts",
19
+ "typings": "lib/types/index.d.ts",
20
+ "exports": {
21
+ ".": {
22
+ "require": "./lib/cjs/index.js",
23
+ "default": "./lib/esm/index.js"
24
+ }
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/XiaoMi/hiui.git"
32
+ },
33
+ "scripts": {
34
+ "test": "jest",
35
+ "clean": "rimraf lib",
36
+ "prebuild": "yarn clean",
37
+ "build:esm": "hi-build ./src/index.ts --format esm -d ./lib/esm",
38
+ "build:cjs": "hi-build ./src/index.ts --format cjs -d ./lib/cjs",
39
+ "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir lib/types",
40
+ "build": "concurrently yarn:build:*"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/XiaoMi/hiui/issues"
44
+ },
45
+ "dependencies": {
46
+ "@hi-ui/classname": "^4.0.0-alpha.0",
47
+ "@hi-ui/core": "^4.0.0-alpha.2",
48
+ "@hi-ui/core-css": "^4.0.0-alpha.0",
49
+ "@hi-ui/env": "^4.0.0-alpha.0",
50
+ "@hi-ui/icons": "^4.0.0-alpha.8",
51
+ "@hi-ui/use-merge-refs": "^4.0.0-alpha.2",
52
+ "@hi-ui/use-outside-click": "^4.0.0-alpha.4",
53
+ "@hi-ui/use-uncontrolled-state": "^4.0.0-alpha.5"
54
+ },
55
+ "peerDependencies": {
56
+ "react": "^17.0.1",
57
+ "react-dom": "^17.0.1"
58
+ },
59
+ "devDependencies": {
60
+ "@hi-ui/hi-build": "^4.0.0-alpha.0",
61
+ "react": "^17.0.1",
62
+ "react-dom": "^17.0.1"
63
+ },
64
+ "gitHead": "0e89a6d183d2f2c5901a9c2bb7f88b30d5e2b193"
65
+ }