rsuite 5.0.1 → 5.2.0

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 (257) hide show
  1. package/Button/styles/index.less +1 -1
  2. package/CHANGELOG.md +50 -0
  3. package/MaskedInput/package.json +7 -0
  4. package/Navbar/styles/index.less +8 -0
  5. package/Picker/styles/index.less +1 -1
  6. package/Picker/styles/mixin.less +1 -1
  7. package/README.md +1 -2
  8. package/Sidenav/styles/index.less +13 -16
  9. package/Slider/styles/index.less +20 -14
  10. package/Toggle/styles/index.less +53 -12
  11. package/Toggle/styles/mixin.less +25 -11
  12. package/Uploader/styles/index.less +10 -1
  13. package/cjs/@types/common.d.ts +8 -2
  14. package/cjs/Affix/Affix.js +3 -3
  15. package/cjs/Animation/Collapse.js +9 -7
  16. package/cjs/Animation/Transition.js +4 -2
  17. package/cjs/AutoComplete/AutoComplete.d.ts +2 -2
  18. package/cjs/AutoComplete/AutoComplete.js +7 -4
  19. package/cjs/Calendar/TimeDropdown.js +5 -3
  20. package/cjs/Cascader/Cascader.d.ts +1 -1
  21. package/cjs/Cascader/Cascader.js +3 -1
  22. package/cjs/Cascader/DropdownMenu.js +6 -5
  23. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  24. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  25. package/cjs/Checkbox/Checkbox.d.ts +3 -3
  26. package/cjs/CheckboxGroup/CheckboxGroupContext.d.ts +1 -1
  27. package/cjs/DOMHelper/index.d.ts +13 -28
  28. package/cjs/DOMHelper/index.js +4 -3
  29. package/cjs/DOMHelper/isElement.d.ts +2 -0
  30. package/cjs/DOMHelper/isElement.js +11 -0
  31. package/cjs/DatePicker/DatePicker.d.ts +3 -3
  32. package/cjs/DatePicker/DatePicker.js +6 -3
  33. package/cjs/DateRangePicker/Calendar.d.ts +1 -1
  34. package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -2
  35. package/cjs/DateRangePicker/DateRangePicker.js +15 -7
  36. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  37. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  38. package/cjs/Dropdown/DropdownItem.d.ts +1 -1
  39. package/cjs/Dropdown/DropdownItem.js +23 -16
  40. package/cjs/Dropdown/DropdownMenu.d.ts +2 -2
  41. package/cjs/Form/Form.d.ts +1 -1
  42. package/cjs/FormControl/FormControl.d.ts +9 -3
  43. package/cjs/FormControl/FormControl.js +6 -2
  44. package/cjs/Input/Input.d.ts +2 -1
  45. package/cjs/InputNumber/InputNumber.js +2 -2
  46. package/cjs/InputPicker/InputPicker.js +4 -3
  47. package/cjs/List/helper/useSortHelper.js +11 -6
  48. package/cjs/MaskedInput/MaskedInput.d.ts +43 -0
  49. package/cjs/MaskedInput/MaskedInput.js +80 -0
  50. package/cjs/MaskedInput/adjustCaretPosition.d.ts +11 -0
  51. package/cjs/MaskedInput/adjustCaretPosition.js +218 -0
  52. package/cjs/MaskedInput/conformToMask.d.ts +8 -0
  53. package/cjs/MaskedInput/conformToMask.js +247 -0
  54. package/cjs/MaskedInput/createTextMaskInputElement.d.ts +7 -0
  55. package/cjs/MaskedInput/createTextMaskInputElement.js +226 -0
  56. package/cjs/MaskedInput/index.d.ts +3 -0
  57. package/cjs/MaskedInput/index.js +11 -0
  58. package/cjs/MaskedInput/types.d.ts +10 -0
  59. package/cjs/{@types/icons.js → MaskedInput/types.js} +0 -0
  60. package/cjs/MaskedInput/utilities.d.ts +7 -0
  61. package/cjs/MaskedInput/utilities.js +47 -0
  62. package/cjs/Menu/MenuItem.d.ts +1 -1
  63. package/cjs/Menu/Menubar.d.ts +1 -1
  64. package/cjs/Message/Message.js +13 -11
  65. package/cjs/Modal/Modal.js +5 -3
  66. package/cjs/Modal/utils.js +7 -5
  67. package/cjs/MultiCascader/MultiCascader.js +3 -1
  68. package/cjs/Notification/Notification.js +6 -3
  69. package/cjs/Overlay/Modal.js +14 -11
  70. package/cjs/Overlay/ModalManager.js +19 -7
  71. package/cjs/Overlay/OverlayTrigger.js +2 -2
  72. package/cjs/Overlay/Position.js +20 -13
  73. package/cjs/Overlay/positionUtils.js +16 -8
  74. package/cjs/Panel/Panel.d.ts +1 -1
  75. package/cjs/Picker/DropdownMenu.js +10 -6
  76. package/cjs/Picker/DropdownMenuCheckItem.d.ts +3 -3
  77. package/cjs/Picker/PickerOverlay.js +5 -3
  78. package/cjs/Picker/PickerToggle.d.ts +6 -0
  79. package/cjs/Picker/PickerToggle.js +17 -8
  80. package/cjs/Picker/SearchBar.d.ts +1 -1
  81. package/cjs/Picker/utils.d.ts +2 -2
  82. package/cjs/Picker/utils.js +1 -1
  83. package/cjs/Radio/Radio.d.ts +1 -1
  84. package/cjs/RadioGroup/RadioGroup.d.ts +1 -1
  85. package/cjs/RangeSlider/RangeSlider.js +9 -5
  86. package/cjs/Rate/Character.js +2 -2
  87. package/cjs/Ripple/Ripple.js +6 -7
  88. package/cjs/SelectPicker/SelectPicker.js +2 -1
  89. package/cjs/Sidenav/SidenavDropdownItem.d.ts +1 -1
  90. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +1 -1
  91. package/cjs/Slider/Graduated.js +1 -1
  92. package/cjs/Slider/Handle.js +10 -5
  93. package/cjs/Slider/ProgressBar.js +1 -1
  94. package/cjs/Slider/Slider.js +9 -5
  95. package/cjs/Table/Table.d.ts +7 -7
  96. package/cjs/TagPicker/index.d.ts +1 -1
  97. package/cjs/Toggle/Toggle.d.ts +5 -6
  98. package/cjs/Toggle/Toggle.js +42 -19
  99. package/cjs/Tree/Tree.d.ts +3 -3
  100. package/cjs/TreePicker/TreeNode.d.ts +1 -1
  101. package/cjs/TreePicker/TreeNode.js +2 -2
  102. package/cjs/TreePicker/TreePicker.d.ts +1 -1
  103. package/cjs/TreePicker/TreePicker.js +2 -1
  104. package/cjs/Uploader/UploadFileItem.d.ts +1 -0
  105. package/cjs/Uploader/UploadFileItem.js +30 -17
  106. package/cjs/Uploader/Uploader.d.ts +6 -4
  107. package/cjs/Uploader/Uploader.js +4 -1
  108. package/cjs/index.d.ts +2 -0
  109. package/cjs/index.js +5 -1
  110. package/cjs/locales/fa_IR.d.ts +105 -0
  111. package/cjs/locales/fa_IR.js +84 -0
  112. package/cjs/locales/index.d.ts +1 -0
  113. package/cjs/locales/index.js +6 -2
  114. package/cjs/utils/BrowserDetection.js +1 -1
  115. package/cjs/utils/index.d.ts +1 -0
  116. package/cjs/utils/index.js +7 -2
  117. package/cjs/utils/previewFile.d.ts +1 -0
  118. package/cjs/utils/previewFile.js +11 -0
  119. package/cjs/utils/scrollTopAnimation.js +5 -5
  120. package/cjs/utils/treeUtils.d.ts +2 -2
  121. package/cjs/utils/useEventListener.js +4 -2
  122. package/cjs/utils/useIsMounted.d.ts +2 -0
  123. package/cjs/utils/useIsMounted.js +22 -0
  124. package/cjs/utils/usePortal.js +2 -2
  125. package/cjs/utils/useRootClose.js +10 -10
  126. package/dist/rsuite-rtl.css +225 -124
  127. package/dist/rsuite-rtl.min.css +1 -1
  128. package/dist/rsuite-rtl.min.css.map +1 -1
  129. package/dist/rsuite.css +225 -124
  130. package/dist/rsuite.js +773 -508
  131. package/dist/rsuite.js.map +1 -1
  132. package/dist/rsuite.min.css +1 -1
  133. package/dist/rsuite.min.css.map +1 -1
  134. package/dist/rsuite.min.js +1 -1
  135. package/dist/rsuite.min.js.map +1 -1
  136. package/esm/@types/common.d.ts +8 -2
  137. package/esm/Affix/Affix.js +1 -1
  138. package/esm/Animation/Collapse.js +2 -1
  139. package/esm/Animation/Transition.js +3 -2
  140. package/esm/AutoComplete/AutoComplete.d.ts +2 -2
  141. package/esm/AutoComplete/AutoComplete.js +8 -5
  142. package/esm/Calendar/TimeDropdown.js +2 -1
  143. package/esm/Cascader/Cascader.d.ts +1 -1
  144. package/esm/Cascader/Cascader.js +3 -1
  145. package/esm/Cascader/DropdownMenu.js +4 -3
  146. package/esm/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  147. package/esm/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  148. package/esm/Checkbox/Checkbox.d.ts +3 -3
  149. package/esm/CheckboxGroup/CheckboxGroupContext.d.ts +1 -1
  150. package/esm/DOMHelper/index.d.ts +13 -28
  151. package/esm/DOMHelper/index.js +2 -3
  152. package/esm/DOMHelper/isElement.d.ts +2 -0
  153. package/esm/DOMHelper/isElement.js +5 -0
  154. package/esm/DatePicker/DatePicker.d.ts +3 -3
  155. package/esm/DatePicker/DatePicker.js +6 -3
  156. package/esm/DateRangePicker/Calendar.d.ts +1 -1
  157. package/esm/DateRangePicker/DateRangePicker.d.ts +2 -2
  158. package/esm/DateRangePicker/DateRangePicker.js +15 -7
  159. package/esm/Disclosure/Disclosure.d.ts +1 -1
  160. package/esm/Disclosure/DisclosureContext.d.ts +1 -1
  161. package/esm/Dropdown/DropdownItem.d.ts +1 -1
  162. package/esm/Dropdown/DropdownItem.js +23 -16
  163. package/esm/Dropdown/DropdownMenu.d.ts +2 -2
  164. package/esm/Form/Form.d.ts +1 -1
  165. package/esm/FormControl/FormControl.d.ts +9 -3
  166. package/esm/FormControl/FormControl.js +6 -2
  167. package/esm/Input/Input.d.ts +2 -1
  168. package/esm/InputNumber/InputNumber.js +2 -2
  169. package/esm/InputPicker/InputPicker.js +3 -2
  170. package/esm/List/helper/useSortHelper.js +8 -4
  171. package/esm/MaskedInput/MaskedInput.d.ts +43 -0
  172. package/esm/MaskedInput/MaskedInput.js +67 -0
  173. package/esm/MaskedInput/adjustCaretPosition.d.ts +11 -0
  174. package/esm/MaskedInput/adjustCaretPosition.js +213 -0
  175. package/esm/MaskedInput/conformToMask.d.ts +8 -0
  176. package/esm/MaskedInput/conformToMask.js +239 -0
  177. package/esm/MaskedInput/createTextMaskInputElement.d.ts +7 -0
  178. package/esm/MaskedInput/createTextMaskInputElement.js +212 -0
  179. package/esm/MaskedInput/index.d.ts +3 -0
  180. package/esm/MaskedInput/index.js +2 -0
  181. package/esm/MaskedInput/types.d.ts +10 -0
  182. package/esm/{@types/icons.js → MaskedInput/types.js} +0 -0
  183. package/esm/MaskedInput/utilities.d.ts +7 -0
  184. package/esm/MaskedInput/utilities.js +38 -0
  185. package/esm/Menu/MenuItem.d.ts +1 -1
  186. package/esm/Menu/Menubar.d.ts +1 -1
  187. package/esm/Message/Message.js +15 -13
  188. package/esm/Modal/Modal.js +3 -2
  189. package/esm/Modal/utils.js +6 -5
  190. package/esm/MultiCascader/MultiCascader.js +3 -1
  191. package/esm/Notification/Notification.js +7 -4
  192. package/esm/Overlay/Modal.js +11 -8
  193. package/esm/Overlay/ModalManager.js +6 -1
  194. package/esm/Overlay/OverlayTrigger.js +1 -1
  195. package/esm/Overlay/Position.js +14 -8
  196. package/esm/Overlay/positionUtils.js +6 -2
  197. package/esm/Panel/Panel.d.ts +1 -1
  198. package/esm/Picker/DropdownMenu.js +3 -1
  199. package/esm/Picker/DropdownMenuCheckItem.d.ts +3 -3
  200. package/esm/Picker/PickerOverlay.js +2 -1
  201. package/esm/Picker/PickerToggle.d.ts +6 -0
  202. package/esm/Picker/PickerToggle.js +14 -6
  203. package/esm/Picker/SearchBar.d.ts +1 -1
  204. package/esm/Picker/utils.d.ts +2 -2
  205. package/esm/Picker/utils.js +1 -1
  206. package/esm/Radio/Radio.d.ts +1 -1
  207. package/esm/RadioGroup/RadioGroup.d.ts +1 -1
  208. package/esm/RangeSlider/RangeSlider.js +4 -2
  209. package/esm/Rate/Character.js +2 -2
  210. package/esm/Ripple/Ripple.js +4 -3
  211. package/esm/SelectPicker/SelectPicker.js +2 -1
  212. package/esm/Sidenav/SidenavDropdownItem.d.ts +1 -1
  213. package/esm/Sidenav/SidenavDropdownMenu.d.ts +1 -1
  214. package/esm/Slider/Graduated.js +1 -1
  215. package/esm/Slider/Handle.js +5 -2
  216. package/esm/Slider/ProgressBar.js +1 -1
  217. package/esm/Slider/Slider.js +4 -2
  218. package/esm/Table/Table.d.ts +7 -7
  219. package/esm/TagPicker/index.d.ts +1 -1
  220. package/esm/Toggle/Toggle.d.ts +5 -6
  221. package/esm/Toggle/Toggle.js +43 -21
  222. package/esm/Tree/Tree.d.ts +3 -3
  223. package/esm/TreePicker/TreeNode.d.ts +1 -1
  224. package/esm/TreePicker/TreeNode.js +1 -1
  225. package/esm/TreePicker/TreePicker.d.ts +1 -1
  226. package/esm/TreePicker/TreePicker.js +2 -1
  227. package/esm/Uploader/UploadFileItem.d.ts +1 -0
  228. package/esm/Uploader/UploadFileItem.js +30 -17
  229. package/esm/Uploader/Uploader.d.ts +6 -4
  230. package/esm/Uploader/Uploader.js +4 -1
  231. package/esm/index.d.ts +2 -0
  232. package/esm/index.js +1 -0
  233. package/esm/locales/fa_IR.d.ts +105 -0
  234. package/esm/locales/fa_IR.js +74 -0
  235. package/esm/locales/index.d.ts +1 -0
  236. package/esm/locales/index.js +2 -1
  237. package/esm/utils/BrowserDetection.js +1 -1
  238. package/esm/utils/index.d.ts +1 -0
  239. package/esm/utils/index.js +2 -1
  240. package/esm/utils/previewFile.d.ts +1 -0
  241. package/esm/utils/previewFile.js +9 -0
  242. package/esm/utils/scrollTopAnimation.js +2 -2
  243. package/esm/utils/treeUtils.d.ts +2 -2
  244. package/esm/utils/useEventListener.js +1 -1
  245. package/esm/utils/useIsMounted.d.ts +2 -0
  246. package/esm/utils/useIsMounted.js +16 -0
  247. package/esm/utils/usePortal.js +2 -2
  248. package/esm/utils/useRootClose.js +8 -6
  249. package/locales/fa_IR/package.json +7 -0
  250. package/package.json +6 -8
  251. package/styles/color-modes/dark.less +1 -0
  252. package/styles/color-modes/high-contrast.less +1 -0
  253. package/styles/color-modes/light.less +3 -0
  254. package/styles/plugins/palette.js +10 -1
  255. package/styles/variables.less +3 -1
  256. package/cjs/@types/icons.d.ts +0 -1
  257. package/esm/@types/icons.d.ts +0 -1
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { WithAsProps, TypeAttributes } from '../@types/common';
2
+ import { WithAsProps, TypeAttributes, RsRefForwardingComponent } from '../@types/common';
3
3
  import { ToggleLocale } from '../locales';
