rsuite 6.1.2 → 6.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 (651) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/Timeline/styles/index.css +11 -0
  3. package/Timeline/styles/index.scss +13 -0
  4. package/Uploader/styles/index.css +3 -0
  5. package/Uploader/styles/index.scss +3 -0
  6. package/cjs/Affix/Affix.js +4 -4
  7. package/cjs/Animation/Collapse.js +4 -5
  8. package/cjs/Animation/Transition.d.ts +2 -2
  9. package/cjs/Animation/Transition.js +17 -20
  10. package/cjs/AutoComplete/AutoComplete.d.ts +2 -0
  11. package/cjs/AutoComplete/AutoComplete.js +12 -10
  12. package/cjs/Avatar/useImage.js +1 -1
  13. package/cjs/AvatarGroup/AvatarGroup.d.ts +2 -2
  14. package/cjs/Badge/Badge.js +1 -4
  15. package/cjs/Breadcrumb/Breadcrumb.js +4 -4
  16. package/cjs/Button/Button.js +6 -6
  17. package/cjs/Calendar/Calendar.js +5 -5
  18. package/cjs/Calendar/CalendarBody.js +1 -1
  19. package/cjs/Calendar/CalendarContainer.js +14 -33
  20. package/cjs/Calendar/CalendarHeader.js +7 -8
  21. package/cjs/Calendar/Grid/GridCell.js +2 -2
  22. package/cjs/Calendar/Grid/GridHeaderRow.js +1 -1
  23. package/cjs/Calendar/Grid/GridRow.js +5 -6
  24. package/cjs/Calendar/MonthDropdown/MonthDropdown.js +1 -1
  25. package/cjs/Calendar/MonthDropdown/MonthDropdownItem.js +1 -1
  26. package/cjs/Calendar/TimeDropdown/TimeDropdown.js +12 -14
  27. package/cjs/Calendar/hooks/useCalendar.d.ts +16 -17
  28. package/cjs/Calendar/hooks/useCalendar.js +2 -4
  29. package/cjs/Calendar/hooks/useCalendarDate.js +5 -9
  30. package/cjs/Calendar/hooks/useCalendarState.js +6 -12
  31. package/cjs/Calendar/types.d.ts +0 -1
  32. package/cjs/Carousel/Carousel.js +5 -6
  33. package/cjs/CascadeTree/CascadeTree.js +6 -16
  34. package/cjs/CascadeTree/TreeView.js +5 -7
  35. package/cjs/CascadeTree/hooks/useSearch.d.ts +0 -1
  36. package/cjs/CascadeTree/hooks/useSearch.js +1 -1
  37. package/cjs/CascadeTree/hooks/useSelect.d.ts +0 -1
  38. package/cjs/CascadeTree/hooks/useSelect.js +3 -4
  39. package/cjs/CascadeTree/types.d.ts +0 -1
  40. package/cjs/CascadeTree/utils.js +1 -2
  41. package/cjs/Cascader/Cascader.js +18 -29
  42. package/cjs/Cascader/useActive.d.ts +0 -1
  43. package/cjs/Cascader/useActive.js +4 -6
  44. package/cjs/CheckPicker/CheckPicker.js +14 -15
  45. package/cjs/CheckTree/CheckTree.js +1 -1
  46. package/cjs/CheckTree/CheckTreeNode.js +3 -4
  47. package/cjs/CheckTree/CheckTreeView.js +5 -5
  48. package/cjs/CheckTree/hooks/useTreeCheckState.js +2 -2
  49. package/cjs/CheckTree/utils.js +9 -17
  50. package/cjs/CheckTreePicker/CheckTreePicker.js +7 -7
  51. package/cjs/CheckTreePicker/hooks/useFocusState.d.ts +0 -1
  52. package/cjs/CheckTreePicker/hooks/useFocusState.js +3 -6
  53. package/cjs/Checkbox/Checkbox.js +4 -5
  54. package/cjs/Checkbox/hooks/useIndeterminateCheckbox.d.ts +0 -1
  55. package/cjs/Checkbox/hooks/useIndeterminateCheckbox.js +1 -1
  56. package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
  57. package/cjs/DOMHelper/index.d.ts +1 -2
  58. package/cjs/DOMHelper/isElement.js +1 -1
  59. package/cjs/DateInput/DateField.d.ts +122 -3
  60. package/cjs/DateInput/DateField.js +12 -15
  61. package/cjs/DateInput/DateInput.js +3 -4
  62. package/cjs/DateInput/hooks/useDateInputState.d.ts +124 -4
  63. package/cjs/DateInput/hooks/useDateInputState.js +2 -2
  64. package/cjs/DateInput/hooks/useIsFocused.js +2 -2
  65. package/cjs/DateInput/hooks/useKeyboardInputEvent.d.ts +0 -1
  66. package/cjs/DateInput/hooks/useKeyboardInputEvent.js +8 -9
  67. package/cjs/DateInput/hooks/useSelectedState.d.ts +0 -1
  68. package/cjs/DateInput/utils.d.ts +0 -1
  69. package/cjs/DateInput/utils.js +2 -3
  70. package/cjs/DatePicker/DatePicker.js +18 -25
  71. package/cjs/DatePicker/PredefinedRanges.js +3 -3
  72. package/cjs/DatePicker/Toolbar.js +4 -4
  73. package/cjs/DatePicker/hooks/useCustomizedInput.d.ts +0 -1
  74. package/cjs/DatePicker/hooks/useFocus.js +5 -8
  75. package/cjs/DatePicker/hooks/useMonthView.d.ts +0 -1
  76. package/cjs/DatePicker/hooks/useMonthView.js +1 -1
  77. package/cjs/DatePicker/utils.d.ts +1 -2
  78. package/cjs/DatePicker/utils.js +2 -2
  79. package/cjs/DateRangeInput/DateRangeInput.js +8 -9
  80. package/cjs/DateRangePicker/Calendar.js +2 -2
  81. package/cjs/DateRangePicker/DateRangePicker.js +25 -29
  82. package/cjs/DateRangePicker/Header.js +3 -3
  83. package/cjs/DateRangePicker/disabledDateUtils.js +2 -2
  84. package/cjs/DateRangePicker/hooks/useCalendarHandlers.d.ts +0 -1
  85. package/cjs/DateRangePicker/hooks/useCalendarHandlers.js +5 -5
  86. package/cjs/DateRangePicker/utils.js +1 -2
  87. package/cjs/Dropdown/Dropdown.js +3 -3
  88. package/cjs/Dropdown/DropdownItem.js +4 -5
  89. package/cjs/Dropdown/DropdownMenu.d.ts +1 -1
  90. package/cjs/Dropdown/DropdownMenu.js +1 -1
  91. package/cjs/Form/Form.d.ts +38 -3
  92. package/cjs/Form/Form.js +25 -12
  93. package/cjs/Form/hooks/useFormRef.d.ts +0 -1
  94. package/cjs/Form/hooks/useFormValidate.d.ts +2 -1
  95. package/cjs/Form/hooks/useFormValidate.js +136 -20
  96. package/cjs/Form/hooks/useFormValue.d.ts +0 -1
  97. package/cjs/Form/index.d.ts +1 -0
  98. package/cjs/Form/resolvers.d.ts +59 -0
  99. package/cjs/Form/resolvers.js +4 -0
  100. package/cjs/FormControl/FormControl.js +5 -5
  101. package/cjs/FormGroup/FormGroupContext.d.ts +1 -1
  102. package/cjs/Highlight/utils/highlightText.js +1 -1
  103. package/cjs/InlineEdit/renderChildren.js +5 -6
  104. package/cjs/InlineEdit/useEditState.js +9 -12
  105. package/cjs/InlineEdit/useFocusEvent.d.ts +0 -1
  106. package/cjs/InlineEdit/useFocusEvent.js +7 -11
  107. package/cjs/Input/Input.js +1 -1
  108. package/cjs/InputGroup/InputGroupContext.d.ts +2 -1
  109. package/cjs/InputNumber/index.d.ts +0 -1
  110. package/cjs/InputPicker/InputAutosize.js +1 -1
  111. package/cjs/InputPicker/InputPicker.js +30 -35
  112. package/cjs/InputPicker/InputSearch.js +1 -2
  113. package/cjs/InputPicker/hooks/useData.d.ts +0 -1
  114. package/cjs/InputPicker/hooks/useData.js +1 -1
  115. package/cjs/InputPicker/hooks/useInput.js +3 -6
  116. package/cjs/InputPicker/hooks/useMaxWidth.js +2 -4
  117. package/cjs/List/helper/AutoScroller.js +2 -4
  118. package/cjs/List/helper/useSortHelper.d.ts +4 -4
  119. package/cjs/List/helper/useSortHelper.js +13 -19
  120. package/cjs/MaskedInput/TextMask.d.ts +5 -5
  121. package/cjs/MaskedInput/TextMask.js +3 -5
  122. package/cjs/MaskedInput/conformToMask.d.ts +1 -1
  123. package/cjs/MaskedInput/createTextMaskInputElement.js +2 -3
  124. package/cjs/Menu/MenuItem.js +3 -4
  125. package/cjs/Message/Message.js +1 -1
  126. package/cjs/Modal/Modal.js +8 -10
  127. package/cjs/Modal/ModalBody.js +1 -1
  128. package/cjs/Modal/utils.d.ts +2 -3
  129. package/cjs/Modal/utils.js +2 -3
  130. package/cjs/MultiCascadeTree/SearchView.js +1 -1
  131. package/cjs/MultiCascadeTree/TreeView.js +2 -2
  132. package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +0 -1
  133. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +5 -8
  134. package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +0 -1
  135. package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +0 -1
  136. package/cjs/MultiCascadeTree/hooks/useSearch.js +2 -2
  137. package/cjs/MultiCascadeTree/hooks/useSelect.js +3 -4
  138. package/cjs/MultiCascadeTree/types.d.ts +0 -1
  139. package/cjs/MultiCascadeTree/utils.d.ts +4 -4
  140. package/cjs/MultiCascadeTree/utils.js +2 -3
  141. package/cjs/MultiCascader/MultiCascader.js +13 -16
  142. package/cjs/Nav/AdaptiveNavItem.js +2 -3
  143. package/cjs/Nav/Nav.d.ts +1 -1
  144. package/cjs/Nav/Nav.js +4 -4
  145. package/cjs/Nav/NavDropdown.d.ts +1 -1
  146. package/cjs/Nav/NavDropdown.js +3 -3
  147. package/cjs/Nav/NavDropdownItem.js +2 -2
  148. package/cjs/Nav/NavDropdownMenu.d.ts +1 -1
  149. package/cjs/Nav/NavDropdownMenu.js +1 -1
  150. package/cjs/Nav/NavItem.js +4 -4
  151. package/cjs/Navbar/Navbar.js +1 -1
  152. package/cjs/Navbar/NavbarContent.js +1 -1
  153. package/cjs/Navbar/NavbarDrawer.js +1 -1
  154. package/cjs/Navbar/NavbarDropdown.d.ts +1 -1
  155. package/cjs/Navbar/NavbarDropdown.js +3 -3
  156. package/cjs/Navbar/NavbarDropdownItem.js +5 -6
  157. package/cjs/Navbar/NavbarDropdownMenu.d.ts +1 -1
  158. package/cjs/Navbar/NavbarDropdownMenu.js +1 -1
  159. package/cjs/Navbar/NavbarItem.js +4 -4
  160. package/cjs/Navbar/NavbarToggle.js +2 -2
  161. package/cjs/Notification/Notification.js +1 -1
  162. package/cjs/NumberInput/NumberInput.js +3 -3
  163. package/cjs/NumberInput/hooks/useEvents.d.ts +0 -1
  164. package/cjs/NumberInput/hooks/useEvents.js +2 -3
  165. package/cjs/NumberInput/hooks/useWheelHandler.js +1 -2
  166. package/cjs/Pagination/Pagination.js +1 -1
  167. package/cjs/Pagination/PaginationButton.js +1 -1
  168. package/cjs/Pagination/PaginationGroup.js +3 -4
  169. package/cjs/Panel/Panel.js +2 -2
  170. package/cjs/PanelGroup/PanelGroup.js +1 -1
  171. package/cjs/PasswordInput/PasswordInput.js +2 -2
  172. package/cjs/PinInput/PinInput.js +1 -1
  173. package/cjs/PinInput/hooks/usePinInputRefs.d.ts +0 -1
  174. package/cjs/PinInput/hooks/usePinInputRefs.js +2 -4
  175. package/cjs/PinInput/hooks/usePinValue.d.ts +1 -1
  176. package/cjs/PinInput/hooks/usePinValue.js +2 -2
  177. package/cjs/Progress/ProgressLine.js +1 -1
  178. package/cjs/Progress/types.d.ts +0 -1
  179. package/cjs/ProgressCircle/hooks/useProgressCirclePath.d.ts +0 -1
  180. package/cjs/Radio/Radio.js +3 -3
  181. package/cjs/RadioGroup/RadioGroup.js +1 -1
  182. package/cjs/RadioTile/RadioTile.js +2 -2
  183. package/cjs/RadioTileGroup/RadioTileGroup.js +1 -1
  184. package/cjs/RangeSlider/RangeSlider.js +6 -6
  185. package/cjs/Rate/Character.js +2 -2
  186. package/cjs/Rate/Rate.js +3 -3
  187. package/cjs/Rate/useRatingStates.d.ts +0 -1
  188. package/cjs/SegmentedControl/SegmentedControl.js +3 -3
  189. package/cjs/SegmentedControl/hooks/useIndicatorPosition.js +1 -1
  190. package/cjs/SelectPicker/SelectPicker.js +13 -16
  191. package/cjs/Sidebar/Sidebar.js +1 -1
  192. package/cjs/Sidenav/ExpandedSidenavDropdown.js +6 -6
  193. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +4 -5
  194. package/cjs/Sidenav/Node.js +9 -16
  195. package/cjs/Sidenav/Sidenav.js +2 -2
  196. package/cjs/Sidenav/SidenavDropdown.d.ts +1 -1
  197. package/cjs/Sidenav/SidenavDropdown.js +4 -4
  198. package/cjs/Sidenav/SidenavDropdownItem.js +3 -4
  199. package/cjs/Sidenav/SidenavItem.js +5 -6
  200. package/cjs/Sidenav/SidenavToggle.js +2 -2
  201. package/cjs/Slider/Slider.js +3 -3
  202. package/cjs/Slider/useDrag.d.ts +0 -1
  203. package/cjs/Slider/useDrag.js +7 -12
  204. package/cjs/Slider/utils.d.ts +1 -2
  205. package/cjs/Slider/utils.js +2 -3
  206. package/cjs/Steps/StepItem.js +1 -2
  207. package/cjs/Table/Table.d.ts +3 -3
  208. package/cjs/Tabs/Tabs.js +3 -4
  209. package/cjs/TimePicker/TimePicker.js +2 -2
  210. package/cjs/Timeline/Timeline.d.ts +6 -1
  211. package/cjs/Timeline/Timeline.js +14 -10
  212. package/cjs/Toggle/Toggle.js +2 -2
  213. package/cjs/Tree/Tree.js +2 -2
  214. package/cjs/Tree/TreeNode.js +10 -11
  215. package/cjs/Tree/TreeView.js +5 -5
  216. package/cjs/Tree/hooks/useExpandTree.js +1 -1
  217. package/cjs/Tree/hooks/useFlattenTree.js +6 -9
  218. package/cjs/Tree/hooks/useFocusTree.d.ts +1 -2
  219. package/cjs/Tree/hooks/useFocusTree.js +12 -14
  220. package/cjs/Tree/hooks/useTreeDrag.d.ts +0 -1
  221. package/cjs/Tree/hooks/useTreeDrag.js +10 -12
  222. package/cjs/Tree/hooks/useTreeNodeProps.js +1 -1
  223. package/cjs/Tree/hooks/useTreeSearch.js +4 -4
  224. package/cjs/Tree/hooks/useVirtualizedTreeData.js +2 -2
  225. package/cjs/Tree/types.d.ts +2 -3
  226. package/cjs/Tree/utils/flattenTree.d.ts +1 -1
  227. package/cjs/Tree/utils/focusableTree.js +5 -8
  228. package/cjs/Tree/utils/getNodeParentKeys.js +2 -4
  229. package/cjs/Tree/utils/hasVisibleChildren.d.ts +1 -1
  230. package/cjs/Tree/utils/treeKeyboardInteractions.js +3 -3
  231. package/cjs/TreePicker/TreePicker.js +8 -9
  232. package/cjs/TreePicker/hooks/useFocusState.d.ts +0 -1
  233. package/cjs/TreePicker/hooks/useFocusState.js +4 -8
  234. package/cjs/Uploader/UploadFileItem.js +8 -10
  235. package/cjs/Uploader/UploadTrigger.js +8 -10
  236. package/cjs/Uploader/Uploader.d.ts +2 -0
  237. package/cjs/Uploader/Uploader.js +66 -26
  238. package/cjs/Uploader/utils/ajaxUpload.js +5 -5
  239. package/cjs/Uploader/utils/previewFile.js +1 -1
  240. package/cjs/internals/Disclosure/Disclosure.js +5 -8
  241. package/cjs/internals/Disclosure/DisclosureButton.js +2 -2
  242. package/cjs/internals/InputBase/InputBase.js +5 -6
  243. package/cjs/internals/Menu/Menu.js +16 -20
  244. package/cjs/internals/Menu/MenuItem.js +4 -5
  245. package/cjs/internals/Menu/Menubar.js +5 -7
  246. package/cjs/internals/Menu/useMenu.js +5 -10
  247. package/cjs/internals/Overlay/Modal.js +8 -11
  248. package/cjs/internals/Overlay/ModalManager.js +3 -5
  249. package/cjs/internals/Overlay/Overlay.js +1 -1
  250. package/cjs/internals/Overlay/OverlayTrigger.d.ts +0 -1
  251. package/cjs/internals/Overlay/OverlayTrigger.js +5 -7
  252. package/cjs/internals/Overlay/Position.js +6 -8
  253. package/cjs/internals/Picker/ListCheckItem.js +3 -3
  254. package/cjs/internals/Picker/ListItem.js +1 -1
  255. package/cjs/internals/Picker/Listbox.js +9 -10
  256. package/cjs/internals/Picker/PickerIndicator.js +13 -11
  257. package/cjs/internals/Picker/PickerPopup.js +4 -5
  258. package/cjs/internals/Picker/PickerToggle.js +3 -4
  259. package/cjs/internals/Picker/SelectedElement.js +1 -1
  260. package/cjs/internals/Picker/hooks/useFocusItemValue.d.ts +0 -1
  261. package/cjs/internals/Picker/hooks/useFocusItemValue.js +14 -28
  262. package/cjs/internals/Picker/hooks/usePickerRef.d.ts +0 -1
  263. package/cjs/internals/Picker/hooks/usePickerRef.js +9 -15
  264. package/cjs/internals/Picker/hooks/useSearch.d.ts +0 -1
  265. package/cjs/internals/Picker/hooks/useSearch.js +2 -2
  266. package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -1
  267. package/cjs/internals/Picker/hooks/useToggleKeyDownEvent.js +13 -17
  268. package/cjs/internals/Picker/utils.js +9 -9
  269. package/cjs/internals/Ripple/Ripple.js +3 -4
  270. package/cjs/internals/SafeAnchor/SafeAnchor.js +1 -1
  271. package/cjs/internals/ScrollView/hooks/useScrollState.d.ts +0 -1
  272. package/cjs/internals/ScrollView/hooks/useScrollState.js +2 -3
  273. package/cjs/internals/Tree/TreeProvider.d.ts +4 -4
  274. package/cjs/internals/Tree/TreeProvider.js +2 -8
  275. package/cjs/internals/Tree/types.d.ts +0 -1
  276. package/cjs/internals/Tree/utils/getParentMap.d.ts +0 -1
  277. package/cjs/internals/Windowing/AutoSizer.js +2 -3
  278. package/cjs/internals/Windowing/List.js +4 -8
  279. package/cjs/internals/constants/index.d.ts +2 -2
  280. package/cjs/internals/hooks/useClickOutside.js +2 -4
  281. package/cjs/internals/hooks/useCustom.d.ts +0 -1
  282. package/cjs/internals/hooks/useCustom.js +5 -7
  283. package/cjs/internals/hooks/useElementResize.d.ts +0 -1
  284. package/cjs/internals/hooks/useEventCallback.js +1 -2
  285. package/cjs/internals/hooks/useEventListener.js +1 -1
  286. package/cjs/internals/hooks/useFocus.js +2 -4
  287. package/cjs/internals/hooks/useFocusVirtualListItem.d.ts +0 -1
  288. package/cjs/internals/hooks/useMount.js +1 -2
  289. package/cjs/internals/hooks/useRootClose.js +6 -6
  290. package/cjs/internals/hooks/useTimeout.js +1 -2
  291. package/cjs/internals/hooks/useToggleCaret.d.ts +0 -1
  292. package/cjs/internals/hooks/useUniqueId.js +1 -1
  293. package/cjs/internals/hooks/useUpdatedRef.d.ts +0 -1
  294. package/cjs/internals/styled-system/style-manager.js +1 -1
  295. package/cjs/internals/styled-system/useStyled.js +2 -2
  296. package/cjs/internals/types/utils.d.ts +0 -1
  297. package/cjs/internals/utils/colours.d.ts +4 -4
  298. package/cjs/internals/utils/colours.js +1 -1
  299. package/cjs/internals/utils/date/disableTime.js +6 -12
  300. package/cjs/internals/utils/date/omitHideDisabledProps.d.ts +1 -1
  301. package/cjs/internals/utils/date/useDateMode.d.ts +1 -1
  302. package/cjs/internals/utils/react/ReactChildren.js +1 -2
  303. package/cjs/internals/utils/react/deprecateComponent.js +1 -2
  304. package/cjs/internals/utils/react/getDOMNode.js +4 -5
  305. package/cjs/internals/utils/sizes.d.ts +2 -2
  306. package/cjs/internals/utils/style-sheet/css.d.ts +0 -1
  307. package/cjs/internals/utils/style-sheet/css.js +1 -1
  308. package/cjs/internals/utils/style-sheet/prefix.d.ts +0 -1
  309. package/cjs/internals/utils/style-sheet/responsive.d.ts +1 -1
  310. package/cjs/internals/utils/style-sheet/styles.d.ts +3 -3
  311. package/cjs/internals/utils/style-sheet/styles.js +1 -1
  312. package/cjs/toaster/ToastContainer.js +3 -5
  313. package/cjs/toaster/hooks/useDelayedClosure.d.ts +0 -1
  314. package/cjs/toaster/hooks/useDelayedClosure.js +3 -4
  315. package/cjs/toaster/toaster.js +42 -15
  316. package/cjs/useDialog/Dialog.d.ts +1 -1
  317. package/cjs/useDialog/Dialog.js +1 -1
  318. package/cjs/useDialog/useDialog.d.ts +1 -1
  319. package/cjs/useDialog/useDialog.js +3 -3
  320. package/cjs/useFormControl/hooks/useField.d.ts +0 -1
  321. package/cjs/useFormControl/hooks/useField.js +5 -7
  322. package/cjs/useFormControl/hooks/useRegisterModel.js +2 -2
  323. package/cjs/useFormControl/useFormControl.js +8 -8
  324. package/cjs/useToaster/useToaster.js +4 -5
  325. package/dist/rsuite-no-reset.css +14 -0
  326. package/dist/rsuite-no-reset.min.css +1 -1
  327. package/dist/rsuite.css +14 -0
  328. package/dist/rsuite.js +224 -224
  329. package/dist/rsuite.min.css +1 -1
  330. package/dist/rsuite.min.js +1 -1
  331. package/dist/rsuite.min.js.map +1 -1
  332. package/esm/Affix/Affix.js +4 -4
  333. package/esm/Animation/Collapse.js +1 -2
  334. package/esm/Animation/Transition.d.ts +2 -2
  335. package/esm/Animation/Transition.js +17 -20
  336. package/esm/AutoComplete/AutoComplete.d.ts +2 -0
  337. package/esm/AutoComplete/AutoComplete.js +12 -10
  338. package/esm/Avatar/useImage.js +1 -1
  339. package/esm/AvatarGroup/AvatarGroup.d.ts +2 -2
  340. package/esm/Badge/Badge.js +1 -4
  341. package/esm/Breadcrumb/Breadcrumb.js +4 -4
  342. package/esm/Button/Button.js +6 -6
  343. package/esm/Calendar/Calendar.js +5 -5
  344. package/esm/Calendar/CalendarBody.js +1 -1
  345. package/esm/Calendar/CalendarContainer.js +14 -33
  346. package/esm/Calendar/CalendarHeader.js +7 -8
  347. package/esm/Calendar/Grid/GridCell.js +2 -2
  348. package/esm/Calendar/Grid/GridHeaderRow.js +1 -1
  349. package/esm/Calendar/Grid/GridRow.js +5 -6
  350. package/esm/Calendar/MonthDropdown/MonthDropdown.js +1 -1
  351. package/esm/Calendar/MonthDropdown/MonthDropdownItem.js +1 -1
  352. package/esm/Calendar/TimeDropdown/TimeDropdown.js +12 -14
  353. package/esm/Calendar/hooks/useCalendar.d.ts +16 -17
  354. package/esm/Calendar/hooks/useCalendar.js +2 -4
  355. package/esm/Calendar/hooks/useCalendarDate.js +5 -9
  356. package/esm/Calendar/hooks/useCalendarState.js +6 -12
  357. package/esm/Calendar/types.d.ts +0 -1
  358. package/esm/Carousel/Carousel.js +5 -6
  359. package/esm/CascadeTree/CascadeTree.js +6 -16
  360. package/esm/CascadeTree/TreeView.js +5 -7
  361. package/esm/CascadeTree/hooks/useSearch.d.ts +0 -1
  362. package/esm/CascadeTree/hooks/useSearch.js +1 -1
  363. package/esm/CascadeTree/hooks/useSelect.d.ts +0 -1
  364. package/esm/CascadeTree/hooks/useSelect.js +3 -4
  365. package/esm/CascadeTree/types.d.ts +0 -1
  366. package/esm/CascadeTree/utils.js +1 -2
  367. package/esm/Cascader/Cascader.js +18 -29
  368. package/esm/Cascader/useActive.d.ts +0 -1
  369. package/esm/Cascader/useActive.js +4 -6
  370. package/esm/CheckPicker/CheckPicker.js +14 -15
  371. package/esm/CheckTree/CheckTree.js +1 -1
  372. package/esm/CheckTree/CheckTreeNode.js +3 -4
  373. package/esm/CheckTree/CheckTreeView.js +5 -5
  374. package/esm/CheckTree/hooks/useTreeCheckState.js +2 -2
  375. package/esm/CheckTree/utils.js +9 -17
  376. package/esm/CheckTreePicker/CheckTreePicker.js +7 -7
  377. package/esm/CheckTreePicker/hooks/useFocusState.d.ts +0 -1
  378. package/esm/CheckTreePicker/hooks/useFocusState.js +3 -6
  379. package/esm/Checkbox/Checkbox.js +4 -5
  380. package/esm/Checkbox/hooks/useIndeterminateCheckbox.d.ts +0 -1
  381. package/esm/Checkbox/hooks/useIndeterminateCheckbox.js +1 -1
  382. package/esm/CheckboxGroup/CheckboxGroup.js +2 -2
  383. package/esm/DOMHelper/index.d.ts +1 -2
  384. package/esm/DOMHelper/isElement.js +1 -1
  385. package/esm/DateInput/DateField.d.ts +122 -3
  386. package/esm/DateInput/DateField.js +12 -15
  387. package/esm/DateInput/DateInput.js +3 -4
  388. package/esm/DateInput/hooks/useDateInputState.d.ts +124 -4
  389. package/esm/DateInput/hooks/useDateInputState.js +2 -2
  390. package/esm/DateInput/hooks/useIsFocused.js +2 -2
  391. package/esm/DateInput/hooks/useKeyboardInputEvent.d.ts +0 -1
  392. package/esm/DateInput/hooks/useKeyboardInputEvent.js +8 -9
  393. package/esm/DateInput/hooks/useSelectedState.d.ts +0 -1
  394. package/esm/DateInput/utils.d.ts +0 -1
  395. package/esm/DateInput/utils.js +2 -3
  396. package/esm/DatePicker/DatePicker.js +18 -25
  397. package/esm/DatePicker/PredefinedRanges.js +3 -3
  398. package/esm/DatePicker/Toolbar.js +4 -4
  399. package/esm/DatePicker/hooks/useCustomizedInput.d.ts +0 -1
  400. package/esm/DatePicker/hooks/useFocus.js +5 -8
  401. package/esm/DatePicker/hooks/useMonthView.d.ts +0 -1
  402. package/esm/DatePicker/hooks/useMonthView.js +1 -1
  403. package/esm/DatePicker/utils.d.ts +1 -2
  404. package/esm/DatePicker/utils.js +2 -2
  405. package/esm/DateRangeInput/DateRangeInput.js +8 -9
  406. package/esm/DateRangePicker/Calendar.js +2 -2
  407. package/esm/DateRangePicker/DateRangePicker.js +25 -29
  408. package/esm/DateRangePicker/Header.js +3 -3
  409. package/esm/DateRangePicker/disabledDateUtils.js +2 -2
  410. package/esm/DateRangePicker/hooks/useCalendarHandlers.d.ts +0 -1
  411. package/esm/DateRangePicker/hooks/useCalendarHandlers.js +5 -5
  412. package/esm/DateRangePicker/utils.js +1 -2
  413. package/esm/Dropdown/Dropdown.js +3 -3
  414. package/esm/Dropdown/DropdownItem.js +4 -5
  415. package/esm/Dropdown/DropdownMenu.d.ts +1 -1
  416. package/esm/Dropdown/DropdownMenu.js +1 -1
  417. package/esm/Form/Form.d.ts +38 -3
  418. package/esm/Form/Form.js +25 -12
  419. package/esm/Form/hooks/useFormRef.d.ts +0 -1
  420. package/esm/Form/hooks/useFormValidate.d.ts +2 -1
  421. package/esm/Form/hooks/useFormValidate.js +136 -20
  422. package/esm/Form/hooks/useFormValue.d.ts +0 -1
  423. package/esm/Form/index.d.ts +1 -0
  424. package/esm/Form/resolvers.d.ts +59 -0
  425. package/esm/Form/resolvers.js +2 -0
  426. package/esm/FormControl/FormControl.js +5 -5
  427. package/esm/FormGroup/FormGroupContext.d.ts +1 -1
  428. package/esm/Highlight/utils/highlightText.js +1 -1
  429. package/esm/InlineEdit/renderChildren.js +5 -6
  430. package/esm/InlineEdit/useEditState.js +9 -12
  431. package/esm/InlineEdit/useFocusEvent.d.ts +0 -1
  432. package/esm/InlineEdit/useFocusEvent.js +7 -11
  433. package/esm/Input/Input.js +1 -1
  434. package/esm/InputGroup/InputGroupContext.d.ts +2 -1
  435. package/esm/InputNumber/index.d.ts +0 -1
  436. package/esm/InputPicker/InputAutosize.js +1 -1
  437. package/esm/InputPicker/InputPicker.js +30 -35
  438. package/esm/InputPicker/InputSearch.js +1 -2
  439. package/esm/InputPicker/hooks/useData.d.ts +0 -1
  440. package/esm/InputPicker/hooks/useData.js +1 -1
  441. package/esm/InputPicker/hooks/useInput.js +3 -6
  442. package/esm/InputPicker/hooks/useMaxWidth.js +2 -4
  443. package/esm/List/helper/AutoScroller.js +2 -4
  444. package/esm/List/helper/useSortHelper.d.ts +4 -4
  445. package/esm/List/helper/useSortHelper.js +13 -19
  446. package/esm/MaskedInput/TextMask.d.ts +5 -5
  447. package/esm/MaskedInput/TextMask.js +3 -5
  448. package/esm/MaskedInput/conformToMask.d.ts +1 -1
  449. package/esm/MaskedInput/createTextMaskInputElement.js +2 -3
  450. package/esm/Menu/MenuItem.js +3 -4
  451. package/esm/Message/Message.js +1 -1
  452. package/esm/Modal/Modal.js +8 -10
  453. package/esm/Modal/ModalBody.js +1 -1
  454. package/esm/Modal/utils.d.ts +2 -3
  455. package/esm/Modal/utils.js +2 -3
  456. package/esm/MultiCascadeTree/SearchView.js +1 -1
  457. package/esm/MultiCascadeTree/TreeView.js +2 -2
  458. package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +0 -1
  459. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +5 -8
  460. package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +0 -1
  461. package/esm/MultiCascadeTree/hooks/useSearch.d.ts +0 -1
  462. package/esm/MultiCascadeTree/hooks/useSearch.js +2 -2
  463. package/esm/MultiCascadeTree/hooks/useSelect.js +3 -4
  464. package/esm/MultiCascadeTree/types.d.ts +0 -1
  465. package/esm/MultiCascadeTree/utils.d.ts +4 -4
  466. package/esm/MultiCascadeTree/utils.js +2 -3
  467. package/esm/MultiCascader/MultiCascader.js +13 -16
  468. package/esm/Nav/AdaptiveNavItem.js +2 -3
  469. package/esm/Nav/Nav.d.ts +1 -1
  470. package/esm/Nav/Nav.js +4 -4
  471. package/esm/Nav/NavDropdown.d.ts +1 -1
  472. package/esm/Nav/NavDropdown.js +3 -3
  473. package/esm/Nav/NavDropdownItem.js +2 -2
  474. package/esm/Nav/NavDropdownMenu.d.ts +1 -1
  475. package/esm/Nav/NavDropdownMenu.js +1 -1
  476. package/esm/Nav/NavItem.js +4 -4
  477. package/esm/Navbar/Navbar.js +1 -1
  478. package/esm/Navbar/NavbarContent.js +1 -1
  479. package/esm/Navbar/NavbarDrawer.js +1 -1
  480. package/esm/Navbar/NavbarDropdown.d.ts +1 -1
  481. package/esm/Navbar/NavbarDropdown.js +3 -3
  482. package/esm/Navbar/NavbarDropdownItem.js +5 -6
  483. package/esm/Navbar/NavbarDropdownMenu.d.ts +1 -1
  484. package/esm/Navbar/NavbarDropdownMenu.js +1 -1
  485. package/esm/Navbar/NavbarItem.js +4 -4
  486. package/esm/Navbar/NavbarToggle.js +2 -2
  487. package/esm/Notification/Notification.js +1 -1
  488. package/esm/NumberInput/NumberInput.js +3 -3
  489. package/esm/NumberInput/hooks/useEvents.d.ts +0 -1
  490. package/esm/NumberInput/hooks/useEvents.js +2 -3
  491. package/esm/NumberInput/hooks/useWheelHandler.js +1 -2
  492. package/esm/Pagination/Pagination.js +1 -1
  493. package/esm/Pagination/PaginationButton.js +1 -1
  494. package/esm/Pagination/PaginationGroup.js +3 -4
  495. package/esm/Panel/Panel.js +2 -2
  496. package/esm/PanelGroup/PanelGroup.js +1 -1
  497. package/esm/PasswordInput/PasswordInput.js +2 -2
  498. package/esm/PinInput/PinInput.js +1 -1
  499. package/esm/PinInput/hooks/usePinInputRefs.d.ts +0 -1
  500. package/esm/PinInput/hooks/usePinInputRefs.js +2 -4
  501. package/esm/PinInput/hooks/usePinValue.d.ts +1 -1
  502. package/esm/PinInput/hooks/usePinValue.js +2 -2
  503. package/esm/Progress/ProgressLine.js +1 -1
  504. package/esm/Progress/types.d.ts +0 -1
  505. package/esm/ProgressCircle/hooks/useProgressCirclePath.d.ts +0 -1
  506. package/esm/Radio/Radio.js +3 -3
  507. package/esm/RadioGroup/RadioGroup.js +1 -1
  508. package/esm/RadioTile/RadioTile.js +2 -2
  509. package/esm/RadioTileGroup/RadioTileGroup.js +1 -1
  510. package/esm/RangeSlider/RangeSlider.js +6 -6
  511. package/esm/Rate/Character.js +2 -2
  512. package/esm/Rate/Rate.js +3 -3
  513. package/esm/Rate/useRatingStates.d.ts +0 -1
  514. package/esm/SegmentedControl/SegmentedControl.js +3 -3
  515. package/esm/SegmentedControl/hooks/useIndicatorPosition.js +1 -1
  516. package/esm/SelectPicker/SelectPicker.js +13 -16
  517. package/esm/Sidebar/Sidebar.js +1 -1
  518. package/esm/Sidenav/ExpandedSidenavDropdown.js +6 -6
  519. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +4 -5
  520. package/esm/Sidenav/Node.js +9 -16
  521. package/esm/Sidenav/Sidenav.js +2 -2
  522. package/esm/Sidenav/SidenavDropdown.d.ts +1 -1
  523. package/esm/Sidenav/SidenavDropdown.js +4 -4
  524. package/esm/Sidenav/SidenavDropdownItem.js +3 -4
  525. package/esm/Sidenav/SidenavItem.js +5 -6
  526. package/esm/Sidenav/SidenavToggle.js +2 -2
  527. package/esm/Slider/Slider.js +3 -3
  528. package/esm/Slider/useDrag.d.ts +0 -1
  529. package/esm/Slider/useDrag.js +7 -12
  530. package/esm/Slider/utils.d.ts +1 -2
  531. package/esm/Slider/utils.js +2 -3
  532. package/esm/Steps/StepItem.js +1 -2
  533. package/esm/Table/Table.d.ts +3 -3
  534. package/esm/Tabs/Tabs.js +3 -4
  535. package/esm/TimePicker/TimePicker.js +2 -2
  536. package/esm/Timeline/Timeline.d.ts +6 -1
  537. package/esm/Timeline/Timeline.js +14 -10
  538. package/esm/Toggle/Toggle.js +2 -2
  539. package/esm/Tree/Tree.js +2 -2
  540. package/esm/Tree/TreeNode.js +10 -11
  541. package/esm/Tree/TreeView.js +5 -5
  542. package/esm/Tree/hooks/useExpandTree.js +1 -1
  543. package/esm/Tree/hooks/useFlattenTree.js +6 -9
  544. package/esm/Tree/hooks/useFocusTree.d.ts +1 -2
  545. package/esm/Tree/hooks/useFocusTree.js +12 -14
  546. package/esm/Tree/hooks/useTreeDrag.d.ts +0 -1
  547. package/esm/Tree/hooks/useTreeDrag.js +10 -12
  548. package/esm/Tree/hooks/useTreeNodeProps.js +1 -1
  549. package/esm/Tree/hooks/useTreeSearch.js +4 -4
  550. package/esm/Tree/hooks/useVirtualizedTreeData.js +2 -2
  551. package/esm/Tree/types.d.ts +2 -3
  552. package/esm/Tree/utils/flattenTree.d.ts +1 -1
  553. package/esm/Tree/utils/focusableTree.js +5 -8
  554. package/esm/Tree/utils/getNodeParentKeys.js +2 -4
  555. package/esm/Tree/utils/hasVisibleChildren.d.ts +1 -1
  556. package/esm/Tree/utils/treeKeyboardInteractions.js +3 -3
  557. package/esm/TreePicker/TreePicker.js +8 -9
  558. package/esm/TreePicker/hooks/useFocusState.d.ts +0 -1
  559. package/esm/TreePicker/hooks/useFocusState.js +4 -8
  560. package/esm/Uploader/UploadFileItem.js +8 -10
  561. package/esm/Uploader/UploadTrigger.js +8 -10
  562. package/esm/Uploader/Uploader.d.ts +2 -0
  563. package/esm/Uploader/Uploader.js +66 -26
  564. package/esm/Uploader/utils/ajaxUpload.js +5 -5
  565. package/esm/Uploader/utils/previewFile.js +1 -1
  566. package/esm/internals/Disclosure/Disclosure.js +5 -8
  567. package/esm/internals/Disclosure/DisclosureButton.js +2 -2
  568. package/esm/internals/InputBase/InputBase.js +5 -6
  569. package/esm/internals/Menu/Menu.js +16 -20
  570. package/esm/internals/Menu/MenuItem.js +4 -5
  571. package/esm/internals/Menu/Menubar.js +5 -7
  572. package/esm/internals/Menu/useMenu.js +5 -10
  573. package/esm/internals/Overlay/Modal.js +8 -11
  574. package/esm/internals/Overlay/ModalManager.js +3 -5
  575. package/esm/internals/Overlay/Overlay.js +1 -1
  576. package/esm/internals/Overlay/OverlayTrigger.d.ts +0 -1
  577. package/esm/internals/Overlay/OverlayTrigger.js +5 -7
  578. package/esm/internals/Overlay/Position.js +6 -8
  579. package/esm/internals/Picker/ListCheckItem.js +3 -3
  580. package/esm/internals/Picker/ListItem.js +1 -1
  581. package/esm/internals/Picker/Listbox.js +9 -10
  582. package/esm/internals/Picker/PickerIndicator.js +13 -11
  583. package/esm/internals/Picker/PickerPopup.js +4 -5
  584. package/esm/internals/Picker/PickerToggle.js +3 -4
  585. package/esm/internals/Picker/SelectedElement.js +1 -1
  586. package/esm/internals/Picker/hooks/useFocusItemValue.d.ts +0 -1
  587. package/esm/internals/Picker/hooks/useFocusItemValue.js +14 -28
  588. package/esm/internals/Picker/hooks/usePickerRef.d.ts +0 -1
  589. package/esm/internals/Picker/hooks/usePickerRef.js +9 -15
  590. package/esm/internals/Picker/hooks/useSearch.d.ts +0 -1
  591. package/esm/internals/Picker/hooks/useSearch.js +2 -2
  592. package/esm/internals/Picker/hooks/useToggleKeyDownEvent.d.ts +0 -1
  593. package/esm/internals/Picker/hooks/useToggleKeyDownEvent.js +13 -17
  594. package/esm/internals/Picker/utils.js +9 -9
  595. package/esm/internals/Ripple/Ripple.js +3 -4
  596. package/esm/internals/SafeAnchor/SafeAnchor.js +1 -1
  597. package/esm/internals/ScrollView/hooks/useScrollState.d.ts +0 -1
  598. package/esm/internals/ScrollView/hooks/useScrollState.js +2 -3
  599. package/esm/internals/Tree/TreeProvider.d.ts +4 -4
  600. package/esm/internals/Tree/TreeProvider.js +2 -8
  601. package/esm/internals/Tree/types.d.ts +0 -1
  602. package/esm/internals/Tree/utils/getParentMap.d.ts +0 -1
  603. package/esm/internals/Windowing/AutoSizer.js +2 -3
  604. package/esm/internals/Windowing/List.js +4 -8
  605. package/esm/internals/constants/index.d.ts +2 -2
  606. package/esm/internals/hooks/useClickOutside.js +2 -4
  607. package/esm/internals/hooks/useCustom.d.ts +0 -1
  608. package/esm/internals/hooks/useCustom.js +5 -7
  609. package/esm/internals/hooks/useElementResize.d.ts +0 -1
  610. package/esm/internals/hooks/useEventCallback.js +1 -2
  611. package/esm/internals/hooks/useEventListener.js +1 -1
  612. package/esm/internals/hooks/useFocus.js +2 -4
  613. package/esm/internals/hooks/useFocusVirtualListItem.d.ts +0 -1
  614. package/esm/internals/hooks/useMount.js +1 -2
  615. package/esm/internals/hooks/useRootClose.js +6 -6
  616. package/esm/internals/hooks/useTimeout.js +1 -2
  617. package/esm/internals/hooks/useToggleCaret.d.ts +0 -1
  618. package/esm/internals/hooks/useUniqueId.js +1 -1
  619. package/esm/internals/hooks/useUpdatedRef.d.ts +0 -1
  620. package/esm/internals/styled-system/style-manager.js +1 -1
  621. package/esm/internals/styled-system/useStyled.js +2 -2
  622. package/esm/internals/types/utils.d.ts +0 -1
  623. package/esm/internals/utils/colours.d.ts +4 -4
  624. package/esm/internals/utils/colours.js +1 -1
  625. package/esm/internals/utils/date/disableTime.js +6 -12
  626. package/esm/internals/utils/date/omitHideDisabledProps.d.ts +1 -1
  627. package/esm/internals/utils/date/useDateMode.d.ts +1 -1
  628. package/esm/internals/utils/react/ReactChildren.js +1 -2
  629. package/esm/internals/utils/react/deprecateComponent.js +1 -2
  630. package/esm/internals/utils/react/getDOMNode.js +4 -5
  631. package/esm/internals/utils/sizes.d.ts +2 -2
  632. package/esm/internals/utils/style-sheet/css.d.ts +0 -1
  633. package/esm/internals/utils/style-sheet/css.js +1 -1
  634. package/esm/internals/utils/style-sheet/prefix.d.ts +0 -1
  635. package/esm/internals/utils/style-sheet/responsive.d.ts +1 -1
  636. package/esm/internals/utils/style-sheet/styles.d.ts +3 -3
  637. package/esm/internals/utils/style-sheet/styles.js +1 -1
  638. package/esm/toaster/ToastContainer.js +3 -5
  639. package/esm/toaster/hooks/useDelayedClosure.d.ts +0 -1
  640. package/esm/toaster/hooks/useDelayedClosure.js +3 -4
  641. package/esm/toaster/toaster.js +42 -15
  642. package/esm/useDialog/Dialog.d.ts +1 -1
  643. package/esm/useDialog/Dialog.js +1 -1
  644. package/esm/useDialog/useDialog.d.ts +1 -1
  645. package/esm/useDialog/useDialog.js +3 -3
  646. package/esm/useFormControl/hooks/useField.d.ts +0 -1
  647. package/esm/useFormControl/hooks/useField.js +5 -7
  648. package/esm/useFormControl/hooks/useRegisterModel.js +2 -2
  649. package/esm/useFormControl/useFormControl.js +8 -8
  650. package/esm/useToaster/useToaster.js +4 -5
  651. package/package.json +1 -1
