rsuite 5.0.2 → 5.2.1

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 (252) hide show
  1. package/Button/styles/index.less +1 -1
  2. package/CHANGELOG.md +46 -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 +4 -46
  8. package/Sidenav/styles/index.less +17 -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 +0 -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 +1 -0
  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/CheckTreePicker/utils.d.ts +1 -1
  26. package/cjs/CheckTreePicker/utils.js +7 -6
  27. package/cjs/Checkbox/Checkbox.d.ts +3 -3
  28. package/cjs/CheckboxGroup/CheckboxGroupContext.d.ts +1 -1
  29. package/cjs/DOMHelper/index.d.ts +13 -28
  30. package/cjs/DOMHelper/index.js +4 -3
  31. package/cjs/DOMHelper/isElement.d.ts +2 -0
  32. package/cjs/DOMHelper/isElement.js +11 -0
  33. package/cjs/DatePicker/DatePicker.d.ts +3 -3
  34. package/cjs/DatePicker/DatePicker.js +4 -2
  35. package/cjs/DateRangePicker/Calendar.d.ts +1 -1
  36. package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -2
  37. package/cjs/DateRangePicker/DateRangePicker.js +4 -2
  38. package/cjs/Disclosure/Disclosure.d.ts +1 -1
  39. package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
  40. package/cjs/Dropdown/DropdownItem.d.ts +1 -1
  41. package/cjs/Dropdown/DropdownItem.js +21 -18
  42. package/cjs/Dropdown/DropdownMenu.d.ts +2 -2
  43. package/cjs/Dropdown/useRenderDropdownItem.d.ts +2 -0
  44. package/cjs/Dropdown/useRenderDropdownItem.js +26 -0
  45. package/cjs/Form/Form.d.ts +1 -1
  46. package/cjs/FormControl/FormControl.d.ts +9 -3
  47. package/cjs/FormControl/FormControl.js +6 -2
  48. package/cjs/Input/Input.d.ts +2 -1
  49. package/cjs/InputNumber/InputNumber.js +2 -2
  50. package/cjs/InputPicker/InputPicker.js +2 -2
  51. package/cjs/List/helper/useSortHelper.js +11 -6
  52. package/cjs/MaskedInput/MaskedInput.d.ts +43 -0
  53. package/cjs/MaskedInput/MaskedInput.js +80 -0
  54. package/cjs/MaskedInput/adjustCaretPosition.d.ts +11 -0
  55. package/cjs/MaskedInput/adjustCaretPosition.js +218 -0
  56. package/cjs/MaskedInput/conformToMask.d.ts +8 -0
  57. package/cjs/MaskedInput/conformToMask.js +247 -0
  58. package/cjs/MaskedInput/createTextMaskInputElement.d.ts +7 -0
  59. package/cjs/MaskedInput/createTextMaskInputElement.js +226 -0
  60. package/cjs/MaskedInput/index.d.ts +3 -0
  61. package/cjs/MaskedInput/index.js +11 -0
  62. package/cjs/MaskedInput/types.d.ts +10 -0
  63. package/cjs/{@types/icons.js → MaskedInput/types.js} +0 -0
  64. package/cjs/MaskedInput/utilities.d.ts +7 -0
  65. package/cjs/MaskedInput/utilities.js +47 -0
  66. package/cjs/Menu/MenuItem.d.ts +1 -1
  67. package/cjs/Menu/Menubar.d.ts +1 -1
  68. package/cjs/Message/Message.js +13 -11
  69. package/cjs/Modal/Modal.js +5 -3
  70. package/cjs/Modal/utils.js +7 -5
  71. package/cjs/MultiCascader/MultiCascader.js +1 -0
  72. package/cjs/Notification/Notification.js +6 -3
  73. package/cjs/Overlay/Modal.js +14 -11
  74. package/cjs/Overlay/ModalManager.js +19 -7
  75. package/cjs/Overlay/OverlayTrigger.js +2 -2
  76. package/cjs/Overlay/Position.js +20 -13
  77. package/cjs/Overlay/positionUtils.js +16 -8
  78. package/cjs/Panel/Panel.d.ts +1 -1
  79. package/cjs/Picker/DropdownMenu.js +10 -6
  80. package/cjs/Picker/DropdownMenuCheckItem.d.ts +3 -3
  81. package/cjs/Picker/PickerOverlay.js +5 -3
  82. package/cjs/Picker/PickerToggle.d.ts +6 -0
  83. package/cjs/Picker/PickerToggle.js +17 -8
  84. package/cjs/Picker/SearchBar.d.ts +1 -1
  85. package/cjs/Picker/utils.d.ts +2 -2
  86. package/cjs/Picker/utils.js +1 -1
  87. package/cjs/Radio/Radio.d.ts +1 -1
  88. package/cjs/RadioGroup/RadioGroup.d.ts +1 -1
  89. package/cjs/RangeSlider/RangeSlider.js +9 -5
  90. package/cjs/Rate/Character.js +2 -2
  91. package/cjs/Ripple/Ripple.js +6 -7
  92. package/cjs/Sidenav/SidenavDropdownItem.d.ts +1 -1
  93. package/cjs/Sidenav/SidenavDropdownItem.js +17 -10
  94. package/cjs/Sidenav/SidenavDropdownMenu.d.ts +1 -1
  95. package/cjs/Slider/Graduated.js +1 -1
  96. package/cjs/Slider/Handle.js +10 -5
  97. package/cjs/Slider/ProgressBar.js +1 -1
  98. package/cjs/Slider/Slider.js +9 -5
  99. package/cjs/Toggle/Toggle.d.ts +5 -6
  100. package/cjs/Toggle/Toggle.js +42 -19
  101. package/cjs/Tree/Tree.d.ts +3 -3
  102. package/cjs/TreePicker/TreeNode.d.ts +1 -1
  103. package/cjs/TreePicker/TreeNode.js +2 -2
  104. package/cjs/TreePicker/TreePicker.d.ts +1 -1
  105. package/cjs/Uploader/UploadFileItem.d.ts +0 -1
  106. package/cjs/Uploader/UploadFileItem.js +3 -6
  107. package/cjs/Uploader/Uploader.d.ts +4 -4
  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/scrollTopAnimation.js +5 -5
  118. package/cjs/utils/treeUtils.d.ts +2 -2
  119. package/cjs/utils/useEventListener.js +4 -2
  120. package/cjs/utils/useIsMounted.d.ts +2 -0
  121. package/cjs/utils/useIsMounted.js +22 -0
  122. package/cjs/utils/usePortal.js +2 -2
  123. package/cjs/utils/useRootClose.js +10 -10
  124. package/dist/rsuite-rtl.css +220 -124
  125. package/dist/rsuite-rtl.min.css +1 -1
  126. package/dist/rsuite-rtl.min.css.map +1 -1
  127. package/dist/rsuite.css +220 -124
  128. package/dist/rsuite.js +780 -504
  129. package/dist/rsuite.js.map +1 -1
  130. package/dist/rsuite.min.css +1 -1
  131. package/dist/rsuite.min.css.map +1 -1
  132. package/dist/rsuite.min.js +1 -1
  133. package/dist/rsuite.min.js.map +1 -1
  134. package/esm/@types/common.d.ts +8 -2
  135. package/esm/Affix/Affix.js +1 -1
  136. package/esm/Animation/Collapse.js +2 -1
  137. package/esm/Animation/Transition.js +3 -2
  138. package/esm/AutoComplete/AutoComplete.d.ts +2 -2
  139. package/esm/AutoComplete/AutoComplete.js +8 -5
  140. package/esm/Calendar/TimeDropdown.js +2 -1
  141. package/esm/Cascader/Cascader.d.ts +1 -1
  142. package/esm/Cascader/Cascader.js +1 -0
  143. package/esm/Cascader/DropdownMenu.js +4 -3
  144. package/esm/CheckTreePicker/CheckTreeNode.d.ts +1 -1
  145. package/esm/CheckTreePicker/CheckTreePicker.d.ts +1 -1
  146. package/esm/CheckTreePicker/utils.d.ts +1 -1
  147. package/esm/CheckTreePicker/utils.js +7 -6
  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 +4 -2
  156. package/esm/DateRangePicker/Calendar.d.ts +1 -1
  157. package/esm/DateRangePicker/DateRangePicker.d.ts +2 -2
  158. package/esm/DateRangePicker/DateRangePicker.js +4 -2
  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 +20 -18
  163. package/esm/Dropdown/DropdownMenu.d.ts +2 -2
  164. package/esm/Dropdown/useRenderDropdownItem.d.ts +2 -0
  165. package/esm/Dropdown/useRenderDropdownItem.js +18 -0
  166. package/esm/Form/Form.d.ts +1 -1
  167. package/esm/FormControl/FormControl.d.ts +9 -3
  168. package/esm/FormControl/FormControl.js +6 -2
  169. package/esm/Input/Input.d.ts +2 -1
  170. package/esm/InputNumber/InputNumber.js +2 -2
  171. package/esm/InputPicker/InputPicker.js +1 -1
  172. package/esm/List/helper/useSortHelper.js +8 -4
  173. package/esm/MaskedInput/MaskedInput.d.ts +43 -0
  174. package/esm/MaskedInput/MaskedInput.js +67 -0
  175. package/esm/MaskedInput/adjustCaretPosition.d.ts +11 -0
  176. package/esm/MaskedInput/adjustCaretPosition.js +213 -0
  177. package/esm/MaskedInput/conformToMask.d.ts +8 -0
  178. package/esm/MaskedInput/conformToMask.js +239 -0
  179. package/esm/MaskedInput/createTextMaskInputElement.d.ts +7 -0
  180. package/esm/MaskedInput/createTextMaskInputElement.js +212 -0
  181. package/esm/MaskedInput/index.d.ts +3 -0
  182. package/esm/MaskedInput/index.js +2 -0
  183. package/esm/MaskedInput/types.d.ts +10 -0
  184. package/esm/{@types/icons.js → MaskedInput/types.js} +0 -0
  185. package/esm/MaskedInput/utilities.d.ts +7 -0
  186. package/esm/MaskedInput/utilities.js +38 -0
  187. package/esm/Menu/MenuItem.d.ts +1 -1
  188. package/esm/Menu/Menubar.d.ts +1 -1
  189. package/esm/Message/Message.js +15 -13
  190. package/esm/Modal/Modal.js +3 -2
  191. package/esm/Modal/utils.js +6 -5
  192. package/esm/MultiCascader/MultiCascader.js +1 -0
  193. package/esm/Notification/Notification.js +7 -4
  194. package/esm/Overlay/Modal.js +11 -8
  195. package/esm/Overlay/ModalManager.js +6 -1
  196. package/esm/Overlay/OverlayTrigger.js +1 -1
  197. package/esm/Overlay/Position.js +14 -8
  198. package/esm/Overlay/positionUtils.js +6 -2
  199. package/esm/Panel/Panel.d.ts +1 -1
  200. package/esm/Picker/DropdownMenu.js +3 -1
  201. package/esm/Picker/DropdownMenuCheckItem.d.ts +3 -3
  202. package/esm/Picker/PickerOverlay.js +2 -1
  203. package/esm/Picker/PickerToggle.d.ts +6 -0
  204. package/esm/Picker/PickerToggle.js +14 -6
  205. package/esm/Picker/SearchBar.d.ts +1 -1
  206. package/esm/Picker/utils.d.ts +2 -2
  207. package/esm/Picker/utils.js +1 -1
  208. package/esm/Radio/Radio.d.ts +1 -1
  209. package/esm/RadioGroup/RadioGroup.d.ts +1 -1
  210. package/esm/RangeSlider/RangeSlider.js +4 -2
  211. package/esm/Rate/Character.js +2 -2
  212. package/esm/Ripple/Ripple.js +4 -3
  213. package/esm/Sidenav/SidenavDropdownItem.d.ts +1 -1
  214. package/esm/Sidenav/SidenavDropdownItem.js +16 -10
  215. package/esm/Sidenav/SidenavDropdownMenu.d.ts +1 -1
  216. package/esm/Slider/Graduated.js +1 -1
  217. package/esm/Slider/Handle.js +5 -2
  218. package/esm/Slider/ProgressBar.js +1 -1
  219. package/esm/Slider/Slider.js +4 -2
  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/Uploader/UploadFileItem.d.ts +0 -1
  227. package/esm/Uploader/UploadFileItem.js +3 -6
  228. package/esm/Uploader/Uploader.d.ts +4 -4
  229. package/esm/index.d.ts +2 -0
  230. package/esm/index.js +1 -0
  231. package/esm/locales/fa_IR.d.ts +105 -0
  232. package/esm/locales/fa_IR.js +74 -0
  233. package/esm/locales/index.d.ts +1 -0
  234. package/esm/locales/index.js +2 -1
  235. package/esm/utils/BrowserDetection.js +1 -1
  236. package/esm/utils/index.d.ts +1 -0
  237. package/esm/utils/index.js +2 -1
  238. package/esm/utils/scrollTopAnimation.js +2 -2
  239. package/esm/utils/treeUtils.d.ts +2 -2
  240. package/esm/utils/useEventListener.js +1 -1
  241. package/esm/utils/useIsMounted.d.ts +2 -0
  242. package/esm/utils/useIsMounted.js +16 -0
  243. package/esm/utils/usePortal.js +2 -2
  244. package/esm/utils/useRootClose.js +8 -6
  245. package/locales/fa_IR/package.json +7 -0
  246. package/package.json +5 -7
  247. package/styles/color-modes/dark.less +1 -0
  248. package/styles/color-modes/high-contrast.less +1 -0
  249. package/styles/color-modes/light.less +3 -0
  250. package/styles/plugins/palette.js +10 -1
  251. package/cjs/@types/icons.d.ts +0 -1
  252. package/esm/@types/icons.d.ts +0 -1