4
4
  export interface ToggleProps extends WithAsProps {
5
5
  /** Wheather to disabled toggle */
@@ -8,6 +8,8 @@ export interface ToggleProps extends WithAsProps {
8
8
  plaintext?: boolean;
9
9
  /** Make the control readonly */
10
10
  readOnly?: boolean;
11
+ /** Whether the checked state is being updated */
12
+ loading?: boolean;
11
13
  /** Checked(Controlled) */
12
14
  checked?: boolean;
13
15
  /** Default checked */
@@ -21,10 +23,7 @@ export interface ToggleProps extends WithAsProps {
21
23
  /** Custom locale */
22
24
  locale?: ToggleLocale;
23
25
  /** Callback function when state changes */
24
- onChange?: (checked: boolean, event: React.SyntheticEvent) => void;
26
+ onChange?: (checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
25
27
  }
26
- /**
27
- * fixme: Should contain an input[type=checkbox]
28
- */
29
- declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAttributes<unknown>>;
28
+ declare const Toggle: RsRefForwardingComponent<'label', ToggleProps>;
30
29
  export default Toggle;
@@ -1,30 +1,31 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- import React, { useCallback } from 'react';
3
+ import React, { useCallback, useRef } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import { useClassNames, useControlled, useCustom } from '../utils';
6
6
  import Plaintext from '../Plaintext';
7
-
8
- /**
9
- * fixme: Should contain an input[type=checkbox]
10
- */
7
+ import Loader from '../Loader';
11
8
  var Toggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
12
9
  var _props$as = props.as,
13
10
  Component = _props$as === void 0 ? 'span' : _props$as,
14
11
  disabled = props.disabled,
15
12
  readOnly = props.readOnly,
13
+ _props$loading = props.loading,
14
+ loading = _props$loading === void 0 ? false : _props$loading,
16
15
  plaintext = props.plaintext,
17
16
  className = props.className,
18
17
  checkedChildren = props.checkedChildren,
19
18
  unCheckedChildren = props.unCheckedChildren,
20
19
  _props$classPrefix = props.classPrefix,
21
- classPrefix = _props$classPrefix === void 0 ? 'btn-toggle' : _props$classPrefix,
20
+ classPrefix = _props$classPrefix === void 0 ? 'toggle' : _props$classPrefix,
22
21
  checkedProp = props.checked,
23
22
  defaultChecked = props.defaultChecked,
24
23
  size = props.size,
25
24
  localeProp = props.locale,
26
25
  onChange = props.onChange,
27
- rest = _objectWithoutPropertiesLoose(props, ["as", "disabled", "readOnly", "plaintext", "className", "checkedChildren", "unCheckedChildren", "classPrefix", "checked", "defaultChecked", "size", "locale", "onChange"]);
26
+ rest = _objectWithoutPropertiesLoose(props, ["as", "disabled", "readOnly", "loading", "plaintext", "className", "checkedChildren", "unCheckedChildren", "classPrefix", "checked", "defaultChecked", "size", "locale", "onChange"]);
27
+
28
+ var inputRef = useRef();
28
29
 
29
30
  var _useControlled = useControlled(checkedProp, defaultChecked),
30
31
  checked = _useControlled[0],
@@ -40,46 +41,67 @@ var Toggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
40
41
 
41
42
  var classes = merge(className, withClassPrefix(size, {
42
43
  checked: checked,
43
- disabled: disabled
44
+ disabled: disabled,
45
+ loading: loading
44
46
  }));
45
47
  var inner = checked ? checkedChildren : unCheckedChildren;
46
48
  var label = checked ? locale.on : locale.off;
47
- var handleChange = useCallback(function (event) {
49
+ var handleInputChange = useCallback(function (e) {
48
50
  if (disabled || readOnly) {
49
51
  return;
50
52
  }
51
53
 
52
- setChecked(!checked);
53
- onChange === null || onChange === void 0 ? void 0 : onChange(!checked, event);
54
- }, [checked, disabled, onChange, readOnly, setChecked]);
54
+ var checked = e.target.checked;
55
+ setChecked(checked);
56
+ onChange === null || onChange === void 0 ? void 0 : onChange(checked, e);
57
+ }, [disabled, readOnly, setChecked, onChange]);
55
58
 
56
59
  if (plaintext) {
57
60
  return /*#__PURE__*/React.createElement(Plaintext, null, inner || label);
58
61
  }
59
62
 
60
- return /*#__PURE__*/React.createElement(Component, _extends({
63
+ return /*#__PURE__*/React.createElement("label", _extends({
64
+ ref: ref,
65
+ className: classes
66
+ }, rest), /*#__PURE__*/React.createElement("input", {
67
+ ref: inputRef,
68
+ type: "checkbox",
69
+ checked: checked,
70
+ disabled: disabled,
71
+ readOnly: readOnly,
72
+ onChange: handleInputChange,
73
+ className: prefix('input'),
61
74
  role: "switch",
62
75
  "aria-checked": checked,
63
76
  "aria-disabled": disabled,
64
77
  "aria-label": typeof inner === 'string' ? inner : label,
65
- tabIndex: -1
66
- }, rest, {
67
- ref: ref,
68
- className: classes,
69
- onClick: handleChange
70
- }), /*#__PURE__*/React.createElement("span", {
78
+ "aria-busy": loading || undefined
79
+ }), /*#__PURE__*/React.createElement(Component, {
80
+ className: prefix('presentation')
81
+ }, /*#__PURE__*/React.createElement("span", {
71
82
  className: prefix('inner')
72
- }, inner));
83
+ }, inner), loading && /*#__PURE__*/React.createElement(Loader, {
84
+ className: prefix('loader')
85
+ })));
73
86
  });
74
87
  Toggle.displayName = 'Toggle';
75
88
  Toggle.propTypes = {
76
89
  disabled: PropTypes.bool,
90
+ readOnly: PropTypes.bool,
91
+ plaintext: PropTypes.bool,
77
92
  checked: PropTypes.bool,
78
93
  defaultChecked: PropTypes.bool,
79
94
  checkedChildren: PropTypes.node,
80
95
  unCheckedChildren: PropTypes.node,
96
+ loading: PropTypes.bool,
81
97
  classPrefix: PropTypes.string,
82
98
  className: PropTypes.string,
83
- onChange: PropTypes.func
99
+ onChange: PropTypes.func,
100
+ as: PropTypes.elementType,
101
+ size: PropTypes.oneOf(['sm', 'md', 'lg']),
102
+ locale: PropTypes.shape({
103
+ on: PropTypes.string,
104
+ off: PropTypes.string
105
+ })
84
106
  };
85
107
  export default Toggle;
@@ -23,7 +23,7 @@ export interface TreeDragProps<ItemDataType = Record<string, any>> {
23
23
  /** Whether the node can be dragged */
24
24
  draggable?: boolean;
25
25
  /** Called when scrolling */
26
- onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
26
+ onScroll?: (event: React.SyntheticEvent) => void;
27
27
  /** Called when node drag start */
28
28
  onDragStart?: (nodeData: ItemDataType, e: React.DragEvent) => void;
29
29
  /** Called when node drag enter */
@@ -61,7 +61,7 @@ export interface TreeBaseProps<ValueType = string | number, ItemDataType = Recor
61
61
  /** Callback function for data change */
62
62
  onExpand?: (expandItemValues: ItemDataType[], activeNode: ItemDataType, concat: (data: ItemDataType[], children: React.ReactNode) => ItemDataType[]) => void;
63
63
  /** Callback function after selecting tree node */
64
- onSelect?: (activeNode: ItemDataType, value: ValueType, event: React.SyntheticEvent<any>) => void;
64
+ onSelect?: (activeNode: ItemDataType, value: ValueType, event: React.SyntheticEvent) => void;
65
65
  /** Custom Render tree Node */
66
66
  renderTreeNode?: (nodeData: ItemDataType) => React.ReactNode;
67
67
  /** Custom Render icon */
@@ -69,7 +69,7 @@ export interface TreeBaseProps<ValueType = string | number, ItemDataType = Recor
69
69
  /** callback fired when search */
70
70
  onSearch?: (searchKeyword: string, event: React.KeyboardEvent<HTMLInputElement>) => void;
71
71
  /** Called when clean */
72
- onClean?: (event: React.SyntheticEvent<any>) => void;
72
+ onClean?: (event: React.SyntheticEvent) => void;
73
73
  /** Custom search rules. */
74
74
  searchBy?: (keyword: string, label: React.ReactNode, item: any) => boolean;
75
75
  /** Customizing the Rendering Menu list */
@@ -22,7 +22,7 @@ export interface TreeNodeProps extends WithAsProps {
22
22
  classPrefix?: string;
23
23
  style?: React.CSSProperties;
24
24
  onExpand?: (nodeData: any) => void;
25
- onSelect?: (nodeData: any, event: React.SyntheticEvent<any>) => void;
25
+ onSelect?: (nodeData: any, event: React.SyntheticEvent) => void;
26
26
  onRenderTreeIcon?: (nodeData: any) => React.ReactNode;
27
27
  onRenderTreeNode?: (nodeData: any) => React.ReactNode;
28
28
  onDragStart?: (data: any, event: React.DragEvent<any>) => void;
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import React, { forwardRef, useCallback, useContext } from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { hasClass } from 'dom-lib';
5
+ import hasClass from 'dom-lib/hasClass';
6
6
  import ArrowDown from '@rsuite/icons/legacy/ArrowDown';
7
7
  import Spinner from '@rsuite/icons/legacy/Spinner';
8
8
  import TreeContext from '../Tree/TreeContext';
@@ -22,7 +22,7 @@ export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, I
22
22
  /** Custom render selected items */
23
23
  renderValue?: (value: T, selectedItems: ItemDataType, selectedElement: React.ReactNode) => React.ReactNode;
24
24
  /** Called when scrolling */
25
- onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
25
+ onScroll?: (event: React.SyntheticEvent) => void;
26
26
  }
27
27
  declare const TreePicker: PickerComponent<TreePickerProps>;
28
28
  export default TreePicker;
@@ -709,7 +709,8 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
709
709
  classPrefix: classPrefix,
710
710
  appearance: appearance,
711
711
  hasValue: hasValidValue,
712
- name: 'tree'
712
+ name: 'tree',
713
+ cleanable: cleanable
713
714
  })),
