@qsxy/element-plus-react 1.0.2 → 1.0.3

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 (216) hide show
  1. package/dist/Alert/Alert.d.ts +7 -0
  2. package/dist/Alert/Alert.js +98 -0
  3. package/dist/Alert/index.d.ts +2 -0
  4. package/dist/Alert/index.js +1 -0
  5. package/dist/Alert/typings.d.ts +45 -0
  6. package/dist/Alert/typings.js +1 -0
  7. package/dist/Card/Card.js +5 -3
  8. package/dist/Cascader/useCascader.d.ts +0 -14
  9. package/dist/Cascader/useCascader.js +33 -32
  10. package/dist/Checkbox/Checkbox.js +3 -2
  11. package/dist/ConfigProvider/ConfigProvider.js +2 -24
  12. package/dist/ConfigProvider/ConfigProviderContext.js +1 -1
  13. package/dist/ConfigProvider/typings.d.ts +1 -1
  14. package/dist/Container/Main.d.ts +1 -1
  15. package/dist/Container/typings.d.ts +1 -1
  16. package/dist/Dialog/Dialog.js +5 -12
  17. package/dist/Input/Input.js +68 -43
  18. package/dist/Input/TextArea.js +1 -1
  19. package/dist/Input/typings.d.ts +42 -1
  20. package/dist/Input/utils.d.ts +1 -0
  21. package/dist/Input/utils.js +5 -1
  22. package/dist/InputNumber/InputNumber.js +351 -141
  23. package/dist/InputNumber/typings.d.ts +15 -1
  24. package/dist/Loading/Loading.js +5 -2
  25. package/dist/Menu/Menu.js +25 -1
  26. package/dist/Menu/MenuItem.js +4 -2
  27. package/dist/Menu/SubMenu.js +2 -2
  28. package/dist/Menu/SubMenuCollapseTransition.js +14 -9
  29. package/dist/Menu/typings.d.ts +2 -1
  30. package/dist/Message/Message.js +51 -23
  31. package/dist/Message/index.js +8 -10
  32. package/dist/Message/typings.d.ts +8 -5
  33. package/dist/MessageBox/MessageBox.js +52 -30
  34. package/dist/MessageBox/index.d.ts +2 -1
  35. package/dist/MessageBox/index.js +4 -2
  36. package/dist/MessageBox/typings.d.ts +3 -0
  37. package/dist/Notification/Notification.js +26 -19
  38. package/dist/Select/SelectContext.d.ts +2 -1
  39. package/dist/Select/SelectContext.js +2 -1
  40. package/dist/Select/SelectCore.js +13 -7
  41. package/dist/Select/SelectDropdown.js +23 -15
  42. package/dist/Select/index.d.ts +1 -1
  43. package/dist/Select/typings.d.ts +13 -9
  44. package/dist/Select/useSelect.d.ts +13 -10
  45. package/dist/Select/useSelect.js +34 -26
  46. package/dist/Space/Space.d.ts +4 -0
  47. package/dist/Space/Space.js +128 -0
  48. package/dist/Space/SpaceItem.d.ts +7 -0
  49. package/dist/Space/SpaceItem.js +14 -0
  50. package/dist/Space/index.d.ts +3 -0
  51. package/dist/Space/index.js +2 -0
  52. package/dist/Space/typings.d.ts +26 -0
  53. package/dist/Space/typings.js +1 -0
  54. package/dist/Space/useSpace.d.ts +7 -0
  55. package/dist/Space/useSpace.js +104 -0
  56. package/dist/Statistic/Statistic.d.ts +4 -0
  57. package/dist/Statistic/Statistic.js +92 -0
  58. package/dist/Statistic/index.d.ts +2 -0
  59. package/dist/Statistic/index.js +1 -0
  60. package/dist/Statistic/typings.d.ts +28 -0
  61. package/dist/Statistic/typings.js +1 -0
  62. package/dist/Switch/Switch.js +2 -2
  63. package/dist/Table/Table.js +3 -0
  64. package/dist/Table/typings.d.ts +2 -0
  65. package/dist/Tag/typings.d.ts +1 -1
  66. package/dist/Text/Text.d.ts +4 -0
  67. package/dist/Text/Text.js +84 -0
  68. package/dist/Text/index.d.ts +2 -0
  69. package/dist/Text/index.js +1 -0
  70. package/dist/Text/typings.d.ts +15 -0
  71. package/dist/Text/typings.js +1 -0
  72. package/dist/Tree/CollapseTransition.d.ts +7 -0
  73. package/dist/Tree/CollapseTransition.js +60 -0
  74. package/dist/Tree/Tree.d.ts +3 -140
  75. package/dist/Tree/Tree.js +350 -77
  76. package/dist/Tree/TreeContext.d.ts +9 -0
  77. package/dist/Tree/TreeContext.js +14 -0
  78. package/dist/Tree/TreeNode.d.ts +5 -3
  79. package/dist/Tree/TreeNode.js +321 -331
  80. package/dist/Tree/TreeNodeContent.d.ts +9 -0
  81. package/dist/Tree/TreeNodeContent.js +22 -0
  82. package/dist/Tree/index.d.ts +3 -8
  83. package/dist/Tree/index.js +1 -4
  84. package/dist/Tree/model/node.d.ts +62 -0
  85. package/dist/Tree/model/node.js +601 -0
  86. package/dist/Tree/model/tree-store.d.ts +52 -0
  87. package/dist/Tree/model/tree-store.js +510 -0
  88. package/dist/Tree/model/useDragNode.d.ts +30 -0
  89. package/dist/Tree/model/useDragNode.js +293 -0
  90. package/dist/Tree/model/useKeydown.d.ts +0 -0
  91. package/dist/Tree/model/useKeydown.js +104 -0
  92. package/dist/Tree/model/useNodeExpandEventBroadcast.d.ts +15 -0
  93. package/dist/Tree/model/useNodeExpandEventBroadcast.js +54 -0
  94. package/dist/Tree/model/util.d.ts +7 -0
  95. package/dist/Tree/model/util.js +24 -0
  96. package/dist/Tree/typings.d.ts +225 -114
  97. package/dist/TreeSelect/TreeSelect.d.ts +2 -10
  98. package/dist/TreeSelect/TreeSelect.js +90 -566
  99. package/dist/TreeSelect/TreeSelectOption.d.ts +6 -0
  100. package/dist/TreeSelect/TreeSelectOption.js +62 -0
  101. package/dist/TreeSelect/cacheOptions.d.ts +9 -0
  102. package/dist/TreeSelect/cacheOptions.js +22 -0
  103. package/dist/TreeSelect/index.d.ts +0 -1
  104. package/dist/TreeSelect/typings.d.ts +11 -63
  105. package/dist/TreeSelect/useSelect.d.ts +125 -0
  106. package/dist/TreeSelect/useSelect.js +104 -0
  107. package/dist/TreeSelect/useTree.d.ts +130 -0
  108. package/dist/TreeSelect/useTree.js +285 -0
  109. package/dist/TreeSelect/utils.d.ts +10 -0
  110. package/dist/TreeSelect/utils.js +38 -0
  111. package/dist/Upload/UploadContent.js +2 -0
  112. package/dist/Upload/ajax.js +3 -0
  113. package/dist/Upload/typings.d.ts +4 -0
  114. package/dist/Util/aria.js +12 -12
  115. package/dist/Util/base.d.ts +5 -0
  116. package/dist/Util/base.js +140 -1
  117. package/dist/config/Constants.d.ts +3 -0
  118. package/dist/config/Constants.js +8 -0
  119. package/dist/hooks/index.d.ts +1 -0
  120. package/dist/hooks/index.js +1 -0
  121. package/dist/hooks/popperPropsUtils.js +1 -1
  122. package/dist/hooks/treePropsUtils.d.ts +3 -3
  123. package/dist/hooks/treePropsUtils.js +2 -2
  124. package/dist/hooks/useConfigProvider.d.ts +27 -0
  125. package/dist/hooks/useConfigProvider.js +78 -0
  126. package/dist/hooks/useResizeObserver.js +6 -6
  127. package/dist/index.css +1 -1
  128. package/dist/index.d.ts +18 -11
  129. package/dist/index.js +11 -5
  130. package/package.json +1 -1
  131. package/theme-chalk/alert.scss +115 -0
  132. package/theme-chalk/aside.scss +8 -8
  133. package/theme-chalk/button-group.scss +80 -80
  134. package/theme-chalk/button.scss +304 -304
  135. package/theme-chalk/calendar/date-table.scss +164 -164
  136. package/theme-chalk/checkbox.scss +34 -0
  137. package/theme-chalk/color/index.scss +20 -20
  138. package/theme-chalk/common/transition.scss +142 -142
  139. package/theme-chalk/container.scss +14 -14
  140. package/theme-chalk/dark/css-vars.scss +39 -39
  141. package/theme-chalk/dark/var.scss +225 -225
  142. package/theme-chalk/date-picker.scss +12 -12
  143. package/theme-chalk/drawer.scss +1 -0
  144. package/theme-chalk/footer.scss +12 -12
  145. package/theme-chalk/header.scss +12 -12
  146. package/theme-chalk/index.scss +4 -0
  147. package/theme-chalk/input/input-range.scss +2 -1
  148. package/theme-chalk/input/input.scss +439 -424
  149. package/theme-chalk/input-number.bak +172 -0
  150. package/theme-chalk/input-number.scss +192 -172
  151. package/theme-chalk/link.scss +87 -87
  152. package/theme-chalk/main.scss +14 -14
  153. package/theme-chalk/menu.scss +353 -353
  154. package/theme-chalk/message.scss +104 -178
  155. package/theme-chalk/mixins/_button.scss +224 -224
  156. package/theme-chalk/mixins/_col.scss +33 -33
  157. package/theme-chalk/mixins/_var.scss +67 -67
  158. package/theme-chalk/mixins/config.scss +5 -5
  159. package/theme-chalk/mixins/function.scss +99 -99
  160. package/theme-chalk/mixins/mixins.scss +240 -240
  161. package/theme-chalk/mixins/utils.scss +39 -39
  162. package/theme-chalk/notification.bak +156 -0
  163. package/theme-chalk/notification.scss +109 -156
  164. package/theme-chalk/popper.scss +104 -104
  165. package/theme-chalk/radio-button.scss +169 -169
  166. package/theme-chalk/select/index.scss +278 -272
  167. package/theme-chalk/space.scss +20 -0
  168. package/theme-chalk/statistic.scss +35 -0
  169. package/theme-chalk/switch.scss +300 -300
  170. package/theme-chalk/tag.scss +181 -181
  171. package/theme-chalk/text.scss +48 -0
  172. package/theme-chalk/transition.scss +34 -4
  173. package/theme-chalk/tree-select.scss +41 -25
  174. package/theme-chalk/tree.scss +136 -0
  175. package/theme-chalk/var.scss +83 -83
  176. package/dist/Input/Input.1.d.ts +0 -16
  177. package/dist/Input/Input.1.js +0 -376
  178. package/dist/Tree/DirectoryTree.d.ts +0 -15
  179. package/dist/Tree/DirectoryTree.js +0 -183
  180. package/dist/Tree/DropIndicator.d.ts +0 -8
  181. package/dist/Tree/DropIndicator.js +0 -34
  182. package/dist/Tree/Indent.d.ts +0 -9
  183. package/dist/Tree/Indent.js +0 -25
  184. package/dist/Tree/MotionTreeNode.d.ts +0 -14
  185. package/dist/Tree/MotionTreeNode.js +0 -125
  186. package/dist/Tree/NodeList.d.ts +0 -50
  187. package/dist/Tree/NodeList.js +0 -301
  188. package/dist/Tree/RCTree.d.ts +0 -248
  189. package/dist/Tree/RCTree.js +0 -1216
  190. package/dist/Tree/contextTypes.d.ts +0 -69
  191. package/dist/Tree/contextTypes.js +0 -9
  192. package/dist/Tree/typings.tsx--bak +0 -245
  193. package/dist/Tree/useUnmount.d.ts +0 -5
  194. package/dist/Tree/useUnmount.js +0 -34
  195. package/dist/Tree/util.d.ts +0 -51
  196. package/dist/Tree/util.js +0 -303
  197. package/dist/Tree/utils/conductUtil.d.ts +0 -17
  198. package/dist/Tree/utils/conductUtil.js +0 -209
  199. package/dist/Tree/utils/dictUtil.d.ts +0 -13
  200. package/dist/Tree/utils/dictUtil.js +0 -75
  201. package/dist/Tree/utils/diffUtil.d.ts +0 -7
  202. package/dist/Tree/utils/diffUtil.js +0 -48
  203. package/dist/Tree/utils/dropIndicator.d.ts +0 -11
  204. package/dist/Tree/utils/dropIndicator.js +0 -36
  205. package/dist/Tree/utils/iconUtil.d.ts +0 -5
  206. package/dist/Tree/utils/iconUtil.js +0 -62
  207. package/dist/Tree/utils/keyUtil.d.ts +0 -2
  208. package/dist/Tree/utils/keyUtil.js +0 -3
  209. package/dist/Tree/utils/motion.d.ts +0 -10
  210. package/dist/Tree/utils/motion.js +0 -54
  211. package/dist/Tree/utils/pickAttrs.d.ts +0 -11
  212. package/dist/Tree/utils/pickAttrs.js +0 -51
  213. package/dist/Tree/utils/treeUtil.d.ts +0 -86
  214. package/dist/Tree/utils/treeUtil.js +0 -364
  215. package/dist/TreeSelect/Utils.d.ts +0 -3
  216. package/dist/TreeSelect/Utils.js +0 -20