@@ -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. */
@@ -74,7 +74,8 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
74
74
 
75
75
  var items = (datalist === null || datalist === void 0 ? void 0 : datalist.filter((0, _utils3.shouldDisplay)(filterBy, value))) || [];
76
76
  var hasItems = items.length > 0;
77
- var overlayRef = (0, _react.useRef)(null); // Used to hover the focuse item when trigger `onKeydown`
77
+ var overlayRef = (0, _react.useRef)(null);
78
+ var isMounted = (0, _utils.useIsMounted)(); // Used to hover the focuse item when trigger `onKeydown`
78
79
 
79
80
  var _useFocusItemValue = (0, _Picker.useFocusItemValue)(value, {
80
81
  data: datalist,
@@ -134,9 +135,11 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
134
135
  };
135
136
 
136
137
  var handleClose = (0, _react.useCallback)(function () {
137
- setFocus(false);
138
- onClose === null || onClose === void 0 ? void 0 : onClose();
139
- }, [onClose]);
138
+ if (isMounted()) {
139
+ setFocus(false);
140
+ onClose === null || onClose === void 0 ? void 0 : onClose();
141
+ }
142
+ }, [isMounted, onClose]);
140
143
  var handleOpen = (0, _react.useCallback)(function () {
141
144
  setFocus(true);
142
145
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
@@ -17,7 +17,9 @@ var _react = _interopRequireWildcard(require("react"));
17
17
 
18
18
  var _propTypes = _interopRequireDefault(require("prop-types"));
19
19
 
20
- var _domLib = require("dom-lib");
20
+ var _getPosition2 = _interopRequireDefault(require("dom-lib/getPosition"));
21
+
22
+ var _scrollTop = _interopRequireDefault(require("dom-lib/scrollTop"));
21
23
 
22
24
  var _partial = _interopRequireDefault(require("lodash/partial"));
23
25
 
@@ -99,10 +101,10 @@ var scrollTo = function scrollTo(time, row) {
99
101
  var node = container === null || container === void 0 ? void 0 : container.querySelector("[data-key=\"" + type + "-" + value + "\"]");
100
102
 
101
103
  if (node && container) {
102
- var _getPosition = (0, _domLib.getPosition)(node, container),
104
+ var _getPosition = (0, _getPosition2.default)(node, container),
103
105
  top = _getPosition.top;
104
106
 
105
- (0, _utils.scrollTopAnimation)(container, top, (0, _domLib.scrollTop)(container) !== 0);
107
+ (0, _utils.scrollTopAnimation)(container, top, (0, _scrollTop.default)(container) !== 0);
106
108
  }
107
109
  });
108
110
  };