714
715
  classes = _usePickerClassName[0],
715
716
  usedClassNamePropKeys = _usePickerClassName[1];
@@ -13,6 +13,7 @@ export interface UploadFileItemProps extends WithAsProps {
13
13
  allowReupload?: boolean;
14
14
  locale?: UploaderLocale;
15
15
  renderFileInfo?: (file: FileType, fileElement: React.ReactNode) => React.ReactNode;
16
+ renderThumbnail?: (file: FileType, thumbnail: React.ReactNode) => React.ReactNode;
16
17
  onCancel?: (fileKey: number | string, event: React.MouseEvent) => void;
17
18
  onPreview?: (file: FileType, event: React.MouseEvent) => void;
18
19
  onReupload?: (file: FileType, event: React.MouseEvent) => void;
@@ -52,10 +52,11 @@ var UploadFileItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
52
52
  maxPreviewFileSize = _props$maxPreviewFile === void 0 ? 1024 * 1024 * 5 : _props$maxPreviewFile,
53
53
  locale = props.locale,
54
54
  renderFileInfo = props.renderFileInfo,
55
+ renderThumbnail = props.renderThumbnail,
55
56
  onPreview = props.onPreview,
56
57
  onCancel = props.onCancel,
57
58
  onReupload = props.onReupload,
58
- rest = _objectWithoutPropertiesLoose(props, ["as", "disabled", "allowReupload", "file", "classPrefix", "listType", "className", "removable", "maxPreviewFileSize", "locale", "renderFileInfo", "onPreview", "onCancel", "onReupload"]);
59
+ rest = _objectWithoutPropertiesLoose(props, ["as", "disabled", "allowReupload", "file", "classPrefix", "listType", "className", "removable", "maxPreviewFileSize", "locale", "renderFileInfo", "renderThumbnail", "onPreview", "onCancel", "onReupload"]);
59
60
 
60
61
  var _useClassNames = useClassNames(classPrefix),
61
62
  merge = _useClassNames.merge,
@@ -80,7 +81,8 @@ var UploadFileItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
80
81
 
81
82
  if (!~['picture-text', 'picture'].indexOf(listType)) {
82
83
  return;
83
- }
84
+ } // The thumbnail file size cannot be larger than the preset value.
85
+
84
86
 
