rsuite 6.0.0-canary-2025032014 → 6.0.0-canary-20250416

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 (484) hide show
  1. package/AutoComplete/styles/index.css +112 -62
  2. package/AutoComplete/styles/index.less +1 -1
  3. package/Box/styles/index.css +12 -0
  4. package/CHANGELOG.md +24 -0
  5. package/Calendar/styles/index.css +11 -9
  6. package/Calendar/styles/index.less +3 -1
  7. package/Cascader/styles/index.css +112 -62
  8. package/CheckPicker/styles/index.css +112 -62
  9. package/CheckPicker/styles/index.less +1 -1
  10. package/CheckTree/styles/index.css +113 -63
  11. package/CheckTree/styles/index.less +1 -1
  12. package/CheckTreePicker/styles/index.css +113 -63
  13. package/DateInput/styles/index.css +0 -7
  14. package/DatePicker/styles/index.css +122 -74
  15. package/DatePicker/styles/index.less +5 -11
  16. package/DateRangeInput/styles/index.css +0 -7
  17. package/DateRangePicker/styles/index.css +132 -78
  18. package/DateRangePicker/styles/index.less +10 -4
  19. package/Divider/styles/index.css +2 -2
  20. package/Divider/styles/index.less +2 -2
  21. package/Grid/styles/columns.less +1 -2
  22. package/Grid/styles/grid-framework.less +1 -0
  23. package/Grid/styles/index.css +9 -4
  24. package/Grid/styles/row.less +2 -2
  25. package/Input/styles/index.css +0 -7
  26. package/Input/styles/index.less +0 -6
  27. package/Input/styles/mixin.less +0 -4
  28. package/InputGroup/styles/index.css +1 -1
  29. package/InputGroup/styles/index.less +1 -1
  30. package/InputNumber/styles/index.css +1 -8
  31. package/InputPicker/styles/index.css +121 -70
  32. package/InputPicker/styles/index.less +4 -4
  33. package/Link/package.json +7 -0
  34. package/Link/styles/index.css +32 -0
  35. package/Link/styles/index.less +39 -0
  36. package/Message/styles/index.css +9 -0
  37. package/Message/styles/index.less +11 -0
  38. package/MultiCascadeTree/styles/index.css +112 -62
  39. package/MultiCascader/styles/index.css +112 -62
  40. package/Nav/styles/index.css +1 -0
  41. package/Nav/styles/index.less +1 -0
  42. package/Pagination/styles/index.css +114 -64
  43. package/PasswordInput/package.json +7 -0
  44. package/PasswordInput/styles/index.css +172 -0
  45. package/PasswordInput/styles/index.less +1 -0
  46. package/PasswordStrengthMeter/package.json +7 -0
  47. package/PasswordStrengthMeter/styles/index.css +33 -0
  48. package/PasswordStrengthMeter/styles/index.less +39 -0
  49. package/README.md +3 -3
  50. package/RadioGroup/styles/index.css +1 -0
  51. package/RadioGroup/styles/index.less +1 -0
  52. package/RangeSlider/styles/index.css +76 -43
  53. package/Rate/styles/index.css +48 -34
  54. package/Rate/styles/index.less +32 -21
  55. package/SelectPicker/styles/index.css +112 -62
  56. package/SelectPicker/styles/index.less +1 -1
  57. package/Slider/styles/index.css +76 -43
  58. package/Slider/styles/index.less +95 -48
  59. package/Tabs/styles/index.css +1 -0
  60. package/TagInput/styles/index.css +152 -91
  61. package/TagInput/styles/index.less +1 -1
  62. package/TagPicker/styles/index.css +151 -90
  63. package/TagPicker/styles/index.less +52 -41
  64. package/Textarea/package.json +7 -0
  65. package/Textarea/styles/index.css +6 -0
  66. package/Textarea/styles/index.less +7 -0
  67. package/TimePicker/styles/index.css +122 -74
  68. package/TimeRangePicker/styles/index.css +132 -78
  69. package/Toggle/styles/index.css +146 -87
  70. package/Toggle/styles/index.less +66 -38
  71. package/Tree/styles/index.css +113 -63
  72. package/Tree/styles/index.less +1 -1
  73. package/TreePicker/styles/index.css +113 -63
  74. package/cjs/AutoComplete/AutoComplete.d.ts +1 -1
  75. package/cjs/AutoComplete/AutoComplete.js +13 -11
  76. package/cjs/Avatar/Avatar.d.ts +3 -4
  77. package/cjs/Breadcrumb/Breadcrumb.js +2 -2
  78. package/cjs/Breadcrumb/BreadcrumbItem.js +1 -1
  79. package/cjs/Button/Button.js +9 -10
  80. package/cjs/Calendar/CalendarProvider.js +0 -0
  81. package/cjs/Calendar/hooks/useCalendar.js +0 -0
  82. package/cjs/Carousel/Carousel.js +2 -2
  83. package/cjs/Cascader/Cascader.js +42 -45
  84. package/cjs/Cascader/useActive.d.ts +6 -4
  85. package/cjs/Cascader/useActive.js +10 -8
  86. package/cjs/CheckPicker/CheckPicker.js +38 -41
  87. package/cjs/CheckTreePicker/CheckTreePicker.js +20 -22
  88. package/cjs/CustomProvider/CustomProvider.d.ts +1 -4
  89. package/cjs/CustomProvider/types.d.ts +10 -2
  90. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  91. package/cjs/DatePicker/DatePicker.js +28 -25
  92. package/cjs/DatePicker/utils.d.ts +3 -3
  93. package/cjs/DatePicker/utils.js +3 -3
  94. package/cjs/DateRangePicker/DateRangePicker.js +39 -33
  95. package/cjs/DateRangePicker/utils.js +0 -0
  96. package/cjs/Divider/Divider.d.ts +3 -2
  97. package/cjs/Divider/Divider.js +2 -2
  98. package/cjs/Form/hooks/useFormValidate.js +0 -0
  99. package/cjs/Form/hooks/useSchemaModel.js +2 -54
  100. package/cjs/Form/utils/constructFlatSchema.d.ts +4 -0
  101. package/cjs/Form/utils/constructFlatSchema.js +41 -0
  102. package/cjs/FormControl/hooks/useField.js +0 -0
  103. package/cjs/FormControl/utils.js +0 -0
  104. package/cjs/Grid/Row.d.ts +2 -2
  105. package/cjs/Grid/Row.js +2 -20
  106. package/cjs/Grid/types.d.ts +1 -0
  107. package/cjs/Grid/utils/styles.d.ts +6 -0
  108. package/cjs/Grid/utils/styles.js +43 -0
  109. package/cjs/Image/Image.js +12 -11
  110. package/cjs/Image/hooks/useImage.d.ts +2 -0
  111. package/cjs/Image/hooks/useImage.js +19 -43
  112. package/cjs/InlineEdit/InlineEdit.js +3 -1
  113. package/cjs/InlineEdit/useEditState.d.ts +2 -0
  114. package/cjs/InlineEdit/useEditState.js +8 -0
  115. package/cjs/Input/Input.d.ts +3 -12
  116. package/cjs/Input/Input.js +12 -73
  117. package/cjs/InputPicker/InputPicker.js +27 -28
  118. package/cjs/Link/ExternalLinkIcon.d.ts +3 -0
  119. package/cjs/Link/ExternalLinkIcon.js +23 -0
  120. package/cjs/Link/Link.d.ts +14 -0
  121. package/cjs/Link/Link.js +52 -0
  122. package/cjs/Link/index.d.ts +4 -0
  123. package/cjs/Link/index.js +11 -0
  124. package/cjs/List/List.js +6 -2
  125. package/cjs/List/helper/useSortHelper.d.ts +7 -5
  126. package/cjs/List/helper/useSortHelper.js +109 -16
  127. package/cjs/List/helper/utils.js +14 -6
  128. package/cjs/MultiCascader/MultiCascader.js +40 -43
  129. package/cjs/Nav/NavItem.js +1 -1
  130. package/cjs/Nav/NavMegaMenu.d.ts +5 -0
  131. package/cjs/Nav/NavMegaMenu.js +5 -0
  132. package/cjs/Navbar/NavbarItem.js +1 -1
  133. package/cjs/Navbar/NavbarMegaMenu.js +1 -1
  134. package/cjs/PasswordInput/PasswordInput.d.ts +14 -0
  135. package/cjs/PasswordInput/PasswordInput.js +71 -0
  136. package/cjs/PasswordInput/index.d.ts +4 -0
  137. package/cjs/PasswordInput/index.js +11 -0
  138. package/cjs/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
  139. package/cjs/PasswordStrengthMeter/PasswordStrengthMeter.js +50 -0
  140. package/cjs/PasswordStrengthMeter/index.d.ts +4 -0
  141. package/cjs/PasswordStrengthMeter/index.js +11 -0
  142. package/cjs/RangeSlider/RangeSlider.js +18 -3
  143. package/cjs/Rate/Character.d.ts +4 -3
  144. package/cjs/Rate/Character.js +19 -15
  145. package/cjs/Rate/Rate.d.ts +10 -2
  146. package/cjs/Rate/Rate.js +47 -42
  147. package/cjs/Rate/types.d.ts +8 -0
  148. package/cjs/Rate/types.js +4 -0
  149. package/cjs/Rate/useRatingStates.d.ts +20 -0
  150. package/cjs/Rate/useRatingStates.js +48 -0
  151. package/cjs/Rate/utils.d.ts +14 -3
  152. package/cjs/Rate/utils.js +50 -9
  153. package/cjs/SelectPicker/SelectPicker.js +45 -46
  154. package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +1 -1
  155. package/cjs/Sidenav/SidenavItem.js +1 -1
  156. package/cjs/Slider/Graduated.d.ts +4 -0
  157. package/cjs/Slider/Graduated.js +43 -20
  158. package/cjs/Slider/Handle.d.ts +1 -1
  159. package/cjs/Slider/Handle.js +12 -12
  160. package/cjs/Slider/Slider.d.ts +16 -1
  161. package/cjs/Slider/Slider.js +7 -2
  162. package/cjs/Slider/useDrag.d.ts +1 -0
  163. package/cjs/Slider/useDrag.js +8 -3
  164. package/cjs/Steps/Steps.js +2 -2
  165. package/cjs/Tabs/Tabs.js +2 -2
  166. package/cjs/Textarea/Textarea.d.ts +32 -0
  167. package/cjs/Textarea/Textarea.js +51 -0
  168. package/cjs/Textarea/index.d.ts +4 -0
  169. package/cjs/Textarea/index.js +11 -0
  170. package/cjs/Timeline/Timeline.js +2 -2
  171. package/cjs/Toggle/Toggle.d.ts +10 -1
  172. package/cjs/Toggle/Toggle.js +12 -9
  173. package/cjs/TreePicker/TreePicker.js +18 -19
  174. package/cjs/index.d.ts +4 -1
  175. package/cjs/index.js +24 -6
  176. package/cjs/internals/Box/Box.d.ts +4 -0
  177. package/cjs/internals/Box/Box.js +1 -1
  178. package/cjs/internals/Box/utils.js +5 -1
  179. package/cjs/internals/InputBase/InputBase.d.ts +45 -0
  180. package/cjs/internals/InputBase/InputBase.js +96 -0
  181. package/cjs/internals/InputBase/index.d.ts +3 -0
  182. package/cjs/internals/InputBase/index.js +8 -0
  183. package/cjs/internals/Overlay/Modal.d.ts +1 -1
  184. package/cjs/internals/Overlay/OverlayTrigger.d.ts +4 -3
  185. package/cjs/internals/Overlay/OverlayTrigger.js +8 -3
  186. package/cjs/internals/Picker/Listbox.js +7 -9
  187. package/cjs/internals/Picker/PickerDrawer.d.ts +8 -0
  188. package/cjs/internals/Picker/PickerDrawer.js +31 -0
  189. package/cjs/internals/Picker/PickerPopup.js +5 -3
  190. package/cjs/internals/Picker/PickerToggle.d.ts +1 -0
  191. package/cjs/internals/Picker/PickerToggle.js +10 -3
  192. package/cjs/internals/Picker/PickerToggleTrigger.d.ts +51 -11
  193. package/cjs/internals/Picker/PickerToggleTrigger.js +59 -13
  194. package/cjs/internals/Picker/hooks/index.d.ts +0 -1
  195. package/cjs/internals/Picker/hooks/index.js +2 -4
  196. package/cjs/internals/Picker/hooks/useCombobox.d.ts +1 -0
  197. package/cjs/internals/Picker/hooks/useCombobox.js +3 -1
  198. package/cjs/internals/Picker/index.d.ts +1 -2
  199. package/cjs/internals/Picker/index.js +10 -12
  200. package/{esm → cjs/internals}/SafeAnchor/SafeAnchor.d.ts +2 -2
  201. package/cjs/{SafeAnchor → internals/SafeAnchor}/SafeAnchor.js +3 -3
  202. package/cjs/internals/Tree/TreeView.js +3 -4
  203. package/cjs/internals/hooks/useRootClose.js +4 -4
  204. package/cjs/internals/index.d.ts +4 -0
  205. package/cjs/internals/index.js +13 -1
  206. package/cjs/internals/types/html.d.ts +2 -0
  207. package/cjs/internals/utils/{dom.d.ts → html/dom.d.ts} +1 -0
  208. package/cjs/internals/utils/{dom.js → html/dom.js} +8 -0
  209. package/cjs/internals/utils/{events.js → html/events.js} +0 -0
  210. package/cjs/internals/utils/{htmlPropsUtils.js → html/htmlPropsUtils.js} +0 -0
  211. package/cjs/internals/utils/html/index.d.ts +4 -0
  212. package/cjs/internals/utils/html/index.js +28 -0
  213. package/cjs/internals/utils/{safeSetSelection.js → html/safeSetSelection.js} +1 -1
  214. package/cjs/internals/utils/index.d.ts +3 -15
  215. package/cjs/internals/utils/index.js +20 -49
  216. package/cjs/internals/utils/{ReactChildren.d.ts → react/ReactChildren.d.ts} +2 -8
  217. package/cjs/internals/utils/{ReactChildren.js → react/ReactChildren.js} +5 -25
  218. package/cjs/internals/utils/react/ReactIs.d.ts +7 -0
  219. package/cjs/internals/utils/react/ReactIs.js +26 -0
  220. package/{esm/internals/utils → cjs/internals/utils/react}/createComponent.d.ts +2 -2
  221. package/cjs/internals/utils/{createComponent.js → react/createComponent.js} +3 -3
  222. package/cjs/internals/utils/{deprecateComponent.js → react/deprecateComponent.js} +1 -1
  223. package/cjs/internals/utils/{forwardRef.d.ts → react/forwardRef.d.ts} +1 -1
  224. package/cjs/internals/utils/react/index.d.ts +7 -0
  225. package/cjs/internals/utils/react/index.js +46 -0
  226. package/cjs/internals/utils/{mergeRefs.js → react/mergeRefs.js} +0 -0
  227. package/cjs/internals/utils/{getStringLength.d.ts → string/getStringLength.d.ts} +0 -1
  228. package/cjs/internals/utils/{getStringLength.js → string/getStringLength.js} +1 -3
  229. package/cjs/internals/utils/string/index.d.ts +4 -0
  230. package/cjs/internals/utils/string/index.js +28 -0
  231. package/cjs/internals/utils/{stringifyReactNode.js → string/stringifyReactNode.js} +0 -0
  232. package/cjs/internals/utils/{tplTransform.js → string/tplTransform.js} +0 -0
  233. package/cjs/locales/en_GB.js +2 -2
  234. package/cjs/locales/en_US.js +2 -2
  235. package/cjs/locales/index.js +0 -0
  236. package/cjs/locales/pl_PL.js +2 -3
  237. package/cjs/useBreakpointValue/useBreakpointValue.d.ts +6 -2
  238. package/cjs/useBreakpointValue/useBreakpointValue.js +9 -4
  239. package/cjs/useMediaQuery/breakpoints.d.ts +24 -0
  240. package/cjs/useMediaQuery/breakpoints.js +248 -0
  241. package/cjs/useMediaQuery/index.d.ts +1 -1
  242. package/cjs/useMediaQuery/types.d.ts +45 -0
  243. package/cjs/useMediaQuery/types.js +4 -0
  244. package/cjs/useMediaQuery/useMediaQuery.d.ts +4 -13
  245. package/cjs/useMediaQuery/useMediaQuery.js +30 -12
  246. package/cjs/useToaster/useToaster.d.ts +1 -1
  247. package/cjs/useToaster/useToaster.js +1 -1
  248. package/dist/rsuite-no-reset-rtl.css +565 -276
  249. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  250. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  251. package/dist/rsuite-no-reset.css +565 -276
  252. package/dist/rsuite-no-reset.min.css +1 -1
  253. package/dist/rsuite-no-reset.min.css.map +1 -1
  254. package/dist/rsuite-rtl.css +565 -276
  255. package/dist/rsuite-rtl.min.css +1 -1
  256. package/dist/rsuite-rtl.min.css.map +1 -1
  257. package/dist/rsuite.css +565 -276
  258. package/dist/rsuite.js +508 -211
  259. package/dist/rsuite.js.map +1 -1
  260. package/dist/rsuite.min.css +1 -1
  261. package/dist/rsuite.min.css.map +1 -1
  262. package/dist/rsuite.min.js +1 -1
  263. package/dist/rsuite.min.js.map +1 -1
  264. package/esm/AutoComplete/AutoComplete.d.ts +1 -1
  265. package/esm/AutoComplete/AutoComplete.js +13 -11
  266. package/esm/Avatar/Avatar.d.ts +3 -4
  267. package/esm/Breadcrumb/Breadcrumb.js +3 -3
  268. package/esm/Breadcrumb/BreadcrumbItem.js +1 -1
  269. package/esm/Button/Button.js +10 -11
  270. package/esm/Calendar/CalendarProvider.js +0 -0
  271. package/esm/Calendar/hooks/useCalendar.js +0 -0
  272. package/esm/Carousel/Carousel.js +3 -3
  273. package/esm/Cascader/Cascader.js +43 -46
  274. package/esm/Cascader/useActive.d.ts +6 -4
  275. package/esm/Cascader/useActive.js +10 -8
  276. package/esm/CheckPicker/CheckPicker.js +39 -42
  277. package/esm/CheckTreePicker/CheckTreePicker.js +21 -23
  278. package/esm/CustomProvider/CustomProvider.d.ts +1 -4
  279. package/esm/CustomProvider/types.d.ts +10 -2
  280. package/esm/DatePicker/DatePicker.d.ts +1 -1
  281. package/esm/DatePicker/DatePicker.js +29 -26
  282. package/esm/DatePicker/utils.d.ts +3 -3
  283. package/esm/DatePicker/utils.js +4 -4
  284. package/esm/DateRangePicker/DateRangePicker.js +35 -29
  285. package/esm/DateRangePicker/utils.js +0 -0
  286. package/esm/Divider/Divider.d.ts +3 -2
  287. package/esm/Divider/Divider.js +2 -2
  288. package/esm/Form/hooks/useFormValidate.js +0 -0
  289. package/esm/Form/hooks/useSchemaModel.js +3 -55
  290. package/esm/Form/utils/constructFlatSchema.d.ts +4 -0
  291. package/esm/Form/utils/constructFlatSchema.js +37 -0
  292. package/esm/FormControl/hooks/useField.js +0 -0
  293. package/esm/FormControl/utils.js +0 -0
  294. package/esm/Grid/Row.d.ts +2 -2
  295. package/esm/Grid/Row.js +2 -20
  296. package/esm/Grid/types.d.ts +1 -0
  297. package/esm/Grid/utils/styles.d.ts +6 -0
  298. package/esm/Grid/utils/styles.js +37 -0
  299. package/esm/Image/Image.js +12 -11
  300. package/esm/Image/hooks/useImage.d.ts +2 -0
  301. package/esm/Image/hooks/useImage.js +20 -43
  302. package/esm/InlineEdit/InlineEdit.js +3 -1
  303. package/esm/InlineEdit/useEditState.d.ts +2 -0
  304. package/esm/InlineEdit/useEditState.js +8 -0
  305. package/esm/Input/Input.d.ts +3 -12
  306. package/esm/Input/Input.js +12 -74
  307. package/esm/InputPicker/InputPicker.js +28 -29
  308. package/esm/Link/ExternalLinkIcon.d.ts +3 -0
  309. package/esm/Link/ExternalLinkIcon.js +18 -0
  310. package/esm/Link/Link.d.ts +14 -0
  311. package/esm/Link/Link.js +47 -0
  312. package/esm/Link/index.d.ts +4 -0
  313. package/esm/Link/index.js +8 -0
  314. package/esm/List/List.js +6 -2
  315. package/esm/List/helper/useSortHelper.d.ts +7 -5
  316. package/esm/List/helper/useSortHelper.js +109 -16
  317. package/esm/List/helper/utils.js +14 -6
  318. package/esm/MultiCascader/MultiCascader.js +41 -44
  319. package/esm/Nav/NavItem.js +1 -1
  320. package/esm/Nav/NavMegaMenu.d.ts +5 -0
  321. package/esm/Nav/NavMegaMenu.js +5 -0
  322. package/esm/Navbar/NavbarItem.js +1 -1
  323. package/esm/Navbar/NavbarMegaMenu.js +1 -1
  324. package/esm/PasswordInput/PasswordInput.d.ts +14 -0
  325. package/esm/PasswordInput/PasswordInput.js +66 -0
  326. package/esm/PasswordInput/index.d.ts +4 -0
  327. package/esm/PasswordInput/index.js +8 -0
  328. package/esm/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
  329. package/esm/PasswordStrengthMeter/PasswordStrengthMeter.js +45 -0
  330. package/esm/PasswordStrengthMeter/index.d.ts +4 -0
  331. package/esm/PasswordStrengthMeter/index.js +8 -0
  332. package/esm/RangeSlider/RangeSlider.js +18 -3
  333. package/esm/Rate/Character.d.ts +4 -3
  334. package/esm/Rate/Character.js +20 -16
  335. package/esm/Rate/Rate.d.ts +10 -2
  336. package/esm/Rate/Rate.js +49 -42
  337. package/esm/Rate/types.d.ts +8 -0
  338. package/esm/Rate/types.js +2 -0
  339. package/esm/Rate/useRatingStates.d.ts +20 -0
  340. package/esm/Rate/useRatingStates.js +43 -0
  341. package/esm/Rate/utils.d.ts +14 -3
  342. package/esm/Rate/utils.js +46 -7
  343. package/esm/SelectPicker/SelectPicker.js +46 -47
  344. package/esm/Sidenav/ExpandedSidenavDropdownItem.js +1 -1
  345. package/esm/Sidenav/SidenavItem.js +1 -1
  346. package/esm/Slider/Graduated.d.ts +4 -0
  347. package/esm/Slider/Graduated.js +43 -20
  348. package/esm/Slider/Handle.d.ts +1 -1
  349. package/esm/Slider/Handle.js +12 -12
  350. package/esm/Slider/Slider.d.ts +16 -1
  351. package/esm/Slider/Slider.js +7 -2
  352. package/esm/Slider/useDrag.d.ts +1 -0
  353. package/esm/Slider/useDrag.js +8 -3
  354. package/esm/Steps/Steps.js +3 -3
  355. package/esm/Tabs/Tabs.js +3 -3
  356. package/esm/Textarea/Textarea.d.ts +32 -0
  357. package/esm/Textarea/Textarea.js +46 -0
  358. package/esm/Textarea/index.d.ts +4 -0
  359. package/esm/Textarea/index.js +8 -0
  360. package/esm/Timeline/Timeline.js +3 -3
  361. package/esm/Toggle/Toggle.d.ts +10 -1
  362. package/esm/Toggle/Toggle.js +12 -9
  363. package/esm/TreePicker/TreePicker.js +19 -20
  364. package/esm/index.d.ts +4 -1
  365. package/esm/index.js +4 -1
  366. package/esm/internals/Box/Box.d.ts +4 -0
  367. package/esm/internals/Box/Box.js +1 -1
  368. package/esm/internals/Box/utils.js +5 -1
  369. package/esm/internals/InputBase/InputBase.d.ts +45 -0
  370. package/esm/internals/InputBase/InputBase.js +89 -0
  371. package/esm/internals/InputBase/index.d.ts +3 -0
  372. package/esm/internals/InputBase/index.js +3 -0
  373. package/esm/internals/Overlay/Modal.d.ts +1 -1
  374. package/esm/internals/Overlay/OverlayTrigger.d.ts +4 -3
  375. package/esm/internals/Overlay/OverlayTrigger.js +8 -2
  376. package/esm/internals/Picker/Listbox.js +8 -10
  377. package/esm/internals/Picker/PickerDrawer.d.ts +8 -0
  378. package/esm/internals/Picker/PickerDrawer.js +26 -0
  379. package/esm/internals/Picker/PickerPopup.js +5 -3
  380. package/esm/internals/Picker/PickerToggle.d.ts +1 -0
  381. package/esm/internals/Picker/PickerToggle.js +10 -3
  382. package/esm/internals/Picker/PickerToggleTrigger.d.ts +51 -11
  383. package/esm/internals/Picker/PickerToggleTrigger.js +59 -12
  384. package/esm/internals/Picker/hooks/index.d.ts +0 -1
  385. package/esm/internals/Picker/hooks/index.js +1 -2
  386. package/esm/internals/Picker/hooks/useCombobox.d.ts +1 -0
  387. package/esm/internals/Picker/hooks/useCombobox.js +3 -1
  388. package/esm/internals/Picker/index.d.ts +1 -2
  389. package/esm/internals/Picker/index.js +1 -2
  390. package/{cjs → esm/internals}/SafeAnchor/SafeAnchor.d.ts +2 -2
  391. package/esm/{SafeAnchor → internals/SafeAnchor}/SafeAnchor.js +3 -3
  392. package/esm/internals/Tree/TreeView.js +4 -5
  393. package/esm/internals/hooks/useRootClose.js +1 -1
  394. package/esm/internals/index.d.ts +4 -0
  395. package/esm/internals/index.js +5 -0
  396. package/esm/internals/types/html.d.ts +2 -0
  397. package/esm/internals/utils/{dom.d.ts → html/dom.d.ts} +1 -0
  398. package/esm/internals/utils/{dom.js → html/dom.js} +7 -0
  399. package/esm/internals/utils/{events.js → html/events.js} +0 -0
  400. package/esm/internals/utils/{htmlPropsUtils.js → html/htmlPropsUtils.js} +0 -0
  401. package/esm/internals/utils/html/index.d.ts +4 -0
  402. package/esm/internals/utils/html/index.js +5 -0
  403. package/esm/internals/utils/{safeSetSelection.js → html/safeSetSelection.js} +1 -1
  404. package/esm/internals/utils/index.d.ts +3 -15
  405. package/esm/internals/utils/index.js +3 -14
  406. package/esm/internals/utils/{ReactChildren.d.ts → react/ReactChildren.d.ts} +2 -8
  407. package/esm/internals/utils/{ReactChildren.js → react/ReactChildren.js} +3 -21
  408. package/esm/internals/utils/react/ReactIs.d.ts +7 -0
  409. package/esm/internals/utils/react/ReactIs.js +22 -0
  410. package/{cjs/internals/utils → esm/internals/utils/react}/createComponent.d.ts +2 -2
  411. package/esm/internals/utils/{createComponent.js → react/createComponent.js} +3 -3
  412. package/esm/internals/utils/{deprecateComponent.js → react/deprecateComponent.js} +1 -1
  413. package/esm/internals/utils/{forwardRef.d.ts → react/forwardRef.d.ts} +1 -1
  414. package/esm/internals/utils/react/index.d.ts +7 -0
  415. package/esm/internals/utils/react/index.js +8 -0
  416. package/esm/internals/utils/{mergeRefs.js → react/mergeRefs.js} +0 -0
  417. package/esm/internals/utils/{getStringLength.d.ts → string/getStringLength.d.ts} +0 -1
  418. package/esm/internals/utils/{getStringLength.js → string/getStringLength.js} +1 -2
  419. package/esm/internals/utils/string/index.d.ts +4 -0
  420. package/esm/internals/utils/string/index.js +5 -0
  421. package/esm/internals/utils/{stringifyReactNode.js → string/stringifyReactNode.js} +0 -0
  422. package/esm/internals/utils/{tplTransform.js → string/tplTransform.js} +0 -0
  423. package/esm/locales/en_GB.js +2 -2
  424. package/esm/locales/en_US.js +2 -2
  425. package/esm/locales/index.js +0 -0
  426. package/esm/locales/pl_PL.js +1 -1
  427. package/esm/useBreakpointValue/useBreakpointValue.d.ts +6 -2
  428. package/esm/useBreakpointValue/useBreakpointValue.js +9 -4
  429. package/esm/useMediaQuery/breakpoints.d.ts +24 -0
  430. package/esm/useMediaQuery/breakpoints.js +244 -0
  431. package/esm/useMediaQuery/index.d.ts +1 -1
  432. package/esm/useMediaQuery/types.d.ts +45 -0
  433. package/esm/useMediaQuery/types.js +2 -0
  434. package/esm/useMediaQuery/useMediaQuery.d.ts +4 -13
  435. package/esm/useMediaQuery/useMediaQuery.js +29 -11
  436. package/esm/useToaster/useToaster.d.ts +1 -1
  437. package/esm/useToaster/useToaster.js +1 -1
  438. package/internals/Box/styles/index.less +4 -0
  439. package/internals/Picker/styles/index.less +105 -23
  440. package/internals/Picker/styles/mixin.less +6 -6
  441. package/package.json +3 -2
  442. package/styles/color-modes/dark.less +2 -2
  443. package/styles/color-modes/high-contrast.less +2 -2
  444. package/styles/color-modes/light.less +2 -2
  445. package/styles/index.less +3 -0
  446. package/styles/root.less +2 -0
  447. package/styles/variables.less +0 -24
  448. package/SafeAnchor/package.json +0 -7
  449. package/cjs/Form/hooks/useFormClassNames.d.ts +0 -5
  450. package/cjs/Form/hooks/useFormClassNames.js +0 -29
  451. package/cjs/internals/Picker/hooks/usePickerClassName.d.ts +0 -19
  452. package/cjs/internals/Picker/hooks/usePickerClassName.js +0 -45
  453. package/esm/Form/hooks/useFormClassNames.d.ts +0 -5
  454. package/esm/Form/hooks/useFormClassNames.js +0 -25
  455. package/esm/internals/Picker/hooks/usePickerClassName.d.ts +0 -19
  456. package/esm/internals/Picker/hooks/usePickerClassName.js +0 -40
  457. /package/cjs/{SafeAnchor → internals/SafeAnchor}/index.d.ts +0 -0
  458. /package/cjs/{SafeAnchor → internals/SafeAnchor}/index.js +0 -0
  459. /package/cjs/internals/utils/{events.d.ts → html/events.d.ts} +0 -0
  460. /package/cjs/internals/utils/{htmlPropsUtils.d.ts → html/htmlPropsUtils.d.ts} +0 -0
  461. /package/cjs/internals/utils/{safeSetSelection.d.ts → html/safeSetSelection.d.ts} +0 -0
  462. /package/cjs/internals/utils/{deprecateComponent.d.ts → react/deprecateComponent.d.ts} +0 -0
  463. /package/cjs/internals/utils/{forwardRef.js → react/forwardRef.js} +0 -0
  464. /package/cjs/internals/utils/{getDOMNode.d.ts → react/getDOMNode.d.ts} +0 -0
  465. /package/cjs/internals/utils/{getDOMNode.js → react/getDOMNode.js} +0 -0
  466. /package/cjs/internals/utils/{mergeRefs.d.ts → react/mergeRefs.d.ts} +0 -0
  467. /package/cjs/internals/utils/{getSafeRegExpString.d.ts → string/getSafeRegExpString.d.ts} +0 -0
  468. /package/cjs/internals/utils/{getSafeRegExpString.js → string/getSafeRegExpString.js} +0 -0
  469. /package/cjs/internals/utils/{stringifyReactNode.d.ts → string/stringifyReactNode.d.ts} +0 -0
  470. /package/cjs/internals/utils/{tplTransform.d.ts → string/tplTransform.d.ts} +0 -0
  471. /package/esm/{SafeAnchor → internals/SafeAnchor}/index.d.ts +0 -0
  472. /package/esm/{SafeAnchor → internals/SafeAnchor}/index.js +0 -0
  473. /package/esm/internals/utils/{events.d.ts → html/events.d.ts} +0 -0
  474. /package/esm/internals/utils/{htmlPropsUtils.d.ts → html/htmlPropsUtils.d.ts} +0 -0
  475. /package/esm/internals/utils/{safeSetSelection.d.ts → html/safeSetSelection.d.ts} +0 -0
  476. /package/esm/internals/utils/{deprecateComponent.d.ts → react/deprecateComponent.d.ts} +0 -0
  477. /package/esm/internals/utils/{forwardRef.js → react/forwardRef.js} +0 -0
  478. /package/esm/internals/utils/{getDOMNode.d.ts → react/getDOMNode.d.ts} +0 -0
  479. /package/esm/internals/utils/{getDOMNode.js → react/getDOMNode.js} +0 -0
  480. /package/esm/internals/utils/{mergeRefs.d.ts → react/mergeRefs.d.ts} +0 -0
  481. /package/esm/internals/utils/{getSafeRegExpString.d.ts → string/getSafeRegExpString.d.ts} +0 -0
  482. /package/esm/internals/utils/{getSafeRegExpString.js → string/getSafeRegExpString.js} +0 -0
  483. /package/esm/internals/utils/{stringifyReactNode.d.ts → string/stringifyReactNode.d.ts} +0 -0
  484. /package/esm/internals/utils/{tplTransform.d.ts → string/tplTransform.d.ts} +0 -0
