@qsxy/element-plus-react 1.0.1 → 1.0.2

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.
Files changed (66) hide show
  1. package/dist/Calendar/Calendar.js +12 -3
  2. package/dist/Calendar/Footer.js +4 -2
  3. package/dist/Calendar/QuarterPanel.d.ts +4 -0
  4. package/dist/Calendar/QuarterPanel.js +109 -0
  5. package/dist/Calendar/WeekPanel.js +1 -1
  6. package/dist/Calendar/typings.d.ts +1 -1
  7. package/dist/Card/Card.js +9 -4
  8. package/dist/Card/typings.d.ts +1 -1
  9. package/dist/Cascader/Cascader.js +1 -1
  10. package/dist/DatePicker/DatePicker.js +38 -12
  11. package/dist/DatePicker/DateRangePicker.js +27 -9
  12. package/dist/DatePicker/main.js +1 -1
  13. package/dist/DatePicker/typings.d.ts +1 -1
  14. package/dist/DateTimePicker/DateTimePicker.js +2 -2
  15. package/dist/Input/Input.1.d.ts +16 -0
  16. package/dist/Input/Input.1.js +376 -0
  17. package/dist/Input/Input.js +137 -121
  18. package/dist/Input/InputRange.js +1 -1
  19. package/dist/Input/TextArea.js +87 -12
  20. package/dist/Input/typings.d.ts +15 -5
  21. package/dist/Input/useComposition.d.ts +23 -0
  22. package/dist/Input/useComposition.js +63 -0
  23. package/dist/Input/utils.d.ts +6 -0
  24. package/dist/Input/utils.js +91 -0
  25. package/dist/InputNumber/InputNumber.js +1 -1
  26. package/dist/InputNumber/typings.d.ts +1 -1
  27. package/dist/Select/Option.js +30 -14
  28. package/dist/Select/SelectContext.d.ts +3 -4
  29. package/dist/Select/SelectCore.d.ts +2 -2
  30. package/dist/Select/SelectCore.js +164 -447
  31. package/dist/Select/SelectDropdown.js +67 -145
  32. package/dist/Select/typings.d.ts +47 -21
  33. package/dist/Select/useSelect.d.ts +125 -0
  34. package/dist/Select/useSelect.js +516 -0
  35. package/dist/Table/util.js +6 -5
  36. package/dist/Tag/Tag.js +22 -17
  37. package/dist/TimePicker/TimePicker.js +2 -2
  38. package/dist/TreeSelect/TreeSelect.js +2 -2
  39. package/dist/Util/aria.d.ts +25 -0
  40. package/dist/Util/aria.js +118 -0
  41. package/dist/hooks/useCalcInputWidth.d.ts +8 -0
  42. package/dist/hooks/useCalcInputWidth.js +30 -0
  43. package/dist/hooks/useComposition.d.ts +16 -0
  44. package/dist/hooks/useComposition.js +39 -0
  45. package/dist/hooks/useCursor.d.ts +2 -0
  46. package/dist/hooks/useCursor.js +52 -0
  47. package/dist/hooks/useFocusController.d.ts +27 -0
  48. package/dist/hooks/useFocusController.js +72 -0
  49. package/dist/index.css +1 -1
  50. package/dist/locale/en.d.ts +15 -0
  51. package/dist/locale/en.js +15 -0
  52. package/dist/locale/zhCn.d.ts +15 -0
  53. package/dist/locale/zhCn.js +15 -0
  54. package/package.json +1 -1
  55. package/theme-chalk/calendar/index.scss +1 -0
  56. package/theme-chalk/calendar/quarter-table.scss +78 -0
  57. package/theme-chalk/common/var.scss +1 -1
  58. package/theme-chalk/input/input.scss +424 -578
  59. package/theme-chalk/input/input.scss--bak +578 -0
  60. package/theme-chalk/select/index.scss +272 -247
  61. package/theme-chalk/select/index.scss--bak +247 -0
  62. package/theme-chalk/select/option-group.scss +2 -2
  63. package/theme-chalk/select/option.scss +2 -2
  64. package/theme-chalk/select/select-dropdown.scss +2 -2
  65. package/theme-chalk/tag.scss +181 -203
  66. package/theme-chalk/tag.scss--bak +203 -0