85
87
  if (!file.blobFile || (file === null || file === void 0 ? void 0 : (_file$blobFile = file.blobFile) === null || _file$blobFile === void 0 ? void 0 : _file$blobFile.size) > maxPreviewFileSize) {
86
88
  return;
@@ -142,18 +144,17 @@ var UploadFileItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
142
144
  };
143
145
 
144
146
  var renderPreview = function renderPreview() {
145
- if (previewImage) {
146
- return /*#__PURE__*/React.createElement("div", {
147
- className: prefix('preview')
148
- }, /*#__PURE__*/React.createElement("img", {
149
- role: "presentation",
150
- src: previewImage,
151
- alt: file.name,
152
- onClick: handlePreview
153
- }));
154
- }
155
-
156
- return null;
147
+ var thumbnail = previewImage ? /*#__PURE__*/React.createElement("img", {
148
+ role: "presentation",
149
+ src: previewImage,
150
+ alt: file.name,
151
+ onClick: handlePreview
152
+ }) : /*#__PURE__*/React.createElement(Attachment, {
153
+ className: prefix('icon')
154
+ });
155
+ return /*#__PURE__*/React.createElement("div", {
156
+ className: prefix('preview')
157
+ }, renderThumbnail ? renderThumbnail(file, thumbnail) : thumbnail);
157
158
  };
