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
@@ -80,12 +80,18 @@ export interface PickerBaseProps<LocaleType = any> extends WithAsProps, Animatio
80
80
  /** Custom render extra footer */
81
81
  renderExtraFooter?: () => React.ReactNode;
82
82
  }
83
- export interface FormControlBaseProps<ValueType = any> {
83
+ export interface FormControlBaseProps<ValueType = React.InputHTMLAttributes<HTMLInputElement>['value']> {
84
+ /** Name of the form field */
85
+ name?: string;
84
86
  /** Initial value */
85
87
  defaultValue?: ValueType;
86
88
  /** Current value of the component. Creates a controlled component */
87
89
  value?: ValueType;
88
- /** Called after the value has been changed */
90
+ /**
91
+ * Called after the value has been changed
92
+ * todo Override event as React.ChangeEvent in components where onChange is delegated
93
+ * to an underlying <input> element
94
+ */
89
95
  onChange?: (value: ValueType, event: React.SyntheticEvent) => void;
90
96
  /** Set the component to be disabled and cannot be entered */
91
97
  disabled?: boolean;
@@ -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, { useCallback, useEffect, useRef, useState } from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { getOffset } from 'dom-lib';
5
+ import getOffset from 'dom-lib/getOffset';
6
6
  import { mergeRefs, useClassNames, useElementResize, useEventListener } from '../utils';
7
7
 
8
8
  /**
@@ -2,7 +2,8 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import React, { useCallback } from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { getStyle, addStyle } from 'dom-lib';
5
+ import getStyle from 'dom-lib/getStyle';
6
+ import addStyle from 'dom-lib/addStyle';
6
7
  import get from 'lodash/get';
7
8
  import capitalize from 'lodash/capitalize';
8
9
  import Transition, { transitionPropTypes } from './Transition';
@@ -3,7 +3,8 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { on, transition } from 'dom-lib';
6
+ import getTransitionEnd from 'dom-lib/getTransitionEnd';
7
+ import on from 'dom-lib/on';
7
8
  import classNames from 'classnames';
8
9
  import isFunction from 'lodash/isFunction';
9
10
  import omit from 'lodash/omit';
@@ -136,7 +137,7 @@ var Transition = /*#__PURE__*/function (_React$Component) {
136
137
  var _this$props = this.props,
137
138
  timeout = _this$props.timeout,
138
139
  animation = _this$props.animation;
139
- this.animationEventListener = on(node, animation ? getAnimationEnd() : transition().end, this.nextCallback);
140
+ this.animationEventListener = on(node, animation ? getAnimationEnd() : getTransitionEnd(), this.nextCallback);
140
141
 
141
142
  if (timeout !== null) {
142
143
  setTimeout(this.nextCallback, timeout);
@@ -18,9 +18,9 @@ export interface AutoCompleteProps<T = ValueType> extends WithAsProps, FormContr
18
18
  /** Called when a option is selected */
19
19
  onSelect?: (value: any, item: ItemDataType, event: React.SyntheticEvent) => void;
20
20
  /** Called on focus */
21
- onFocus?: (event: React.SyntheticEvent<HTMLElement>) => void;
21
+ onFocus?: React.FocusEventHandler;
22
22
  /** Called on blur */
23
- onBlur?: (event: React.SyntheticEvent<HTMLElement>) => void;
23
+ onBlur?: React.FocusEventHandler;
24
24
  /** Called on menu focus */
25
25
  onMenuFocus?: (focusItemValue: any, event: React.KeyboardEvent) => void;
26
26
  /** The callback triggered by keyboard events. */
@@ -4,7 +4,7 @@ import React, { useState, useRef, useCallback } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import pick from 'lodash/pick';
6
6
  import Input from '../Input';
7
- import { useClassNames, useControlled, PLACEMENT, mergeRefs } from '../utils';
7
+ import { useClassNames, useControlled, PLACEMENT, mergeRefs, useIsMounted } from '../utils';
8
8
  import { animationPropTypes } from '../Animation/utils';
9
9
  import { PickerToggleTrigger, onMenuKeyDown, DropdownMenu, DropdownMenuItem, PickerOverlay, useFocusItemValue, usePublicMethods, pickTriggerPropKeys } from '../Picker';
10
10
  import { transformData, shouldDisplay } from './utils';
@@ -57,7 +57,8 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
57
57
 
58
58
  var items = (datalist === null || datalist === void 0 ? void 0 : datalist.filter(shouldDisplay(filterBy, value))) || [];
59
59
  var hasItems = items.length > 0;
60
- var overlayRef = useRef(null); // Used to hover the focuse item when trigger `onKeydown`
60
+ var overlayRef = useRef(null);
61
+ var isMounted = useIsMounted(); // Used to hover the focuse item when trigger `onKeydown`
61
62
 
62
63
  var _useFocusItemValue = useFocusItemValue(value, {
63
64
  data: datalist,
@@ -117,9 +118,11 @@ var AutoComplete = /*#__PURE__*/React.forwardRef(function (props, ref) {
117
118
  };
118
119
 
119
120
  var handleClose = useCallback(function () {
120
- setFocus(false);
121
- onClose === null || onClose === void 0 ? void 0 : onClose();
122
- }, [onClose]);
121
+ if (isMounted()) {
122
+ setFocus(false);
123
+ onClose === null || onClose === void 0 ? void 0 : onClose();
124
+ }
125
+ }, [isMounted, onClose]);
123
126
  var handleOpen = useCallback(function () {
124
127
  setFocus(true);
125
128
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
@@ -2,7 +2,8 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
3
  import React, { useEffect, useRef } from 'react';
4
4
  import PropTypes from 'prop-types';
5
- import { getPosition, scrollTop } from 'dom-lib';
5
+ import getPosition from 'dom-lib/getPosition';
6
+ import scrollTop from 'dom-lib/scrollTop';
6
7
  import partial from 'lodash/partial';
7
8
  import camelCase from 'lodash/camelCase';
8
9
  import isNumber from 'lodash/isNumber';
@@ -25,7 +25,7 @@ export interface CascaderProps<T = ValueType> extends FormControlPickerProps<T,
25
25
  /** Called when clean */
26
26
  onClean?: (event: React.SyntheticEvent) => void;
27
27
  /** Called when searching */
28
- onSearch?: (searchKeyword: string, event: React.SyntheticEvent<HTMLElement>) => void;
28
+ onSearch?: (searchKeyword: string, event: React.SyntheticEvent) => void;
29
29
  /** Asynchronously load the children of the tree node. */
30
30
  getChildren?: (node: ItemDataType) => ItemDataType[] | Promise<ItemDataType[]>;
31
31
  }
@@ -451,7 +451,9 @@ var Cascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
451
451
  var _usePickerClassName = usePickerClassName(_extends({}, props, {
452
452
  classPrefix: classPrefix,
453
453
  hasValue: hasValue,
454
- name: 'cascader'
454
+ name: 'cascader',
455
+ appearance: appearance,
456
+ cleanable: cleanable
455
457
  })),
456
458
  classes = _usePickerClassName[0],
457
459
  usedClassNamePropKeys = _usePickerClassName[1]; // TODO: bad api design
@@ -3,13 +3,14 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  import React, { useCallback, useEffect, useRef } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import SpinnerIcon from '@rsuite/icons/legacy/Spinner';
6
- import helper from '../DOMHelper';
7
6
  import isUndefined from 'lodash/isUndefined';
8
7
  import isNil from 'lodash/isNil';
9
8
  import { shallowEqual, useClassNames, mergeRefs, useCustom } from '../utils';
10
9
  import { DropdownMenuItem } from '../Picker';
11
10
  import AngleLeftIcon from '@rsuite/icons/legacy/AngleLeft';
12
11
  import AngleRightIcon from '@rsuite/icons/legacy/AngleRight';
12
+ import getPosition from 'dom-lib/getPosition';
13
+ import scrollTop from 'dom-lib/scrollTop';
13
14
  var emptyArray = [];
14
15
  var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
15
16
  var _props$as = props.as,
@@ -61,9 +62,9 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
61
62
  }
62
63
 
63
64
  if (activeItem) {
64
- var position = helper.getPosition(activeItem, column); // Let the active option scroll into view.
65
+ var position = getPosition(activeItem, column); // Let the active option scroll into view.
65
66
 
66
- helper.scrollTop(column, position.top);
67
+ scrollTop(column, position.top);
67
68
  }
68
69
  });
69
70
  }, [prefix]);
@@ -20,7 +20,7 @@ export interface CheckTreeNodeProps extends WithAsProps {
20
20
  uncheckable?: boolean;
21
21
  allUncheckable?: boolean;
22
22
  onExpand?: (nodeData: any) => void;
23
- onSelect?: (nodeData: any, event: React.SyntheticEvent<any>) => void;
23
+ onSelect?: (nodeData: any, event: React.SyntheticEvent) => void;
24
24
  onRenderTreeIcon?: (nodeData: any, expandIcon?: React.ReactNode) => React.ReactNode;
25
25
  onRenderTreeNode?: (nodeData: any) => React.ReactNode;
26
26
  }
@@ -14,7 +14,7 @@ export interface CheckTreePickerProps<T = ValueType> extends TreeBaseProps<T, It
14
14
  /** Custom render selected items */
15
15
  renderValue?: (value: any[], selectedItems: any[], selectedElement: React.ReactNode) => React.ReactNode;
16
16
  /** Called when scrolling */
17
- onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
17
+ onScroll?: (event: React.SyntheticEvent) => void;
18
18
  }