@@ -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
  }
@@ -474,6 +474,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
474
474
  classPrefix: classPrefix,
475
475
  hasValue: hasValue,
476
476
  name: 'cascader',
477
+ appearance: appearance,
477
478
  cleanable: cleanable
478
479
  })),
479
480
  classes = _usePickerClassName[0],
@@ -17,8 +17,6 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
18
  var _Spinner = _interopRequireDefault(require("@rsuite/icons/legacy/Spinner"));
19
19
 
20
- var _DOMHelper = _interopRequireDefault(require("../DOMHelper"));
21
-
22
20
  var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
23
21
 
24
22
  var _isNil = _interopRequireDefault(require("lodash/isNil"));
@@ -31,6 +29,10 @@ var _AngleLeft = _interopRequireDefault(require("@rsuite/icons/legacy/AngleLeft"
31
29
 
32
30
  var _AngleRight = _interopRequireDefault(require("@rsuite/icons/legacy/AngleRight"));
33
31
 
32
+ var _getPosition = _interopRequireDefault(require("dom-lib/getPosition"));
33
+
34
+ var _scrollTop = _interopRequireDefault(require("dom-lib/scrollTop"));
35
+
34
36
  var emptyArray = [];
35
37
 
36
38
  var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
@@ -83,10 +85,9 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
83
85
  }
84
86
 
85
87
  if (activeItem) {
86
- var position = _DOMHelper.default.getPosition(activeItem, column); // Let the active option scroll into view.
87
-
88
+ var position = (0, _getPosition.default)(activeItem, column); // Let the active option scroll into view.
88
89
 
89
- _DOMHelper.default.scrollTop(column, position.top);
90
+ (0, _scrollTop.default)(column, position.top);
90
91
  }
91
92
  });