@@ -0,0 +1,516 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _excluded = ["filterable", "clearable", "clearIcon", "multiple", "onChange", "allowCreate", "onEnter", "afterLeave", "onVisibleChange", "onRemoveTag", "onClear", "labelFormat", "remote", "remoteShowSuffix", "suffixIcon"];
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
11
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
12
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
19
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
20
+ import ensureArray from 'lodash/castArray';
21
+ import filter from 'lodash/filter';
22
+ import max from 'lodash/max';
23
+ import min from 'lodash/min';
24
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
25
+ import { useTranslation } from 'react-i18next';
26
+ import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext";
27
+ import { isEmpty, isNotEmpty, isUndefined, mergeDefaultProps } from "../Util";
28
+ import { partitionAnimationProps, partitionHTMLProps, partitionPopperPropsUtils, useChildrenInstance, useClassNames, useControlled, useDisabled, useSize } from "../hooks";
29
+ import { useComposition } from "../hooks/useComposition";
30
+ var useSelect = function useSelect(props) {
31
+ var _useConfigProvider = useConfigProvider(),
32
+ locale = _useConfigProvider.locale;
33
+ var _useTranslation = useTranslation(),
34
+ t = _useTranslation.t;
35
+ props = mergeDefaultProps({
36
+ placeholder: t('el.select.placeholder', {
37
+ lng: locale
38
+ }),
39
+ noDataText: t('el.select.noData', {
40
+ lng: locale
41
+ }),
42
+ noMatchText: t('el.select.noMatch', {
43
+ lng: locale
44
+ }),
45
+ loadingText: t('el.select.loading', {
46
+ lng: locale
47
+ }),
48
+ showArrow: true,
49
+ clearable: false,
50
+ filterable: false,
51
+ error: false,
52
+ required: false,
53
+ disabled: false,
54
+ maxWidth: 500,
55
+ collapseTagsTooltip: true,
56
+ maxCollapseTags: 1,
57
+ tagType: 'info',
58
+ tagEffect: 'light',
59
+ suffixIcon: 'angle-down',
60
+ clearIcon: 'circle-xmark'
61
+ }, props);
62
+ var nsSelect = useClassNames('select');
63
+ var be = nsSelect.be,
64
+ is = nsSelect.is;
65
+ // 选择框容器div
66
+ var containerRef = useRef(null);
67
+ // 下拉选项容器div
68
+ var contentRef = useRef(null);
69
+ var popperInstRef = useRef(null);
70
+ var selectDropdownRef = useRef(null);
71
+ var tagTooltipRef = useRef(null);
72
+ var inputRef = useRef(null);
73
+ var wrapperRef = useRef(null);
74
+ var suffixWrapperRef = useRef(null);
75
+ // 输入框是否初始化
76
+ var initedRef = useRef(false);
77
+ var _props = props,
78
+ filterable = _props.filterable,
79
+ clearable = _props.clearable,
80
+ clearIcon = _props.clearIcon,
81
+ multiple = _props.multiple,
82
+ onChange = _props.onChange,
83
+ allowCreate = _props.allowCreate,
84
+ onEnter = _props.onEnter,
85
+ afterLeave = _props.afterLeave,
86
+ onVisibleChange = _props.onVisibleChange,
87
+ onRemoveTag = _props.onRemoveTag,
88
+ onClearProp = _props.onClear,
89
+ labelFormat = _props.labelFormat,
90
+ remote = _props.remote,
91
+ remoteShowSuffix = _props.remoteShowSuffix,
92
+ suffixIcon = _props.suffixIcon,
93
+ rest = _objectWithoutProperties(_props, _excluded);
94
+ var _partitionHTMLProps = partitionHTMLProps(rest),
95
+ _partitionHTMLProps2 = _slicedToArray(_partitionHTMLProps, 1),
96
+ htmlInputProps = _partitionHTMLProps2[0];
97
+ var _partitionAnimationPr = partitionAnimationProps(rest),
98
+ _partitionAnimationPr2 = _slicedToArray(_partitionAnimationPr, 1),
99
+ transitionProps = _partitionAnimationPr2[0];
100
+ var _partitionPopperProps = partitionPopperPropsUtils(rest),
101
+ _partitionPopperProps2 = _slicedToArray(_partitionPopperProps, 1),
102
+ popperProps = _partitionPopperProps2[0];
103
+ var _useControlled = useControlled(props.value, props.defaultValue),
104
+ _useControlled2 = _slicedToArray(_useControlled, 2),
105
+ value = _useControlled2[0],
106
+ setValue = _useControlled2[1];
107
+ var disabled = useDisabled(props.disabled);
108
+ var size = useSize(props.size);
109
+
110
+ // 单选框显示文本
111
+ var _useState = useState(null),
112
+ _useState2 = _slicedToArray(_useState, 2),
113
+ selected = _useState2[0],
114
+ setSelected = _useState2[1];
115
+ var _useState3 = useState(false),
116
+ _useState4 = _slicedToArray(_useState3, 2),
117
+ visible = _useState4[0],
118
+ setVisible = _useState4[1];
119
+ var _useState5 = useState({}),
120
+ _useState6 = _slicedToArray(_useState5, 2),
121
+ popperStyle = _useState6[0],
122
+ setPopperStyle = _useState6[1];
123
+ // 多选时input框高度
124
+ var _useState7 = useState(''),
125
+ _useState8 = _slicedToArray(_useState7, 2),
126
+ inputValue = _useState8[0],
127
+ setInputValue = _useState8[1];
128
+ var cachedOptions = useRef(new Map());
129
+
130
+ /** 获取所有的option组件 */
131
+ var getOptionInstance = useChildrenInstance('ElOption', 'ElOptionGroup');
132
+ var optionData = useMemo(function () {
133
+ if (props.children) {
134
+ var componentChildren = getOptionInstance(props.children);
135
+ return componentChildren.map(function (node) {
136
+ var _node$props$label, _node$props$label2, _node$props;
137
+ cachedOptions.current.set(node.props.value, {
138
+ value: node.props.value,
139
+ label: (_node$props$label = node.props.label) !== null && _node$props$label !== void 0 ? _node$props$label : node.props.value,
140
+ data: node.props.data
141
+ });
142
+ return {
143
+ label: (_node$props$label2 = (_node$props = node.props) === null || _node$props === void 0 ? void 0 : _node$props.label) !== null && _node$props$label2 !== void 0 ? _node$props$label2 : node.props.value,
144
+ value: node.props.value,
145
+ data: node.props.data
146
+ };
147
+ });
148
+ }
149
+ return [];
150
+ }, [getOptionInstance, props.children]);
151
+
152
+ // 多选框值
153
+ var multiValue = useMemo(function () {
154
+ if (multiple) {
155
+ if (value instanceof Array) {
156
+ return value;
157
+ } else if (typeof value === 'string') {
158
+ return [value];
159
+ }
160
+ }
161
+ return [];
162
+ }, [multiple, value]);
163
+ var multiOptionData = useMemo(function () {
164
+ if (multiple) {
165
+ return multiValue.map(function (item) {
166
+ return [].concat(_toConsumableArray(optionData), _toConsumableArray(Array.from(cachedOptions.current.values()))).find(function (op) {
167
+ return op.value === item;
168
+ });
169
+ }).filter(function (item) {
170
+ return isNotEmpty(item);
171
+ });
172
+ }
173
+ return [];
174
+ }, [multiValue, multiple, optionData]);
175
+ var label = useMemo(function () {
176
+ if (!multiple && selected && !Array.isArray(selected)) {
177
+ var _selected$label;
178
+ return ((_selected$label = selected.label) !== null && _selected$label !== void 0 ? _selected$label : selected.value) + '';
179
+ }
180
+ return '';
181
+ }, [multiple, selected]);
182
+
183
+ // 占位符
184
+ var placeholder = useMemo(function () {
185
+ var _placeholder = '';
186
+ if (multiple && isNotEmpty(multiValue) || isNotEmpty(inputValue)) {
187
+ _placeholder = '';
188
+ }
189
+ if (!allowCreate && filterable && isEmpty(inputValue)) {
190
+ _placeholder = t('el.select.search', {
191
+ lng: locale
192
+ });
193
+ }
194
+ if (!_placeholder) {
195
+ _placeholder = props.placeholder;
196
+ }
197
+ return multiple || isEmpty(label) ? _placeholder : label;
198
+ }, [allowCreate, filterable, inputValue, label, locale, multiValue, multiple, props.placeholder, t]);
199
+ var shouldShowPlaceholder = useMemo(function () {
200
+ if (multiple && !isUndefined(value)) {
201
+ return ensureArray(value).length === 0 && !inputValue;
202
+ }
203
+ var _value = Array.isArray(value) ? value[0] : value;
204
+ return filterable || isUndefined(_value) ? !inputValue : true;
205
+ }, [inputValue, filterable, multiple, value]);
206
+ var iconComponent = useMemo(function () {
207
+ return remote && filterable && !remoteShowSuffix ? null : suffixIcon;
208
+ }, [filterable, remote, remoteShowSuffix, suffixIcon]);
209
+ var iconReverse = useMemo(function () {
210
+ return is({
211
+ reverse: !!(iconComponent && visible)
212
+ });
213
+ }, [iconComponent, is, visible]);
214
+
215
+ // const validateState = useMemo(() => formItem?.validateState || '');
216
+ // const validateIcon = useMemo(() => validateState.value && (ValidateComponentsMap[validateState.value] as Component));
217
+
218
+ // const multiLabel = useMemo(() => {
219
+ // if (multiple) {
220
+ // return multiValue.map(item => find(optionData, { value: item })?.label ?? item);
221
+ // }
222
+ // return [];
223
+ // }, [multiValue, multiple, optionData]);
224
+
225
+ var showClearBtn = useCallback(function (show) {
226
+ if (show && clearable && !disabled && isNotEmpty(value)) {
227
+ var _suffixWrapperRef$cur, _suffixWrapperRef$cur2;
228
+ (_suffixWrapperRef$cur = suffixWrapperRef.current) === null || _suffixWrapperRef$cur === void 0 || _suffixWrapperRef$cur.classList.add(nsSelect.is('hidden-arrow'));
229
+ (_suffixWrapperRef$cur2 = suffixWrapperRef.current) === null || _suffixWrapperRef$cur2 === void 0 || _suffixWrapperRef$cur2.classList.remove(nsSelect.is('hidden-clear'));
230
+ } else {
231
+ var _suffixWrapperRef$cur3, _suffixWrapperRef$cur4;
232
+ (_suffixWrapperRef$cur3 = suffixWrapperRef.current) === null || _suffixWrapperRef$cur3 === void 0 || _suffixWrapperRef$cur3.classList.remove(nsSelect.is('hidden-arrow'));
233
+ (_suffixWrapperRef$cur4 = suffixWrapperRef.current) === null || _suffixWrapperRef$cur4 === void 0 || _suffixWrapperRef$cur4.classList.add(nsSelect.is('hidden-clear'));
234
+ }
235
+ }, [clearable, disabled, nsSelect, value]);
236
+ var setInputHovering = useCallback(function (hovering) {
237
+ if (!disabled) {
238
+ if (wrapperRef.current) {
239
+ if (hovering) {
240
+ wrapperRef.current.classList.add(nsSelect.is('hovering'));
241
+ showClearBtn(true);
242
+ } else {
243
+ wrapperRef.current.classList.remove(nsSelect.is('hovering'));
244
+ if (wrapperRef.current.classList.contains(nsSelect.is('focused'))) {
245
+ showClearBtn(true);
246
+ } else {
247
+ showClearBtn(false);
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }, [disabled, nsSelect, showClearBtn]);
253
+ var setIsFocused = useCallback(function (focused) {
254
+ if (wrapperRef.current) {
255
+ if (focused) {
256
+ wrapperRef.current.classList.add(nsSelect.is('focused'));
257
+ showClearBtn(true);
258
+ } else {
259
+ wrapperRef.current.classList.remove(nsSelect.is('focused'));
260
+ if (wrapperRef.current.classList.contains(nsSelect.is('hovering'))) {
261
+ showClearBtn(true);
262
+ } else {
263
+ showClearBtn(false);
264
+ }
265
+ }
266
+ }
267
+ }, [nsSelect, showClearBtn]);
268
+ var _useComposition = useComposition({
269
+ afterComposition: function afterComposition(event) {
270
+ setInputValue(event.target.value);
271
+ }
272
+ }),
273
+ isComposing = _useComposition.isComposing,
274
+ handleCompositionStart = _useComposition.handleCompositionStart,
275
+ handleCompositionUpdate = _useComposition.handleCompositionUpdate,
276
+ handleCompositionEnd = _useComposition.handleCompositionEnd;
277
+
278
+ /** 动态计算下拉框宽度 */
279
+ var handleEnter = useCallback(function (node) {
280
+ if (visible && contentRef.current && containerRef.current) {
281
+ var _selectDropdownRef$cu;
282
+ var rect = containerRef.current.getBoundingClientRect();
283
+ // const { width } = contentRef.current.getBoundingClientRect();
284
+ var options = Array.from(contentRef.current.querySelectorAll(".".concat(be('dropdown', 'item'), ">span")));
285
+ var maxWidth = (options.length > 0 ? max(options.map(function (item) {
286
+ var _item$offsetWidth;
287
+ return (_item$offsetWidth = item === null || item === void 0 ? void 0 : item.offsetWidth) !== null && _item$offsetWidth !== void 0 ? _item$offsetWidth : 0;
288
+ })) : 0) + 60;
289
+ if (maxWidth && maxWidth < rect.width) {
290
+ setPopperStyle(_objectSpread(_objectSpread({}, popperStyle), {}, {
291
+ width: rect.width
292
+ }));
293
+ } else {
294
+ setPopperStyle(_objectSpread(_objectSpread({}, popperStyle), {}, {
295
+ width: min([maxWidth, props.maxWidth])
296
+ }));
297
+ }
298
+ (_selectDropdownRef$cu = selectDropdownRef.current) === null || _selectDropdownRef$cu === void 0 || _selectDropdownRef$cu.scrollToSelected();
299
+ onEnter === null || onEnter === void 0 || onEnter(node);
300
+ }
301
+ }, [be, onEnter, popperStyle, props.maxWidth, visible]);
302
+
303
+ /** 关闭下拉框后清空搜索项 */
304
+ var handleAfterLeave = useCallback(function (node) {
305
+ var _selectDropdownRef$cu2;
306
+ (_selectDropdownRef$cu2 = selectDropdownRef.current) === null || _selectDropdownRef$cu2 === void 0 || _selectDropdownRef$cu2.clear();
307
+ afterLeave === null || afterLeave === void 0 || afterLeave(node);
308
+ }, [afterLeave]);
309
+
310
+ /**
311
+ * 展开/关闭下拉框
312
+ * @param e
313
+ * @returns
314
+ */
315
+ var toggleMenu = useCallback(function (event) {
316
+ event.preventDefault();
317
+ event === null || event === void 0 || event.stopPropagation();
318
+ if (disabled) {
319
+ setVisible(false);
320
+ return;
321
+ }
322
+ setVisible(!visible);
323
+ setIsFocused(!visible);
324
+ }, [disabled, setIsFocused, visible]);
325
+
326
+ /** 取消多选项 */
327
+ var onCloseTag = useCallback(function (event, item) {
328
+ event.stopPropagation();
329
+ var res = multiValue.filter(function (val) {
330
+ return val !== item.value;
331
+ });
332
+ setValue(res);
333
+ onChange === null || onChange === void 0 || onChange(res, multiOptionData.filter(function (val) {
334
+ return val.value !== item.value;
335
+ }));
336
+ onRemoveTag === null || onRemoveTag === void 0 || onRemoveTag(item);
337
+ setTimeout(function () {
338
+ if (tagTooltipRef.current) {
339
+ tagTooltipRef.current.updatePopper();
340
+ }
341
+ }, 50);
342
+ }, [multiOptionData, multiValue, onChange, onRemoveTag, setValue]);
343
+
344
+ /** 重置值 */
345
+ var onClear = useCallback(function (event) {
346
+ var _selectDropdownRef$cu3;
347
+ event.stopPropagation();
348
+ event.preventDefault();
349
+ setValue(multiple ? [] : '');
350
+ setSelected(null);
351
+ (_selectDropdownRef$cu3 = selectDropdownRef.current) === null || _selectDropdownRef$cu3 === void 0 || _selectDropdownRef$cu3.hover('');
352
+ onChange === null || onChange === void 0 || onChange(multiple ? [] : '');
353
+ onClearProp === null || onClearProp === void 0 || onClearProp();
354
+ setInputValue('');
355
+ showClearBtn(false);
356
+ setVisible(false);
357
+ }, [multiple, onChange, onClearProp, setValue, showClearBtn]);
358
+
359
+ /** 选中项回调 */
360
+ var onChoose = useCallback(function (val, data, event) {
361
+ event.preventDefault();
362
+ if (isNotEmpty(val)) {
363
+ var result = val;
364
+ var multiData = [];
365
+ if (multiple) {
366
+ if (multiValue.includes(val)) {
367
+ result = filter(multiValue, function (item) {
368
+ return item !== val;
369
+ });
370
+ multiData = multiOptionData.filter(function (item) {
371
+ return item.value !== val;
372
+ });
373
+ } else {
374
+ result = [].concat(_toConsumableArray(multiValue), [val]);
375
+ multiData = [].concat(_toConsumableArray(multiOptionData), [data]);
376
+ }
377
+ setSelected(multiData);
378
+ } else {
379
+ setSelected(data);
380
+ }
381
+ if (allowCreate && isNotEmpty(inputValue)) {
382
+ var _inputRef$current;
383
+ setInputValue('');
384
+ cachedOptions.current.set(inputValue, {
385
+ value: inputValue,
386
+ label: inputValue,
387
+ data: {
388
+ value: inputValue,
389
+ label: inputValue
390
+ }
391
+ });
392
+ setIsFocused(false);
393
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.blur();
394
+ }
395
+ setValue(result);
396
+ onChange === null || onChange === void 0 || onChange(result, multiple ? multiData : data);
397
+ !multiple && toggleMenu(event);
398
+ } else {
399
+ setVisible(false);
400
+ }
401
+ if (!multiValue) {
402
+ setInputValue('');
403
+ }
404
+ }, [multiValue, multiple, allowCreate, inputValue, setValue, onChange, toggleMenu, multiOptionData, setIsFocused]);
405
+
406
+ /** 监听加载状态,加载中时自动打开下拉 */
407
+ // useEffect(() => {
408
+ // setVisible(props.loading);
409
+ // popperInstRef.current?.update();
410
+ // }, [props.loading]);
411
+
412
+ // 打开后搜索框自动获取焦点
413
+ useEffect(function () {
414
+ onVisibleChange === null || onVisibleChange === void 0 || onVisibleChange(visible);
415
+ // eslint-disable-next-line react-hooks/exhaustive-deps
416
+ }, [visible]);
417
+
418
+ /** 搜索时 */
419
+ useEffect(function () {
420
+ if (popperInstRef.current && popperInstRef.current.update) {
421
+ var _popperInstRef$curren;
422
+ (_popperInstRef$curren = popperInstRef.current) === null || _popperInstRef$curren === void 0 || _popperInstRef$curren.update();
423
+ }
424
+ }, [popperStyle]);
425
+
426
+ /** 多选框选择选项后,动态调整input框高度 */
427
+ useEffect(function () {
428
+ setTimeout(function () {
429
+ if (popperInstRef.current && popperInstRef.current.update) {
430
+ var _popperInstRef$curren2;
431
+ (_popperInstRef$curren2 = popperInstRef.current) === null || _popperInstRef$curren2 === void 0 || _popperInstRef$curren2.update();
432
+ }
433
+ }, 50);
434
+ }, [multiValue]);
435
+
436
+ /** 初次加载时反显选中文本 */
437
+ useEffect(function () {
438
+ if (initedRef.current) {
439
+ return;
440
+ }
441
+ if (multiple && Array.isArray(value)) {
442
+ setSelected(multiOptionData.filter(function (item) {
443
+ return value.includes(item.value);
444
+ }));
445
+ initedRef.current = true;
446
+ } else {
447
+ if (isNotEmpty(value)) {
448
+ var data = optionData.find(function (item) {
449
+ return item.value === value;
450
+ });
451
+ setSelected(data);
452
+ initedRef.current = true;
453
+ } else {
454
+ setSelected(null);
455
+ initedRef.current = true;
456
+ }
457
+ }
458
+ }, [value]);
459
+ return _objectSpread(_objectSpread({}, rest), {}, {
460
+ nsSelect: nsSelect,
461
+ containerRef: containerRef,
462
+ contentRef: contentRef,
463
+ wrapperRef: wrapperRef,
464
+ popperInstRef: popperInstRef,
465
+ selectDropdownRef: selectDropdownRef,
466
+ tagTooltipRef: tagTooltipRef,
467
+ inputRef: inputRef,
468
+ suffixWrapperRef: suffixWrapperRef,
469
+ inputValue: inputValue,
470
+ setInputHovering: setInputHovering,
471
+ setInputValue: setInputValue,
472
+ setIsFocused: setIsFocused,
473
+ filterable: filterable,
474
+ clearable: clearable,
475
+ clearIcon: clearIcon,
476
+ multiple: multiple,
477
+ onChange: onChange,
478
+ allowCreate: allowCreate,
479
+ onEnter: onEnter,
480
+ afterLeave: afterLeave,
481
+ onVisibleChange: onVisibleChange,
482
+ onRemoveTag: onRemoveTag,
483
+ htmlInputProps: htmlInputProps,
484
+ transitionProps: transitionProps,
485
+ popperProps: popperProps,
486
+ value: value,
487
+ setValue: setValue,
488
+ disabled: disabled,
489
+ size: size,
490
+ optionData: optionData,
491
+ multiValue: multiValue,
492
+ multiOptionData: multiOptionData,
493
+ selected: selected,
494
+ label: label,
495
+ visible: visible,
496
+ setVisible: setVisible,
497
+ popperStyle: popperStyle,
498
+ placeholder: placeholder,
499
+ shouldShowPlaceholder: shouldShowPlaceholder,
500
+ handleEnter: handleEnter,
501
+ handleAfterLeave: handleAfterLeave,
502
+ toggleMenu: toggleMenu,
503
+ onCloseTag: onCloseTag,
504
+ onClear: onClear,
505
+ onChoose: onChoose,
506
+ labelFormat: labelFormat,
507
+ iconComponent: iconComponent,
508
+ iconReverse: iconReverse,
509
+ isComposing: isComposing,
510
+ remote: remote,
511
+ handleCompositionStart: handleCompositionStart,
512
+ handleCompositionUpdate: handleCompositionUpdate,
513
+ handleCompositionEnd: handleCompositionEnd
514
+ });
515
+ };
516
+ export default useSelect;
@@ -117,7 +117,7 @@ export function createTablePopper(parentNode, trigger, popperContent, tooltipRef
117
117
  placement: 'top',
118
118
  // @ts-ignore
119
119
  ref: tooltipRef,
120
- hideAfter: 20
120
+ hideAfter: 200
121
121
  });
122
122
  root.render(vm);
123
123
  } else {
@@ -151,10 +151,11 @@ export function createTablePopper(parentNode, trigger, popperContent, tooltipRef
151
151
  // ...popperOptions,
152
152
  // });
153
153
  // trigger.addEventListener('mouseenter', showPopper);
154
- trigger.addEventListener('mouseleave', function () {
155
- var _tooltipRef$current3;
156
- (_tooltipRef$current3 = tooltipRef.current) === null || _tooltipRef$current3 === void 0 || _tooltipRef$current3.hide();
157
- });
154
+ // trigger.addEventListener('mouseleave', () => {
155
+ // setTimeout(() => {
156
+ // tooltipRef.current?.hide();
157
+ // }, 200);
158
+ // });
158
159
  scrollContainer === null || scrollContainer === void 0 || scrollContainer.addEventListener('scroll', _removePopper2);
159
160
  }
160
161
  export var getRowIdentity = function getRowIdentity(row, rowKey) {
package/dist/Tag/Tag.js CHANGED
@@ -18,24 +18,27 @@ import { useComposeRef } from 'rc-util/lib/ref';
18
18
  import React, { forwardRef, memo, useCallback, useRef } from 'react';
19
19
  import Icon from "../Icon/Icon";
20
20
  import Transition from "../Transition/Transition";
21
- import { partitionHTMLProps, useClassNames } from "../hooks";
21
+ import { mergeDefaultProps } from "../Util";
22
+ import { partitionHTMLProps, useClassNames, useSize } from "../hooks";
22
23
  var Tag = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref) {
23
- var _props$type = props.type,
24
- type = _props$type === void 0 ? 'primary' : _props$type,
25
- closable = props.closable,
26
- size = props.size,
27
- color = props.color,
28
- _props$effect = props.effect,
29
- theme = _props$effect === void 0 ? 'light' : _props$effect,
30
- round = props.round,
31
- hit = props.hit,
32
- _props$classPrefix = props.classPrefix,
24
+ props = mergeDefaultProps({
25
+ type: 'primary',
26
+ effect: 'light'
27
+ }, props);
28
+ var _props = props,
29
+ type = _props.type,
30
+ closable = _props.closable,
31
+ color = _props.color,
32
+ effect = _props.effect,
33
+ round = _props.round,
34
+ hit = _props.hit,
35
+ _props$classPrefix = _props.classPrefix,
33
36
  classPrefix = _props$classPrefix === void 0 ? 'tag' : _props$classPrefix,
34
- className = props.className,
35
- style = props.style,
36
- onClick = props.onClick,
37
- onClose = props.onClose,
38
- disableTransitions = props.disableTransitions;
37
+ className = _props.className,
38
+ style = _props.style,
39
+ onClick = _props.onClick,
40
+ onClose = _props.onClose,
41
+ disableTransitions = _props.disableTransitions;
39
42
  var _useClassNames = useClassNames(classPrefix),
40
43
  b = _useClassNames.b,
41
44
  m = _useClassNames.m,
@@ -46,6 +49,7 @@ var Tag = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref) {
46
49
  }),
47
50
  _partitionHTMLProps2 = _slicedToArray(_partitionHTMLProps, 1),
48
51
  tooltipEvents = _partitionHTMLProps2[0];
52
+ var size = useSize(props.size);
49
53
  var containerRef = useRef(null);
50
54
  var mergedRef = useComposeRef(ref, containerRef);
51
55
  var onClickTag = useCallback(function (event) {
@@ -66,7 +70,8 @@ var Tag = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref) {
66
70
  duration: 200
67
71
  }, /*#__PURE__*/React.createElement("span", _extends({
68
72
  ref: mergedRef,
69
- className: classNames(b(), m(type, theme, _defineProperty({}, size, size)), is({
73
+ className: classNames(b(), m(type, effect, _defineProperty({}, size, size)), is({
74
+ closable: closable,
70
75
  round: round,
71
76
  hit: hit
72
77
  }), className),
@@ -229,14 +229,14 @@ var TimePicker = /*#__PURE__*/forwardRef(function (props, ref) {
229
229
  setValue('');
230
230
  }, 500);
231
231
  },
232
- className: classNames(_defineProperty(_defineProperty({}, "".concat(namespace, "-date"), readonly), 'is-active', visible)),
232
+ className: classNames(_defineProperty(_defineProperty({}, "".concat(namespace, "-date"), readonly), 'is-focus', visible)),
233
233
  style: props.style,
234
234
  error: error,
235
235
  warning: warning,
236
236
  append: append,
237
237
  prepend: prepend,
238
238
  ref: inputRef
239
- }, omit(htmlInputProps, ['style', 'prefix', 'readOnly', 'size', 'onClick', 'onInput', 'onChange', 'disabled', 'className', 'type', 'maxLength', 'minLength', 'name']))), /*#__PURE__*/React.createElement(Popper, _extends({
239
+ }, omit(htmlInputProps, ['value', 'defaultValue', 'style', 'prefix', 'readOnly', 'size', 'onClick', 'onInput', 'onChange', 'disabled', 'className', 'type', 'maxLength', 'minLength', 'name']))), /*#__PURE__*/React.createElement(Popper, _extends({
240
240
  visible: visible,
241
241
  referenceElement: function referenceElement() {
242
242
  var _inputRef$current;
@@ -466,7 +466,7 @@ function InternalTreeSelect(props, ref) {
466
466
  onClear: onClear,
467
467
  plain: props.plain,
468
468
  className: is({
469
- active: visible
469
+ focus: visible
470
470
  }),
471
471
  error: error,
472
472
  warning: warning,
@@ -480,7 +480,7 @@ function InternalTreeSelect(props, ref) {
480
480
  onClick: onClick
481
481
  }),
482
482
  ref: inputInstance
483
- }, omit(htmlInputProps, ['onInput', 'disabled', 'size', 'prefix', 'onChange', 'style'])))), /*#__PURE__*/React.createElement(Popper, _extends({
483
+ }, omit(htmlInputProps, ['value', 'defaultValue', 'onInput', 'disabled', 'size', 'prefix', 'onChange', 'style'])))), /*#__PURE__*/React.createElement(Popper, _extends({
484
484
  referenceElement: append || prepend ? groupRef : containerRef,
485
485
  visible: visible,
486
486
  popperStyle: popperStyle,
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Determine if the testing element is visible on screen no matter if its on the viewport or not
3
+ */
4
+ export declare const isVisible: (element: HTMLElement) => boolean;
5
+ export declare const obtainAllFocusableElements: (element: HTMLElement) => HTMLElement[];
6
+ /**
7
+ * @desc Determine if target element is focusable
8
+ * @param element {HTMLElement}
9
+ * @returns {Boolean} true if it is focusable
10
+ */
11
+ export declare const isFocusable: (element: HTMLElement) => boolean;
12
+ /**
13
+ * Trigger an event
14
+ * mouseenter, mouseleave, mouseover, keyup, change, click, etc.
15
+ * @param {HTMLElement} elm
16
+ * @param {String} name
17
+ * @param {*} opts
18
+ */
19
+ export declare const triggerEvent: (elm: HTMLElement, name: string, ...opts: Array<boolean>) => HTMLElement;
20
+ export declare const isLeaf: (el: HTMLElement) => boolean;
21
+ export declare const getSibling: (el: HTMLElement, distance: number, elClass: string) => Element;
22
+ export declare const focusElement: (el?: HTMLElement | {
23
+ focus: () => void;
24
+ } | null, options?: FocusOptions) => void;
25
+ export declare const focusNode: (el: HTMLElement) => void;