@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
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { AlertProps } from './typings';
3
+ declare const Alert: {
4
+ (props: AlertProps): React.JSX.Element;
5
+ displayName: string;
6
+ };
7
+ export default Alert;
@@ -0,0 +1,98 @@
1
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
2
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
3
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
4
+ 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."); }
5
+ 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); }
6
+ 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; }
7
+ 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; } }
8
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
9
+ import classNames from 'classnames';
10
+ import React, { useMemo, useState } from 'react';
11
+ import Icon from "../Icon/Icon";
12
+ import Transition from "../Transition/Transition";
13
+ import { mergeDefaultProps } from "../Util";
14
+ import { TypeComponentsMap } from "../config/Constants";
15
+ import { useClassNames } from "../hooks";
16
+ var Alert = function Alert(props) {
17
+ props = mergeDefaultProps({
18
+ type: 'info',
19
+ closable: true,
20
+ effect: 'light'
21
+ }, props);
22
+ var _props = props,
23
+ title = _props.title,
24
+ description = _props.description,
25
+ type = _props.type,
26
+ closable = _props.closable,
27
+ closeText = _props.closeText,
28
+ showIcon = _props.showIcon,
29
+ center = _props.center,
30
+ effect = _props.effect,
31
+ onClose = _props.onClose,
32
+ icon = _props.icon,
33
+ children = _props.children,
34
+ className = _props.className,
35
+ style = _props.style;
36
+ var _useClassNames = useClassNames('alert'),
37
+ b = _useClassNames.b,
38
+ e = _useClassNames.e,
39
+ m = _useClassNames.m,
40
+ is = _useClassNames.is;
41
+ var _useState = useState(true),
42
+ _useState2 = _slicedToArray(_useState, 2),
43
+ visible = _useState2[0],
44
+ setVisible = _useState2[1];
45
+ var nodeRef = React.useRef(null);
46
+ var hasDesc = useMemo(function () {
47
+ if (description) {
48
+ return true;
49
+ }
50
+ if (children) {
51
+ return React.Children.toArray(children).some(function (child) {
52
+ return ! /*#__PURE__*/React.isValidElement(child);
53
+ });
54
+ }
55
+ return false;
56
+ }, [description, children]);
57
+ var handleClose = function handleClose(evt) {
58
+ setVisible(false);
59
+ onClose === null || onClose === void 0 || onClose(evt.nativeEvent);
60
+ };
61
+ return /*#__PURE__*/React.createElement(Transition, {
62
+ visible: visible,
63
+ name: b(_templateObject || (_templateObject = _taggedTemplateLiteral(["fade"]))),
64
+ duration: 300,
65
+ nodeRef: nodeRef,
66
+ display: "flex"
67
+ }, /*#__PURE__*/React.createElement("div", {
68
+ ref: nodeRef,
69
+ className: classNames(b(), m(type), is({
70
+ center: center
71
+ }, effect), className),
72
+ role: "alert",
73
+ style: style
74
+ }, showIcon && (icon || TypeComponentsMap[type]) && /*#__PURE__*/React.createElement(Icon, {
75
+ name: icon || TypeComponentsMap[type],
76
+ prefix: "fas",
77
+ className: classNames(e('icon'), is({
78
+ big: hasDesc
79
+ }))
80
+ }), /*#__PURE__*/React.createElement("div", {
81
+ className: e(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["content"])))
82
+ }, title && /*#__PURE__*/React.createElement("span", {
83
+ className: classNames(e(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["title"]))), {
84
+ 'with-description': hasDesc
85
+ })
86
+ }, title), hasDesc && /*#__PURE__*/React.createElement("p", {
87
+ className: e(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["description"])))
88
+ }, description), closable && /*#__PURE__*/React.createElement(React.Fragment, null, closeText ? /*#__PURE__*/React.createElement("div", {
89
+ className: classNames(e(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["close-btn"]))), is('customed')),
90
+ onClick: handleClose
91
+ }, closeText) : /*#__PURE__*/React.createElement(Icon, {
92
+ name: "xmark",
93
+ className: e(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["close-btn"]))),
94
+ onClick: handleClose
95
+ })))));
96
+ };
97
+ Alert.displayName = 'ElAlert';
98
+ export default Alert;
@@ -0,0 +1,2 @@
1
+ export { default as Alert } from './Alert';
2
+ export type { AlertProps } from './typings';
@@ -0,0 +1 @@
1
+ export { default as Alert } from "./Alert";
@@ -0,0 +1,45 @@
1
+ import { ReactElement } from 'react';
2
+ import { IconName } from '../Icon/typings';
3
+ import { BaseProps, NativeProps } from '../types/common';
4
+ export interface AlertProps extends BaseProps, NativeProps {
5
+ /**
6
+ * Alert 标题。
7
+ */
8
+ title?: string | ReactElement;
9
+ /**
10
+ * 描述性文本。
11
+ */
12
+ description?: string;
13
+ /**
14
+ * Alert 类型。
15
+ */
16
+ type?: 'primary' | 'success' | 'warning' | 'error' | 'info';
17
+ /**
18
+ * 是否可关闭。
19
+ */
20
+ closable?: boolean;
21
+ /**
22
+ * 替换关闭按钮的文本。
23
+ */
24
+ closeText?: string;
25
+ /**
26
+ * 是否显示图标。
27
+ */
28
+ showIcon?: boolean;
29
+ /**
30
+ * 是否将内容居中。
31
+ */
32
+ center?: boolean;
33
+ /**
34
+ * 主题样式
35
+ */
36
+ effect?: 'light' | 'dark';
37
+ /**
38
+ * 图标。
39
+ */
40
+ icon?: IconName;
41
+ /**
42
+ * 关闭时的回调函数。
43
+ */
44
+ onClose?: (evt: MouseEvent) => void;
45
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/Card/Card.js CHANGED
@@ -1,6 +1,6 @@
1
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
2
  var _templateObject, _templateObject2, _templateObject3;
3
- var _excluded = ["header", "footer", "bodyStyle", "shadow", "classPrefix"];
3
+ var _excluded = ["header", "footer", "bodyStyle", "shadow", "classPrefix", "className", "style"];
4
4
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
5
5
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
6
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; }
@@ -28,6 +28,8 @@ var Card = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref) {
28
28
  shadow = _props.shadow,
29
29
  _props$classPrefix = _props.classPrefix,
30
30
  classPrefix = _props$classPrefix === void 0 ? 'card' : _props$classPrefix,
31
+ className = _props.className,
32
+ style = _props.style,
31
33
  rest = _objectWithoutProperties(_props, _excluded);
32
34
  var _useClassNames = useClassNames(classPrefix),
33
35
  b = _useClassNames.b,
@@ -35,8 +37,8 @@ var Card = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref) {
35
37
  is = _useClassNames.is;
36
38
  return /*#__PURE__*/React.createElement("div", _extends({
37
39
  ref: ref,
38
- className: classNames(b(), is(_defineProperty({}, "".concat(shadow, "-shadow"), ['always', 'hover'].includes(shadow))), props.className),
39
- style: props.style
40
+ className: classNames(b(), is(_defineProperty({}, "".concat(shadow, "-shadow"), ['always', 'hover'].includes(shadow))), className),
41
+ style: style
40
42
  }, rest), header && /*#__PURE__*/React.createElement("div", {
41
43
  className: e(_templateObject || (_templateObject = _taggedTemplateLiteral(["header"])))
42
44
  }, header), /*#__PURE__*/React.createElement("div", {
@@ -1,4 +1,3 @@
1
- import { Key } from '../Tree';
2
1
  import { CascaderProps, OptionNode } from './typings';
3
2
  export declare const useCascader: (initialData: object[], props: CascaderProps, value: string[] | string[][]) => {
4
3
  /** 最高层级 */
@@ -70,19 +69,6 @@ export declare const useCascader: (initialData: object[], props: CascaderProps,
70
69
  * @returns
71
70
  */
72
71
  getDataType: (level: number) => any;
73
- /**
74
- * 获取扩展key
75
- * @param level 层级
76
- * @returns
77
- */
78
- getExpandedKeys: (level: number) => Key[];
79
- /**
80
- * 设置扩展key
81
- * @param level 层级
82
- * @param keys
83
- * @returns
84
- */
85
- setExpandedKeys: (level: number, keys: Key[]) => void;
86
72
  handleSearch: (searchText: string) => OptionNode[][];
87
73
  resetNodes: () => void;
88
74
  };
@@ -61,7 +61,7 @@ export var useCascader = function useCascader(initialData, props, value) {
61
61
  // 选中的节点组(多选)
62
62
  var checkedNodes = useRef([]);
63
63
  // 树组件扩展keys
64
- var expandKeys = useRef({});
64
+ // const expandKeys = useRef<Record<string, Key[]>>({});
65
65
 
66
66
  /**
67
67
  * 初始化时分离不同层级的数据
@@ -493,25 +493,24 @@ export var useCascader = function useCascader(initialData, props, value) {
493
493
  return lazy && dataTypes[level];
494
494
  }, [dataTypes, lazy]);
495
495
 
496
- /**
497
- * 获取扩展key
498
- * @param level 层级
499
- * @returns
500
- */
501
- var getExpandedKeys = useCallback(function (level) {
502
- var _expandKeys$current;
503
- return (_expandKeys$current = expandKeys.current["level".concat(level)]) !== null && _expandKeys$current !== void 0 ? _expandKeys$current : [];
504
- }, []);
496
+ // /**
497
+ // * 获取扩展key
498
+ // * @param level 层级
499
+ // * @returns
500
+ // */
501
+ // const getExpandedKeys = useCallback((level: number): Key[] => {
502
+ // return expandKeys.current[`level${level}`] ?? [];
503
+ // }, []);
505
504
 
506
- /**
507
- * 设置扩展key
508
- * @param level 层级
509
- * @param keys
510
- * @returns
511
- */
512
- var setExpandedKeys = useCallback(function (level, keys) {
513
- expandKeys.current["level".concat(level)] = keys;
514
- }, []);
505
+ // /**
506
+ // * 设置扩展key
507
+ // * @param level 层级
508
+ // * @param keys
509
+ // * @returns
510
+ // */
511
+ // const setExpandedKeys = useCallback((level: number, keys: Key[]) => {
512
+ // expandKeys.current[`level${level}`] = keys;
513
+ // }, []);
515
514
 
516
515
  /** 搜索 */
517
516
  var handleSearch = useCallback(function (searchText) {
@@ -758,19 +757,21 @@ export var useCascader = function useCascader(initialData, props, value) {
758
757
  * @returns
759
758
  */
760
759
  getDataType: getDataType,
761
- /**
762
- * 获取扩展key
763
- * @param level 层级
764
- * @returns
765
- */
766
- getExpandedKeys: getExpandedKeys,
767
- /**
768
- * 设置扩展key
769
- * @param level 层级
770
- * @param keys
771
- * @returns
772
- */
773
- setExpandedKeys: setExpandedKeys,
760
+ // /**
761
+ // * 获取扩展key
762
+ // * @param level 层级
763
+ // * @returns
764
+ // */
765
+ // getExpandedKeys,
766
+
767
+ // /**
768
+ // * 设置扩展key
769
+ // * @param level 层级
770
+ // * @param keys
771
+ // * @returns
772
+ // */
773
+ // setExpandedKeys,
774
+
774
775
  handleSearch: handleSearch,
775
776
  resetNodes: resetNodes
776
777
  };
@@ -101,6 +101,7 @@ var Checkbox = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref)
101
101
  checked: checked,
102
102
  disabled: disabled
103
103
  }), m(_defineProperty({}, size, size)), className),
104
+ style: props.style,
104
105
  ref: containerRef
105
106
  }, tooltipEvents, {
106
107
  onClick: onClick
@@ -129,10 +130,10 @@ var Checkbox = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(function (props, ref)
129
130
  checked: checked,
130
131
  disabled: disabled
131
132
  }))
132
- }), /*#__PURE__*/React.createElement("span", {
133
+ }), children && /*#__PURE__*/React.createElement("span", {
133
134
  className: e(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["label"])))
