@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,63 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { useRef, useState } from 'react';
8
+ /**
9
+ * Handle input text like Chinese
10
+ * chrome: compositionstart -> onChange -> compositionend
11
+ * other browser: compositionstart -> compositionend -> onChange
12
+ */
13
+ export function useComposition(_ref) {
14
+ var value = _ref.value,
15
+ maxLength = _ref.maxLength,
16
+ onChange = _ref.onChange,
17
+ onKeyDown = _ref.onKeyDown,
18
+ onPressEnter = _ref.onPressEnter;
19
+ var refIsComposition = useRef(false);
20
+ var _useState = useState(''),
21
+ _useState2 = _slicedToArray(_useState, 2),
22
+ compositionValue = _useState2[0],
23
+ setCompositionValue = _useState2[1];
24
+ var triggerValueChange = function triggerValueChange(newValue, e) {
25
+ if (onChange &&
26
+ // Prevents onchange from being triggered twice
27
+ newValue !== value && (maxLength === undefined || newValue.length <= maxLength)) {
28
+ onChange(newValue, e);
29
+ }
30
+ };
31
+ return {
32
+ compositionValue: compositionValue,
33
+ triggerValueChange: triggerValueChange,
34
+ handleCompositionStart: function handleCompositionStart() {
35
+ refIsComposition.current = true;
36
+ },
37
+ handleCompositionEnd: function handleCompositionEnd(e) {
38
+ setCompositionValue(undefined);
39
+ triggerValueChange(e.target.value, e);
40
+ },
41
+ handleValueChange: function handleValueChange(e) {
42
+ var newValue = e.target.value;
43
+ if (!refIsComposition.current) {
44
+ // if e.type is compositionend event, the following content will trigger
45
+ compositionValue && setCompositionValue(undefined);
46
+ triggerValueChange(newValue, e);
47
+ } else {
48
+ refIsComposition.current = false;
49
+ setCompositionValue(newValue);
50
+ }
51
+ },
52
+ handleKeyDown: function handleKeyDown(e) {
53
+ var keyCode = e.key;
54
+ if (!refIsComposition.current) {
55
+ onKeyDown === null || onKeyDown === void 0 || onKeyDown(e);
56
+ if (keyCode === 'Enter') {
57
+ onPressEnter === null || onPressEnter === void 0 || onPressEnter(e);
58
+ // normalizeHandler && triggerValueChange(normalizeHandler('onPressEnter')(e.target.value), e);
59
+ }
60
+ }
61
+ }
62
+ };
63
+ }
@@ -0,0 +1,6 @@
1
+ type TextAreaHeight = {
2
+ height: string;
3
+ minHeight?: string;
4
+ };
5
+ export declare function calcTextareaHeight(targetElement: HTMLTextAreaElement, minRows?: number, maxRows?: number): TextAreaHeight;
6
+ export {};
@@ -0,0 +1,91 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import { isNumber } from "../Util/base";
8
+ var hiddenTextarea = undefined;
9
+ var HIDDEN_STYLE = {
10
+ height: '0',
11
+ visibility: 'hidden',
12
+ overflow: /firefox/i.test(window.navigator.userAgent) ? '' : 'hidden',
13
+ position: 'absolute',
14
+ 'z-index': '-1000',
15
+ top: '0',
16
+ right: '0'
17
+ };
18
+ var CONTEXT_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing', 'word-break'];
19
+ function calculateNodeStyling(targetElement) {
20
+ var style = window.getComputedStyle(targetElement);
21
+ var boxSizing = style.getPropertyValue('box-sizing');
22
+ var paddingSize = Number.parseFloat(style.getPropertyValue('padding-bottom')) + Number.parseFloat(style.getPropertyValue('padding-top'));
23
+ var borderSize = Number.parseFloat(style.getPropertyValue('border-bottom-width')) + Number.parseFloat(style.getPropertyValue('border-top-width'));
24
+ var contextStyle = CONTEXT_STYLE.map(function (name) {
25
+ return [name, style.getPropertyValue(name)];
26
+ });
27
+ return {
28
+ contextStyle: contextStyle,
29
+ paddingSize: paddingSize,
30
+ borderSize: borderSize,
31
+ boxSizing: boxSizing
32
+ };
33
+ }
34
+ export function calcTextareaHeight(targetElement) {
35
+ var _hiddenTextarea$paren;
36
+ var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
37
+ var maxRows = arguments.length > 2 ? arguments[2] : undefined;
38
+ if (!hiddenTextarea) {
39
+ var _targetElement$parent;
40
+ hiddenTextarea = document.createElement('textarea');
41
+ ((_targetElement$parent = targetElement.parentNode) !== null && _targetElement$parent !== void 0 ? _targetElement$parent : document.body).appendChild(hiddenTextarea);
42
+ }
43
+ var _calculateNodeStyling = calculateNodeStyling(targetElement),
44
+ paddingSize = _calculateNodeStyling.paddingSize,
45
+ borderSize = _calculateNodeStyling.borderSize,
46
+ boxSizing = _calculateNodeStyling.boxSizing,
47
+ contextStyle = _calculateNodeStyling.contextStyle;
48
+ contextStyle.forEach(function (_ref) {
49
+ var _hiddenTextarea;
50
+ var _ref2 = _slicedToArray(_ref, 2),
51
+ key = _ref2[0],
52
+ value = _ref2[1];
53
+ return (_hiddenTextarea = hiddenTextarea) === null || _hiddenTextarea === void 0 ? void 0 : _hiddenTextarea.style.setProperty(key, value);
54
+ });
55
+ Object.entries(HIDDEN_STYLE).forEach(function (_ref3) {
56
+ var _hiddenTextarea2;
57
+ var _ref4 = _slicedToArray(_ref3, 2),
58
+ key = _ref4[0],
59
+ value = _ref4[1];
60
+ return (_hiddenTextarea2 = hiddenTextarea) === null || _hiddenTextarea2 === void 0 ? void 0 : _hiddenTextarea2.style.setProperty(key, value, 'important');
61
+ });
62
+ hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';
63
+ var height = hiddenTextarea.scrollHeight;
64
+ var result = {};
65
+ if (boxSizing === 'border-box') {
66
+ height = height + borderSize;
67
+ } else if (boxSizing === 'content-box') {
68
+ height = height - paddingSize;
69
+ }
70
+ hiddenTextarea.value = '';
71
+ var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;
72
+ if (isNumber(minRows)) {
73
+ var minHeight = singleRowHeight * minRows;
74
+ if (boxSizing === 'border-box') {
75
+ minHeight = minHeight + paddingSize + borderSize;
76
+ }
77
+ height = Math.max(minHeight, height);
78
+ result.minHeight = "".concat(minHeight, "px");
79
+ }
80
+ if (isNumber(maxRows)) {
81
+ var maxHeight = singleRowHeight * maxRows;
82
+ if (boxSizing === 'border-box') {
83
+ maxHeight = maxHeight + paddingSize + borderSize;
84
+ }
85
+ height = Math.min(maxHeight, height);
86
+ }
87
+ result.height = "".concat(height, "px");
88
+ (_hiddenTextarea$paren = hiddenTextarea.parentNode) === null || _hiddenTextarea$paren === void 0 || _hiddenTextarea$paren.removeChild(hiddenTextarea);
89
+ hiddenTextarea = undefined;
90
+ return result;
91
+ }
@@ -249,7 +249,7 @@ var InputNumber = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, re
249
249
  isCtrlKey.current = false;