158
159
  /**
159
160
  * Render the loading state.
@@ -165,11 +166,22 @@ var UploadFileItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
165
166
  var classes = prefix('icon-wrapper', {
166
167
  'icon-loading': uploading
167
168
  });
169
+
170
+ if (uploading) {
171
+ return /*#__PURE__*/React.createElement("div", {
172
+ className: classes
173
+ }, /*#__PURE__*/React.createElement("i", {
174
+ className: prefix('icon')
175
+ }));
176
+ }
177
+
178
+ if (listType === 'picture' || listType === 'picture-text') {
179
+ return null;
180
+ }
181
+
168
182
  return /*#__PURE__*/React.createElement("div", {
169
183
  className: classes
170
- }, uploading ? /*#__PURE__*/React.createElement("i", {
171
- className: prefix('icon')
172
- }) : /*#__PURE__*/React.createElement(Attachment, {
184
+ }, /*#__PURE__*/React.createElement(Attachment, {
173
185
  className: prefix('icon')
174
186
  }));
175
187
  };
@@ -272,6 +284,7 @@ UploadFileItem.propTypes = {
272
284
  removable: PropTypes.bool,
273
285
  allowReupload: PropTypes.bool,
274
286
  renderFileInfo: PropTypes.func,
287
+ renderThumbnail: PropTypes.func,
275
288
  onCancel: PropTypes.func,
276
289
  onPreview: PropTypes.func,
277
290
  onReupload: PropTypes.func
@@ -82,17 +82,19 @@ export interface UploaderProps extends WithAsProps {
82
82
  /** In the file list, for uploading failed files, click the callback function to upload */
83
83
  onReupload?: (file: FileType) => void;
84
84
  /** In the file list, click the callback function for the uploaded file */
85
- onPreview?: (file: FileType, event: React.SyntheticEvent<any>) => void;
85
+ onPreview?: (file: FileType, event: React.SyntheticEvent) => void;
86
86
  /** Upload callback function with erro */
87
- onError?: (status: any, file: FileType, event: React.SyntheticEvent<any>, xhr: XMLHttpRequest) => void;
87
+ onError?: (status: any, file: FileType, event: React.SyntheticEvent, xhr: XMLHttpRequest) => void;
88
88
  /** callback function after successful upload */
89
- onSuccess?: (response: any, file: FileType, event: React.SyntheticEvent<any>, xhr: XMLHttpRequest) => void;
89
+ onSuccess?: (response: any, file: FileType, event: React.SyntheticEvent, xhr: XMLHttpRequest) => void;
90
90
  /** Callback functions that upload progress change */
91
- onProgress?: (percent: number, file: FileType, event: React.SyntheticEvent<any>, xhr: XMLHttpRequest) => void;
91
+ onProgress?: (percent: number, file: FileType, event: React.SyntheticEvent, xhr: XMLHttpRequest) => void;
92
92
  /** In the file list, click the callback function to delete a file */
93
93
  onRemove?: (file: FileType) => void;
94
94
  /** Custom render file information */
95
95
  renderFileInfo?: (file: FileType, fileElement: React.ReactNode) => React.ReactNode;
96
+ /** Custom render thumbnail */
97
+ renderThumbnail?: (file: FileType, thumbnail: React.ReactNode) => React.ReactNode;
96
98
  }
97
99
  export declare type FileStatusType = 'inited' | 'uploading' | 'error' | 'finished';
98
100
  export interface FileProgressType {
@@ -136,13 +136,14 @@ var Uploader = /*#__PURE__*/React.forwardRef(function (props, ref) {
136
136
  shouldUpload = props.shouldUpload,
137
137
  shouldQueueUpdate = props.shouldQueueUpdate,
138
138
  renderFileInfo = props.renderFileInfo,
139
+ renderThumbnail = props.renderThumbnail,
139
140
  onPreview = props.onPreview,
140
141
  onChange = props.onChange,
141
142
  onSuccess = props.onSuccess,
142
143
  onError = props.onError,
143
144
  onProgress = props.onProgress,
144
145
  onReupload = props.onReupload,
145
- rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "listType", "defaultFileList", "fileList", "fileListVisible", "locale", "style", "draggable", "name", "multiple", "disabled", "readOnly", "plaintext", "accept", "children", "toggleAs", "removable", "disabledFileItem", "maxPreviewFileSize", "autoUpload", "action", "headers", "withCredentials", "disableMultipart", "timeout", "data", "onRemove", "onUpload", "shouldUpload", "shouldQueueUpdate", "renderFileInfo", "onPreview", "onChange", "onSuccess", "onError", "onProgress", "onReupload"]);
146
+ rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "listType", "defaultFileList", "fileList", "fileListVisible", "locale", "style", "draggable", "name", "multiple", "disabled", "readOnly", "plaintext", "accept", "children", "toggleAs", "removable", "disabledFileItem", "maxPreviewFileSize", "autoUpload", "action", "headers", "withCredentials", "disableMultipart", "timeout", "data", "onRemove", "onUpload", "shouldUpload", "shouldQueueUpdate", "renderFileInfo", "renderThumbnail", "onPreview", "onChange", "onSuccess", "onError", "onProgress", "onReupload"]);
146
147
 