package/cjs/Form/Form.js CHANGED
@@ -58,6 +58,7 @@ const Form = (0, _utils.forwardRef)((props, ref) => {
58
58
  fluid,
59
59
  layout,
60
60
  model: formModel = defaultSchema,
61
+ resolver,
61
62
  readOnly,
62
63
  plaintext,
63
64
  children,
@@ -88,7 +89,8 @@ const Form = (0, _utils.forwardRef)((props, ref) => {
88
89
  getCombinedModel,
89
90
  onCheck,
90
91
  onError,
91
- nestedField
92
+ nestedField,
93
+ resolver
92
94
  };
93
95
  const {
94
96
  formError,
@@ -104,23 +106,35 @@ const Form = (0, _utils.forwardRef)((props, ref) => {
104
106
  cleanErrorForField
105
107
  } = (0, _useFormValidate.default)(controlledFormError, formValidateProps);
106
108
  const submit = (0, _hooks.useEventCallback)(event => {
109
+ if (resolver) {
110
+ // When a resolver is provided, always use the async validation path so that
111
+ // both sync and async resolvers are handled correctly.
112
+ checkAsync().then(({
113
+ hasError
114
+ }) => {
115
+ if (!hasError) {
116
+ onSubmit?.(formValue, event);
117
+ }
118
+ });
119
+ return;
120
+ }
121
+
107
122
  // Check the form before submitting
108
123
  if (check()) {
109
- onSubmit === null || onSubmit === void 0 || onSubmit(formValue, event);
124
+ onSubmit?.(formValue, event);
110
125
  }
111
126
  });
112
127
  const reset = (0, _hooks.useEventCallback)(event => {
113
128
  resetErrors();
114
129
  const resetValue = resetFormValue();
115
130
  if (resetValue) {
116
- onChange === null || onChange === void 0 || onChange(resetValue);
131
+ onChange?.(resetValue);
117
132
  }
118
- onReset === null || onReset === void 0 || onReset(resetValue, event);
133
+ onReset?.(resetValue, event);
119
134
  });
120
135
  const handleSubmit = (0, _hooks.useEventCallback)(event => {
121
- var _event$preventDefault, _event$stopPropagatio;
122
- event === null || event === void 0 || (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 || _event$preventDefault.call(event);
123
- event === null || event === void 0 || (_event$stopPropagatio = event.stopPropagation) === null || _event$stopPropagatio === void 0 || _event$stopPropagatio.call(event);
136
+ event?.preventDefault?.();
137
+ event?.stopPropagation?.();
124
138
 
125
139
  // Prevent submission when the form is disabled, readOnly, or plaintext
126
140
  if (disabled || readOnly || plaintext) {
@@ -129,9 +143,8 @@ const Form = (0, _utils.forwardRef)((props, ref) => {
129
143
  submit(event);
130
144
  });
131
145
  const handleReset = (0, _hooks.useEventCallback)(event => {
132
- var _event$preventDefault2, _event$stopPropagatio2;
133
- event === null || event === void 0 || (_event$preventDefault2 = event.preventDefault) === null || _event$preventDefault2 === void 0 || _event$preventDefault2.call(event);
134
- event === null || event === void 0 || (_event$stopPropagatio2 = event.stopPropagation) === null || _event$stopPropagatio2 === void 0 || _event$stopPropagatio2.call(event);
146
+ event?.preventDefault?.();
147
+ event?.stopPropagation?.();
135
148
 
136
149
  // Prevent reset when the form is disabled, readOnly, or plaintext
137
150
  if (disabled || readOnly || plaintext) {
@@ -155,14 +168,14 @@ const Form = (0, _utils.forwardRef)((props, ref) => {
155
168
  });
156
169
  const removeFieldValue = (0, _hooks.useEventCallback)(name => {
157
170
  const formValue = onRemoveValue(name);
158
- onChange === null || onChange === void 0 || onChange(formValue);
171
+ onChange?.(formValue);
159
172
  });
160
173
  const removeFieldError = (0, _hooks.useEventCallback)(name => {
161
174
  onRemoveError(name);
162
175
  });
163
176
  const onFieldChange = (0, _hooks.useEventCallback)((name, value, event) => {
164
177
  const nextFormValue = setFieldValue(name, value);
165
- onChange === null || onChange === void 0 || onChange(nextFormValue, event);
178
+ onChange?.(nextFormValue, event);
166
179
  });
167
180
  const formContextValue = {
168
181
  errorFromContext,
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { CheckResult } from 'schema-typed';
3
2
  export interface FormImperativeMethods<T = Record<string, any>, M = string, E = {
4
3
  [P in keyof T]?: M;
@@ -1,10 +1,11 @@
1
- /// <reference types="lodash" />
1
+ import type { Resolver } from '../resolvers';
2
2
  export interface FormErrorProps {
3
3
  formValue: any;
4
4
  getCombinedModel: () => any;
5
5
  onCheck?: (formError: any) => void;
6
6
  onError?: (formError: any) => void;
7
7
  nestedField?: boolean;
8
+ resolver?: Resolver;
8
9
  }
9
10
  export default function useFormValidate(_formError: any, props: FormErrorProps): {
10
11
  formError: any;
@@ -15,7 +15,8 @@ function useFormValidate(_formError, props) {
15
15
  getCombinedModel,
16
16
  onCheck,
17
17
  onError,
18
- nestedField
18
+ nestedField,
19
+ resolver
19
20
  } = props;
20
21
  const [realFormError, setFormError] = (0, _hooks.useControlled)(_formError, {});
21
22
  const checkOptions = {
@@ -24,12 +25,64 @@ function useFormValidate(_formError, props) {
24
25
  const realFormErrorRef = (0, _react.useRef)(realFormError);
25
26
  realFormErrorRef.current = realFormError;
26
27
 
28
+ /**
29
+ * Returns true when an error value is considered non-empty (i.e. the field has an error).
30
+ */
31
+ const isValidError = error => error !== undefined && error !== null && error !== '';
32
+
33
+ /**
34
+ * Merges resolver errors into the current form error state, removing entries that
35
+ * are no longer invalid according to the latest resolver result.
36
+ */
37
+ const mergeResolverErrors = (current, resolverErrors) => {
38
+ const next = {
39
+ ...current
40
+ };
41
+ Object.keys({
42
+ ...current,
43
+ ...resolverErrors
44
+ }).forEach(key => {
45
+ if (isValidError(resolverErrors[key])) {
46
+ next[key] = resolverErrors[key];
47
+ } else {
48
+ delete next[key];
49
+ }
50
+ });
51
+ return next;
52
+ };
53
+
27
54
  /**
28
55
  * Validate the form data and return a boolean.
29
56
  * The error message after verification is returned in the callback.
57
+ *
58
+ * When a `resolver` is provided and the resolver returns a Promise (async resolver),
59
+ * this method cannot resolve the result synchronously. In that case it returns `false`
60
+ * immediately and you should use `checkAsync()` instead.
30
61
  * @param callback
31
62
  */
32
63
  const check = (0, _hooks.useEventCallback)(callback => {
64
+ if (resolver) {
65
+ const result = resolver(formValue || {});
66
+
67
+ // Async resolver: cannot handle synchronously
68
+ if (result instanceof Promise) {
69
+ if (process.env.NODE_ENV !== 'production') {
70
+ console.warn('[rsuite] The `resolver` provided to <Form> returns a Promise. ' + 'Use `checkAsync()` or rely on `onSubmit` for async validation.');
71
+ }
72
+ return false;
73
+ }
74
+ const {
75
+ errors
76
+ } = result;
77
+ const hasError = Object.keys(errors).length > 0;
78
+ setFormError(errors);
79
+ onCheck?.(errors);
80
+ callback?.(errors);
81
+ if (hasError) {
82
+ onError?.(errors);
83
+ }
84
+ return !hasError;
85
+ }
33
86
  const formError = {};
34
87
  let errorCount = 0;
35
88
  const model = getCombinedModel();
@@ -38,16 +91,16 @@ function useFormValidate(_formError, props) {
38
91
  const checkResult = type.check(value, formValue, key);
39
92
  if (checkResult.hasError === true) {
40
93
  errorCount += 1;
41
- formErrorObj[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;
94
+ formErrorObj[key] = checkResult?.errorMessage || checkResult;
42
95
  }
43
96
 
44
97
  // Check nested object
45
- if (type !== null && type !== void 0 && type.objectTypeSchemaSpec) {
98
+ if (type?.objectTypeSchemaSpec) {
46
99
  Object.entries(type.objectTypeSchemaSpec).forEach(([nestedKey, nestedType]) => {
47
100
  formErrorObj[key] = formErrorObj[key] || {
48
101
  object: {}
49
102
  };
50
- checkField(nestedKey, nestedType, value === null || value === void 0 ? void 0 : value[nestedKey], formErrorObj[key].object);
103
+ checkField(nestedKey, nestedType, value?.[nestedKey], formErrorObj[key].object);
51
104
  });
52
105
  }
53
106
  };
@@ -55,15 +108,44 @@ function useFormValidate(_formError, props) {
55
108
  checkField(key, type, formValue[key], formError);
56
109
  });
57
110
  setFormError(formError);
58
- onCheck === null || onCheck === void 0 || onCheck(formError);
59
- callback === null || callback === void 0 || callback(formError);
111
+ onCheck?.(formError);
112
+ callback?.(formError);
60
113
  if (errorCount > 0) {
61
- onError === null || onError === void 0 || onError(formError);
114
+ onError?.(formError);
62
115
  return false;
63
116
  }
64
117
  return true;
65
118
  });
66
119
  const checkFieldForNextValue = (0, _hooks.useEventCallback)((fieldName, nextValue, callback) => {
120
+ if (resolver) {
121
+ const result = resolver(nextValue);
122
+ if (result instanceof Promise) {
123
+ if (process.env.NODE_ENV !== 'production') {
124
+ console.warn('[rsuite] The `resolver` provided to <Form> returns a Promise. ' + 'Use `checkAsync()` or `checkForFieldAsync()` for async validation.');
125
+ }
126
+ return false;
127
+ }
128
+ const {
129
+ errors
130
+ } = result;
131
+ const fieldError = errors[fieldName];
132
+ const hasFieldError = isValidError(fieldError);
133
+ // Merge resolver errors with existing errors, clearing fields that now pass
134
+ const nextFormError = mergeResolverErrors(realFormError, errors);
135
+ setFormError(nextFormError);
136
+ onCheck?.(nextFormError);
137
+ const callbackResult = {
138
+ hasError: hasFieldError,
139
+ errorMessage: fieldError
140
+ };
141
+ callback?.(hasFieldError ? callbackResult : {
142
+ hasError: false
143
+ });
144
+ if (Object.keys(nextFormError).length > 0) {
145
+ onError?.(nextFormError);
146
+ }
147
+ return !hasFieldError;
148
+ }
67
149
  const model = getCombinedModel();
68
150
  const resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);
69
151
  let nextFormError = {
@@ -77,10 +159,10 @@ function useFormValidate(_formError, props) {
77
159
  if (nestedField) {
78
160
  nextFormError = (0, _set.default)(nextFormError, (0, _nameToPath.nameToPath)(fieldName), resultOfCurrentField);
79
161
  setFormError(nextFormError);
80
- onCheck === null || onCheck === void 0 || onCheck(nextFormError);
81
- callback === null || callback === void 0 || callback(resultOfCurrentField);
162
+ onCheck?.(nextFormError);
163
+ callback?.(resultOfCurrentField);
82
164
  if (resultOfCurrentField.hasError) {
83
- onError === null || onError === void 0 || onError(nextFormError);
165
+ onError?.(nextFormError);
84
166
  }
85
167
  return !resultOfCurrentField.hasError;
86
168
  } else {
@@ -101,10 +183,10 @@ function useFormValidate(_formError, props) {
101
183
  }
102
184
  });
103
185
  setFormError(nextFormError);
104
- onCheck === null || onCheck === void 0 || onCheck(nextFormError);
105
- callback === null || callback === void 0 || callback(resultOfCurrentField);
186
+ onCheck?.(nextFormError);
187
+ callback?.(resultOfCurrentField);
106
188
  if (hasError) {
107
- onError === null || onError === void 0 || onError(nextFormError);
189
+ onError?.(nextFormError);
108
190
  }
109
191
  return !hasError;
110
192
  }
@@ -122,6 +204,22 @@ function useFormValidate(_formError, props) {
122
204
  * Check form data asynchronously and return a Promise
123
205
  */
124
206
  const checkAsync = (0, _hooks.useEventCallback)(() => {
207
+ if (resolver) {
208
+ return Promise.resolve(resolver(formValue || {})).then(({
209
+ errors
210
+ }) => {
211
+ const hasError = Object.keys(errors).length > 0;
212
+ onCheck?.(errors);
213
+ setFormError(errors);
214
+ if (hasError) {
215
+ onError?.(errors);
216
+ }
217
+ return {
218
+ hasError,
219
+ formError: errors
220
+ };
221
+ });
222
+ }
125
223
  const promises = [];
126
224
  const keys = [];
127
225
  const model = getCombinedModel();
@@ -138,10 +236,10 @@ function useFormValidate(_formError, props) {
138
236
  formError[keys[i]] = values[i].errorMessage;
139
237
  }
140
238
  }
141
- onCheck === null || onCheck === void 0 || onCheck(formError);
239
+ onCheck?.(formError);
142
240
  setFormError(formError);
143
241
  if (errorCount > 0) {
144
- onError === null || onError === void 0 || onError(formError);
242
+ onError?.(formError);
145
243
  }
146
244
  return {
147
245
  hasError: errorCount > 0,
@@ -150,6 +248,24 @@ function useFormValidate(_formError, props) {
150
248
  });
151
249
  });
152
250
  const checkFieldAsyncForNextValue = (0, _hooks.useEventCallback)((fieldName, nextValue) => {
251
+ if (resolver) {
252
+ return Promise.resolve(resolver(nextValue)).then(({
253
+ errors
254
+ }) => {
255
+ const fieldError = errors[fieldName];
256
+ const hasFieldError = isValidError(fieldError);
257
+ const nextFormError = mergeResolverErrors(realFormError, errors);
258
+ onCheck?.(nextFormError);
259
+ setFormError(nextFormError);
260
+ if (Object.keys(nextFormError).length > 0) {
261
+ onError?.(nextFormError);
262
+ }
263
+ return {
264
+ hasError: hasFieldError,
265
+ errorMessage: fieldError
266
+ };
267
+ });
268
+ }
153
269
  const model = getCombinedModel();
154
270
  return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(resultOfCurrentField => {
155
271
  let nextFormError = {
@@ -163,10 +279,10 @@ function useFormValidate(_formError, props) {
163
279
 
164
280
  if (nestedField) {
165
281
  nextFormError = (0, _set.default)(nextFormError, (0, _nameToPath.nameToPath)(fieldName), resultOfCurrentField);
166
- onCheck === null || onCheck === void 0 || onCheck(nextFormError);
282
+ onCheck?.(nextFormError);
167
283
  setFormError(nextFormError);
168
284
  if (resultOfCurrentField.hasError) {
169
- onError === null || onError === void 0 || onError(nextFormError);
285
+ onError?.(nextFormError);
170
286
  }
171
287
  return resultOfCurrentField;
172
288
  } else {
@@ -187,9 +303,9 @@ function useFormValidate(_formError, props) {
187
303
  }
188
304
  });
189
305
  setFormError(nextFormError);
190
- onCheck === null || onCheck === void 0 || onCheck(nextFormError);
306
+ onCheck?.(nextFormError);
191
307
  if (hasError) {
192
- onError === null || onError === void 0 || onError(nextFormError);
308
+ onError?.(nextFormError);
193
309
  }
194
310
  return resultOfCurrentField;
195
311
  }
@@ -211,7 +327,7 @@ function useFormValidate(_formError, props) {
211
327
  const formError = (0, _omit.default)(realFormErrorRef.current, [nestedField ? (0, _nameToPath.nameToPath)(name) : name]);
212
328
  realFormErrorRef.current = formError;
213
329
  setFormError(formError);
214
- onCheck === null || onCheck === void 0 || onCheck(formError);
330
+ onCheck?.(formError);
215
331
  return formError;
216
332
  }, [nestedField, onCheck, setFormError]);
217
333
  const cleanErrors = (0, _hooks.useEventCallback)(() => {
@@ -1,4 +1,3 @@
1
- /// <reference types="lodash" />
2
1
  type RecordAny = Record<string, any>;
3
2
  interface UseFormValueProps<V = RecordAny> {
4
3
  formDefaultValue: V;
@@ -1,5 +1,6 @@
1
1
  import Form from './Form';
2
2
  export type { FormProps } from './Form';
3
3
  export type { FormInstance } from './hooks/useFormRef';
4
+ export type { Resolver, ResolverResult } from './resolvers';
4
5
  export { Form };
5
6
  export default Form;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The result returned by a validation resolver.
3
+ *
4
+ * @template E - The type of the form error map. Defaults to a record of string keys to any.
5
+ */
6
+ export interface ResolverResult<E = Record<string, any>> {
7
+ errors: E;
8
+ }
9
+ /**
10
+ * A resolver is a function that integrates third-party validation libraries
11
+ * (e.g. Yup, Zod, AJV, Joi, Valibot…) with the rsuite `Form` component.
12
+ *
13
+ * The resolver receives the current form values and an optional context object,
14
+ * and must return (or resolve to) a `ResolverResult` whose `errors` property is
15
+ * a plain object that maps field names to error messages / error objects.
16
+ *
17
+ * An **empty** `errors` object means the form is valid.
18
+ *
19
+ * @template V - The shape of the form values. Defaults to `Record<string, any>`.
20
+ * @template E - The shape of the error map. Defaults to `Record<string, any>`.
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * // Yup example
25
+ * import * as yup from 'yup';
26
+ * import type { Resolver } from 'rsuite';
27
+ *
28
+ * const schema = yup.object({ name: yup.string().email('Invalid email').required() });
29
+ *
30
+ * const resolver: Resolver = async (formValue) => {
31
+ * try {
32
+ * await schema.validate(formValue, { abortEarly: false });
33
+ * return { errors: {} };
34
+ * } catch (e: any) {
35
+ * const errors: Record<string, string> = {};
36
+ * e.inner.forEach((err: yup.ValidationError) => {
37
+ * if (err.path) errors[err.path] = err.message;
38
+ * });
39
+ * return { errors };
40
+ * }
41
+ * };
42
+ *
43
+ * // Zod example
44
+ * import { z } from 'zod';
45
+ *
46
+ * const schema = z.object({ name: z.string().email('Invalid email') });
47
+ *
48
+ * const resolver: Resolver = (formValue) => {
49
+ * const result = schema.safeParse(formValue);
50
+ * if (result.success) return { errors: {} };
51
+ * const errors: Record<string, string> = {};
52
+ * result.error.issues.forEach(err => {
53
+ * if (err.path.length) errors[err.path[0]] = err.message;
54
+ * });
55
+ * return { errors };
56
+ * };
57
+ * ```
58
+ */
59
+ export type Resolver<V = Record<string, any>, E = Record<string, any>> = (formValue: V, context?: any) => ResolverResult<E> | Promise<ResolverResult<E>>;
@@ -0,0 +1,4 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
@@ -74,9 +74,9 @@ const FormControl = (0, _utils.forwardRef)((props, ref) => {
74
74
  });
75
75
 
76
76
  // Combine props and context values
77
- const resolvedReadOnly = readOnly !== null && readOnly !== void 0 ? readOnly : contextReadOnly;
78
- const resolvedPlaintext = plaintext !== null && plaintext !== void 0 ? plaintext : contextPlaintext;
79
- const resolvedDisabled = disabled !== null && disabled !== void 0 ? disabled : contextDisabled;
77
+ const resolvedReadOnly = readOnly ?? contextReadOnly;
78
+ const resolvedPlaintext = plaintext ?? contextPlaintext;
79
+ const resolvedDisabled = disabled ?? contextDisabled;
80
80
  const {
81
81
  withPrefix,
82
82
  prefix
@@ -86,13 +86,13 @@ const FormControl = (0, _utils.forwardRef)((props, ref) => {
86
86
  // Handle onChange with both hook's implementation and prop callback
87
87
  const handleChange = (value, event) => {
88
88
  handleFieldChange(value, event);
89
- propsOnChange === null || propsOnChange === void 0 || propsOnChange(value, event);
89
+ propsOnChange?.(value, event);
90
90
  };
91
91
 
92
92
  // Handle onBlur with both hook's implementation and prop callback
93
93
  const handleBlur = event => {
94
94
  handleFieldBlur(); // onBlur doesn't take parameters in the hook
95
- propsOnBlur === null || propsOnBlur === void 0 || propsOnBlur(event);
95
+ propsOnBlur?.(event);
96
96
  };
97
97
 
98
98
  // Toggle component is a special case that uses `checked` and `defaultChecked` instead of `value` and `defaultValue` props.
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
2
  export declare const FormGroupContext: React.Context<{
3
- controlId?: string | undefined;
3
+ controlId?: string;
4
4
  }>;
@@ -21,7 +21,7 @@ function highlightText(text, props) {
21
21
  if (strArr[i]) {
22
22
  texts.push(strArr[i]);
23
23
  }
24
- if (highStrArr !== null && highStrArr !== void 0 && highStrArr[i]) {
24
+ if (highStrArr?.[i]) {
25
25
  texts.push(renderMark(highStrArr[i], i));
26
26
  }
27
27
  }
@@ -16,11 +16,10 @@ function defaultRenderInput(props, ref) {
16
16
  }
17
17
  const pickers = ['DatePicker', 'DateRangePicker', 'TimePicker', 'TimeRangePicker', 'InputPicker', 'TagPicker', 'Cascader', 'MultiCascader', 'SelectPicker', 'CheckPicker', 'CheckTreePicker', 'TreePicker'];
18
18
  function getDisplayName(Component) {
19
- var _Component$type;
20
- if (typeof (Component === null || Component === void 0 ? void 0 : Component.type) === 'string') {
21
- return Component === null || Component === void 0 ? void 0 : Component.type;
19
+ if (typeof Component?.type === 'string') {
20
+ return Component?.type;
22
21
  }
23
- return (Component === null || Component === void 0 || (_Component$type = Component.type) === null || _Component$type === void 0 ? void 0 : _Component$type.displayName) || '';
22
+ return Component?.type?.displayName || '';
24
23
  }
25
24
  function renderChildren(children, props, ref) {
26
25
  if (typeof children === 'function') {
@@ -40,8 +39,8 @@ function renderChildren(children, props, ref) {
40
39
  ...rest,
41
40
  // Pass onBlur to the child component to automatically save or cancel after the focus event is processed.
42
41
  // Special handling in the Picker component, call onBlur when onExit and onClean
43
- onExit: (0, _utils.createChainedFunction)(() => onBlur === null || onBlur === void 0 ? void 0 : onBlur(), onExit),
44
- onClean: (0, _utils.createChainedFunction)(() => onBlur === null || onBlur === void 0 ? void 0 : onBlur(), onClean),
42
+ onExit: (0, _utils.createChainedFunction)(() => onBlur?.(), onExit),
43
+ onClean: (0, _utils.createChainedFunction)(() => onBlur?.(), onClean),
45
44
  ref
46
45
  });
47
46
  }
@@ -27,40 +27,37 @@ const useEditState = props => {
27
27
  if (disabled) {
28
28
  return;
29
29
  }
30
- onClick === null || onClick === void 0 || onClick(event);
31
- onEdit === null || onEdit === void 0 || onEdit(event);
30
+ onClick?.(event);
31
+ onEdit?.(event);
32
32
  setIsEditing(true);
33
33
  setResetValue(value);
34
34
  });
35
35
  const handleFocus = (0, _hooks.useEventCallback)(event => {
36
36
  if (disabled || isEditing) return;
37
- onFocus === null || onFocus === void 0 || onFocus(event);
37
+ onFocus?.(event);
38
38
  setIsEditing(true);
39
39
  setResetValue(value);
40
40
  });
41
41
  const handleChange = (0, _hooks.useEventCallback)((value, event) => {
42
42
  setValue(value);
43
- onChange === null || onChange === void 0 || onChange(value, event);
43
+ onChange?.(value, event);
44
44
  });
45
45
  const handleCancel = (0, _hooks.useEventCallback)(event => {
46
- var _event$stopPropagatio;
47
46
  setIsEditing(false);
48
47
  setValue(resetValue);
49
- onCancel === null || onCancel === void 0 || onCancel(event);
50
- event === null || event === void 0 || (_event$stopPropagatio = event.stopPropagation) === null || _event$stopPropagatio === void 0 || _event$stopPropagatio.call(event);
48
+ onCancel?.(event);
49
+ event?.stopPropagation?.();
51
50
  });
52
51
  const handleSave = (0, _hooks.useEventCallback)(event => {
53
- var _event$stopPropagatio2;
54
52
  setIsEditing(false);
55
- onSave === null || onSave === void 0 || onSave(event);
56
- event === null || event === void 0 || (_event$stopPropagatio2 = event.stopPropagation) === null || _event$stopPropagatio2 === void 0 || _event$stopPropagatio2.call(event);
53
+ onSave?.(event);
54
+ event?.stopPropagation?.();
57
55
  });
58
56
  const handleKeyDown = (0, _hooks.useEventCallback)(event => {
59
- var _event$target;
60
57
  if (isEditing) {
61
58
  switch (event.key) {
62
59
  case 'Enter':
63
- if (((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) === 'INPUT') {
60
+ if (event.target?.tagName === 'INPUT') {
64
61
  handleSave(event);
65
62
  }
66
63
  break;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { PickerHandle } from '../internals/Picker/types';
3
2
  interface FocusEventProps {
4
3
  isEditing: boolean;
@@ -13,38 +13,34 @@ const useFocusEvent = ({
13
13
  onSave,
14
14
  onCancel
15
15
  }) => {
16
- var _ref$current;
17
16
  const ref = (0, _react.useRef)(null);
18
17
  const rootRef = (0, _react.useRef)(null);
19
- const isPicker = ((_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.type) === _symbols.RSUITE_PICKER_TYPE;
18
+ const isPicker = ref.current?.type === _symbols.RSUITE_PICKER_TYPE;
20
19
  const focus = () => {
21
20
  if (isPicker) {
22
21
  setTimeout(() => {
23
- var _picker$target, _picker$target$focus, _picker$open;
24
22
  const picker = ref.current;
25
23
  // Auto focus the search input
26
- picker === null || picker === void 0 || (_picker$target = picker.target) === null || _picker$target === void 0 || (_picker$target$focus = _picker$target.focus) === null || _picker$target$focus === void 0 || _picker$target$focus.call(_picker$target);
24
+ picker?.target?.focus?.();
27
25
 
28
26
  // Open the picker
29
- picker === null || picker === void 0 || (_picker$open = picker.open) === null || _picker$open === void 0 || _picker$open.call(picker);
27
+ picker?.open?.();
30
28
  }, 100);
31
29
  } else {
32
- var _ref$current2, _ref$current2$focus;
33
- (_ref$current2 = ref.current) === null || _ref$current2 === void 0 || (_ref$current2$focus = _ref$current2.focus) === null || _ref$current2$focus === void 0 || _ref$current2$focus.call(_ref$current2);
30
+ ref.current?.focus?.();
34
31
  }
35
32
  };
36
33
  const handleBlur = (0, _hooks.useEventCallback)(event => {
37
34
  if (event) {
38
- var _event$relatedTarget;
39
- const relatedTarget = (_event$relatedTarget = event.relatedTarget) !== null && _event$relatedTarget !== void 0 ? _event$relatedTarget : (0, _domLib.ownerDocument)(event.currentTarget).activeElement;
35
+ const relatedTarget = event.relatedTarget ?? (0, _domLib.ownerDocument)(event.currentTarget).activeElement;
40
36
  if (rootRef.current && (0, _domLib.contains)(rootRef.current, relatedTarget)) {
41
37
  return;
42
38
  }
43
39
  }
44
40
  if (stateOnBlur === 'save') {
45
- onSave === null || onSave === void 0 || onSave(event);
41
+ onSave?.(event);
46
42
  } else if (stateOnBlur === 'cancel') {
47
- onCancel === null || onCancel === void 0 || onCancel(event);
43
+ onCancel?.(event);
48
44
  }
49
45
  });
50
46
  (0, _hooks.useIsomorphicLayoutEffect)(() => {
@@ -24,7 +24,7 @@ const Input = (0, _utils.forwardRef)((props, ref) => {
24
24
  const {
25
25
  type = 'text',
26
26
  htmlSize,
27
- size = (inputGroup === null || inputGroup === void 0 ? void 0 : inputGroup.size) || 'md',
27
+ size = inputGroup?.size || 'md',
28
28
  classPrefix = 'input',
29
29
  ...rest
30
30
  } = propsWithDefaults;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import type { Size } from '../internals/types';
2
3
  export declare const InputGroupContext: React.Context<{
3
4
  onFocus: () => void;
4
5
  onBlur: () => void;
5
- size?: "xs" | "sm" | "md" | "lg" | "xl" | undefined;
6
+ size?: Size;
6
7
  } | null>;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { NumberInputProps as InputNumberProps } from '../NumberInput';
3
2
  /**
4
3
  * The `InputNumber` component is used to enter a numerical value.
@@ -56,7 +56,7 @@ const useInputWidth = (props, sizerRef, placeholderRef) => {
56
56
  }
57
57
  if (width !== inputWidth) {
58
58
  setInputWidth(width);
59
- onAutosize === null || onAutosize === void 0 || onAutosize(width);
59
+ onAutosize?.(width);
60
60
  }
61
61
  }, [minWidth, placeholder, inputWidth, value, placeholderRef, sizerRef, onAutosize]);
62
62
  return inputWidth;