250
250
  }, []),
251
251
  ref: inputRef
252
- }, omit(htmlInputProps, ['disabled', 'size', 'onInput', 'onKeyDown', 'onKeyUp', 'size', 'onChange', 'style', 'className', 'type', 'name', 'prefix', 'readOnly', 'maxLength', 'minLength']))));
252
+ }, omit(htmlInputProps, ['value', 'defaultValue', 'disabled', 'size', 'onInput', 'onKeyDown', 'onKeyUp', 'size', 'onChange', 'style', 'className', 'type', 'name', 'prefix', 'readOnly', 'maxLength', 'minLength']))));
253
253
  }));
254
254
  InputNumber.displayName = 'ElInputNumber';
255
255
  export default InputNumber;
@@ -3,7 +3,7 @@ import { InputRef } from '../Input/typings';
3
3
  import { BaseProps, FormControlBaseProps, NativeProps } from '../types/common';
4
4
  export type LiteralUnion<T extends U, U> = T | (U & {});
5
5
  export type ValueType = number | string;
6
- export interface InputNumberProps<V = ValueType> extends Omit<FormControlBaseProps<V>, 'onChange'>, BaseProps<HTMLDivElement>, NativeProps, Omit<React.AllHTMLAttributes<HTMLInputElement>, 'defaultValue' | 'size' | 'prefix' | 'type' | 'onInput' | 'onChange' | 'style' | 'value' | 'ref' | 'className' | 'readOnly' | 'disabled' | 'name' | 'children'> {
6
+ export interface InputNumberProps<V = ValueType> extends Omit<FormControlBaseProps<V>, 'onChange'>, BaseProps<HTMLDivElement>, NativeProps, Omit<React.AllHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'size' | 'prefix' | 'type' | 'onInput' | 'onChange' | 'style' | 'value' | 'ref' | 'className' | 'readOnly' | 'disabled' | 'name' | 'children'> {
7
7
  /** 设置计数器允许的最大值 */
8
8
  max?: number;
9
9
  /** 设置计数器允许的最小值 */
@@ -14,7 +14,9 @@ var Option = /*#__PURE__*/forwardRef(function (props, ref) {
14
14
  hoverValue = _useContext.hover,
15
15
  setHover = _useContext.setHover,
16
16
  multiple = _useContext.multiple;
17
- var label = props.label,
17
+ var value = props.value,
18
+ label = props.label,
19
+ data = props.data,
18
20
  disabled = props.disabled,
19
21
  onClick = props.onClick;
20
22
 
@@ -22,31 +24,45 @@ var Option = /*#__PURE__*/forwardRef(function (props, ref) {
22
24
  var handleOnClick = useCallback(function (event) {
23
25
  event.stopPropagation();
24
26
  if (!disabled) {
25
- onChoose(props.value, label || props.value + '', event);
26
- onClick === null || onClick === void 0 || onClick(props.value, label || props.value.toString(), event);
27
+ onChoose(value, {
28
+ value: value,
29
+ label: label,
30
+ data: data
31
+ }, event);
32
+ onClick === null || onClick === void 0 || onClick(value, {
33
+ value: value,
34
+ label: label,
35
+ data: data
36
+ });
27
37
  }
28
- }, [disabled, onChoose, props.value, label, onClick]);
38
+ }, [disabled, onChoose, value, label, data, onClick]);
29
39
 
30
40
  /** 是否已选中 */
31
41
  var selected = useMemo(function () {
32
42
  if (multiple && selectedValue instanceof Array) {
33
- return selectedValue.includes(props.value);
43
+ return selectedValue.includes(value);
34
44
  }
35
- return props.value === selectedValue;
36
- }, [multiple, props.value, selectedValue]);
45
+ return value === selectedValue;
46
+ }, [multiple, value, selectedValue]);
47
+
48
+ // useEffect(() => {
49
+ // onOptionCreate?.(value, { value, label, data });
50
+ // return () => {
51
+ // onOptionDestroy?.(value);
52
+ // };
53
+ // }, []);
54
+
37
55
  return /*#__PURE__*/React.createElement("li", {
38
56
  className: classNames(e(_templateObject || (_templateObject = _taggedTemplateLiteral(["item"]))), is({
39
- disabled: disabled
40
- }), {
57
+ disabled: disabled,
41
58
  selected: selected,
42
- hover: props.value === hoverValue
43
- }, props.className),
59
+ hovering: value === hoverValue
60
+ }), props.className),
44
61
  style: props.style,
45
- title: label,
46
- key: props.value,
62
+ title: label + '',
47
63
  onClick: handleOnClick,
48
64
  onMouseEnter: function onMouseEnter() {
49
- return setHover(props.value);
65
+ return setHover(value);
50
66
  },
51
67
  onMouseLeave: function onMouseLeave() {
52
68
  return setHover(selectedValue);
@@ -1,11 +1,10 @@
1
1
  /// <reference types="react" />
2
- import { ValueType } from './typings';
3
- interface SelectContextProps {
2
+ import { OptionData, OptionValue, ValueType } from './typings';
3
+ export interface SelectContextProps {
4
4
  value: ValueType;
5
5
  hover: ValueType;
6
6
  setHover: (value: ValueType) => void;
7
- onChoose: (value: string | number, label: string, e: any) => void;
7
+ onChoose: (value: OptionValue, data: OptionData, e: any) => void;
8
8
  multiple: boolean;
9
9
  }
10
10
  export declare const SelectContext: import("react").Context<SelectContextProps>;
11
- export {};
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { SelectProps, SelectRef, ValueType } from './typings';
3
- declare const SelectCore: React.ForwardRefExoticComponent<SelectProps<ValueType> & React.RefAttributes<SelectRef>>;
2
+ import { SelectProps, SelectRef } from './typings';
3
+ declare const SelectCore: React.ForwardRefExoticComponent<SelectProps<import("./typings").ValueType> & React.RefAttributes<SelectRef>>;
4
4
  export default SelectCore;