147
148
  var _useClassNames = useClassNames(classPrefix),
148
149
  merge = _useClassNames.merge,
@@ -401,6 +402,7 @@ var Uploader = /*#__PURE__*/React.forwardRef(function (props, ref) {
401
402
  onReupload: handleReupload,
402
403
  onCancel: handleRemoveFile,
403
404
  renderFileInfo: renderFileInfo,
405
+ renderThumbnail: renderThumbnail,
404
406
  removable: removable && !readOnly && !plaintext,
405
407
  allowReupload: !readOnly && !plaintext
406
408
  });
@@ -458,6 +460,7 @@ Uploader.propTypes = {
458
460
  style: PropTypes.object,
459
461
  toggleAs: PropTypes.elementType,
460
462
  renderFileInfo: PropTypes.func,
463
+ renderThumbnail: PropTypes.func,
461
464
  removable: PropTypes.bool,
462
465
  fileListVisible: PropTypes.bool,
463
466
  draggable: PropTypes.bool,
package/esm/index.d.ts CHANGED
@@ -54,6 +54,8 @@ export { default as Form } from './Form';
54
54
  export type { FormProps, FormGroupProps, FormErrorMessageProps, FormControlLabelProps, FormHelpTextProps, FormControlProps } from './Form';
55
55
  export { default as Input } from './Input';
56
56
  export type { InputProps } from './Input';
57
+ export { default as MaskedInput } from './MaskedInput';
58
+ export type { MaskedInputProps } from './MaskedInput';
57
59
  export { default as InputNumber } from './InputNumber';
58
60
  export type { InputNumberProps } from './InputNumber';
59
61
  export { default as InputGroup } from './InputGroup';
package/esm/index.js CHANGED
@@ -29,6 +29,7 @@ export { default as Steps } from './Steps';
29
29
  export { default as Toggle } from './Toggle';
30
30
  export { default as Form } from './Form';
31
31
  export { default as Input } from './Input';
32
+ export { default as MaskedInput } from './MaskedInput';
32
33
  export { default as InputNumber } from './InputNumber';
33
34
  export { default as InputGroup } from './InputGroup';
34
35
  export { default as Checkbox } from './Checkbox';
@@ -0,0 +1,105 @@
1
+ declare const _default: {
2
+ common: {
3
+ loading: string;
4
+ emptyMessage: string;
5
+ };
6
+ Plaintext: {
7
+ unfilled: string;
8
+ notSelected: string;
9
+ notUploaded: string;
10
+ };
11
+ Pagination: {
12
+ more: string;
13
+ prev: string;
14
+ next: string;
15
+ first: string;
16
+ last: string;
17
+ limit: string;
18
+ total: string;
19
+ skip: string;
20
+ };
21
+ Calendar: {
22
+ sunday: string;
23
+ monday: string;
24
+ tuesday: string;
25
+ wednesday: string;
26
+ thursday: string;
27
+ friday: string;
28
+ saturday: string;
29
+ ok: string;
30
+ today: string;
31
+ yesterday: string;
32
+ hours: string;
33
+ minutes: string;
34
+ seconds: string;
35
+ formattedMonthPattern: string;
36
+ formattedDayPattern: string;
37
+ dateLocale: any;
38
+ };
39
+ DatePicker: {
40
+ sunday: string;
41
+ monday: string;
42
+ tuesday: string;
43
+ wednesday: string;
44
+ thursday: string;
45
+ friday: string;
46
+ saturday: string;
47
+ ok: string;
48
+ today: string;
49
+ yesterday: string;
50
+ hours: string;
51
+ minutes: string;
52
+ seconds: string;
53
+ formattedMonthPattern: string;
54
+ formattedDayPattern: string;
55
+ dateLocale: any;
56
+ };
57
+ DateRangePicker: {
58
+ last7Days: string;
59
+ sunday: string;
60
+ monday: string;
61
+ tuesday: string;
62
+ wednesday: string;
63
+ thursday: string;
64
+ friday: string;
65
+ saturday: string;
66
+ ok: string;
67
+ today: string;
68
+ yesterday: string;
69
+ hours: string;
70
+ minutes: string;
71
+ seconds: string;
72
+ formattedMonthPattern: string;
73
+ formattedDayPattern: string;
74
+ dateLocale: any;
75
+ };
76
+ Picker: {
77
+ noResultsText: string;
78
+ placeholder: string;
79
+ searchPlaceholder: string;
80
+ checkAll: string;
81
+ };
82
+ InputPicker: {
83
+ newItem: string;
84
+ createOption: string;
85
+ };
86
+ Uploader: {
87
+ inited: string;
88
+ progress: string;
89
+ error: string;
90
+ complete: string;
91
+ emptyFile: string;
92
+ upload: string;
93
+ };
94
+ CloseButton: {
95
+ closeLabel: string;
96
+ };
97
+ Breadcrumb: {
98
+ expandText: string;
99
+ };
100
+ Toggle: {
101
+ on: string;
102
+ off: string;
103
+ };
104
+ };
105
+ export default _default;
@@ -0,0 +1,74 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import faIR from 'date-fns/locale/fa-IR';
3
+ var Calendar = {
4
+ sunday: 'ی',
5
+ monday: 'د',
6
+ tuesday: 'س',
7
+ wednesday: 'چ',
8
+ thursday: 'پ',
9
+ friday: 'ج',
10
+ saturday: 'ش',
11
+ ok: 'تایید',
12
+ today: 'امروز',
13
+ yesterday: 'دیروز',
14
+ hours: 'ساعت',
15
+ minutes: 'دقیقه',
16
+ seconds: 'ثانیه',
17
+ formattedMonthPattern: 'MMM, yyyy',
18
+ formattedDayPattern: 'MMM dd, yyyy',
19
+ dateLocale: faIR
20
+ };
21
+ export default {
22
+ common: {
23
+ loading: 'در حال بارگذاری...',
24
+ emptyMessage: 'داده ایی پیدا نشد'
25
+ },
26
+ Plaintext: {
27
+ unfilled: 'خالی',
28
+ notSelected: 'انتخاب نشده',
29
+ notUploaded: 'اپلود نشده'
30
+ },
31
+ Pagination: {
32
+ more: 'بیشتر',
33
+ prev: 'قبلی',
34
+ next: 'بعدی',
35
+ first: 'اول',
36
+ last: 'اخر',
37
+ limit: '{0} / صفحه',
38
+ total: 'مجموع ردیف ها: {0}',
39
+ skip: 'برو به{0}'
40
+ },
41
+ Calendar: Calendar,
42
+ DatePicker: _extends({}, Calendar),
43
+ DateRangePicker: _extends({}, Calendar, {
44
+ last7Days: '7 روز اخر'
45
+ }),
46
+ Picker: {
47
+ noResultsText: 'نتیجه ایی یافت نشد',
48
+ placeholder: 'انتخاب',
49
+ searchPlaceholder: 'جستجو',
50
+ checkAll: 'همه'
51
+ },
52
+ InputPicker: {
53
+ newItem: 'گزینه جدید',
54
+ createOption: 'ساخت گزینه "{0}"'
55
+ },
56
+ Uploader: {
57
+ inited: 'اولیه',
58
+ progress: 'در حال اپلود',
59
+ error: 'مشکل',
60
+ complete: 'تمام شد',
61
+ emptyFile: 'خالی',
62
+ upload: 'اپلود'
63
+ },
64
+ CloseButton: {
65
+ closeLabel: 'بستن'
66
+ },
67
+ Breadcrumb: {
68
+ expandText: 'نمایش مسیر'
69
+ },
70
+ Toggle: {
71
+ on: 'باز کردن',
72
+ off: 'بستن'
73
+ }
74
+ };
@@ -14,6 +14,7 @@ export { default as ruRU } from './ru_RU';
14
14
  export { default as svSE } from './sv_SE';
15
15
  export { default as zhCN } from './zh_CN';
16
16
  export { default as zhTw } from './zh_TW';
17
+ export { default as faIR } from './fa_IR';
17
18
  declare type PickKeys<T> = {
18
19
  [keys in keyof T]?: T[keys];
19
20
  };
@@ -12,4 +12,5 @@ export { default as ptBR } from './pt_BR';
12
12
  export { default as ruRU } from './ru_RU';
13
13
  export { default as svSE } from './sv_SE';
14
14
  export { default as zhCN } from './zh_CN';
15
- export { default as zhTw } from './zh_TW';
15
+ export { default as zhTw } from './zh_TW';
16
+ export { default as faIR } from './fa_IR';
@@ -1,5 +1,5 @@
1
1
  // from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
2
- import canUseDOM from 'dom-lib/lib/query/canUseDOM'; // Internet Explorer 6-11
2
+ import canUseDOM from 'dom-lib/canUseDOM'; // Internet Explorer 6-11
3
3
 
4
4
  export var isIE = function isIE() {
5
5
  return canUseDOM && /MSIE |Trident\/|Edge\//.test(window.navigator.userAgent);
@@ -39,3 +39,4 @@ export { default as useEventCallback } from './useEventCallback';
39
39
  export { default as useUpdatedRef } from './useUpdatedRef';
40
40
  export { default as useWillUnmount } from './useWillUnmount';
41
41
  export { default as useUpdateEffect } from './useUpdateEffect';
42
+ export { default as useIsMounted } from './useIsMounted';
@@ -41,4 +41,5 @@ export { default as stringToObject } from './stringToObject';
41
41
  export { default as useEventCallback } from './useEventCallback';
42
42
  export { default as useUpdatedRef } from './useUpdatedRef';
43
43
  export { default as useWillUnmount } from './useWillUnmount';
44
- export { default as useUpdateEffect } from './useUpdateEffect';
44
+ export { default as useUpdateEffect } from './useUpdateEffect';
45
+ export { default as useIsMounted } from './useIsMounted';
@@ -1,2 +1,3 @@
1
+ export declare function isImage(file: any): boolean;
1
2
  declare const _default: (file: File, callback: (result: string | ArrayBuffer) => void) => void;
2
3
  export default _default;
@@ -1,4 +1,13 @@
1
+ // https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types
2
+ var MIME = ['image/apng', 'image/avif', 'image/gif', 'image/jpeg', 'image/png', 'image/svg+xml', 'image/webp'];
3
+ export function isImage(file) {
4
+ return MIME.includes(file === null || file === void 0 ? void 0 : file.type);
5
+ }
1
6
  export default (function (file, callback) {
7
+ if (!isImage(file)) {
8
+ return callback(null);
9
+ }
10
+
2
11
  var reader = new FileReader();
3
12
 
4
13
  reader.onloadend = function () {
@@ -1,5 +1,5 @@
1
- import { scrollTop } from 'dom-lib';
2
- import requestAnimationFramePolyfill from 'dom-lib/lib/animation/requestAnimationFramePolyfill';
1
+ import scrollTop from 'dom-lib/scrollTop';
2
+ import requestAnimationFramePolyfill from 'dom-lib/requestAnimationFramePolyfill';
3
3
  export default function scrollTopAnimation(target, nextTop, animation, callback) {
4
4
  if (animation === void 0) {
5
5
  animation = true;