92
93
  }, [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;
@@ -19,7 +19,7 @@ export interface TreeNodesType {
19
19
  [key: string]: TreeNodeType;
20
20
  }
21
21
  export declare function isEveryChildChecked(nodes: TreeNodesType, parent: TreeNodeType): boolean;
22
- export declare function isSomeChildChecked(nodes: TreeNodesType, parent: TreeNodeType): boolean;
22
+ export declare function isSomeChildChecked(nodes: TreeNodesType, parent: TreeNodeType, childrenKey: string): boolean;
23
23
  export declare function isSomeNodeHasChildren(data: any[], childrenKey: string): boolean;
24
24
  /**
25
25
  * is all siblings nodes is uncheckable
@@ -41,18 +41,19 @@ function isEveryChildChecked(nodes, parent) {
41
41
  });
42
42
  }
43
43
 
44
- function isSomeChildChecked(nodes, parent) {
44
+ function isSomeChildChecked(nodes, parent, childrenKey) {
45
45
  if ((0, _isNil2.default)(nodes[parent.refKey])) {
46
46
  return false;
47
47
  }
48
48
 
49
49
  var children = (0, _treeUtils.getChildrenByFlattenNodes)(nodes, parent);
50
+ return children.some(function (child) {
51
+ var _child$childrenKey;
50
52
 
51
- if (!children.length) {
52
- return nodes[parent.refKey].check;
53
- }
53
+ if ((child === null || child === void 0 ? void 0 : (_child$childrenKey = child[childrenKey]) === null || _child$childrenKey === void 0 ? void 0 : _child$childrenKey.length) > 0) {
54
+ return isSomeChildChecked(nodes, child, childrenKey);
55
+ }
54
56
 
55
- return children.some(function (child) {
56
57
  return nodes[child.refKey].check;
57
58
  });
58
59
  }
@@ -215,7 +216,7 @@ function getNodeCheckState(_ref) {
215
216
  return _utils.CHECK_STATE.CHECK;
216
217
  }
217
218
 
218
- if (isSomeChildChecked(nodes, node)) {
219
+ if (isSomeChildChecked(nodes, node, childrenKey)) {
219
220
  nodes[node.refKey].checkAll = false;
220
221
  return _utils.CHECK_STATE.INDETERMINATE;
221
222
  }
@@ -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;
@@ -18,10 +18,11 @@ Object.keys(helpers).forEach(function (key) {
18
18
  if (key in exports && exports[key] === helpers[key]) return;
19
19
  exports[key] = helpers[key];
20
20
  });
21
+
22
+ var _isElement = _interopRequireDefault(require("./isElement"));
23
+
21
24
  var DOMHelper = (0, _extends2.default)({}, helpers, {
22
- isElement: function isElement(node) {
23
- return (node === null || node === void 0 ? void 0 : node.nodeType) && typeof (node === null || node === void 0 ? void 0 : node.nodeName) === 'string';
24
- }
25
+ isElement: _isElement.default
25
26
  });
26
27
  var _default = DOMHelper;
27
28
  exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const isElement: (node: HTMLElement) => boolean;
2
+ export default isElement;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+
6
+ var isElement = function isElement(node) {
7
+ return (node === null || node === void 0 ? void 0 : node.nodeType) === 1 && typeof (node === null || node === void 0 ? void 0 : node.nodeName) === 'string';
8
+ };
9
+
10
+ var _default = isElement;
11
+ exports.default = _default;
@@ -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 */
@@ -328,7 +328,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
328
328
  * The callback after the enter key is triggered on the input
329
329
  */
330
330
 
331
- var handleInputBlur = (0, _react.useCallback)(function (event) {
331
+ var handleInputPressEnd = (0, _react.useCallback)(function (event) {
332
332
  if (inputState === 'Typing') {
333
333
  updateValue(event, calendarDate);
334
334
  }
@@ -417,6 +417,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
417
417
  var _usePickerClassName = (0, _Picker.usePickerClassName)((0, _extends2.default)({}, props, {
418
418
  classPrefix: classPrefix,
419
419
  name: 'date',
420
+ appearance: appearance,
420
421
  hasValue: hasValue,
421
422
  cleanable: cleanable
422
423
  })),
@@ -459,7 +460,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
459
460
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : formatStr,
460
461
  inputMask: _utils.DateUtils.getDateMask(formatStr),
461
462
  onInputChange: handleInputChange,
462
- onInputBlur: handleInputBlur,
463
+ onInputBlur: handleInputPressEnd,
464
+ onInputPressEnter: handleInputPressEnd,
463
465
  onKeyDown: onPickerKeyDown,
464
466
  onClean: (0, _utils.createChainedFunction)(handleClean, onClean),
465
467
  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 */
@@ -426,7 +426,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
426
426
  * The callback after the enter key is triggered on the input
427
427
  */
428
428
 
429
- var handleInputBlur = (0, _react.useCallback)(function (event) {
429
+ var handleInputPressEnd = (0, _react.useCallback)(function (event) {
430
430
  if (inputState === 'Typing') {
431
431
  handleValueUpdate(event, selectValue);
432
432
  }
@@ -574,6 +574,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
574
574
  var _usePickerClassName = (0, _Picker.usePickerClassName)((0, _extends2.default)({}, props, {
575
575
  classPrefix: classPrefix,
576
576
  name: 'daterange',
577
+ appearance: appearance,
577
578
  hasValue: hasValue,
578
579
  cleanable: cleanable
579
580
  })),
@@ -601,7 +602,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
601
602
  inputValue: value ? getDisplayString(value, true) : '',
602
603
  inputPlaceholder: typeof placeholder === 'string' && placeholder ? placeholder : rangeFormatStr,
603
604
  onInputChange: handleInputChange,
604
- onInputBlur: handleInputBlur,
605
+ onInputBlur: handleInputPressEnd,
606
+ onInputPressEnter: handleInputPressEnd,
605
607
  onKeyDown: onPickerKeyDown,
606
608
  onClean: (0, _utils.createChainedFunction)(handleClean, onClean),
607
609
  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
@@ -41,6 +41,8 @@ var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
41
41
 
42
42
  var _DropdownState = require("./DropdownState");
43
43
 
44
+ var _useRenderDropdownItem = require("./useRenderDropdownItem");
45
+
44
46
  /**
45
47
  * The <Dropdown.Item> API
46
48
  * When used inside <Sidenav>, renders a <TreeviewItem>
@@ -54,7 +56,13 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
54
56
  eventKey = props.eventKey,
55
57
  onSelect = props.onSelect,
56
58
  icon = props.icon,
57
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon"]);
59
+ _props$as = props.as,
60
+ Component = _props$as === void 0 ? 'li' : _props$as,
61
+ divider = props.divider,
62
+ panel = props.panel,
63
+ children = props.children,
64
+ disabled = props.disabled,
65
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "className", "active", "eventKey", "onSelect", "icon", "as", "divider", "panel", "children", "disabled"]);
58
66
  var internalId = (0, _useInternalId.default)('DropdownItem');
59
67
  var nav = (0, _react.useContext)(_NavContext.default);
60
68
  var dropdown = (0, _react.useContext)(_DropdownContext.default);
@@ -106,6 +114,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
106
114
  };
107
115
  }
108
116
  }, [internalId, selected, dispatch]);
117
+ var renderDropdownItem = (0, _useRenderDropdownItem.useRenderDropdownItem)(Component);
109
118
 
110
119
  if (sidenav !== null && sidenav !== void 0 && sidenav.expanded) {
111
120
  return /*#__PURE__*/_react.default.createElement(_SidenavDropdownItem.default, (0, _extends2.default)({
@@ -113,28 +122,19 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
113
122
  }, props));
114
123
  }
115
124
 
116
- var _rest$as = rest.as,
117
- Component = _rest$as === void 0 ? 'li' : _rest$as,
118
- divider = rest.divider,
119
- panel = rest.panel,
120
- children = rest.children,
121
- disabled = rest.disabled,
122
- restProps = (0, _objectWithoutPropertiesLoose2.default)(rest, ["as", "divider", "panel", "children", "disabled"]);
123
-
124
125
  if (divider) {
125
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
126
+ return renderDropdownItem((0, _extends2.default)({
126
127
  ref: ref,
127
- role: "separator",
128
+ role: 'separator',
128
129
  className: merge(prefix('divider'), className)
129
130
  }, restProps));
130
131
  }
131
132
 
132
133
  if (panel) {
133
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
134
+ return renderDropdownItem((0, _extends2.default)({
134
135
  ref: ref,
135
- role: "none presentation",
136
136
  className: merge(prefix('panel'), className)
137
- }, restProps), children);
137
+ }, restProps));
138
138
  }
139
139
 
140
140
  if (navbar) {
@@ -158,6 +158,7 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
158
158
  className: classes,
159
159
  "aria-current": selected || undefined
160
160
  }, dataAttributes, restProps, {
161
+ as: Component,
161
162
  onClick: (0, _utils.createChainedFunction)(handleClickNavbarDropdownItem, restProps.onClick)
162
163
  }), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
163
164
  className: prefix('menu-icon')
@@ -188,12 +189,14 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
188
189
  dataAttributes['data-event-key-type'] = typeof eventKey;
189
190
  }
190
191
 
191
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
192
+ return renderDropdownItem((0, _extends2.default)({
192
193
  ref: (0, _utils.mergeRefs)(ref, menuitemRef),
193
194
  className: classes
194
- }, menuitem, dataAttributes, restProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
195
- className: prefix('menu-icon')
196
- }), children);
195
+ }, menuitem, dataAttributes, restProps, {
196
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
197
+ className: prefix('menu-icon')
198
+ }), children)
199
+ }));
197
200
  });