134
135
  }, children));
135
- }, [b, checked, children, className, disabled, e, handleChange, htmlInputProps, indeterminate, is, m, name, onCheckboxClick, onClick, prevent, readOnly, size, tooltipEvents, value]);
136
+ }, [b, checked, children, className, disabled, e, handleChange, htmlInputProps, indeterminate, is, m, name, onCheckboxClick, onClick, prevent, props.style, readOnly, size, tooltipEvents, value]);
136
137
  return title ? /*#__PURE__*/React.createElement(Tooltip, {
137
138
  content: title
138
139
  }, main) : main;
@@ -7,8 +7,8 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
7
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
8
  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; }
9
9
  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; }
10
- import React, { useEffect } from 'react';
11
- import { isEmpty, mergeDefaultProps } from "../Util";
10
+ import React from 'react';
11
+ import { mergeDefaultProps } from "../Util";
12
12
  import ConfigProviderContext from "./ConfigProviderContext";
13
13
  var ConfigProvider = function ConfigProvider(props) {
14
14
  props = mergeDefaultProps({
@@ -38,28 +38,6 @@ var ConfigProvider = function ConfigProvider(props) {
38
38
  children = _props.children,
39
39
  locale = _props.locale,
40
40
  values = _objectWithoutProperties(_props, _excluded);
41
- useEffect(function () {
42
- // const configs = localStorage.getItem('__el__config__provider__');
43
- // let msgConfig = null;
44
- // if (isEmpty(configs) || JSON.parse(configs).length === 0) {
45
- // msgConfig = [props.message];
46
- // localStorage.setItem('__el__config__provider__', JSON.stringify([props.message]));
47
- // } else {
48
- // msgConfig = [...JSON.parse(configs), props.message];
49
- // localStorage.setItem('__el__config__provider__', JSON.stringify(msgConfig));
50
- // }
51
-
52
- var msgConfig = localStorage.getItem('__el__message__config__provider__');
53
- if (isEmpty(msgConfig) || Object.keys(JSON.parse(msgConfig)).length === 0) {
54
- localStorage.setItem('__el__message__config__provider__', JSON.stringify(props.message));
55
- } else {
56
- localStorage.setItem('__el__message__config__provider__', JSON.stringify(mergeDefaultProps(JSON.parse(msgConfig), props.message)));
57
- }
58
-
59
- // return () => {
60
- // localStorage.removeItem('__el__message_config__provider');
61
- // };
62
- });
63
41
  return /*#__PURE__*/React.createElement(ConfigProviderContext.Provider, {
64
42
  value: _objectSpread(_objectSpread({}, values), {}, {
65
43
  locale: locale === 'zh-cn' ? 'zh-CN' : locale
@@ -2,7 +2,7 @@ import { createContext, useContext } from 'react';
2
2
  var ConfigProviderContext = /*#__PURE__*/createContext({
3
3
  // message: { max: Infinity },
4
4
  inputNumber: {
5
- controlsPositionRight: false
5
+ controlsPosition: ''
6
6
  },
7
7
  locale: 'en',
8
8
  popper: {}
@@ -39,7 +39,7 @@ export interface ConfigProviderProps extends BaseProps {
39
39
  /** 对数字输入框进行配置 */
40
40
  inputNumber?: {
41
41
  /** 控制按钮位置 */
42
- controlsPositionRight?: boolean;
42
+ controlsPosition?: '' | 'right';
43
43
  max?: number;
44
44
  min?: number;
45
45
  };
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
- declare const Main: React.ForwardRefExoticComponent<import("..").BaseProps<import("../types/common").ComponentChildren> & import("..").NativeProps & React.RefAttributes<HTMLDivElement>>;
2
+ declare const Main: React.ForwardRefExoticComponent<import("..").BaseProps<import("../types/common").ComponentChildren> & import("..").NativeProps<"--el-main-padding"> & React.RefAttributes<HTMLDivElement>>;
3
3
  export default Main;
@@ -20,7 +20,7 @@ export type HeaderProps = BaseProps & NativeProps<'--el-header-padding' | '--el-
20
20
  */
21
21
  height?: string | number;
22
22
  };
23
- export type MainProps = BaseProps & NativeProps;
23
+ export type MainProps = BaseProps & NativeProps<'--el-main-padding'>;
24
24
  export type FooterProps = BaseProps & NativeProps<'--el-footer-padding' | '--el-footer-height'> & {
25
25
  /**
26
26
  * 底栏高度
@@ -14,7 +14,7 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
14
14
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
15
  import classNames from 'classnames';
16
16
  import { addClass, removeClass } from 'dom-lib';
17
- import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useRef } from 'react';
17
+ import React, { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';
18
18
  import { createPortal } from 'react-dom';
19
19
  import Transition from "../Transition/Transition";
20
20
  import { PopupManager, addUnit } from "../Util";
@@ -73,6 +73,9 @@ function InternalElDialog(props, ref) {
73
73
  // const backdropRef = useRef<HTMLDivElement>(null);
74
74
  var overlayRef = useRef(null);
75
75
  var headerRef = useRef(null);
76
+ var nextZIndex = useMemo(function () {
77
+ return zIndex || PopupManager.nextZIndex();
78
+ }, [zIndex]);
76
79
  useDraggable(dialogRef, headerRef, draggable, overflow);
77
80
 
78
81
  /** 获取子组件 */
@@ -146,16 +149,6 @@ function InternalElDialog(props, ref) {
146
149
  });
147
150
  }
148
151
  }, [b, modal, beforeClose, doClose, ref, setVisible, visible, closeOnClickModal]);
149
-
150
- // useEffect(() => {
151
- // document.addEventListener('keydown', keydown, false);
152
- // console.log(PopupManager.zIndex);
153
- // return () => {
154
- // console.log(PopupManager.zIndex);
155
- // document.removeEventListener('keydown', keydown, false);
156
- // };
157
- // }, [keydown]);
158
-
159
152
  useEffect(function () {
160
153
  getInstancesFromChildren(children);
161
154
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -225,7 +218,7 @@ function InternalElDialog(props, ref) {
225
218
  }, /*#__PURE__*/React.createElement("div", {
226
219
  className: classNames(b('overlay', false), props.className),
227
220
  style: {
228
- zIndex: zIndex || PopupManager.nextZIndex()
221
+ zIndex: nextZIndex
229
222
  },
230
223
  ref: wrapperRef
231
224
  }, /*#__PURE__*/React.createElement("div", {
@@ -1,6 +1,6 @@
1
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
2
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19;
3
- var _excluded = ["name", "title", "prefix", "suffix", "prepend", "append", "error", "warning", "debounceInput", "debounceTime", "placeholder", "readOnly", "plain", "classPrefix", "onChange", "onClear", "showPassword", "onFocus", "onBlur", "maxLength", "showWordLimit", "hiddenValue", "defaultValue", "formatter"];
3
+ var _excluded = ["name", "title", "prefix", "suffix", "prepend", "append", "error", "warning", "debounceInput", "debounceTime", "placeholder", "readOnly", "plain", "classPrefix", "onInput", "onChange", "onClear", "showPassword", "onFocus", "onBlur", "maxLength", "showWordLimit", "hiddenValue", "defaultValue", "formatter"];
4
4
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
5
5
  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; }
6
6
  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; }
@@ -16,11 +16,10 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
16
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
17
  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; }
18
18
  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; }
19
- import { useDebounceFn } from 'ahooks';
20
19
  import classNames from 'classnames';
21
- import { addClass, addStyle, hasClass, removeClass } from 'dom-lib';
20
+ import { addStyle, hasClass } from 'dom-lib';
22
21
  import isObject from 'lodash/isObject';
23
- import React, { cloneElement, forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
22
+ import React, { cloneElement, forwardRef, useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';
24
23
  import { useTranslation } from 'react-i18next';
25
24
  import { useConfigProvider } from "../ConfigProvider/ConfigProviderContext";
26
25
  import Icon from "../Icon/Icon";
@@ -59,6 +58,7 @@ function InternalInput(props, ref) {
59
58
  plain = _props.plain,
60
59
  _props$classPrefix = _props.classPrefix,
61
60
  classPrefix = _props$classPrefix === void 0 ? 'input' : _props$classPrefix,
61
+ onInput = _props.onInput,
62
62
  onChange = _props.onChange,
63
63
  onClear = _props.onClear,
64
64
  showPassword = _props.showPassword,
@@ -88,6 +88,10 @@ function InternalInput(props, ref) {
88
88
  _useState2 = _slicedToArray(_useState, 2),
89
89
  type = _useState2[0],
90
90
  setType = _useState2[1];
91
+ var _useState3 = useState(false),
92
+ _useState4 = _slicedToArray(_useState3, 2),
93
+ focused = _useState4[0],
94
+ setFocused = _useState4[1];
91
95
  var disabled = useDisabled(props.disabled);
92
96
  var size = useSize(props.size);
93
97
  var containerRef = useRef(null);
@@ -209,31 +213,38 @@ function InternalInput(props, ref) {
209
213
  /** 输入事件 */
210
214
  var handleInput = useCallback(function (event) {
211
215
  // console.log('handleInput', event.target.value);
212
- if (inputOver.current) {
213
- // 让搜索变成异步的
214
- setValue(event.target.value);
215
- if (clearRef.current && clearable && isNotEmpty(event.target.value)) {
216
- showClear(event.target.value);
217
- } else {
218
- hideClear();
219
- }
220
- onChange === null || onChange === void 0 || onChange(event.target.value, event);
216
+ // if (inputOver.current) {
217
+ // }
218
+ // 让搜索变成异步的
219
+ setValue(event.target.value);
220
+ if (clearRef.current && clearable && isNotEmpty(event.target.value)) {
221
+ showClear(event.target.value);
222
+ } else {
223
+ hideClear();
221
224
  }
225
+ onChange === null || onChange === void 0 || onChange(event.target.value, event);
222
226
  }, [setValue, clearable, onChange, showClear, hideClear]);
223
- var _useDebounceFn = useDebounceFn(handleInput, {
224
- wait: debounceTime
225
- }),
226
- handleDebounceInput = _useDebounceFn.run;
227
- var handleComposition = useCallback(function (event) {
228
- var _type = event.type;
229
- // console.log(_type);
230
- if (_type === 'compositionstart') {
231
- inputOver.current = false;
232
- } else if (_type === 'compositionend') {
233
- inputOver.current = true;
234
- handleInput(event);
235
- }
236
- }, [handleInput]);
227
+ var handleChange = useCallback(function (event) {
228
+ // console.log('handleChange', event.target.value);
229
+ setValue(event.target.value);
230
+ onChange === null || onChange === void 0 || onChange(event.target.value, event);
231
+ }, [setValue, onChange]);
232
+
233
+ // const { run: handleDebounceInput } = useDebounceFn(handleInput, { wait: debounceTime });
234
+
235
+ // const handleComposition = useCallback(
236
+ // (event: any) => {
237
+ // const _type = event.type;
238
+ // // console.log(_type);
239
+ // if (_type === 'compositionstart') {
240
+ // inputOver.current = false;
241
+ // } else if (_type === 'compositionend') {
242
+ // inputOver.current = true;
243
+ // handleInput(event);
244
+ // }
245
+ // },
246
+ // [handleInput],
247
+ // );
237
248
 
238
249
  // useEffect(() => {
239
250
  // const input = inputRef.current;
@@ -242,13 +253,16 @@ function InternalInput(props, ref) {
242
253
  // input.addEventListener('compositionupdate', handleComposition);
243
254
  // input.addEventListener('compositionend', handleComposition);
244
255
  // }
245
- // }, [debounceInput, handleComposition]);
256
+ // }, [handleComposition]);
257
+
258
+ // useEffect(() => {
259
+ // requestAnimationFrame(() => {
260
+ // if (inputRef.current) {
261
+ // inputRef.current.value = formatValue as string;
262
+ // }
263
+ // });
264
+ // }, []);
246
265
 
247
- useEffect(function () {
248
- requestAnimationFrame(function () {
249
- inputRef.current.value = formatValue;
250
- });
251
- }, []);
252
266
  useImperativeHandle(ref, function () {
253
267
  return {
254
268
  ref: containerRef,
@@ -290,6 +304,12 @@ function InternalInput(props, ref) {
290
304
  }
291
305
  return null;
292
306
  }, [type, prefix, e]);
307
+ var inputValue = useMemo(function () {
308
+ if (hiddenValue) {
309
+ return '';
310
+ }
311
+ return focused ? value : formatValue;
312
+ }, [focused, formatValue, hiddenValue, value]);
293
313
  return /*#__PURE__*/React.createElement("div", {
294
314
  ref: containerRef,
295
315
  className: classNames(b(), _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, bm('group', 'prepend'), prepend), bm('group', 'append'), append), m(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["prefix"]))), preffixSlot), m(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["suffix"]))), suffixSlot || clearable), m(size), size), b(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["hidden"]))), type === 'hidden'), is({
@@ -306,7 +326,8 @@ function InternalInput(props, ref) {
306
326
  ref: wrapperRef,
307
327
  className: classNames(e(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["wrapper"]))), is({
308
328
  error: error,
309
- warning: warning
329
+ warning: warning,
330
+ focus: focused
310
331
  })),
311
332
  onMouseEnter: function onMouseEnter() {
312
333
  return showClear(value);
@@ -325,7 +346,7 @@ function InternalInput(props, ref) {
325
346
  type: type,
326
347
  name: name,
327
348
  title: title,
328
- value: hiddenValue ? '' : value,
349
+ value: inputValue,
329
350
  className: e(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["inner"]))),
330
351
  style: props.innerStyle,
331
352
  placeholder: placeholder,
@@ -334,26 +355,30 @@ function InternalInput(props, ref) {
334
355
  disabled: disabled,
335
356
  maxLength: maxLength,
336
357
  onInput: handleInput
358
+ // onChange={handleChange}
337
359
  // onCompositionStart={handleComposition}
338
360
  // onCompositionUpdate={handleComposition}
339
361
  // onCompositionEnd={handleComposition}
340
362
  ,
341
363
  onClick: props.onClick,
342
364
  onFocus: function onFocus(event) {
343
- inputRef.current.value = value;
344
- if (wrapperRef.current) {
345
- addClass(wrapperRef.current, is('focus'));
346
- }
365
+ // inputRef.current.value = value as string;
366
+ // if (wrapperRef.current) {
367
+ // addClass(wrapperRef.current, is('focus'));
368
+ // }
369
+ setFocused(true);
347
370
  showClear(value);
348
371
  _onFocus === null || _onFocus === void 0 || _onFocus.call(_this, event);
349
372
  },
350
373
  onBlur: function onBlur(event) {
351
- inputRef.current.value = formatValue;
352
- if (wrapperRef.current) {
353
- removeClass(wrapperRef.current, is('focus'));
354
- }
374
+ // inputRef.current.value = formatValue as string;
375
+ // if (wrapperRef.current) {
376
+ // removeClass(wrapperRef.current, is('focus'));
377
+ // }
378
+ setFocused(false);
355
379
  hideClear();
356
380
  _onBlur === null || _onBlur === void 0 || _onBlur.call(_this, event);
381
+ // handleChange(event);
357
382
  }
358
383
  }, htmlInputProps)), /*#__PURE__*/React.createElement("span", {
359
384
  ref: clearRef,