@@ -2,10 +2,10 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
2
2
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
3
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
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 _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
5
6
  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
7
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
7
8
  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 _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
9
9
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
10
  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."); }
11
11
  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,9 +15,10 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
15
  import classNames from 'classnames';
16
16
  import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
17
17
  import { createPortal } from 'react-dom';
18
+ import Icon from "../Icon/Icon";
18
19
  import Transition from "../Transition/Transition";
19
20
  import { PopupManager, mergeDefaultProps } from "../Util";
20
- import { EVENT_CODE, TypeMap } from "../config/Constants";
21
+ import { EVENT_CODE, TypeComponentsMap } from "../config/Constants";
21
22
  import { useClassNames } from "../hooks";
22
23
  var Notification = /*#__PURE__*/forwardRef(function (props, ref) {
23
24
  props = mergeDefaultProps({
@@ -48,6 +49,7 @@ var Notification = /*#__PURE__*/forwardRef(function (props, ref) {
48
49
  afterLeave = _props.afterLeave;
49
50
  var _useClassNames = useClassNames(classPrefix),
50
51
  b = _useClassNames.b,
52
+ m = _useClassNames.m,
51
53
  e = _useClassNames.e;
52
54
  var _useState = useState(false),
53
55
  _useState2 = _slicedToArray(_useState, 2),
@@ -61,7 +63,12 @@ var Notification = /*#__PURE__*/forwardRef(function (props, ref) {
61
63
  var timer = useRef(null);
62
64
  var notificationRef = useRef(null);
63
65
  var contentRef = useRef(null);
64
- var verticalProperty = position.startsWith('top') ? 'top' : 'bottom';
66
+ var horizontalProperty = useMemo(function () {
67
+ return position.endsWith('right') ? 'right' : 'left';
68
+ }, [position]);
69
+ var verticalProperty = useMemo(function () {
70
+ return position.startsWith('top') ? 'top' : 'bottom';
71
+ }, [position]);
65
72
  var handleClose = useCallback(function () {
66
73
  setVisible(false);
67
74
  onClose === null || onClose === void 0 || onClose();
@@ -124,20 +131,20 @@ var Notification = /*#__PURE__*/forwardRef(function (props, ref) {
124
131
  }
125
132
  // eslint-disable-next-line react-hooks/exhaustive-deps
126
133
  }, [visible]);
127
-
128
- /** 前缀图标 */
129
- var typeClass = useMemo(function () {
130
- var _type = !iconClass && type;
131
- return _type && TypeMap[_type] ? b("icon-".concat(TypeMap[_type]), false) : '';
132
- }, [b, iconClass, type]);
134
+ var positionStyle = useMemo(function () {
135
+ return _defineProperty(_defineProperty({}, verticalProperty, "".concat(offset, "px")), "zIndex", PopupManager.nextZIndex());
136
+ }, [offset, verticalProperty]);
133
137
 
134
138
  /** 关闭图标 */
139
+ // const closeIcon = useMemo(() => showClose && <div className={classNames(e`closeBtn`, b('icon-close', false))} onClick={handleClose} />, [showClose, e, b, handleClose]);
135
140
  var closeIcon = useMemo(function () {
136
- return showClose && /*#__PURE__*/React.createElement("div", {
137
- className: classNames(e(_templateObject || (_templateObject = _taggedTemplateLiteral(["closeBtn"]))), b('icon-close', false)),
141
+ return showClose && /*#__PURE__*/React.createElement(Icon, {
142
+ name: "xmark",
143
+ prefix: "fal",
144
+ className: classNames(e(_templateObject || (_templateObject = _taggedTemplateLiteral(["closeBtn"])))),
138
145
  onClick: handleClose
139
146
  });
140
- }, [showClose, e, b, handleClose]);
147
+ }, [showClose, e, handleClose]);
141
148
  return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(Transition, {
142
149
  nodeRef: notificationRef,
143
150
  name: b('notification-fade', false),
@@ -146,19 +153,19 @@ var Notification = /*#__PURE__*/forwardRef(function (props, ref) {
146
153
  afterLeave: afterLeave
147
154
  }, /*#__PURE__*/React.createElement("div", {
148
155
  ref: notificationRef,
149
- className: classNames(b(), position.indexOf('right') > 1 ? 'right' : 'left', props.className),
150
- style: _objectSpread(_defineProperty(_defineProperty({}, verticalProperty, offset), "zIndex", PopupManager.nextZIndex()), props.style)
156
+ className: classNames(b(), horizontalProperty, props.className),
157
+ style: _objectSpread(_objectSpread({}, props.style), positionStyle)
151
158
  // 鼠标悬浮停止自动关闭
152
159
  ,
153
160
  onMouseEnter: clearTimer,
154
161
  onMouseLeave: startTimer,
155
162
  onClick: props.onClick
156
- }, (type || iconClass) && /*#__PURE__*/React.createElement("i", {
157
- className: classNames(e(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["icon"]))), typeClass, iconClass)
163
+ }, (type || iconClass) && /*#__PURE__*/React.createElement(Icon, {
164
+ name: TypeComponentsMap[type],
165
+ prefix: "fas",
166
+ className: classNames(e(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["icon"]))), _defineProperty({}, m(type), type && TypeComponentsMap[type]), iconClass)
158
167
  }), /*#__PURE__*/React.createElement("div", {
159
- className: classNames(e(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["group"]))), {
160
- 'is-with-icon': typeClass || iconClass
161
- })
168
+ className: classNames(e(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["group"]))))
162
169
  }, /*#__PURE__*/React.createElement("h2", {
163
170
  className: e(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["title"])))
164
171
  }, title), /*#__PURE__*/React.createElement("div", {
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import { RefObject } from 'react';
2
2
  import { OptionData, OptionValue, ValueType } from './typings';
3
3
  export interface SelectContextProps {
4
4
  value: ValueType;
@@ -6,5 +6,6 @@ export interface SelectContextProps {
6
6
  setHover: (value: ValueType) => void;
7
7
  onChoose: (value: OptionValue, data: OptionData, e: any) => void;
8
8
  multiple: boolean;
9
+ cachedOptions: RefObject<Map<OptionValue, OptionData>>;
9
10
  }
10
11
  export declare const SelectContext: import("react").Context<SelectContextProps>;
@@ -5,5 +5,6 @@ export var SelectContext = /*#__PURE__*/createContext({
5
5
  hover: '',
6
6
  setHover: noop,
7
7
  onChoose: noop,
8
- multiple: false
8
+ multiple: false,
9
+ cachedOptions: null
9
10
  });
@@ -51,6 +51,7 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
51
51
  value = _props.value,
52
52
  setValue = _props.setValue,
53
53
  disabled = _props.disabled,
54
+ plain = _props.plain,
54
55
  size = _props.size,
55
56
  multiValue = _props.multiValue,
56
57
  multiOptionData = _props.multiOptionData,
@@ -72,7 +73,8 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
72
73
  handleCompositionStart = _props.handleCompositionStart,
73
74
  handleCompositionUpdate = _props.handleCompositionUpdate,
74
75
  handleCompositionEnd = _props.handleCompositionEnd,
75
- tag = _props.tag;
76
+ tag = _props.tag,
77
+ cachedOptions = _props.cachedOptions;
76
78
  var b = nsSelect.b,
77
79
  e = nsSelect.e,
78
80
  m = nsSelect.m,
@@ -89,7 +91,9 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
89
91
  setValue: setValue,
90
92
  onClear: onClear,
91
93
  clear: onClear,
92
- setVisible: setVisible
94
+ setVisible: setVisible,
95
+ cachedOptions: cachedOptions,
96
+ onChoose: onChoose
93
97
  };
94
98
  });
95
99
  return /*#__PURE__*/React.createElement("div", {
@@ -108,9 +112,10 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
108
112
  ref: wrapperRef,
109
113
  className: classNames(e(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["wrapper"]))), is({
110
114
  disabled: disabled,
111
- filterable: filterable
115
+ filterable: filterable,
116
+ plain: plain
112
117
  })),
113
- style: props.style,
118
+ style: append || prepend ? props.style : {},
114
119
  onClick: toggleMenu
115
120
  }, /*#__PURE__*/React.createElement("div", {
116
121
  className: classNames(e(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["selection"]))), is({
@@ -215,7 +220,7 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
215
220
  className: classNames(e(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["selected-item"]))), e(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["placeholder"]))), is({
216
221
  transparent: isEmpty(label) || visible && !inputValue
217
222
  }))
218
- }, isNotEmpty(value) && typeof value === 'string' && labelFormat ? labelFormat === null || labelFormat === void 0 ? void 0 : labelFormat(-1, value, placeholder) : /*#__PURE__*/React.createElement("span", null, placeholder))), /*#__PURE__*/React.createElement("div", {
223
+ }, isNotEmpty(value) && typeof value === 'string' && labelFormat ? labelFormat === null || labelFormat === void 0 ? void 0 : labelFormat(-1, value, placeholder) : /*#__PURE__*/React.createElement("span", null, placeholder))), !plain && /*#__PURE__*/React.createElement("div", {
219
224
  ref: suffixWrapperRef,
220
225
  className: classNames(e(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["suffix"]))), is(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["hidden-clear"]))))