198
201
  });
199
202
 
@@ -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
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare function useRenderDropdownItem(Component: React.ElementType): (props: any, OverrideComponent?: React.ElementType) => JSX.Element;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ exports.__esModule = true;
6
+ exports.useRenderDropdownItem = useRenderDropdownItem;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ function useRenderDropdownItem(Component) {
11
+ return (0, _react.useCallback)(function (props, OverrideComponent) {
12
+ if (Component === 'li') {
13
+ if (OverrideComponent) {
14
+ return /*#__PURE__*/_react.default.createElement("li", {
15
+ role: "none presentation"
16
+ }, /*#__PURE__*/_react.default.createElement(OverrideComponent, props));
17
+ }
18
+
19
+ return /*#__PURE__*/_react.default.createElement(Component, props);
20
+ }
21
+
22
+ return /*#__PURE__*/_react.default.createElement("li", {
23
+ role: "none presentation"
24
+ }, /*#__PURE__*/_react.default.createElement(Component, props));
25
+ }, [Component]);
26
+ }
@@ -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;
@@ -138,14 +138,18 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
138
138
  }
139
139
  }
140
140
 
141
- var ariaDescribedby = controlId ? controlId + "-" + (messageNode ? 'error-message' : 'help-text') : null;
141
+ var ariaDescribedby = controlId ? controlId + "-help-text" : null;
142
+ var fieldHasError = Boolean(messageNode);
143
+ var ariaErrormessage = fieldHasError && controlId ? controlId + "-error-message" : undefined;
142
144
  return /*#__PURE__*/_react.default.createElement(Component, {
143
145
  className: classes,
144
146
  ref: ref
145
147
  }, /*#__PURE__*/_react.default.createElement(AccepterComponent, (0, _extends3.default)({
146
148
  id: controlId,
147
149
  "aria-labelledby": controlId ? controlId + "-control-label" : null,
148
- "aria-describedby": ariaDescribedby
150
+ "aria-describedby": ariaDescribedby,
151
+ "aria-invalid": fieldHasError || undefined,
152
+ "aria-errormessage": ariaErrormessage
149
153
  }, rest, {
150
154
  readOnly: readOnly,
151
155
  plaintext: plaintext,