19
19
  declare const CheckTreePicker: PickerComponent<CheckTreePickerProps>;
20
20
  export default CheckTreePicker;
@@ -31,11 +31,11 @@ export interface CheckboxProps<V = ValueType> extends WithAsProps {
31
31
  /** Used for the name of the form */
32
32
  name?: string;
33
33
  /** Called when the user attempts to change the checked state. */
34
- onChange?: (value: V, checked: boolean, event: React.SyntheticEvent<HTMLInputElement>) => void;
34
+ onChange?: (value: V, checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
35
35
  /** Called when the checkbox or label is clicked. */
36
- onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;
36
+ onClick?: (event: React.SyntheticEvent) => void;
37
37
  /** Called when the checkbox is clicked. */
38
- onCheckboxClick?: (event: React.SyntheticEvent<HTMLElement>) => void;
38
+ onCheckboxClick?: (event: React.SyntheticEvent) => void;
39
39
  }
40
40
  declare const Checkbox: RsRefForwardingComponent<'div', CheckboxProps>;
41
41
  export default Checkbox;
@@ -8,6 +8,6 @@ export interface CheckboxGroupContextValue {
8
8
  disabled?: boolean;
9
9
  readOnly?: boolean;
10
10
  plaintext?: boolean;
11
- onChange?: (value: any, checked: boolean, event: React.SyntheticEvent<HTMLInputElement>) => void;
11
+ onChange?: (value: any, checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
12
12
  }
13
13
  export declare const CheckboxGroupContext: React.Context<CheckboxGroupContextValue>;
@@ -2,34 +2,17 @@ import * as helpers from 'dom-lib';
2
2
  export * from 'dom-lib';
3
3
  declare const DOMHelper: {
4
4
  isElement: (node: HTMLElement) => boolean;
5
- animation: typeof helpers.animation;
6
- transition: () => {
7
- end: any;
8
- backfaceVisibility: string;
9
- transform: string;
10
- property: string;
11
- timing: string;
12
- delay: string;
13
- duration: string;
14
- };
15
- translateDOMPositionXY: (style: CSSStyleDeclaration, x?: number, y?: number) => CSSStyleDeclaration;
16
- getVendorPrefixedName: typeof helpers.getVendorPrefixedName;
17
- BrowserSupportCore: {
18
- hasCSSAnimations: () => boolean;
19
- hasCSSTransforms: () => boolean;
20
- hasCSS3DTransforms: () => boolean;
21
- hasCSSTransitions: () => boolean;
22
- };
23
- DOMMouseMoveTracker: typeof helpers.DOMMouseMoveTracker;
5
+ on: typeof helpers.on;
6
+ off: typeof helpers.off;
24
7
  WheelHandler: typeof helpers.WheelHandler;
8
+ DOMMouseMoveTracker: typeof helpers.DOMMouseMoveTracker;
25
9
  addClass: (target: Element, className: string) => Element;
26
- hasClass: (target: Element, className: string) => boolean;
27
10
  removeClass: (target: Element, className: string) => Element;
11
+ hasClass: (target: Element, className: string) => boolean;
28
12
  toggleClass: (target: Element, className: string) => Element;
29
- getStyle: (node: Element, property?: string) => string | CSSStyleDeclaration;
30
- removeStyle: (node: Element, keys: string | string[]) => void;
31
- addStyle: (node: Element, property: string | import("dom-lib/lib/style/addStyle").CSSProperty, value?: string | number) => void;
32
- getComputedStyle: (node: Element) => CSSStyleDeclaration;
13
+ cancelAnimationFramePolyfill: typeof clearTimeout;
14
+ requestAnimationFramePolyfill: typeof requestAnimationFrame;
15
+ getAnimationEnd: typeof helpers.getAnimationEnd;
33
16
  ownerDocument: (node: Element) => Document;
34
17
  ownerWindow: (componentOrElement: Element) => Window;
35
18
  getWindow: (node: any) => Window;
@@ -46,18 +29,20 @@ declare const DOMHelper: {
46
29
  } | DOMRect;
47
30
  nodeName: (node: Element) => string;
48
31
  getOffsetParent: (node: Element) => Element;
49
- getPosition: (node: Element, offsetParent?: Element) => DOMRect | {
32
+ getPosition: (node: Element, offsetParent?: Element, calcMargin?: boolean) => DOMRect | {
50
33
  top: number;
51
34
  left: number;
52
35
  height: number;
53
36
  width: number;
54
37
  };
55
38
  isOverflowing: (container: Element) => boolean;
56
- activeElement: (doc?: Document) => Element;
57
39
  getScrollbarSize: (recalc?: boolean) => number | void;
58
40
  getHeight: (node: Element | Window, client?: Element) => number;
59
41
  getWidth: (node: Element | Window, client?: Element) => number;
60
- on: typeof helpers.on;
61
- off: typeof helpers.off;
42
+ isFocusable: typeof helpers.isFocusable;
43
+ getStyle: (node: Element, property?: string) => string | CSSStyleDeclaration;
44
+ removeStyle: (node: Element, keys: string | string[]) => void;
45
+ addStyle: (node: Element, property: string | import("dom-lib/esm/addStyle").CSSProperty, value?: string | number) => void;
46
+ translateDOMPositionXY: (style: CSSStyleDeclaration, x?: number, y?: number) => CSSStyleDeclaration;
62
47
  };
63
48
  export default DOMHelper;
@@ -1,11 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as helpers from 'dom-lib';
3
+ import isElement from './isElement';
3
4
  export * from 'dom-lib';
4
5
 
5
6
  var DOMHelper = _extends({}, helpers, {
6
- isElement: function isElement(node) {
7
- return (node === null || node === void 0 ? void 0 : node.nodeType) && typeof (node === null || node === void 0 ? void 0 : node.nodeName) === 'string';
8
- }
7
+ isElement: isElement
9
8
  });
10
9
 
11
10
  export default DOMHelper;
@@ -0,0 +1,2 @@
1
+ declare const isElement: (node: HTMLElement) => boolean;
2
+ export default isElement;
@@ -0,0 +1,5 @@
1
+ var isElement = function isElement(node) {
2
+ return (node === null || node === void 0 ? void 0 : node.nodeType) === 1 && typeof (node === null || node === void 0 ? void 0 : node.nodeName) === 'string';
3
+ };
4
+
5
+ export default isElement;
@@ -41,19 +41,19 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
41
41
  /** Hidden seconds */
42
42
  hideSeconds?: (second: number, date: Date) => boolean;
43
43
  /** Called when the calendar panel date changes */
44
- onChangeCalendarDate?: (date: Date, event?: React.SyntheticEvent<HTMLElement>) => void;
44
+ onChangeCalendarDate?: (date: Date, event?: React.SyntheticEvent) => void;
45
45
  /** Called when opening the month view */
46
46
  onToggleMonthDropdown?: (toggle: boolean) => void;
47
47
  /** Called when opening the time view */
48
48
  onToggleTimeDropdown?: (toggle: boolean) => void;
49
49
  /** Called when the option is selected */
50
- onSelect?: (date: Date, event?: React.SyntheticEvent<HTMLElement>) => void;
50
+ onSelect?: (date: Date, event?: React.SyntheticEvent) => void;
51
51
  /** Called after the prev month */
52
52
  onPrevMonth?: (date: Date) => void;
53
53
  /** Called after the next month */
54
54
  onNextMonth?: (date: Date) => void;
55
55
  /** Called after clicking the OK button */
56
- onOk?: (date: Date, event: React.SyntheticEvent<HTMLElement>) => void;
56
+ onOk?: (date: Date, event: React.SyntheticEvent) => void;
57
57
  /** Called when clean */
58
58
  onClean?: (event: React.MouseEvent) => void;
59
59
  /** Custom render value */
@@ -301,7 +301,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
301
301
  * The callback after the enter key is triggered on the input
302
302
  */
303
303
 
304
- var handleInputBlur = useCallback(function (event) {
304
+ var handleInputPressEnd = useCallback(function (event) {
305
305
  if (inputState === 'Typing') {
306
306
  updateValue(event, calendarDate);
307
307
  }
@@ -387,7 +387,9 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
387
387
  var _usePickerClassName = usePickerClassName(_extends({}, props, {
388
388
  classPrefix: classPrefix,
389
389
  name: 'date',
390
- hasValue: hasValue
390
+ appearance: appearance,
391
+ hasValue: hasValue,
392
+ cleanable: cleanable
391
393
  })),
392
394
  classes = _usePickerClassName[0],
393
395
  usedClassNamePropKeys = _usePickerClassName[1];
@@ -428,7 +430,8 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
428
430
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : formatStr,
429
431
  inputMask: DateUtils.getDateMask(formatStr),
430
432
  onInputChange: handleInputChange,
431
- onInputBlur: handleInputBlur,
433
+ onInputBlur: handleInputPressEnd,
434
+ onInputPressEnter: handleInputPressEnd,
432
435
  onKeyDown: onPickerKeyDown,
433
436
  onClean: createChainedFunction(handleClean, onClean),
434
437
  cleanable: cleanable && !disabled,
@@ -16,7 +16,7 @@ export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, Omit
16
16
  onChangeCalendarDate?: (index: number, date: Date) => void;
17
17
  onChangeCalendarTime?: (index: number, date: Date) => void;
18
18
  onMouseMove?: (date: Date) => void;
19
- onSelect?: (date: Date, event?: React.SyntheticEvent<any>) => void;
19
+ onSelect?: (date: Date, event?: React.SyntheticEvent) => void;
20
20
  showOneCalendar?: boolean;
21
21
  showWeekNumbers?: boolean;
22
22
  value?: ValueType;
@@ -26,9 +26,9 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
26
26
  /** Disabled date */
27
27
  disabledDate?: DisabledDateFunction;
28
28
  /** Called when the option is selected */
29
- onSelect?: (date: Date, event?: React.SyntheticEvent<HTMLElement>) => void;
29
+ onSelect?: (date: Date, event?: React.SyntheticEvent) => void;
30
30
  /** Called after clicking the OK button */
31
- onOk?: (date: ValueType, event: React.SyntheticEvent<HTMLElement>) => void;
31
+ onOk?: (date: ValueType, event: React.SyntheticEvent) => void;
32
32
  /** Called when clean */
33
33
  onClean?: (event: React.MouseEvent) => void;
34
34
  /** Custom render value */
@@ -72,7 +72,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
72
72
 
73
73
  var _useCustom = useCustom('DateRangePicker', overrideLocale),
74
74
  locale = _useCustom.locale,
75
- formatDate = _useCustom.formatDate;
75
+ formatDate = _useCustom.formatDate,
76
+ parseDate = _useCustom.parseDate;
76
77
 
77
78
  var rangeFormatStr = "" + formatStr + character + formatStr;
78
79
 
@@ -367,13 +368,17 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
367
368
  var rangeValue = value.split(character); // isMatch('01/11/2020', 'MM/dd/yyyy') ==> true
368
369
  // isMatch('2020-11-01', 'MM/dd/yyyy') ==> false
369
370
 
370
- if (!DateUtils.isMatch(rangeValue[0], formatStr) || !DateUtils.isMatch(rangeValue[1], formatStr)) {
371
+ if (!DateUtils.isMatch(rangeValue[0], formatStr, {
372
+ locale: locale.dateLocale
373
+ }) || !DateUtils.isMatch(rangeValue[1], formatStr, {
374
+ locale: locale.dateLocale
375
+ })) {
371
376
  setInputState('Error');
372
377
  return;
373
378
  }
374
379
 
375
- var startDate = new Date(rangeValue[0]);
376
- var endDate = new Date(rangeValue[1]);
380
+ var startDate = parseDate(rangeValue[0], formatStr);
381
+ var endDate = parseDate(rangeValue[1], formatStr);
377
382
  var selectValue = [startDate, endDate];
378
383
 
379
384
  if (!DateUtils.isValid(startDate) || !DateUtils.isValid(endDate)) {
@@ -395,7 +400,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
395
400
  * The callback after the enter key is triggered on the input
396
401
  */
397
402
 
398
- var handleInputBlur = useCallback(function (event) {
403
+ var handleInputPressEnd = useCallback(function (event) {
399
404
  if (inputState === 'Typing') {
400
405
  handleValueUpdate(event, selectValue);
401
406
  }
@@ -545,7 +550,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
545
550
  var _usePickerClassName = usePickerClassName(_extends({}, props, {
546
551
  classPrefix: classPrefix,
547
552
  name: 'daterange',
548
- hasValue: hasValue
553
+ appearance: appearance,
554
+ hasValue: hasValue,
555
+ cleanable: cleanable
549
556
  })),
550
557
  classes = _usePickerClassName[0],
551
558
  usedClassNamePropKeys = _usePickerClassName[1];
@@ -571,7 +578,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
571
578
  inputValue: value ? getDisplayString(value, true) : '',
572
579
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : rangeFormatStr,
573
580
  onInputChange: handleInputChange,
574
- onInputBlur: handleInputBlur,
581
+ onInputBlur: handleInputPressEnd,
582
+ onInputPressEnter: handleInputPressEnd,
575
583
  onKeyDown: onPickerKeyDown,
576
584
  onClean: createChainedFunction(handleClean, onClean),
577
585
  cleanable: cleanable && !disabled,
@@ -12,7 +12,7 @@ export interface DisclosureProps {
12
12
  defaultOpen?: boolean;
13
13
  hideOnClickOutside?: boolean;
14
14
  /** Callback when disclosure button is being activated to update the open state */
15
- onToggle?: (open: boolean, event: React.SyntheticEvent<HTMLElement>) => void;
15
+ onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
16
16
  }
17
17
  declare function Disclosure(props: DisclosureProps): JSX.Element;
18
18
  declare namespace Disclosure {
@@ -13,7 +13,7 @@ export declare type DisclosureContextProps = [
13
13
  DisclosureState,
14
14
  Dispatch<DisclosureAction>,
15
15
  {
16
- onToggle: (open: boolean, event?: React.SyntheticEvent<HTMLElement>) => void;
16
+ onToggle: (open: boolean, event?: React.SyntheticEvent) => void;
17
17
  }
18
18
  ];
19
19
  declare const DisclosureContext: React.Context<DisclosureContextProps>;
@@ -32,7 +32,7 @@ export interface DropdownMenuItemProps<T = any> extends WithAsProps, Omit<React.
32
32
  */
33
33
  open?: boolean;
34
34
  /** Select the callback function for the current option */
35
- onSelect?: (eventKey: T, event: React.SyntheticEvent<HTMLElement>) => void;
35
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
36
36
  }
37
37
  /**
38
38
  * The <Dropdown.Item> API
@@ -29,7 +29,13 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
29
29
  eventKey = props.eventKey,
30
30
  onSelect = props.onSelect,
31
31
  icon = props.icon,
32
- rest = _objectWithoutPropertiesLoose(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon"]);
32
+ _props$as = props.as,
33
+ Component = _props$as === void 0 ? 'li' : _props$as,
34
+ divider = props.divider,
35
+ panel = props.panel,
36
+ children = props.children,
37
+ disabled = props.disabled,
38
+ restProps = _objectWithoutPropertiesLoose(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon", "as", "divider", "panel", "children", "disabled"]);
33
39
 
34
40
  var internalId = useInternalId('DropdownItem');
35
41
  var nav = useContext(NavContext);
@@ -82,6 +88,15 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
82
88
  };
83
89
  }
84
90
  }, [internalId, selected, dispatch]);
91
+ var renderDropdownItem = useCallback(function (ui) {
92
+ if (Component === 'li') {
93
+ return ui;
94
+ }
95
+
96
+ return /*#__PURE__*/React.createElement("li", {
97
+ role: "none presentation"
98
+ }, ui);
99
+ }, [Component]);
85
100
 
86
101
  if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
87
102
  return /*#__PURE__*/React.createElement(SidenavDropdownItem, _extends({
@@ -89,28 +104,19 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
89
104
  }, props));
90
105
  }
91
106
 
92
- var _rest$as = rest.as,
93
- Component = _rest$as === void 0 ? 'li' : _rest$as,
94
- divider = rest.divider,
95
- panel = rest.panel,
96
- children = rest.children,
97
- disabled = rest.disabled,
98
- restProps = _objectWithoutPropertiesLoose(rest, ["as", "divider", "panel", "children", "disabled"]);
99
-
100
107
  if (divider) {
101
- return /*#__PURE__*/React.createElement(Component, _extends({
108
+ return renderDropdownItem( /*#__PURE__*/React.createElement(Component, _extends({
102
109
  ref: ref,
103
110
  role: "separator",
104
111
  className: merge(prefix('divider'), className)
105
- }, restProps));
112
+ }, restProps)));
106
113
  }
107
114
 
108
115
  if (panel) {
109
- return /*#__PURE__*/React.createElement(Component, _extends({
116
+ return renderDropdownItem( /*#__PURE__*/React.createElement(Component, _extends({
110
117
  ref: ref,
111
- role: "none presentation",
112
118
  className: merge(prefix('panel'), className)
113
- }, restProps), children);
119
+ }, restProps), children));
114
120
  }
115
121
 
116
122
  if (navbar) {
@@ -134,6 +140,7 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
134
140
  className: classes,
135
141
  "aria-current": selected || undefined
136
142
  }, dataAttributes, restProps, {
143
+ as: Component,
137
144
  onClick: createChainedFunction(handleClickNavbarDropdownItem, restProps.onClick)
138
145
  }), icon && /*#__PURE__*/React.cloneElement(icon, {
139
146
  className: prefix('menu-icon')
@@ -165,12 +172,12 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
165
172
  dataAttributes['data-event-key-type'] = typeof eventKey;
166
173
  }
167
174
 
168
- return /*#__PURE__*/React.createElement(Component, _extends({
175
+ return renderDropdownItem( /*#__PURE__*/React.createElement(Component, _extends({
169
176
  ref: mergeRefs(ref, menuitemRef),
170
177
  className: classes
171
178
  }, menuitem, dataAttributes, restProps), icon && /*#__PURE__*/React.cloneElement(icon, {
172
179
  className: prefix('menu-icon')
173
- }), children);
180
+ }), children));
174
181
  });
175
182
  });
176
183
  DropdownItem.displayName = 'Dropdown.Item';
@@ -19,8 +19,8 @@ export interface DropdownMenuProps<T = string> extends StandardProps {
19
19
  disabled?: boolean;
20
20
  activeKey?: T;
21
21
  trigger?: 'hover' | 'click';
22
- onSelect?: (eventKey: T, event: React.SyntheticEvent<Element>) => void;
23
- onToggle?: (eventKey: T, event: React.SyntheticEvent<Element>) => void;
22
+ onSelect?: (eventKey: T, event: React.SyntheticEvent) => void;
23
+ onToggle?: (eventKey: T, event: React.SyntheticEvent) => void;
24
24
  }
25
25
  /**
26
26
  * The <Dropdown.Menu> API
@@ -33,7 +33,7 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
33
33
  /** The error message comes from context */
34
34
  errorFromContext?: boolean;
35
35
  /** Callback fired when data changing */
36
- onChange?: (formValue: T, event: React.SyntheticEvent<HTMLElement>) => void;
36
+ onChange?: (formValue: T, event: React.SyntheticEvent) => void;
37
37
  /** Callback fired when error checking */
38
38
  onError?: (formError: E) => void;
39
39
  /** Callback fired when data cheking */
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { TypeAttributes, FormControlBaseProps, WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import Input from '../Input';
3
+ import { TypeAttributes, FormControlBaseProps, WithAsProps } from '../@types/common';
3
4
  /**
4
5
  * Props that FormControl passes to its accepter
5
6
  */
@@ -12,7 +13,7 @@ export interface FormControlProps<P = any, ValueType = any> extends WithAsProps,
12
13
  /** Value */
13
14
  value?: ValueType;
14
15
  /** Callback fired when data changing */
15
- onChange?(value: ValueType, event: React.SyntheticEvent<HTMLElement>): void;
16
+ onChange?(value: ValueType, event: React.SyntheticEvent): void;
16
17
  /** The data validation trigger type, and it wiill overrides the setting on <Form> */
17
18
  checkTrigger?: TypeAttributes.CheckTrigger;
18
19
  /** Show error messages */
@@ -28,5 +29,10 @@ export interface FormControlProps<P = any, ValueType = any> extends WithAsProps,
28
29
  /** Asynchronous check value */
29
30
  checkAsync?: boolean;
30
31
  }
31
- declare const FormControl: RsRefForwardingComponent<'div', FormControlProps>;
32
+ interface FormControlComponent extends React.FC<FormControlProps> {
33
+ <Accepter extends React.ElementType = typeof Input>(props: FormControlProps & {
34
+ accepter?: Accepter;
35
+ } & React.ComponentPropsWithRef<Accepter>): React.ReactElement;
36
+ }
37
+ declare const FormControl: FormControlComponent;
32
38
  export default FormControl;
@@ -123,14 +123,18 @@ var FormControl = /*#__PURE__*/React.forwardRef(function (props, ref) {
123
123
  }
124
124
  }
125
125
 
126
- var ariaDescribedby = controlId ? controlId + "-" + (messageNode ? 'error-message' : 'help-text') : null;
126
+ var ariaDescribedby = controlId ? controlId + "-help-text" : null;
127
+ var fieldHasError = Boolean(messageNode);
128
+ var ariaErrormessage = fieldHasError && controlId ? controlId + "-error-message" : undefined;
127
129
  return /*#__PURE__*/React.createElement(Component, {
128
130
  className: classes,
129
131
  ref: ref
130
132
  }, /*#__PURE__*/React.createElement(AccepterComponent, _extends({
131
133
  id: controlId,
132
134
  "aria-labelledby": controlId ? controlId + "-control-label" : null,
133
- "aria-describedby": ariaDescribedby
135
+ "aria-describedby": ariaDescribedby,
136
+ "aria-invalid": fieldHasError || undefined,
137
+ "aria-errormessage": ariaErrormessage
134
138
  }, rest, {
135
139
  readOnly: readOnly,
136
140
  plaintext: plaintext,