@@ -12,6 +12,7 @@ var _getOffset = _interopRequireDefault(require("dom-lib/getOffset"));
12
12
  var _ProgressBar = _interopRequireDefault(require("../Slider/ProgressBar"));
13
13
  var _Handle = _interopRequireDefault(require("../Slider/Handle"));
14
14
  var _Graduated = _interopRequireDefault(require("../Slider/Graduated"));
15
+ var _Plaintext = _interopRequireDefault(require("../internals/Plaintext"));
15
16
  var _Box = _interopRequireDefault(require("../internals/Box"));
16
17
  var _utils = require("../internals/utils");
17
18
  var _hooks = require("../internals/hooks");
@@ -42,16 +43,21 @@ const RangeSlider = (0, _utils.forwardRef)((props, ref) => {
42
43
  disabled,
43
44
  graduated,
44
45
  progress = true,
46
+ keepTooltipOpen = false,
45
47
  vertical,
46
48
  readOnly,
47
49
  min = 0,
48
50
  max: maxProp = 100,
49
51
  step = 1,
52
+ size = 'sm',
50
53
  value: valueProp,
51
54
  handleClassName,
52
55
  handleStyle,
53
56
  handleTitle,
54
57
  tooltip = true,
58
+ marks,
59
+ plaintext,
60
+ placeholder,
55
61
  getAriaValueText,
56
62
  renderTooltip,
57
63
  renderMark,
@@ -267,7 +273,6 @@ const RangeSlider = (0, _utils.forwardRef)((props, ref) => {
267
273
  position: (value[1] - min) / (max - min) * 100
268
274
  }], [ariaValuetext, getAriaValueText, max, min, value]);
269
275
  const handleCommonProps = {
270
- rtl,
271
276
  disabled,
272
277
  vertical,
273
278
  tooltip,
@@ -283,12 +288,21 @@ const RangeSlider = (0, _utils.forwardRef)((props, ref) => {
283
288
  'aria-valuemax': max,
284
289
  'aria-valuemin': min,
285
290
  'aria-label': ariaLabel,
286
- 'aria-labelledby': ariaLabelledby
291
+ 'aria-labelledby': ariaLabelledby,
292
+ keepTooltipOpen
287
293
  };
294
+ if (plaintext) {
295
+ return /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
296
+ localeKey: "notSelected",
297
+ ref: ref,
298
+ placeholder: placeholder
299
+ }, value && (value[0] || value[1]) ? value.join('~') : null);
300
+ }
288
301
  return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
289
302
  as: as,
290
303
  ref: ref,
291
- className: classes
304
+ className: classes,
305
+ "data-size": size
292
306
  }, rest), /*#__PURE__*/_react.default.createElement("div", {
293
307
  className: merge(barClassName, prefix('bar')),
294
308
  ref: barRef,
@@ -304,6 +318,7 @@ const RangeSlider = (0, _utils.forwardRef)((props, ref) => {
304
318
  max: max,
305
319
  count: count,
306
320
  value: value,
321
+ marks: marks,
307
322
  renderMark: renderMark
308
323
  })), /*#__PURE__*/_react.default.createElement(_Handle.default, (0, _extends2.default)({
309
324
  "data-range": value
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import { BoxProps } from '../internals/Box';
3
+ import type { StarStatus } from './types';
3
4
  interface CharacterProps extends BoxProps {
4
5
  vertical?: boolean;
5
- status?: 0 | 0.5 | 1;
6
+ status?: StarStatus;
6
7
  disabled?: boolean;
7
- onMouseMove?: (key: any, event: React.MouseEvent) => void;
8
- onClick?: (key: any, event: React.MouseEvent) => void;
8
+ onMouseMove?: (key: 'before' | 'after', event: React.MouseEvent) => void;
9
+ onClick?: (key: 'before' | 'after', event: React.MouseEvent) => void;
9
10
  onKeyDown?: (event: React.KeyboardEvent) => void;
10
11
  }
11
12
  declare const Character: import("../internals/types").InternalRefForwardingComponent<"li", CharacterProps, never> & Record<string, never>;
@@ -7,18 +7,15 @@ exports.default = void 0;
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _contains = _interopRequireDefault(require("dom-lib/contains"));
10
- var _isNil = _interopRequireDefault(require("lodash/isNil"));
11
10
  var _Box = _interopRequireDefault(require("../internals/Box"));
12
11
  var _utils = require("../internals/utils");
12
+ var _utils2 = require("./utils");
13
13
  var _hooks = require("../internals/hooks");
14
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
- const characterStatus = {
17
- [0]: 'empty',
18
- [0.5]: 'half',
19
- [1]: 'full'
16
+ const getKey = (element, target) => {
17
+ return element && target && (0, _contains.default)(element, target) ? 'before' : 'after';
20
18
  };
21
- const getKey = (a, b) => (0, _contains.default)(a, b) ? 'before' : 'after';
22
19
  const Character = (0, _utils.forwardRef)((props, ref) => {
23
20
  const {
24
21
  as = 'li',
@@ -34,27 +31,34 @@ const Character = (0, _utils.forwardRef)((props, ref) => {
34
31
  ...rest
35
32
  } = props;
36
33
  const {
37
- merge,
38
34
  prefix,
39
- withPrefix
35
+ withPrefix,
36
+ merge
40
37
  } = (0, _hooks.useStyles)(classPrefix);
41
38
  const beforeRef = (0, _react.useRef)(null);
42
- const classes = merge(className, withPrefix(!(0, _isNil.default)(status) && characterStatus[status]));
43
39
  const handleMouseMove = (0, _hooks.useEventCallback)(event => {
44
40
  onMouseMove === null || onMouseMove === void 0 || onMouseMove(getKey(beforeRef.current, event.target), event);
45
41
  });
46
42
  const handleClick = (0, _hooks.useEventCallback)(event => {
47
43
  onClick === null || onClick === void 0 || onClick(getKey(beforeRef.current, event.target), event);
48
44
  });
45
+ const eventHandlers = (0, _react.useMemo)(() => {
46
+ if (disabled) {
47
+ return null;
48
+ }
49
+ return {
50
+ onClick: handleClick,
51
+ onKeyDown,
52
+ onMouseMove: handleMouseMove
53
+ };
54
+ }, [disabled, handleClick, onKeyDown, handleMouseMove]);
49
55
  return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
50
56
  as: as,
51
57
  ref: ref,
52
- className: classes,
53
- tabIndex: 0,
54
- onClick: disabled ? null : handleClick,
55
- onKeyDown: disabled ? null : onKeyDown,
56
- onMouseMove: disabled ? null : handleMouseMove
57
- }, rest), /*#__PURE__*/_react.default.createElement("div", {
58
+ className: merge(className, withPrefix()),
59
+ tabIndex: disabled ? -1 : 0,
60
+ "data-status": (0, _utils2.getStarStatus)(status)
61
+ }, eventHandlers, rest), /*#__PURE__*/_react.default.createElement("div", {
58
62
  ref: beforeRef,
59
63
  className: prefix('before', {
60
64
  vertical
@@ -1,18 +1,26 @@
1
1
  import React from 'react';
2
- import { BoxProps } from '../internals/Box';
2
+ import { StyledBoxProps } from '../internals/StyledBox';
3
3
  import type { Color, FormControlBaseProps, Size } from '../internals/types';
4
- export interface RateProps<T = number> extends BoxProps, FormControlBaseProps<T> {
4
+ export interface RateProps<T = number> extends Omit<StyledBoxProps, 'name'>, FormControlBaseProps<T> {
5
+ /** Whether to allow semi selection */
5
6
  allowHalf?: boolean;
7
+ /** Custom character of rate */
6
8
  character?: React.ReactNode;
9
+ /** The prefix of the component CSS class */
7
10
  classPrefix?: string;
11
+ /** Whether to allow cancel selection */
8
12
  cleanable?: boolean;
9
13
  /** A rate can have different sizes */
10
14
  size?: Size;
11
15
  /** A rate can have different colors */
12
16
  color?: Color | React.CSSProperties['color'];
17
+ /** Maximum rate */
13
18
  max?: number;
19
+ /** Vertical Rate half */
14
20
  vertical?: boolean;
21
+ /** Render custom character */
15
22
  renderCharacter?: (value: number, index: number) => React.ReactNode;
23
+ /** Callback function when hover state changes */
16
24
  onChangeActive?: (value: T, event: React.SyntheticEvent) => void;
17
25
  }
18
26
  /**
package/cjs/Rate/Rate.js CHANGED
@@ -5,19 +5,18 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  exports.__esModule = true;
6
6
  exports.default = void 0;
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
9
9
  var _isNil = _interopRequireDefault(require("lodash/isNil"));
10
10
  var _Star = _interopRequireDefault(require("@rsuite/icons/Star"));
11
11
  var _Character = _interopRequireDefault(require("./Character"));
12
12
  var _Plaintext = _interopRequireDefault(require("../internals/Plaintext"));
13
- var _Box = _interopRequireDefault(require("../internals/Box"));
13
+ var _StyledBox = _interopRequireDefault(require("../internals/StyledBox"));
14
14
  var _constants = require("../internals/constants");
15
15
  var _hooks = require("../internals/hooks");
16
16
  var _utils = require("../internals/utils");
17
17
  var _utils2 = require("./utils");
18
+ var _useRatingStates = require("./useRatingStates");
18
19
  var _CustomProvider = require("../CustomProvider");
19
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
20
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
20
  /**
22
21
  * The `Rate` component is used for rating. It can be used to evaluate the quality of the content.
23
22
  * @see https://rsuitejs.com/components/rate/
@@ -35,7 +34,7 @@ const Rate = (0, _utils.forwardRef)((props, ref) => {
35
34
  max = 5,
36
35
  readOnly,
37
36
  vertical,
38
- size = 'md',
37
+ size,
39
38
  color,
40
39
  allowHalf = false,
41
40
  value: valueProp,
@@ -49,39 +48,37 @@ const Rate = (0, _utils.forwardRef)((props, ref) => {
49
48
  ...rest
50
49
  } = propsWithDefaults;
51
50
  const [value, setValue] = (0, _hooks.useControlled)(valueProp, defaultValue);
52
- const getCharacterMap = (0, _react.useCallback)(v => {
53
- return (0, _utils2.transformValueToCharacterMap)(typeof v !== 'undefined' ? v : value, max, allowHalf);
54
- }, [allowHalf, max, value]);
55
- const [characterMap, setCharacterMap] = (0, _react.useState)(getCharacterMap());
56
- const hoverValue = (0, _utils2.transformCharacterMapToValue)(characterMap);
57
51
  const {
58
52
  merge,
59
53
  withPrefix
60
54
  } = (0, _hooks.useStyles)(classPrefix);
61
- const classes = merge(className, withPrefix(size, (0, _utils.isPresetColor)(color) && color, {
62
- disabled,
63
- readonly: readOnly
64
- }));
65
- const styles = (0, _react.useMemo)(() => (0, _utils.mergeStyles)(style, (0, _utils.createColorVariables)(color, '--rs-rate-symbol-checked')), [style, color]);
66
- const resetCharacterMap = (0, _react.useCallback)(() => {
67
- setCharacterMap(getCharacterMap());
68
- }, [getCharacterMap]);
69
- (0, _react.useEffect)(() => {
70
- // Update characterMap when value is updated.
71
- setCharacterMap(getCharacterMap(valueProp));
72
- }, [valueProp]);
55
+ const classes = merge(className, withPrefix());
56
+
57
+ // Use the custom hook to manage rating star states
58
+ const {
59
+ starStates,
60
+ setStarStates,
61
+ resetStarStates,
62
+ hoverValue,
63
+ getStarStates
64
+ } = (0, _useRatingStates.useRatingStates)({
65
+ value,
66
+ max,
67
+ allowHalf,
68
+ valueProp
69
+ });
73
70
  const handleMouseLeave = (0, _hooks.useEventCallback)(event => {
74
- resetCharacterMap();
71
+ resetStarStates();
75
72
  onChangeActive === null || onChangeActive === void 0 || onChangeActive(value, event);
76
73
  });
77
74
  const handleChangeValue = (0, _hooks.useEventCallback)((index, event) => {
78
- let nextValue = (0, _utils2.transformCharacterMapToValue)(characterMap);
79
- if (cleanable && value === nextValue && getCharacterMap(value)[index] === characterMap[index]) {
75
+ let nextValue = (0, _utils2.transformStarStatusToValue)(starStates);
76
+ if (cleanable && value === nextValue && getStarStates(value)[index] === starStates[index]) {
80
77
  nextValue = 0;
81
78
  }
82
79
  if (nextValue !== value) {
83
80
  setValue(nextValue);
84
- setCharacterMap(getCharacterMap(nextValue));
81
+ setStarStates(getStarStates(nextValue));
85
82
  onChange === null || onChange === void 0 || onChange(nextValue, event);
86
83
  }
87
84
  });
@@ -89,59 +86,67 @@ const Rate = (0, _utils.forwardRef)((props, ref) => {
89
86
  const {
90
87
  key
91
88
  } = event;
92
- let nextValue = (0, _utils2.transformCharacterMapToValue)(characterMap);
89
+ let nextValue = (0, _utils2.transformStarStatusToValue)(starStates);
93
90
  if (key === _constants.KEY_VALUES.RIGHT && nextValue < max) {
94
91
  nextValue = allowHalf ? nextValue + 0.5 : nextValue + 1;
95
92
  } else if (key === _constants.KEY_VALUES.LEFT && nextValue > 0) {
96
93
  nextValue = allowHalf ? nextValue - 0.5 : nextValue - 1;
97
94
  }
98
- setCharacterMap(getCharacterMap(nextValue));
95
+ setStarStates(getStarStates(nextValue));
99
96
  if (key === _constants.KEY_VALUES.ENTER) {
100
97
  handleChangeValue(index, event);
101
98
  }
102
99
  });
103
- const handleChangeCharacterMap = (0, _hooks.useEventCallback)((index, key, event) => {
104
- const nextCharacterMap = characterMap.map((_item, i) => {
100
+ const handleChangeStarStates = (0, _hooks.useEventCallback)((index, key, event) => {
101
+ const nextStarStates = starStates.map((_item, i) => {
105
102
  if (i === index && key === 'before' && allowHalf) {
106
103
  return 0.5;
107
104
  }
108
105
  return index >= i ? 1 : 0;
109
106
  });
110
- if (!(0, _utils.shallowEqualArray)(characterMap, nextCharacterMap)) {
111
- setCharacterMap(nextCharacterMap);
112
- onChangeActive === null || onChangeActive === void 0 || onChangeActive((0, _utils2.transformCharacterMapToValue)(nextCharacterMap), event);
107
+ if (!(0, _utils.shallowEqualArray)(starStates, nextStarStates)) {
108
+ setStarStates(nextStarStates);
109
+ onChangeActive === null || onChangeActive === void 0 || onChangeActive((0, _utils2.transformStarStatusToValue)(nextStarStates), event);
113
110
  }
114
111
  });
115
112
  const handleClick = (0, _hooks.useEventCallback)((index, key, event) => {
116
- handleChangeCharacterMap(index, key, event);
113
+ handleChangeStarStates(index, key, event);
117
114
  handleChangeValue(index, event);
118
115
  });
119
116
  if (plaintext) {
120
117
  return /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
121
118
  localeKey: "notSelected",
122
119
  className: className
123
- }, !(0, _isNil.default)(value) ? `${value}(${max})` : null);
120
+ }, !(0, _isNil.default)(value) ? `${value}/${max}` : null);
124
121
  }
125
- return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
122
+ const mergedStyle = (0, _utils.mergeStyles)(style, {
123
+ '--rs-rate-before-size': (0, _utils2.getFractionalValue)(value)
124
+ });
125
+ return /*#__PURE__*/_react.default.createElement(_StyledBox.default, (0, _extends2.default)({
126
126
  as: as,
127
+ name: "rate",
128
+ size: size,
129
+ color: color,
127
130
  role: "radiogroup",
128
- tabIndex: 0,
131
+ tabIndex: disabled ? -1 : 0,
129
132
  ref: ref,
130
133
  className: classes,
131
- style: styles,
132
- onMouseLeave: handleMouseLeave
133
- }, rest), characterMap.map((item, index) => /*#__PURE__*/_react.default.createElement(_Character.default, {
134
+ style: mergedStyle,
135
+ onMouseLeave: handleMouseLeave,
136
+ "data-disabled": disabled,
137
+ "data-readonly": readOnly
138
+ }, rest), starStates.map((status, index) => /*#__PURE__*/_react.default.createElement(_Character.default, {
134
139
  role: "radio",
135
140
  "aria-posinset": index + 1,
136
141
  "aria-setsize": max,
137
142
  "aria-checked": value === index + 1,
138
143
  key: index,
139
- status: item,
144
+ status: status,
140
145
  disabled: disabled || readOnly,
141
146
  vertical: vertical,
142
147
  onClick: (key, event) => handleClick(index, key, event),
143
148
  onKeyDown: event => handleKeyDown(index, event),
144
- onMouseMove: (key, event) => handleChangeCharacterMap(index, key, event)
149
+ onMouseMove: (key, event) => handleChangeStarStates(index, key, event)
145
150
  }, renderCharacter ? renderCharacter(hoverValue, index) : character)));
146
151
  });
147
152
  Rate.displayName = 'Rate';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Represents the status of a star in a rating system.
3
+ * 0: Empty star
4
+ * 0.5: Half-filled star
5
+ * 1: Fully filled star
6
+ * number: Any other fractional value for custom fill levels
7
+ */
8
+ export type StarStatus = 0 | 0.5 | 1 | number;
@@ -0,0 +1,4 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
@@ -0,0 +1,20 @@
1
+ /// <reference types="react" />
2
+ import type { StarStatus } from './types';
3
+ interface UseRatingStatesParams {
4
+ value: number;
5
+ max: number;
6
+ allowHalf: boolean;
7
+ valueProp?: number;
8
+ }
9
+ interface UseRatingStatesReturn {
10
+ starStates: StarStatus[];
11
+ hoverValue: number;
12
+ setStarStates: React.Dispatch<React.SetStateAction<StarStatus[]>>;
13
+ resetStarStates: () => void;
14
+ getStarStates: (v?: number) => StarStatus[];
15
+ }
16
+ /**
17
+ * Custom hook to manage rating star states for Rate component
18
+ */
19
+ export declare const useRatingStates: ({ value, max, allowHalf, valueProp }: UseRatingStatesParams) => UseRatingStatesReturn;
20
+ export {};
@@ -0,0 +1,48 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.useRatingStates = void 0;
6
+ var _react = require("react");
7
+ var _utils = require("./utils");
8
+ /**
9
+ * Custom hook to manage rating star states for Rate component
10
+ */
11
+ const useRatingStates = _ref => {
12
+ let {
13
+ value,
14
+ max,
15
+ allowHalf,
16
+ valueProp
17
+ } = _ref;
18
+ // Create a function to generate star states based on value
19
+ const getStarStates = (0, _react.useCallback)(v => {
20
+ return (0, _utils.transformValueToStarStatus)(typeof v !== 'undefined' ? v : value, max, allowHalf);
21
+ }, [allowHalf, max, value]);
22
+
23
+ // Initialize star states
24
+ const [starStates, setStarStates] = (0, _react.useState)(getStarStates());
25
+
26
+ // Calculate hover value from star states
27
+ const hoverValue = (0, _utils.transformStarStatusToValue)(starStates);
28
+
29
+ // Function to reset star states to current value
30
+ const resetStarStates = (0, _react.useCallback)(() => {
31
+ setStarStates(getStarStates());
32
+ }, [getStarStates]);
33
+
34
+ // Update star states when value prop changes
35
+ (0, _react.useEffect)(() => {
36
+ if (typeof valueProp !== 'undefined') {
37
+ setStarStates(getStarStates(valueProp));
38
+ }
39
+ }, [valueProp, getStarStates]);
40
+ return {
41
+ starStates,
42
+ setStarStates,
43
+ resetStarStates,
44
+ hoverValue,
45
+ getStarStates
46
+ };
47
+ };
48
+ exports.useRatingStates = useRatingStates;
@@ -1,3 +1,14 @@
1
- export type CharacterType = 0 | 0.5 | 1;
2
- export declare const transformValueToCharacterMap: (value: number, max: number, allowHalf: boolean) => CharacterType[];
3
- export declare const transformCharacterMapToValue: (characterMap: CharacterType[]) => number;
1
+ import type { StarStatus } from './types';
2
+ /**
3
+ * Transforms a numeric value into a character map array.
4
+ */
5
+ export declare const transformValueToStarStatus: (value: number, max: number, allowHalf: boolean) => StarStatus[];
6
+ /**
7
+ * Transforms a character map array into a numeric value.
8
+ */
9
+ export declare const transformStarStatusToValue: (characterMap: StarStatus[]) => number;
10
+ /**
11
+ * Calculates the fractional part of a value as a percentage string.
12
+ */
13
+ export declare const getFractionalValue: (value: number) => string | undefined;
14
+ export declare const getStarStatus: (status?: StarStatus) => any;
package/cjs/Rate/utils.js CHANGED
@@ -2,24 +2,65 @@
2
2
  "use strict";
3
3
 
4
4
  exports.__esModule = true;
5
- exports.transformValueToCharacterMap = exports.transformCharacterMapToValue = void 0;
6
- const transformValueToCharacterMap = (value, max, allowHalf) => {
5
+ exports.transformValueToStarStatus = exports.transformStarStatusToValue = exports.getStarStatus = exports.getFractionalValue = void 0;
6
+ /**
7
+ * Transforms a numeric value into a character map array.
8
+ */
9
+ const transformValueToStarStatus = (value, max, allowHalf) => {
7
10
  const characterMap = [];
8
11
  for (let i = 0; i < max; i++) {
9
- if (i < value) {
10
- if (allowHalf && i + 1 > value) {
11
- value && characterMap.push(0.5);
12
+ if (i < value && value >= i + 1) {
13
+ // Fully filled star
14
+ characterMap.push(1);
15
+ } else if (i < value && value < i + 1) {
16
+ // Partially filled star
17
+ if (allowHalf) {
18
+ // Use 0.5 to represent partial fill when half ratings are allowed
19
+ characterMap.push(0.5);
12
20
  } else {
13
- characterMap.push(1);
21
+ // Extract the decimal part
22
+ characterMap.push(value - i);
14
23
  }
15
24
  } else {
25
+ // Empty star
16
26
  characterMap.push(0);
17
27
  }
18
28
  }
19
29
  return characterMap;
20
30
  };
21
- exports.transformValueToCharacterMap = transformValueToCharacterMap;
22
- const transformCharacterMapToValue = characterMap => characterMap.reduce((total, currentValue) => {
31
+
32
+ /**
33
+ * Transforms a character map array into a numeric value.
34
+ */
35
+ exports.transformValueToStarStatus = transformValueToStarStatus;
36
+ const transformStarStatusToValue = characterMap => characterMap.reduce((total, currentValue) => {
23
37
  return total + currentValue;
24
38
  });
25
- exports.transformCharacterMapToValue = transformCharacterMapToValue;
39
+
40
+ /**
41
+ * Calculates the fractional part of a value as a percentage string.
42
+ */
43
+ exports.transformStarStatusToValue = transformStarStatusToValue;
44
+ const getFractionalValue = value => {
45
+ if (!value) {
46
+ return undefined;
47
+ }
48
+ const integer = Math.floor(value);
49
+ const decimal = value - integer;
50
+
51
+ // Round to avoid floating-point precision issues
52
+ return decimal ? `${Math.round(decimal * 100)}%` : undefined;
53
+ };
54
+ exports.getFractionalValue = getFractionalValue;
55
+ const starStatusMap = {
56
+ [0]: 'empty',
57
+ [0.5]: 'half',
58
+ [1]: 'full'
59
+ };
60
+ const getStarStatus = status => {
61
+ if (typeof status === 'number') {
62
+ return starStatusMap[status] || 'frac';
63
+ }
64
+ return null;
65
+ };
66
+ exports.getStarStatus = getStarStatus;