221
226
  }, iconComponent ? /*#__PURE__*/React.createElement(Icon, {
@@ -244,7 +249,7 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
244
249
  afterLeave: handleAfterLeave,
245
250
  placement: 'bottom-start',
246
251
  transitionAppear: true,
247
- unmountOnExit: true,
252
+ unmountOnExit: props.unmountOnExit,
248
253
  showArrow: showArrow
249
254
  }, transitionProps, popperProps), /*#__PURE__*/React.createElement(SelectDropdown, _extends({
250
255
  ref: selectDropdownRef,
@@ -255,7 +260,8 @@ var SelectCore = /*#__PURE__*/forwardRef(function (props, ref) {
255
260
  contentRef: contentRef,
256
261
  popperInstRef: popperInstRef
257
262
  }, _props, {
258
- onClear: props.onClear
263
+ onClear: props.onClear,
264
+ cachedOptions: cachedOptions
259
265
  }), props.children)));
260
266
  });
261
267
  SelectCore.displayName = 'SelectCore';
@@ -35,7 +35,8 @@ var SelectDropdown = /*#__PURE__*/forwardRef(function (props, ref) {
35
35
  popperInstRef = props.popperInstRef,
36
36
  contentRef = props.contentRef,
37
37
  header = props.header,
38
- footer = props.footer;
38
+ footer = props.footer,
39
+ cachedOptions = props.cachedOptions;
39
40
  var _useClassNames = useClassNames('select'),
40
41
  b = _useClassNames.b,
41
42
  e = _useClassNames.e,
@@ -62,25 +63,27 @@ var SelectDropdown = /*#__PURE__*/forwardRef(function (props, ref) {
62
63
  if (filterable && remote) {
63
64
  remoteMethod === null || remoteMethod === void 0 || remoteMethod(searchText);
64
65
  }
66
+ if (filterable && filterMethod) {
67
+ filterMethod === null || filterMethod === void 0 || filterMethod(searchText);
68
+ }
65
69
 
66
70
  // eslint-disable-next-line react-hooks/exhaustive-deps
67
71
  }, [searchText]);
68
72
  var filterAction = useCallback(function (p) {
69
73
  if (isNotEmpty(searchText) && isNotEmpty(p.value)) {
70
- if (filterMethod) {
71
- var _p$label;
72
- var filterResult = filterMethod((_p$label = p.label) !== null && _p$label !== void 0 ? _p$label : p.value.toString(), searchText);
73
- return filterResult;
74
- } else {
75
- var _ref, _p$label2;
76
- var regex = new RegExp(searchText, 'gi');
77
- var res = null !== "".concat((_ref = (_p$label2 = p.label) !== null && _p$label2 !== void 0 ? _p$label2 : p.value) !== null && _ref !== void 0 ? _ref : '').match(regex);
78
- return res;
79
- }
74
+ var _ref, _p$label;
75
+ // if (filterMethod) {
76
+ // const filterResult = filterMethod(p.label ?? p.value.toString(), searchText);
77
+ // return filterResult;
78
+ // } else {
79
+ // }
80
+ var regex = new RegExp(searchText, 'gi');
81
+ var res = null !== "".concat((_ref = (_p$label = p.label) !== null && _p$label !== void 0 ? _p$label : p.value) !== null && _ref !== void 0 ? _ref : '').match(regex);
82
+ return res;
80
83
  } else {
81
84
  return true;
82
85
  }
83
- }, [filterMethod, searchText]);
86
+ }, [searchText]);
84
87
  var scrollToSelected = useCallback(function () {
85
88
  // const node = ulRef.current?.querySelectorAll('.selected');
86
89
  // if (node && node.length > 0) {
@@ -138,7 +141,7 @@ var SelectDropdown = /*#__PURE__*/forwardRef(function (props, ref) {
138
141
  });
139
142
  }
140
143
  // 搜索
141
- if (filterable && !remote && isNotEmpty(searchText)) {
144
+ if (filterable && !remote && isNotEmpty(searchText) && !filterMethod) {
142
145
  var match = false;
143
146
  return props.children ? /*#__PURE__*/React.createElement(React.Fragment, null, Children.toArray(props.children).map(function (item) {
144
147
  var _nodeType;
@@ -161,6 +164,10 @@ var SelectDropdown = /*#__PURE__*/forwardRef(function (props, ref) {
161
164
  } else {
162
165
  return null;
163
166
  }
167
+ } else if (nodeType === 'ElTree') {
168
+ // filterAction(item.props);
169
+ match = true;
170
+ return item;
164
171
  }
165
172
 
166
173
  // if (filterAction(item.props)) {
@@ -179,7 +186,7 @@ var SelectDropdown = /*#__PURE__*/forwardRef(function (props, ref) {
179
186
  }, remote ? noMatchText : noDataText);
180
187
  }
181
188
  }
182
- }, [filterable, allowCreate, searchText, remote, multiple, value, props.children, setInputValue, noMatchText, filterAction, be, noDataText]);
189
+ }, [filterable, allowCreate, searchText, remote, filterMethod, multiple, value, props.children, setInputValue, be, noMatchText, filterAction, noDataText]);
183
190
  return /*#__PURE__*/React.createElement("div", {
184
191
  className: classNames(b(_templateObject || (_templateObject = _taggedTemplateLiteral(["dorpdown"]))), is({
185
192
  multiple: multiple
@@ -199,7 +206,8 @@ var SelectDropdown = /*#__PURE__*/forwardRef(function (props, ref) {
199
206
  onChoose: onChoose,
200
207
  hover: hover,
201
208
  setHover: setHover,
202
- multiple: multiple
209
+ multiple: multiple,
210
+ cachedOptions: cachedOptions
203
211
  }
204
212
  }, /*#__PURE__*/React.createElement(Scrollbar, {
205
213
  wrapClass: be('dropdown', 'wrap'),
@@ -1,4 +1,4 @@
1
1
  export { default as Option } from './Option';
2
2
  export { default as OptionGroup } from './OptionGroup';
3
3
  export { default as Select } from './Select';
4
- export type { SelectOptionGroupProps, SelectOptionProps, SelectProps, SelectRef } from './typings';
4
+ export type { OptionData, SelectOptionGroupProps, SelectOptionProps, SelectProps, SelectRef } from './typings';
@@ -10,6 +10,8 @@ export type SelectRef = {
10
10
  setValue: (value: ValueType) => void;
11
11
  onClear: (event?: any) => void;
12
12
  setVisible: (value: boolean) => void;
13
+ cachedOptions: React.RefObject<Map<OptionValue, OptionData>>;
14
+ onChoose: <T = any>(val: string, data: OptionData<T>, event?: any) => ValueType;
13
15
  };
14
16
  type Child = React.ReactElement<SelectOptionGroupProps | SelectOptionProps> | React.ReactElement<SelectOptionGroupProps | SelectOptionProps>[];
15
17
  export interface SelectProps<V = ValueType> extends Omit<FormControlBaseProps<V>, 'onChange'>, BaseProps<Child | Child[]>, NativeProps, AnimationEventProps, PopperOptions {
@@ -28,7 +30,7 @@ export interface SelectProps<V = ValueType> extends Omit<FormControlBaseProps<V>
28
30
  /** 是否可搜索 */
29
31
  filterable?: boolean;
30
32
  /** 自定义搜索方法 */
31
- filterMethod?: (val: ValueType, searchText: string) => boolean;
33
+ filterMethod?: (searchText: string) => void;
32
34
  /** 选项为空时显示的文字 */
33
35
  noDataText?: string;
34
36
  /** 搜索条件无匹配时显示的文字 */
@@ -85,7 +87,7 @@ export interface SelectProps<V = ValueType> extends Omit<FormControlBaseProps<V>
85
87
  tagEffect?: 'light' | 'dark' | 'plain';
86
88
  labelFormat?: (index: number, value: OptionValue, label?: OptionValue) => React.ReactElement;
87
89
  /** 选中值发生变化时触发 */
88
- onChange?: (value: ValueType, data?: OptionData | OptionData[]) => void;
90
+ onChange?: <T = any>(value: ValueType, data?: OptionData<T> | OptionData<T>[]) => void;
89
91
  /** 下拉框出现/隐藏时触发 */
90
92
  onVisibleChange?: (visible: boolean) => void;
91
93
  /** 多选模式下移除tag时触发/隐藏时触发 */
@@ -99,11 +101,12 @@ export interface SelectProps<V = ValueType> extends Omit<FormControlBaseProps<V>
99
101
  /** 下拉列表底部的内容 */
100
102
  footer?: React.ReactElement;
101
103
  /** 作为 Select 组件的内容时 */
102
- tag?: (params: {
103
- data: OptionData[];
104
+ tag?: <T = any>(params: {
105
+ data: OptionData<T>[];
104
106
  selectDisabled: boolean;
105
- deleteTag: (event: React.MouseEvent<HTMLElement, MouseEvent>, tag: OptionData) => void;
107
+ deleteTag: (event: React.MouseEvent<HTMLElement, MouseEvent>, tag: OptionData<T>) => void;
106
108
  }) => React.ReactElement;
109
+ unmountOnExit?: boolean;
107
110
  }
108
111
  export interface SelectOptionProps extends BaseProps, NativeProps {
109
112
  /** 选项的值 */
@@ -114,14 +117,14 @@ export interface SelectOptionProps extends BaseProps, NativeProps {
114
117
  data?: any;
115
118
  /** 是否禁用该选项 */
116
119
  disabled?: boolean;
117
- onClick?: (value: ValueType, data: OptionData) => void;
120
+ onClick?: <T = any>(value: ValueType, data: OptionData<T>) => void;
118
121
  }
119
- export interface OptionData {
122
+ export interface OptionData<T = any> {
120
123
  index?: number;
121
124
  value: OptionValue;
122
125
  label: OptionValue;
123
126
  disabled?: boolean;
124
- data?: any;
127
+ data?: T;
125
128
  }
126
129
  export interface SelectOptionGroupProps extends BaseProps<React.ReactElement<SelectOptionProps> | React.ReactElement<SelectOptionProps>[]>, NativeProps {
127
130
  /** 分组的组名 */
@@ -133,13 +136,14 @@ export interface SelectDropdownProps extends SelectProps {
133
136
  value: ValueType;
134
137
  inputValue: string;
135
138
  setInputValue: (value: string) => void;
136
- onChoose: (val: string, data: OptionData, event: any) => void;
139
+ onChoose: <T = any>(val: string, data: OptionData<T>, event: any) => void;
137
140
  contentRef: RefObject<HTMLDivElement>;
138
141
  popperInstRef: RefObject<PopperOptionRef>;
139
142
  /** 下拉列表顶部的内容 */
140
143
  header?: React.ReactElement;
141
144
  /** 下拉列表底部的内容 */
142
145
  footer?: React.ReactElement;
146
+ cachedOptions: React.RefObject<Map<OptionValue, OptionData>>;
143
147
  }
144
148
  export interface SelectDropdownRef {
145
149
  clear: () => void;
@@ -34,7 +34,7 @@ declare const useSelect: (props: SelectProps) => {
34
34
  clearable: boolean;
35
35
  clearIcon: import("..").IconName;
36
36
  multiple: boolean;
37
- onChange: (value: ValueType, data?: OptionData | OptionData[]) => void;
37
+ onChange: <T = any>(value: ValueType, data?: OptionData<T> | OptionData<T>[]) => void;
38
38
  allowCreate: boolean;
39
39
  onEnter: (node?: HTMLElement | Text) => void;
40
40
  afterLeave: (node?: HTMLElement | Text) => void;
@@ -47,10 +47,10 @@ declare const useSelect: (props: SelectProps) => {
47
47
  setValue: (value: ValueType) => void;
48
48
  disabled: boolean;
49
49
  size: import("..").TypeAttributes.Size;
50
- optionData: OptionData[];
50
+ optionData: OptionData<any>[];
51
51
  multiValue: OptionValue[];
52
- multiOptionData: OptionData[];
53
- selected: OptionData | OptionData[];
52
+ multiOptionData: OptionData<any>[];
53
+ selected: OptionData<any> | OptionData<any>[];
54
54
  label: string;
55
55
  visible: boolean;
56
56
  setVisible: React.Dispatch<React.SetStateAction<boolean>>;
@@ -59,10 +59,10 @@ declare const useSelect: (props: SelectProps) => {
59
59
  shouldShowPlaceholder: boolean;
60
60
  handleEnter: (node: any) => void;
61
61
  handleAfterLeave: (node?: any) => void;
62
- toggleMenu: (event: React.MouseEvent<HTMLSpanElement>) => void;
62
+ toggleMenu: (event?: React.MouseEvent<HTMLSpanElement>) => void;
63
63
  onCloseTag: (event: React.MouseEvent<HTMLElement, MouseEvent>, item: OptionData) => void;
64
64
  onClear: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
65
- onChoose: (val: string, data: OptionData, event?: any) => void;
65
+ onChoose: (val: string, data: OptionData, event?: any) => string | OptionValue[];
66
66
  labelFormat: (index: number, value: OptionValue, label?: OptionValue) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
67
67
  iconComponent: import("..").IconName;
68
68
  iconReverse: string;
@@ -71,8 +71,9 @@ declare const useSelect: (props: SelectProps) => {
71
71
  handleCompositionStart: (event: React.CompositionEvent<HTMLInputElement>) => void;
72
72
  handleCompositionUpdate: (event: React.CompositionEvent<HTMLInputElement>) => void;
73
73
  handleCompositionEnd: (event: React.CompositionEvent<HTMLInputElement>) => void;
74
+ cachedOptions: React.MutableRefObject<Map<OptionValue, OptionData<any>>>;
74
75
  valueKey?: string;
75
- filterMethod?: (val: ValueType, searchText: string) => boolean;
76
+ filterMethod?: (searchText: string) => void;
76
77
  noDataText?: string;
77
78
  noMatchText?: string;
78
79
  loading?: boolean;
@@ -95,14 +96,16 @@ declare const useSelect: (props: SelectProps) => {
95
96
  remoteMethod?: (searchText: string) => void;
96
97
  tagType?: import("..").TypeAttributes.Appearance;
97
98
  tagEffect?: "light" | "dark" | "plain";
99
+ /** 获取所有的option组件 */
98
100
  automaticDropdown?: boolean;
99
101
  header?: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
100
102
  footer?: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
101
- tag?: (params: {
102
- data: OptionData[];
103
+ tag?: <T_1 = any>(params: {
104
+ data: OptionData<T_1>[];
103
105
  selectDisabled: boolean;
104
- deleteTag: (event: React.MouseEvent<HTMLElement, MouseEvent>, tag: OptionData) => void;
106
+ deleteTag: (event: React.MouseEvent<HTMLElement, MouseEvent>, tag: OptionData<T_1>) => void;
105
107
  }) => React.ReactElement<any, string | React.JSXElementConstructor<any>>;
108
+ unmountOnExit?: boolean;
106
109
  name?: string;
107
110
  readOnly?: boolean;
108
111
  defaultValue?: ValueType;
@@ -108,23 +108,21 @@ var useSelect = function useSelect(props) {
108
108
  var size = useSize(props.size);
109
109
 
110
110
  // 单选框显示文本
111
- var _useState = useState(null),
111
+ // const [selected, setSelected] = useState<OptionData | OptionData[]>(null);
112
+
113
+ var _useState = useState(false),
112
114
  _useState2 = _slicedToArray(_useState, 2),
113
- selected = _useState2[0],
114
- setSelected = _useState2[1];
115
- var _useState3 = useState(false),
115
+ visible = _useState2[0],
116
+ setVisible = _useState2[1];
117
+ var _useState3 = useState({}),
116
118
  _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];
119
+ popperStyle = _useState4[0],
120
+ setPopperStyle = _useState4[1];
123
121
  // 多选时input框高度
124
- var _useState7 = useState(''),
125
- _useState8 = _slicedToArray(_useState7, 2),
126
- inputValue = _useState8[0],
127
- setInputValue = _useState8[1];
122
+ var _useState5 = useState(''),
123
+ _useState6 = _slicedToArray(_useState5, 2),
124
+ inputValue = _useState6[0],
125
+ setInputValue = _useState6[1];
128
126
  var cachedOptions = useRef(new Map());
129
127
 
130
128
  /** 获取所有的option组件 */
@@ -172,6 +170,15 @@ var useSelect = function useSelect(props) {
172
170
  }
173
171
  return [];
174
172
  }, [multiValue, multiple, optionData]);
173
+ var selected = useMemo(function () {
174
+ if (multiple) {
175
+ return multiOptionData;
176
+ } else {
177
+ return [].concat(_toConsumableArray(optionData), _toConsumableArray(Array.from(cachedOptions.current.values()))).find(function (item) {
178
+ return item.value === value;
179
+ });
180
+ }
181
+ }, [multiple, multiOptionData, optionData, value]);
175
182
  var label = useMemo(function () {
176
183
  if (!multiple && selected && !Array.isArray(selected)) {
177
184
  var _selected$label;
@@ -191,7 +198,7 @@ var useSelect = function useSelect(props) {
191
198
  lng: locale
192
199
  });
193
200
  }
194
- if (!_placeholder) {
201
+ if (props.placeholder) {
195
202
  _placeholder = props.placeholder;
196
203
  }
197
204
  return multiple || isEmpty(label) ? _placeholder : label;
@@ -313,7 +320,7 @@ var useSelect = function useSelect(props) {
313
320
  * @returns
314
321
  */
315
322
  var toggleMenu = useCallback(function (event) {
316
- event.preventDefault();
323
+ event === null || event === void 0 || event.preventDefault();
317
324
  event === null || event === void 0 || event.stopPropagation();
318
325
  if (disabled) {
319
326
  setVisible(false);
@@ -347,7 +354,7 @@ var useSelect = function useSelect(props) {
347
354
  event.stopPropagation();
348
355
  event.preventDefault();
349
356
  setValue(multiple ? [] : '');
350
- setSelected(null);
357
+ // setSelected(null);
351
358
  (_selectDropdownRef$cu3 = selectDropdownRef.current) === null || _selectDropdownRef$cu3 === void 0 || _selectDropdownRef$cu3.hover('');
352
359
  onChange === null || onChange === void 0 || onChange(multiple ? [] : '');
353
360
  onClearProp === null || onClearProp === void 0 || onClearProp();
@@ -358,7 +365,7 @@ var useSelect = function useSelect(props) {
358
365
 
359
366
  /** 选中项回调 */
360
367
  var onChoose = useCallback(function (val, data, event) {
361
- event.preventDefault();
368
+ event === null || event === void 0 || event.preventDefault();
362
369
  if (isNotEmpty(val)) {
363
370
  var result = val;
364
371
  var multiData = [];
@@ -374,9 +381,10 @@ var useSelect = function useSelect(props) {
374
381
  result = [].concat(_toConsumableArray(multiValue), [val]);
375
382
  multiData = [].concat(_toConsumableArray(multiOptionData), [data]);
376
383
  }
377
- setSelected(multiData);
384
+ // setSelected(multiData);
378
385
  } else {
379
- setSelected(data);
386
+ setInputValue('');
387
+ // setSelected(data);
380
388
  }
381
389
  if (allowCreate && isNotEmpty(inputValue)) {
382
390
  var _inputRef$current;
@@ -395,6 +403,7 @@ var useSelect = function useSelect(props) {
395
403
  setValue(result);
396
404
  onChange === null || onChange === void 0 || onChange(result, multiple ? multiData : data);
397
405
  !multiple && toggleMenu(event);
406
+ return result;
398
407
  } else {
399
408
  setVisible(false);
400
409
  }
@@ -439,19 +448,17 @@ var useSelect = function useSelect(props) {
439
448
  return;
440
449
  }
441
450
  if (multiple && Array.isArray(value)) {
442
- setSelected(multiOptionData.filter(function (item) {
443
- return value.includes(item.value);
444
- }));
451
+ // setSelected(multiOptionData.filter(item => value.includes(item.value)));
445
452
  initedRef.current = true;
446
453
  } else {
447
454
  if (isNotEmpty(value)) {
448
455
  var data = optionData.find(function (item) {
449
456
  return item.value === value;
450
457
  });
451
- setSelected(data);
458
+ // setSelected(data);
452
459
  initedRef.current = true;
453
460
  } else {
454
- setSelected(null);
461
+ // setSelected(null);
455
462
  initedRef.current = true;
456
463
  }
457
464
  }
@@ -510,7 +517,8 @@ var useSelect = function useSelect(props) {
510
517
  remote: remote,
511
518
  handleCompositionStart: handleCompositionStart,
512
519
  handleCompositionUpdate: handleCompositionUpdate,
513
- handleCompositionEnd: handleCompositionEnd
520
+ handleCompositionEnd: handleCompositionEnd,
521
+ cachedOptions: cachedOptions
514
522
  });
515
523
  };
516
524
  export default useSelect;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { SpaceProps } from './typings';
3
+ declare const Space: React.MemoExoticComponent<React.ForwardRefExoticComponent<SpaceProps & React.RefAttributes<HTMLDivElement>>>;
4
+ export default Space;