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.
- package/AutoComplete/styles/index.css +112 -62
- package/AutoComplete/styles/index.less +1 -1
- package/Box/styles/index.css +12 -0
- package/CHANGELOG.md +24 -0
- package/Calendar/styles/index.css +11 -9
- package/Calendar/styles/index.less +3 -1
- package/Cascader/styles/index.css +112 -62
- package/CheckPicker/styles/index.css +112 -62
- package/CheckPicker/styles/index.less +1 -1
- package/CheckTree/styles/index.css +113 -63
- package/CheckTree/styles/index.less +1 -1
- package/CheckTreePicker/styles/index.css +113 -63
- package/DateInput/styles/index.css +0 -7
- package/DatePicker/styles/index.css +122 -74
- package/DatePicker/styles/index.less +5 -11
- package/DateRangeInput/styles/index.css +0 -7
- package/DateRangePicker/styles/index.css +132 -78
- package/DateRangePicker/styles/index.less +10 -4
- package/Divider/styles/index.css +2 -2
- package/Divider/styles/index.less +2 -2
- package/Grid/styles/columns.less +1 -2
- package/Grid/styles/grid-framework.less +1 -0
- package/Grid/styles/index.css +9 -4
- package/Grid/styles/row.less +2 -2
- package/Input/styles/index.css +0 -7
- package/Input/styles/index.less +0 -6
- package/Input/styles/mixin.less +0 -4
- package/InputGroup/styles/index.css +1 -1
- package/InputGroup/styles/index.less +1 -1
- package/InputNumber/styles/index.css +1 -8
- package/InputPicker/styles/index.css +121 -70
- package/InputPicker/styles/index.less +4 -4
- package/Link/package.json +7 -0
- package/Link/styles/index.css +32 -0
- package/Link/styles/index.less +39 -0
- package/Message/styles/index.css +9 -0
- package/Message/styles/index.less +11 -0
- package/MultiCascadeTree/styles/index.css +112 -62
- package/MultiCascader/styles/index.css +112 -62
- package/Nav/styles/index.css +1 -0
- package/Nav/styles/index.less +1 -0
- package/Pagination/styles/index.css +114 -64
- package/PasswordInput/package.json +7 -0
- package/PasswordInput/styles/index.css +172 -0
- package/PasswordInput/styles/index.less +1 -0
- package/PasswordStrengthMeter/package.json +7 -0
- package/PasswordStrengthMeter/styles/index.css +33 -0
- package/PasswordStrengthMeter/styles/index.less +39 -0
- package/README.md +3 -3
- package/RadioGroup/styles/index.css +1 -0
- package/RadioGroup/styles/index.less +1 -0
- package/RangeSlider/styles/index.css +76 -43
- package/Rate/styles/index.css +48 -34
- package/Rate/styles/index.less +32 -21
- package/SelectPicker/styles/index.css +112 -62
- package/SelectPicker/styles/index.less +1 -1
- package/Slider/styles/index.css +76 -43
- package/Slider/styles/index.less +95 -48
- package/Tabs/styles/index.css +1 -0
- package/TagInput/styles/index.css +152 -91
- package/TagInput/styles/index.less +1 -1
- package/TagPicker/styles/index.css +151 -90
- package/TagPicker/styles/index.less +52 -41
- package/Textarea/package.json +7 -0
- package/Textarea/styles/index.css +6 -0
- package/Textarea/styles/index.less +7 -0
- package/TimePicker/styles/index.css +122 -74
- package/TimeRangePicker/styles/index.css +132 -78
- package/Toggle/styles/index.css +146 -87
- package/Toggle/styles/index.less +66 -38
- package/Tree/styles/index.css +113 -63
- package/Tree/styles/index.less +1 -1
- package/TreePicker/styles/index.css +113 -63
- package/cjs/AutoComplete/AutoComplete.d.ts +1 -1
- package/cjs/AutoComplete/AutoComplete.js +13 -11
- package/cjs/Avatar/Avatar.d.ts +3 -4
- package/cjs/Breadcrumb/Breadcrumb.js +2 -2
- package/cjs/Breadcrumb/BreadcrumbItem.js +1 -1
- package/cjs/Button/Button.js +9 -10
- package/cjs/Calendar/CalendarProvider.js +0 -0
- package/cjs/Calendar/hooks/useCalendar.js +0 -0
- package/cjs/Carousel/Carousel.js +2 -2
- package/cjs/Cascader/Cascader.js +42 -45
- package/cjs/Cascader/useActive.d.ts +6 -4
- package/cjs/Cascader/useActive.js +10 -8
- package/cjs/CheckPicker/CheckPicker.js +38 -41
- package/cjs/CheckTreePicker/CheckTreePicker.js +20 -22
- package/cjs/CustomProvider/CustomProvider.d.ts +1 -4
- package/cjs/CustomProvider/types.d.ts +10 -2
- package/cjs/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/DatePicker/DatePicker.js +28 -25
- package/cjs/DatePicker/utils.d.ts +3 -3
- package/cjs/DatePicker/utils.js +3 -3
- package/cjs/DateRangePicker/DateRangePicker.js +39 -33
- package/cjs/DateRangePicker/utils.js +0 -0
- package/cjs/Divider/Divider.d.ts +3 -2
- package/cjs/Divider/Divider.js +2 -2
- package/cjs/Form/hooks/useFormValidate.js +0 -0
- package/cjs/Form/hooks/useSchemaModel.js +2 -54
- package/cjs/Form/utils/constructFlatSchema.d.ts +4 -0
- package/cjs/Form/utils/constructFlatSchema.js +41 -0
- package/cjs/FormControl/hooks/useField.js +0 -0
- package/cjs/FormControl/utils.js +0 -0
- package/cjs/Grid/Row.d.ts +2 -2
- package/cjs/Grid/Row.js +2 -20
- package/cjs/Grid/types.d.ts +1 -0
- package/cjs/Grid/utils/styles.d.ts +6 -0
- package/cjs/Grid/utils/styles.js +43 -0
- package/cjs/Image/Image.js +12 -11
- package/cjs/Image/hooks/useImage.d.ts +2 -0
- package/cjs/Image/hooks/useImage.js +19 -43
- package/cjs/InlineEdit/InlineEdit.js +3 -1
- package/cjs/InlineEdit/useEditState.d.ts +2 -0
- package/cjs/InlineEdit/useEditState.js +8 -0
- package/cjs/Input/Input.d.ts +3 -12
- package/cjs/Input/Input.js +12 -73
- package/cjs/InputPicker/InputPicker.js +27 -28
- package/cjs/Link/ExternalLinkIcon.d.ts +3 -0
- package/cjs/Link/ExternalLinkIcon.js +23 -0
- package/cjs/Link/Link.d.ts +14 -0
- package/cjs/Link/Link.js +52 -0
- package/cjs/Link/index.d.ts +4 -0
- package/cjs/Link/index.js +11 -0
- package/cjs/List/List.js +6 -2
- package/cjs/List/helper/useSortHelper.d.ts +7 -5
- package/cjs/List/helper/useSortHelper.js +109 -16
- package/cjs/List/helper/utils.js +14 -6
- package/cjs/MultiCascader/MultiCascader.js +40 -43
- package/cjs/Nav/NavItem.js +1 -1
- package/cjs/Nav/NavMegaMenu.d.ts +5 -0
- package/cjs/Nav/NavMegaMenu.js +5 -0
- package/cjs/Navbar/NavbarItem.js +1 -1
- package/cjs/Navbar/NavbarMegaMenu.js +1 -1
- package/cjs/PasswordInput/PasswordInput.d.ts +14 -0
- package/cjs/PasswordInput/PasswordInput.js +71 -0
- package/cjs/PasswordInput/index.d.ts +4 -0
- package/cjs/PasswordInput/index.js +11 -0
- package/cjs/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
- package/cjs/PasswordStrengthMeter/PasswordStrengthMeter.js +50 -0
- package/cjs/PasswordStrengthMeter/index.d.ts +4 -0
- package/cjs/PasswordStrengthMeter/index.js +11 -0
- package/cjs/RangeSlider/RangeSlider.js +18 -3
- package/cjs/Rate/Character.d.ts +4 -3
- package/cjs/Rate/Character.js +19 -15
- package/cjs/Rate/Rate.d.ts +10 -2
- package/cjs/Rate/Rate.js +47 -42
- package/cjs/Rate/types.d.ts +8 -0
- package/cjs/Rate/types.js +4 -0
- package/cjs/Rate/useRatingStates.d.ts +20 -0
- package/cjs/Rate/useRatingStates.js +48 -0
- package/cjs/Rate/utils.d.ts +14 -3
- package/cjs/Rate/utils.js +50 -9
- package/cjs/SelectPicker/SelectPicker.js +45 -46
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +1 -1
- package/cjs/Sidenav/SidenavItem.js +1 -1
- package/cjs/Slider/Graduated.d.ts +4 -0
- package/cjs/Slider/Graduated.js +43 -20
- package/cjs/Slider/Handle.d.ts +1 -1
- package/cjs/Slider/Handle.js +12 -12
- package/cjs/Slider/Slider.d.ts +16 -1
- package/cjs/Slider/Slider.js +7 -2
- package/cjs/Slider/useDrag.d.ts +1 -0
- package/cjs/Slider/useDrag.js +8 -3
- package/cjs/Steps/Steps.js +2 -2
- package/cjs/Tabs/Tabs.js +2 -2
- package/cjs/Textarea/Textarea.d.ts +32 -0
- package/cjs/Textarea/Textarea.js +51 -0
- package/cjs/Textarea/index.d.ts +4 -0
- package/cjs/Textarea/index.js +11 -0
- package/cjs/Timeline/Timeline.js +2 -2
- package/cjs/Toggle/Toggle.d.ts +10 -1
- package/cjs/Toggle/Toggle.js +12 -9
- package/cjs/TreePicker/TreePicker.js +18 -19
- package/cjs/index.d.ts +4 -1
- package/cjs/index.js +24 -6
- package/cjs/internals/Box/Box.d.ts +4 -0
- package/cjs/internals/Box/Box.js +1 -1
- package/cjs/internals/Box/utils.js +5 -1
- package/cjs/internals/InputBase/InputBase.d.ts +45 -0
- package/cjs/internals/InputBase/InputBase.js +96 -0
- package/cjs/internals/InputBase/index.d.ts +3 -0
- package/cjs/internals/InputBase/index.js +8 -0
- package/cjs/internals/Overlay/Modal.d.ts +1 -1
- package/cjs/internals/Overlay/OverlayTrigger.d.ts +4 -3
- package/cjs/internals/Overlay/OverlayTrigger.js +8 -3
- package/cjs/internals/Picker/Listbox.js +7 -9
- package/cjs/internals/Picker/PickerDrawer.d.ts +8 -0
- package/cjs/internals/Picker/PickerDrawer.js +31 -0
- package/cjs/internals/Picker/PickerPopup.js +5 -3
- package/cjs/internals/Picker/PickerToggle.d.ts +1 -0
- package/cjs/internals/Picker/PickerToggle.js +10 -3
- package/cjs/internals/Picker/PickerToggleTrigger.d.ts +51 -11
- package/cjs/internals/Picker/PickerToggleTrigger.js +59 -13
- package/cjs/internals/Picker/hooks/index.d.ts +0 -1
- package/cjs/internals/Picker/hooks/index.js +2 -4
- package/cjs/internals/Picker/hooks/useCombobox.d.ts +1 -0
- package/cjs/internals/Picker/hooks/useCombobox.js +3 -1
- package/cjs/internals/Picker/index.d.ts +1 -2
- package/cjs/internals/Picker/index.js +10 -12
- package/{esm → cjs/internals}/SafeAnchor/SafeAnchor.d.ts +2 -2
- package/cjs/{SafeAnchor → internals/SafeAnchor}/SafeAnchor.js +3 -3
- package/cjs/internals/Tree/TreeView.js +3 -4
- package/cjs/internals/hooks/useRootClose.js +4 -4
- package/cjs/internals/index.d.ts +4 -0
- package/cjs/internals/index.js +13 -1
- package/cjs/internals/types/html.d.ts +2 -0
- package/cjs/internals/utils/{dom.d.ts → html/dom.d.ts} +1 -0
- package/cjs/internals/utils/{dom.js → html/dom.js} +8 -0
- package/cjs/internals/utils/{events.js → html/events.js} +0 -0
- package/cjs/internals/utils/{htmlPropsUtils.js → html/htmlPropsUtils.js} +0 -0
- package/cjs/internals/utils/html/index.d.ts +4 -0
- package/cjs/internals/utils/html/index.js +28 -0
- package/cjs/internals/utils/{safeSetSelection.js → html/safeSetSelection.js} +1 -1
- package/cjs/internals/utils/index.d.ts +3 -15
- package/cjs/internals/utils/index.js +20 -49
- package/cjs/internals/utils/{ReactChildren.d.ts → react/ReactChildren.d.ts} +2 -8
- package/cjs/internals/utils/{ReactChildren.js → react/ReactChildren.js} +5 -25
- package/cjs/internals/utils/react/ReactIs.d.ts +7 -0
- package/cjs/internals/utils/react/ReactIs.js +26 -0
- package/{esm/internals/utils → cjs/internals/utils/react}/createComponent.d.ts +2 -2
- package/cjs/internals/utils/{createComponent.js → react/createComponent.js} +3 -3
- package/cjs/internals/utils/{deprecateComponent.js → react/deprecateComponent.js} +1 -1
- package/cjs/internals/utils/{forwardRef.d.ts → react/forwardRef.d.ts} +1 -1
- package/cjs/internals/utils/react/index.d.ts +7 -0
- package/cjs/internals/utils/react/index.js +46 -0
- package/cjs/internals/utils/{mergeRefs.js → react/mergeRefs.js} +0 -0
- package/cjs/internals/utils/{getStringLength.d.ts → string/getStringLength.d.ts} +0 -1
- package/cjs/internals/utils/{getStringLength.js → string/getStringLength.js} +1 -3
- package/cjs/internals/utils/string/index.d.ts +4 -0
- package/cjs/internals/utils/string/index.js +28 -0
- package/cjs/internals/utils/{stringifyReactNode.js → string/stringifyReactNode.js} +0 -0
- package/cjs/internals/utils/{tplTransform.js → string/tplTransform.js} +0 -0
- package/cjs/locales/en_GB.js +2 -2
- package/cjs/locales/en_US.js +2 -2
- package/cjs/locales/index.js +0 -0
- package/cjs/locales/pl_PL.js +2 -3
- package/cjs/useBreakpointValue/useBreakpointValue.d.ts +6 -2
- package/cjs/useBreakpointValue/useBreakpointValue.js +9 -4
- package/cjs/useMediaQuery/breakpoints.d.ts +24 -0
- package/cjs/useMediaQuery/breakpoints.js +248 -0
- package/cjs/useMediaQuery/index.d.ts +1 -1
- package/cjs/useMediaQuery/types.d.ts +45 -0
- package/cjs/useMediaQuery/types.js +4 -0
- package/cjs/useMediaQuery/useMediaQuery.d.ts +4 -13
- package/cjs/useMediaQuery/useMediaQuery.js +30 -12
- package/cjs/useToaster/useToaster.d.ts +1 -1
- package/cjs/useToaster/useToaster.js +1 -1
- package/dist/rsuite-no-reset-rtl.css +565 -276
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +565 -276
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +565 -276
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +565 -276
- package/dist/rsuite.js +508 -211
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/AutoComplete/AutoComplete.d.ts +1 -1
- package/esm/AutoComplete/AutoComplete.js +13 -11
- package/esm/Avatar/Avatar.d.ts +3 -4
- package/esm/Breadcrumb/Breadcrumb.js +3 -3
- package/esm/Breadcrumb/BreadcrumbItem.js +1 -1
- package/esm/Button/Button.js +10 -11
- package/esm/Calendar/CalendarProvider.js +0 -0
- package/esm/Calendar/hooks/useCalendar.js +0 -0
- package/esm/Carousel/Carousel.js +3 -3
- package/esm/Cascader/Cascader.js +43 -46
- package/esm/Cascader/useActive.d.ts +6 -4
- package/esm/Cascader/useActive.js +10 -8
- package/esm/CheckPicker/CheckPicker.js +39 -42
- package/esm/CheckTreePicker/CheckTreePicker.js +21 -23
- package/esm/CustomProvider/CustomProvider.d.ts +1 -4
- package/esm/CustomProvider/types.d.ts +10 -2
- package/esm/DatePicker/DatePicker.d.ts +1 -1
- package/esm/DatePicker/DatePicker.js +29 -26
- package/esm/DatePicker/utils.d.ts +3 -3
- package/esm/DatePicker/utils.js +4 -4
- package/esm/DateRangePicker/DateRangePicker.js +35 -29
- package/esm/DateRangePicker/utils.js +0 -0
- package/esm/Divider/Divider.d.ts +3 -2
- package/esm/Divider/Divider.js +2 -2
- package/esm/Form/hooks/useFormValidate.js +0 -0
- package/esm/Form/hooks/useSchemaModel.js +3 -55
- package/esm/Form/utils/constructFlatSchema.d.ts +4 -0
- package/esm/Form/utils/constructFlatSchema.js +37 -0
- package/esm/FormControl/hooks/useField.js +0 -0
- package/esm/FormControl/utils.js +0 -0
- package/esm/Grid/Row.d.ts +2 -2
- package/esm/Grid/Row.js +2 -20
- package/esm/Grid/types.d.ts +1 -0
- package/esm/Grid/utils/styles.d.ts +6 -0
- package/esm/Grid/utils/styles.js +37 -0
- package/esm/Image/Image.js +12 -11
- package/esm/Image/hooks/useImage.d.ts +2 -0
- package/esm/Image/hooks/useImage.js +20 -43
- package/esm/InlineEdit/InlineEdit.js +3 -1
- package/esm/InlineEdit/useEditState.d.ts +2 -0
- package/esm/InlineEdit/useEditState.js +8 -0
- package/esm/Input/Input.d.ts +3 -12
- package/esm/Input/Input.js +12 -74
- package/esm/InputPicker/InputPicker.js +28 -29
- package/esm/Link/ExternalLinkIcon.d.ts +3 -0
- package/esm/Link/ExternalLinkIcon.js +18 -0
- package/esm/Link/Link.d.ts +14 -0
- package/esm/Link/Link.js +47 -0
- package/esm/Link/index.d.ts +4 -0
- package/esm/Link/index.js +8 -0
- package/esm/List/List.js +6 -2
- package/esm/List/helper/useSortHelper.d.ts +7 -5
- package/esm/List/helper/useSortHelper.js +109 -16
- package/esm/List/helper/utils.js +14 -6
- package/esm/MultiCascader/MultiCascader.js +41 -44
- package/esm/Nav/NavItem.js +1 -1
- package/esm/Nav/NavMegaMenu.d.ts +5 -0
- package/esm/Nav/NavMegaMenu.js +5 -0
- package/esm/Navbar/NavbarItem.js +1 -1
- package/esm/Navbar/NavbarMegaMenu.js +1 -1
- package/esm/PasswordInput/PasswordInput.d.ts +14 -0
- package/esm/PasswordInput/PasswordInput.js +66 -0
- package/esm/PasswordInput/index.d.ts +4 -0
- package/esm/PasswordInput/index.js +8 -0
- package/esm/PasswordStrengthMeter/PasswordStrengthMeter.d.ts +12 -0
- package/esm/PasswordStrengthMeter/PasswordStrengthMeter.js +45 -0
- package/esm/PasswordStrengthMeter/index.d.ts +4 -0
- package/esm/PasswordStrengthMeter/index.js +8 -0
- package/esm/RangeSlider/RangeSlider.js +18 -3
- package/esm/Rate/Character.d.ts +4 -3
- package/esm/Rate/Character.js +20 -16
- package/esm/Rate/Rate.d.ts +10 -2
- package/esm/Rate/Rate.js +49 -42
- package/esm/Rate/types.d.ts +8 -0
- package/esm/Rate/types.js +2 -0
- package/esm/Rate/useRatingStates.d.ts +20 -0
- package/esm/Rate/useRatingStates.js +43 -0
- package/esm/Rate/utils.d.ts +14 -3
- package/esm/Rate/utils.js +46 -7
- package/esm/SelectPicker/SelectPicker.js +46 -47
- package/esm/Sidenav/ExpandedSidenavDropdownItem.js +1 -1
- package/esm/Sidenav/SidenavItem.js +1 -1
- package/esm/Slider/Graduated.d.ts +4 -0
- package/esm/Slider/Graduated.js +43 -20
- package/esm/Slider/Handle.d.ts +1 -1
- package/esm/Slider/Handle.js +12 -12
- package/esm/Slider/Slider.d.ts +16 -1
- package/esm/Slider/Slider.js +7 -2
- package/esm/Slider/useDrag.d.ts +1 -0
- package/esm/Slider/useDrag.js +8 -3
- package/esm/Steps/Steps.js +3 -3
- package/esm/Tabs/Tabs.js +3 -3
- package/esm/Textarea/Textarea.d.ts +32 -0
- package/esm/Textarea/Textarea.js +46 -0
- package/esm/Textarea/index.d.ts +4 -0
- package/esm/Textarea/index.js +8 -0
- package/esm/Timeline/Timeline.js +3 -3
- package/esm/Toggle/Toggle.d.ts +10 -1
- package/esm/Toggle/Toggle.js +12 -9
- package/esm/TreePicker/TreePicker.js +19 -20
- package/esm/index.d.ts +4 -1
- package/esm/index.js +4 -1
- package/esm/internals/Box/Box.d.ts +4 -0
- package/esm/internals/Box/Box.js +1 -1
- package/esm/internals/Box/utils.js +5 -1
- package/esm/internals/InputBase/InputBase.d.ts +45 -0
- package/esm/internals/InputBase/InputBase.js +89 -0
- package/esm/internals/InputBase/index.d.ts +3 -0
- package/esm/internals/InputBase/index.js +3 -0
- package/esm/internals/Overlay/Modal.d.ts +1 -1
- package/esm/internals/Overlay/OverlayTrigger.d.ts +4 -3
- package/esm/internals/Overlay/OverlayTrigger.js +8 -2
- package/esm/internals/Picker/Listbox.js +8 -10
- package/esm/internals/Picker/PickerDrawer.d.ts +8 -0
- package/esm/internals/Picker/PickerDrawer.js +26 -0
- package/esm/internals/Picker/PickerPopup.js +5 -3
- package/esm/internals/Picker/PickerToggle.d.ts +1 -0
- package/esm/internals/Picker/PickerToggle.js +10 -3
- package/esm/internals/Picker/PickerToggleTrigger.d.ts +51 -11
- package/esm/internals/Picker/PickerToggleTrigger.js +59 -12
- package/esm/internals/Picker/hooks/index.d.ts +0 -1
- package/esm/internals/Picker/hooks/index.js +1 -2
- package/esm/internals/Picker/hooks/useCombobox.d.ts +1 -0
- package/esm/internals/Picker/hooks/useCombobox.js +3 -1
- package/esm/internals/Picker/index.d.ts +1 -2
- package/esm/internals/Picker/index.js +1 -2
- package/{cjs → esm/internals}/SafeAnchor/SafeAnchor.d.ts +2 -2
- package/esm/{SafeAnchor → internals/SafeAnchor}/SafeAnchor.js +3 -3
- package/esm/internals/Tree/TreeView.js +4 -5
- package/esm/internals/hooks/useRootClose.js +1 -1
- package/esm/internals/index.d.ts +4 -0
- package/esm/internals/index.js +5 -0
- package/esm/internals/types/html.d.ts +2 -0
- package/esm/internals/utils/{dom.d.ts → html/dom.d.ts} +1 -0
- package/esm/internals/utils/{dom.js → html/dom.js} +7 -0
- package/esm/internals/utils/{events.js → html/events.js} +0 -0
- package/esm/internals/utils/{htmlPropsUtils.js → html/htmlPropsUtils.js} +0 -0
- package/esm/internals/utils/html/index.d.ts +4 -0
- package/esm/internals/utils/html/index.js +5 -0
- package/esm/internals/utils/{safeSetSelection.js → html/safeSetSelection.js} +1 -1
- package/esm/internals/utils/index.d.ts +3 -15
- package/esm/internals/utils/index.js +3 -14
- package/esm/internals/utils/{ReactChildren.d.ts → react/ReactChildren.d.ts} +2 -8
- package/esm/internals/utils/{ReactChildren.js → react/ReactChildren.js} +3 -21
- package/esm/internals/utils/react/ReactIs.d.ts +7 -0
- package/esm/internals/utils/react/ReactIs.js +22 -0
- package/{cjs/internals/utils → esm/internals/utils/react}/createComponent.d.ts +2 -2
- package/esm/internals/utils/{createComponent.js → react/createComponent.js} +3 -3
- package/esm/internals/utils/{deprecateComponent.js → react/deprecateComponent.js} +1 -1
- package/esm/internals/utils/{forwardRef.d.ts → react/forwardRef.d.ts} +1 -1
- package/esm/internals/utils/react/index.d.ts +7 -0
- package/esm/internals/utils/react/index.js +8 -0
- package/esm/internals/utils/{mergeRefs.js → react/mergeRefs.js} +0 -0
- package/esm/internals/utils/{getStringLength.d.ts → string/getStringLength.d.ts} +0 -1
- package/esm/internals/utils/{getStringLength.js → string/getStringLength.js} +1 -2
- package/esm/internals/utils/string/index.d.ts +4 -0
- package/esm/internals/utils/string/index.js +5 -0
- package/esm/internals/utils/{stringifyReactNode.js → string/stringifyReactNode.js} +0 -0
- package/esm/internals/utils/{tplTransform.js → string/tplTransform.js} +0 -0
- package/esm/locales/en_GB.js +2 -2
- package/esm/locales/en_US.js +2 -2
- package/esm/locales/index.js +0 -0
- package/esm/locales/pl_PL.js +1 -1
- package/esm/useBreakpointValue/useBreakpointValue.d.ts +6 -2
- package/esm/useBreakpointValue/useBreakpointValue.js +9 -4
- package/esm/useMediaQuery/breakpoints.d.ts +24 -0
- package/esm/useMediaQuery/breakpoints.js +244 -0
- package/esm/useMediaQuery/index.d.ts +1 -1
- package/esm/useMediaQuery/types.d.ts +45 -0
- package/esm/useMediaQuery/types.js +2 -0
- package/esm/useMediaQuery/useMediaQuery.d.ts +4 -13
- package/esm/useMediaQuery/useMediaQuery.js +29 -11
- package/esm/useToaster/useToaster.d.ts +1 -1
- package/esm/useToaster/useToaster.js +1 -1
- package/internals/Box/styles/index.less +4 -0
- package/internals/Picker/styles/index.less +105 -23
- package/internals/Picker/styles/mixin.less +6 -6
- package/package.json +3 -2
- package/styles/color-modes/dark.less +2 -2
- package/styles/color-modes/high-contrast.less +2 -2
- package/styles/color-modes/light.less +2 -2
- package/styles/index.less +3 -0
- package/styles/root.less +2 -0
- package/styles/variables.less +0 -24
- package/SafeAnchor/package.json +0 -7
- package/cjs/Form/hooks/useFormClassNames.d.ts +0 -5
- package/cjs/Form/hooks/useFormClassNames.js +0 -29
- package/cjs/internals/Picker/hooks/usePickerClassName.d.ts +0 -19
- package/cjs/internals/Picker/hooks/usePickerClassName.js +0 -45
- package/esm/Form/hooks/useFormClassNames.d.ts +0 -5
- package/esm/Form/hooks/useFormClassNames.js +0 -25
- package/esm/internals/Picker/hooks/usePickerClassName.d.ts +0 -19
- package/esm/internals/Picker/hooks/usePickerClassName.js +0 -40
- /package/cjs/{SafeAnchor → internals/SafeAnchor}/index.d.ts +0 -0
- /package/cjs/{SafeAnchor → internals/SafeAnchor}/index.js +0 -0
- /package/cjs/internals/utils/{events.d.ts → html/events.d.ts} +0 -0
- /package/cjs/internals/utils/{htmlPropsUtils.d.ts → html/htmlPropsUtils.d.ts} +0 -0
- /package/cjs/internals/utils/{safeSetSelection.d.ts → html/safeSetSelection.d.ts} +0 -0
- /package/cjs/internals/utils/{deprecateComponent.d.ts → react/deprecateComponent.d.ts} +0 -0
- /package/cjs/internals/utils/{forwardRef.js → react/forwardRef.js} +0 -0
- /package/cjs/internals/utils/{getDOMNode.d.ts → react/getDOMNode.d.ts} +0 -0
- /package/cjs/internals/utils/{getDOMNode.js → react/getDOMNode.js} +0 -0
- /package/cjs/internals/utils/{mergeRefs.d.ts → react/mergeRefs.d.ts} +0 -0
- /package/cjs/internals/utils/{getSafeRegExpString.d.ts → string/getSafeRegExpString.d.ts} +0 -0
- /package/cjs/internals/utils/{getSafeRegExpString.js → string/getSafeRegExpString.js} +0 -0
- /package/cjs/internals/utils/{stringifyReactNode.d.ts → string/stringifyReactNode.d.ts} +0 -0
- /package/cjs/internals/utils/{tplTransform.d.ts → string/tplTransform.d.ts} +0 -0
- /package/esm/{SafeAnchor → internals/SafeAnchor}/index.d.ts +0 -0
- /package/esm/{SafeAnchor → internals/SafeAnchor}/index.js +0 -0
- /package/esm/internals/utils/{events.d.ts → html/events.d.ts} +0 -0
- /package/esm/internals/utils/{htmlPropsUtils.d.ts → html/htmlPropsUtils.d.ts} +0 -0
- /package/esm/internals/utils/{safeSetSelection.d.ts → html/safeSetSelection.d.ts} +0 -0
- /package/esm/internals/utils/{deprecateComponent.d.ts → react/deprecateComponent.d.ts} +0 -0
- /package/esm/internals/utils/{forwardRef.js → react/forwardRef.js} +0 -0
- /package/esm/internals/utils/{getDOMNode.d.ts → react/getDOMNode.d.ts} +0 -0
- /package/esm/internals/utils/{getDOMNode.js → react/getDOMNode.js} +0 -0
- /package/esm/internals/utils/{mergeRefs.d.ts → react/mergeRefs.d.ts} +0 -0
- /package/esm/internals/utils/{getSafeRegExpString.d.ts → string/getSafeRegExpString.d.ts} +0 -0
- /package/esm/internals/utils/{getSafeRegExpString.js → string/getSafeRegExpString.js} +0 -0
- /package/esm/internals/utils/{stringifyReactNode.d.ts → string/stringifyReactNode.d.ts} +0 -0
- /package/esm/internals/utils/{tplTransform.d.ts → string/tplTransform.d.ts} +0 -0
|
@@ -7,6 +7,7 @@ import getOffset from 'dom-lib/getOffset';
|
|
|
7
7
|
import ProgressBar from "../Slider/ProgressBar.js";
|
|
8
8
|
import Handle from "../Slider/Handle.js";
|
|
9
9
|
import Graduated from "../Slider/Graduated.js";
|
|
10
|
+
import Plaintext from "../internals/Plaintext/index.js";
|
|
10
11
|
import Box from "../internals/Box/index.js";
|
|
11
12
|
import { forwardRef } from "../internals/utils/index.js";
|
|
12
13
|
import { useStyles, useControlled, useEventCallback } from "../internals/hooks/index.js";
|
|
@@ -35,16 +36,21 @@ const RangeSlider = forwardRef((props, ref) => {
|
|
|
35
36
|
disabled,
|
|
36
37
|
graduated,
|
|
37
38
|
progress = true,
|
|
39
|
+
keepTooltipOpen = false,
|
|
38
40
|
vertical,
|
|
39
41
|
readOnly,
|
|
40
42
|
min = 0,
|
|
41
43
|
max: maxProp = 100,
|
|
42
44
|
step = 1,
|
|
45
|
+
size = 'sm',
|
|
43
46
|
value: valueProp,
|
|
44
47
|
handleClassName,
|
|
45
48
|
handleStyle,
|
|
46
49
|
handleTitle,
|
|
47
50
|
tooltip = true,
|
|
51
|
+
marks,
|
|
52
|
+
plaintext,
|
|
53
|
+
placeholder,
|
|
48
54
|
getAriaValueText,
|
|
49
55
|
renderTooltip,
|
|
50
56
|
renderMark,
|
|
@@ -260,7 +266,6 @@ const RangeSlider = forwardRef((props, ref) => {
|
|
|
260
266
|
position: (value[1] - min) / (max - min) * 100
|
|
261
267
|
}], [ariaValuetext, getAriaValueText, max, min, value]);
|
|
262
268
|
const handleCommonProps = {
|
|
263
|
-
rtl,
|
|
264
269
|
disabled,
|
|
265
270
|
vertical,
|
|
266
271
|
tooltip,
|
|
@@ -276,12 +281,21 @@ const RangeSlider = forwardRef((props, ref) => {
|
|
|
276
281
|
'aria-valuemax': max,
|
|
277
282
|
'aria-valuemin': min,
|
|
278
283
|
'aria-label': ariaLabel,
|
|
279
|
-
'aria-labelledby': ariaLabelledby
|
|
284
|
+
'aria-labelledby': ariaLabelledby,
|
|
285
|
+
keepTooltipOpen
|
|
280
286
|
};
|
|
287
|
+
if (plaintext) {
|
|
288
|
+
return /*#__PURE__*/React.createElement(Plaintext, {
|
|
289
|
+
localeKey: "notSelected",
|
|
290
|
+
ref: ref,
|
|
291
|
+
placeholder: placeholder
|
|
292
|
+
}, value && (value[0] || value[1]) ? value.join('~') : null);
|
|
293
|
+
}
|
|
281
294
|
return /*#__PURE__*/React.createElement(Box, _extends({
|
|
282
295
|
as: as,
|
|
283
296
|
ref: ref,
|
|
284
|
-
className: classes
|
|
297
|
+
className: classes,
|
|
298
|
+
"data-size": size
|
|
285
299
|
}, rest), /*#__PURE__*/React.createElement("div", {
|
|
286
300
|
className: merge(barClassName, prefix('bar')),
|
|
287
301
|
ref: barRef,
|
|
@@ -297,6 +311,7 @@ const RangeSlider = forwardRef((props, ref) => {
|
|
|
297
311
|
max: max,
|
|
298
312
|
count: count,
|
|
299
313
|
value: value,
|
|
314
|
+
marks: marks,
|
|
300
315
|
renderMark: renderMark
|
|
301
316
|
})), /*#__PURE__*/React.createElement(Handle, _extends({
|
|
302
317
|
"data-range": value
|
package/esm/Rate/Character.d.ts
CHANGED
|
@@ -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?:
|
|
6
|
+
status?: StarStatus;
|
|
6
7
|
disabled?: boolean;
|
|
7
|
-
onMouseMove?: (key:
|
|
8
|
-
onClick?: (key:
|
|
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>;
|
package/esm/Rate/Character.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import React, { useRef } from 'react';
|
|
3
|
+
import React, { useRef, useMemo } from 'react';
|
|
4
4
|
import contains from 'dom-lib/contains';
|
|
5
|
-
import isNil from 'lodash/isNil';
|
|
6
5
|
import Box from "../internals/Box/index.js";
|
|
7
6
|
import { forwardRef } from "../internals/utils/index.js";
|
|
7
|
+
import { getStarStatus } from "./utils.js";
|
|
8
8
|
import { useStyles, useEventCallback } from "../internals/hooks/index.js";
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
[0.5]: 'half',
|
|
12
|
-
[1]: 'full'
|
|
9
|
+
const getKey = (element, target) => {
|
|
10
|
+
return element && target && contains(element, target) ? 'before' : 'after';
|
|
13
11
|
};
|
|
14
|
-
const getKey = (a, b) => contains(a, b) ? 'before' : 'after';
|
|
15
12
|
const Character = forwardRef((props, ref) => {
|
|
16
13
|
const {
|
|
17
14
|
as = 'li',
|
|
@@ -27,27 +24,34 @@ const Character = forwardRef((props, ref) => {
|
|
|
27
24
|
...rest
|
|
28
25
|
} = props;
|
|
29
26
|
const {
|
|
30
|
-
merge,
|
|
31
27
|
prefix,
|
|
32
|
-
withPrefix
|
|
28
|
+
withPrefix,
|
|
29
|
+
merge
|
|
33
30
|
} = useStyles(classPrefix);
|
|
34
31
|
const beforeRef = useRef(null);
|
|
35
|
-
const classes = merge(className, withPrefix(!isNil(status) && characterStatus[status]));
|
|
36
32
|
const handleMouseMove = useEventCallback(event => {
|
|
37
33
|
onMouseMove === null || onMouseMove === void 0 || onMouseMove(getKey(beforeRef.current, event.target), event);
|
|
38
34
|
});
|
|
39
35
|
const handleClick = useEventCallback(event => {
|
|
40
36
|
onClick === null || onClick === void 0 || onClick(getKey(beforeRef.current, event.target), event);
|
|
41
37
|
});
|
|
38
|
+
const eventHandlers = useMemo(() => {
|
|
39
|
+
if (disabled) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
onClick: handleClick,
|
|
44
|
+
onKeyDown,
|
|
45
|
+
onMouseMove: handleMouseMove
|
|
46
|
+
};
|
|
47
|
+
}, [disabled, handleClick, onKeyDown, handleMouseMove]);
|
|
42
48
|
return /*#__PURE__*/React.createElement(Box, _extends({
|
|
43
49
|
as: as,
|
|
44
50
|
ref: ref,
|
|
45
|
-
className:
|
|
46
|
-
tabIndex: 0,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
onMouseMove: disabled ? null : handleMouseMove
|
|
50
|
-
}, rest), /*#__PURE__*/React.createElement("div", {
|
|
51
|
+
className: merge(className, withPrefix()),
|
|
52
|
+
tabIndex: disabled ? -1 : 0,
|
|
53
|
+
"data-status": getStarStatus(status)
|
|
54
|
+
}, eventHandlers, rest), /*#__PURE__*/React.createElement("div", {
|
|
51
55
|
ref: beforeRef,
|
|
52
56
|
className: prefix('before', {
|
|
53
57
|
vertical
|
package/esm/Rate/Rate.d.ts
CHANGED
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { StyledBoxProps } from '../internals/StyledBox';
|
|
3
3
|
import type { Color, FormControlBaseProps, Size } from '../internals/types';
|
|
4
|
-
export interface RateProps<T = number> extends
|
|
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/esm/Rate/Rate.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
import React
|
|
3
|
+
import React from 'react';
|
|
4
4
|
import isNil from 'lodash/isNil';
|
|
5
5
|
import Star from '@rsuite/icons/Star';
|
|
6
6
|
import Character from "./Character.js";
|
|
7
7
|
import Plaintext from "../internals/Plaintext/index.js";
|
|
8
|
-
import
|
|
8
|
+
import StyledBox from "../internals/StyledBox/index.js";
|
|
9
9
|
import { KEY_VALUES } from "../internals/constants/index.js";
|
|
10
10
|
import { useControlled, useStyles, useEventCallback } from "../internals/hooks/index.js";
|
|
11
|
-
import { forwardRef, shallowEqualArray,
|
|
12
|
-
import {
|
|
11
|
+
import { forwardRef, shallowEqualArray, mergeStyles } from "../internals/utils/index.js";
|
|
12
|
+
import { transformStarStatusToValue, getFractionalValue } from "./utils.js";
|
|
13
|
+
import { useRatingStates } from "./useRatingStates.js";
|
|
13
14
|
import { useCustom } from "../CustomProvider/index.js";
|
|
14
15
|
/**
|
|
15
16
|
* The `Rate` component is used for rating. It can be used to evaluate the quality of the content.
|
|
@@ -28,7 +29,7 @@ const Rate = forwardRef((props, ref) => {
|
|
|
28
29
|
max = 5,
|
|
29
30
|
readOnly,
|
|
30
31
|
vertical,
|
|
31
|
-
size
|
|
32
|
+
size,
|
|
32
33
|
color,
|
|
33
34
|
allowHalf = false,
|
|
34
35
|
value: valueProp,
|
|
@@ -42,39 +43,37 @@ const Rate = forwardRef((props, ref) => {
|
|
|
42
43
|
...rest
|
|
43
44
|
} = propsWithDefaults;
|
|
44
45
|
const [value, setValue] = useControlled(valueProp, defaultValue);
|
|
45
|
-
const getCharacterMap = useCallback(v => {
|
|
46
|
-
return transformValueToCharacterMap(typeof v !== 'undefined' ? v : value, max, allowHalf);
|
|
47
|
-
}, [allowHalf, max, value]);
|
|
48
|
-
const [characterMap, setCharacterMap] = useState(getCharacterMap());
|
|
49
|
-
const hoverValue = transformCharacterMapToValue(characterMap);
|
|
50
46
|
const {
|
|
51
47
|
merge,
|
|
52
48
|
withPrefix
|
|
53
49
|
} = useStyles(classPrefix);
|
|
54
|
-
const classes = merge(className, withPrefix(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
50
|
+
const classes = merge(className, withPrefix());
|
|
51
|
+
|
|
52
|
+
// Use the custom hook to manage rating star states
|
|
53
|
+
const {
|
|
54
|
+
starStates,
|
|
55
|
+
setStarStates,
|
|
56
|
+
resetStarStates,
|
|
57
|
+
hoverValue,
|
|
58
|
+
getStarStates
|
|
59
|
+
} = useRatingStates({
|
|
60
|
+
value,
|
|
61
|
+
max,
|
|
62
|
+
allowHalf,
|
|
63
|
+
valueProp
|
|
64
|
+
});
|
|
66
65
|
const handleMouseLeave = useEventCallback(event => {
|
|
67
|
-
|
|
66
|
+
resetStarStates();
|
|
68
67
|
onChangeActive === null || onChangeActive === void 0 || onChangeActive(value, event);
|
|
69
68
|
});
|
|
70
69
|
const handleChangeValue = useEventCallback((index, event) => {
|
|
71
|
-
let nextValue =
|
|
72
|
-
if (cleanable && value === nextValue &&
|
|
70
|
+
let nextValue = transformStarStatusToValue(starStates);
|
|
71
|
+
if (cleanable && value === nextValue && getStarStates(value)[index] === starStates[index]) {
|
|
73
72
|
nextValue = 0;
|
|
74
73
|
}
|
|
75
74
|
if (nextValue !== value) {
|
|
76
75
|
setValue(nextValue);
|
|
77
|
-
|
|
76
|
+
setStarStates(getStarStates(nextValue));
|
|
78
77
|
onChange === null || onChange === void 0 || onChange(nextValue, event);
|
|
79
78
|
}
|
|
80
79
|
});
|
|
@@ -82,59 +81,67 @@ const Rate = forwardRef((props, ref) => {
|
|
|
82
81
|
const {
|
|
83
82
|
key
|
|
84
83
|
} = event;
|
|
85
|
-
let nextValue =
|
|
84
|
+
let nextValue = transformStarStatusToValue(starStates);
|
|
86
85
|
if (key === KEY_VALUES.RIGHT && nextValue < max) {
|
|
87
86
|
nextValue = allowHalf ? nextValue + 0.5 : nextValue + 1;
|
|
88
87
|
} else if (key === KEY_VALUES.LEFT && nextValue > 0) {
|
|
89
88
|
nextValue = allowHalf ? nextValue - 0.5 : nextValue - 1;
|
|
90
89
|
}
|
|
91
|
-
|
|
90
|
+
setStarStates(getStarStates(nextValue));
|
|
92
91
|
if (key === KEY_VALUES.ENTER) {
|
|
93
92
|
handleChangeValue(index, event);
|
|
94
93
|
}
|
|
95
94
|
});
|
|
96
|
-
const
|
|
97
|
-
const
|
|
95
|
+
const handleChangeStarStates = useEventCallback((index, key, event) => {
|
|
96
|
+
const nextStarStates = starStates.map((_item, i) => {
|
|
98
97
|
if (i === index && key === 'before' && allowHalf) {
|
|
99
98
|
return 0.5;
|
|
100
99
|
}
|
|
101
100
|
return index >= i ? 1 : 0;
|
|
102
101
|
});
|
|
103
|
-
if (!shallowEqualArray(
|
|
104
|
-
|
|
105
|
-
onChangeActive === null || onChangeActive === void 0 || onChangeActive(
|
|
102
|
+
if (!shallowEqualArray(starStates, nextStarStates)) {
|
|
103
|
+
setStarStates(nextStarStates);
|
|
104
|
+
onChangeActive === null || onChangeActive === void 0 || onChangeActive(transformStarStatusToValue(nextStarStates), event);
|
|
106
105
|
}
|
|
107
106
|
});
|
|
108
107
|
const handleClick = useEventCallback((index, key, event) => {
|
|
109
|
-
|
|
108
|
+
handleChangeStarStates(index, key, event);
|
|
110
109
|
handleChangeValue(index, event);
|
|
111
110
|
});
|
|
112
111
|
if (plaintext) {
|
|
113
112
|
return /*#__PURE__*/React.createElement(Plaintext, {
|
|
114
113
|
localeKey: "notSelected",
|
|
115
114
|
className: className
|
|
116
|
-
}, !isNil(value) ? `${value}
|
|
115
|
+
}, !isNil(value) ? `${value}/${max}` : null);
|
|
117
116
|
}
|
|
118
|
-
|
|
117
|
+
const mergedStyle = mergeStyles(style, {
|
|
118
|
+
'--rs-rate-before-size': getFractionalValue(value)
|
|
119
|
+
});
|
|
120
|
+
return /*#__PURE__*/React.createElement(StyledBox, _extends({
|
|
119
121
|
as: as,
|
|
122
|
+
name: "rate",
|
|
123
|
+
size: size,
|
|
124
|
+
color: color,
|
|
120
125
|
role: "radiogroup",
|
|
121
|
-
tabIndex: 0,
|
|
126
|
+
tabIndex: disabled ? -1 : 0,
|
|
122
127
|
ref: ref,
|
|
123
128
|
className: classes,
|
|
124
|
-
style:
|
|
125
|
-
onMouseLeave: handleMouseLeave
|
|
126
|
-
|
|
129
|
+
style: mergedStyle,
|
|
130
|
+
onMouseLeave: handleMouseLeave,
|
|
131
|
+
"data-disabled": disabled,
|
|
132
|
+
"data-readonly": readOnly
|
|
133
|
+
}, rest), starStates.map((status, index) => /*#__PURE__*/React.createElement(Character, {
|
|
127
134
|
role: "radio",
|
|
128
135
|
"aria-posinset": index + 1,
|
|
129
136
|
"aria-setsize": max,
|
|
130
137
|
"aria-checked": value === index + 1,
|
|
131
138
|
key: index,
|
|
132
|
-
status:
|
|
139
|
+
status: status,
|
|
133
140
|
disabled: disabled || readOnly,
|
|
134
141
|
vertical: vertical,
|
|
135
142
|
onClick: (key, event) => handleClick(index, key, event),
|
|
136
143
|
onKeyDown: event => handleKeyDown(index, event),
|
|
137
|
-
onMouseMove: (key, event) =>
|
|
144
|
+
onMouseMove: (key, event) => handleChangeStarStates(index, key, event)
|
|
138
145
|
}, renderCharacter ? renderCharacter(hoverValue, index) : character)));
|
|
139
146
|
});
|
|
140
147
|
Rate.displayName = 'Rate';
|
|
@@ -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,43 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import { transformValueToStarStatus, transformStarStatusToValue } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Custom hook to manage rating star states for Rate component
|
|
6
|
+
*/
|
|
7
|
+
export const useRatingStates = _ref => {
|
|
8
|
+
let {
|
|
9
|
+
value,
|
|
10
|
+
max,
|
|
11
|
+
allowHalf,
|
|
12
|
+
valueProp
|
|
13
|
+
} = _ref;
|
|
14
|
+
// Create a function to generate star states based on value
|
|
15
|
+
const getStarStates = useCallback(v => {
|
|
16
|
+
return transformValueToStarStatus(typeof v !== 'undefined' ? v : value, max, allowHalf);
|
|
17
|
+
}, [allowHalf, max, value]);
|
|
18
|
+
|
|
19
|
+
// Initialize star states
|
|
20
|
+
const [starStates, setStarStates] = useState(getStarStates());
|
|
21
|
+
|
|
22
|
+
// Calculate hover value from star states
|
|
23
|
+
const hoverValue = transformStarStatusToValue(starStates);
|
|
24
|
+
|
|
25
|
+
// Function to reset star states to current value
|
|
26
|
+
const resetStarStates = useCallback(() => {
|
|
27
|
+
setStarStates(getStarStates());
|
|
28
|
+
}, [getStarStates]);
|
|
29
|
+
|
|
30
|
+
// Update star states when value prop changes
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (typeof valueProp !== 'undefined') {
|
|
33
|
+
setStarStates(getStarStates(valueProp));
|
|
34
|
+
}
|
|
35
|
+
}, [valueProp, getStarStates]);
|
|
36
|
+
return {
|
|
37
|
+
starStates,
|
|
38
|
+
setStarStates,
|
|
39
|
+
resetStarStates,
|
|
40
|
+
hoverValue,
|
|
41
|
+
getStarStates
|
|
42
|
+
};
|
|
43
|
+
};
|
package/esm/Rate/utils.d.ts
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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/esm/Rate/utils.js
CHANGED
|
@@ -1,19 +1,58 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Transforms a numeric value into a character map array.
|
|
4
|
+
*/
|
|
5
|
+
export const transformValueToStarStatus = (value, max, allowHalf) => {
|
|
3
6
|
const characterMap = [];
|
|
4
7
|
for (let i = 0; i < max; i++) {
|
|
5
|
-
if (i < value) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
if (i < value && value >= i + 1) {
|
|
9
|
+
// Fully filled star
|
|
10
|
+
characterMap.push(1);
|
|
11
|
+
} else if (i < value && value < i + 1) {
|
|
12
|
+
// Partially filled star
|
|
13
|
+
if (allowHalf) {
|
|
14
|
+
// Use 0.5 to represent partial fill when half ratings are allowed
|
|
15
|
+
characterMap.push(0.5);
|
|
8
16
|
} else {
|
|
9
|
-
|
|
17
|
+
// Extract the decimal part
|
|
18
|
+
characterMap.push(value - i);
|
|
10
19
|
}
|
|
11
20
|
} else {
|
|
21
|
+
// Empty star
|
|
12
22
|
characterMap.push(0);
|
|
13
23
|
}
|
|
14
24
|
}
|
|
15
25
|
return characterMap;
|
|
16
26
|
};
|
|
17
|
-
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Transforms a character map array into a numeric value.
|
|
30
|
+
*/
|
|
31
|
+
export const transformStarStatusToValue = characterMap => characterMap.reduce((total, currentValue) => {
|
|
18
32
|
return total + currentValue;
|
|
19
|
-
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Calculates the fractional part of a value as a percentage string.
|
|
37
|
+
*/
|
|
38
|
+
export const getFractionalValue = value => {
|
|
39
|
+
if (!value) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const integer = Math.floor(value);
|
|
43
|
+
const decimal = value - integer;
|
|
44
|
+
|
|
45
|
+
// Round to avoid floating-point precision issues
|
|
46
|
+
return decimal ? `${Math.round(decimal * 100)}%` : undefined;
|
|
47
|
+
};
|
|
48
|
+
const starStatusMap = {
|
|
49
|
+
[0]: 'empty',
|
|
50
|
+
[0.5]: 'half',
|
|
51
|
+
[1]: 'full'
|
|
52
|
+
};
|
|
53
|
+
export const getStarStatus = status => {
|
|
54
|
+
if (typeof status === 'number') {
|
|
55
|
+
return starStatusMap[status] || 'frac';
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
};
|
|
@@ -4,12 +4,10 @@ import React, { useState } from 'react';
|
|
|
4
4
|
import pick from 'lodash/pick';
|
|
5
5
|
import isNil from 'lodash/isNil';
|
|
6
6
|
import isFunction from 'lodash/isFunction';
|
|
7
|
-
import omit from 'lodash/omit';
|
|
8
7
|
import SearchBox from "../internals/SearchBox/index.js";
|
|
9
|
-
import Box from "../internals/Box/index.js";
|
|
10
8
|
import { useStyles, useControlled, useEventCallback } from "../internals/hooks/index.js";
|
|
11
9
|
import { forwardRef, createChainedFunction, mergeRefs, shallowEqual, getDataGroupBy } from "../internals/utils/index.js";
|
|
12
|
-
import { Listbox, ListItem, PickerToggle, PickerToggleTrigger, PickerPopup, useFocusItemValue,
|
|
10
|
+
import { Listbox, ListItem, PickerToggle, PickerToggleTrigger, PickerPopup, useFocusItemValue, useSearch, useToggleKeyDownEvent, usePickerRef, triggerPropKeys } from "../internals/Picker/index.js";
|
|
13
11
|
import { useCustom } from "../CustomProvider/index.js";
|
|
14
12
|
const emptyArray = [];
|
|
15
13
|
/**
|
|
@@ -21,45 +19,47 @@ const SelectPicker = forwardRef((props, ref) => {
|
|
|
21
19
|
propsWithDefaults
|
|
22
20
|
} = useCustom('SelectPicker', props);
|
|
23
21
|
const {
|
|
24
|
-
as,
|
|
25
22
|
appearance = 'default',
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
as,
|
|
24
|
+
block,
|
|
25
|
+
className,
|
|
26
|
+
cleanable = true,
|
|
30
27
|
classPrefix = 'picker',
|
|
31
|
-
|
|
28
|
+
data = emptyArray,
|
|
32
29
|
defaultValue,
|
|
33
30
|
disabled,
|
|
34
|
-
|
|
31
|
+
disabledItemValues = emptyArray,
|
|
32
|
+
groupBy,
|
|
33
|
+
id,
|
|
34
|
+
labelKey = 'label',
|
|
35
|
+
listProps,
|
|
36
|
+
listboxMaxHeight = 320,
|
|
37
|
+
locale,
|
|
38
|
+
placeholder,
|
|
35
39
|
placement = 'bottomStart',
|
|
36
|
-
popupClassName,
|
|
37
40
|
popupAutoWidth = true,
|
|
41
|
+
popupClassName,
|
|
38
42
|
popupStyle,
|
|
39
|
-
listboxMaxHeight = 320,
|
|
40
|
-
groupBy,
|
|
41
|
-
locale,
|
|
42
|
-
toggleAs,
|
|
43
|
-
style,
|
|
44
43
|
searchable = true,
|
|
45
|
-
|
|
44
|
+
style,
|
|
45
|
+
toggleAs,
|
|
46
|
+
value: valueProp,
|
|
47
|
+
valueKey = 'value',
|
|
46
48
|
virtualized,
|
|
47
|
-
listProps,
|
|
48
|
-
id,
|
|
49
|
-
onGroupTitleClick,
|
|
50
|
-
searchBy,
|
|
51
|
-
onEntered,
|
|
52
|
-
onExited,
|
|
53
|
-
onClean,
|
|
54
|
-
onChange,
|
|
55
|
-
onSelect,
|
|
56
|
-
onSearch,
|
|
57
49
|
sort,
|
|
50
|
+
searchBy,
|
|
58
51
|
renderValue,
|
|
59
52
|
renderListbox,
|
|
60
53
|
renderOptionGroup,
|
|
61
54
|
renderOption,
|
|
62
55
|
renderExtraFooter,
|
|
56
|
+
onGroupTitleClick,
|
|
57
|
+
onEnter,
|
|
58
|
+
onExit,
|
|
59
|
+
onClean,
|
|
60
|
+
onChange,
|
|
61
|
+
onSelect,
|
|
62
|
+
onSearch,
|
|
63
63
|
...rest
|
|
64
64
|
} = propsWithDefaults;
|
|
65
65
|
const {
|
|
@@ -153,13 +153,13 @@ const SelectPicker = forwardRef((props, ref) => {
|
|
|
153
153
|
onMenuPressEnter: handleMenuPressEnter,
|
|
154
154
|
...rest
|
|
155
155
|
});
|
|
156
|
-
const
|
|
156
|
+
const handleExit = useEventCallback(() => {
|
|
157
157
|
resetSearch();
|
|
158
158
|
setActive(false);
|
|
159
159
|
onSearch === null || onSearch === void 0 || onSearch('');
|
|
160
160
|
setFocusItemValue(null);
|
|
161
161
|
});
|
|
162
|
-
const
|
|
162
|
+
const handleEnter = useEventCallback(() => {
|
|
163
163
|
setActive(true);
|
|
164
164
|
setFocusItemValue(value);
|
|
165
165
|
});
|
|
@@ -237,28 +237,27 @@ const SelectPicker = forwardRef((props, ref) => {
|
|
|
237
237
|
inputRef: searchInput
|
|
238
238
|
}), renderListbox ? renderListbox(listbox) : listbox, renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
|
|
239
239
|
};
|
|
240
|
-
const
|
|
241
|
-
...props,
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
name: 'select',
|
|
246
|
-
cleanable
|
|
247
|
-
});
|
|
240
|
+
const triggerProps = {
|
|
241
|
+
...pick(props, triggerPropKeys),
|
|
242
|
+
onEnter: createChainedFunction(handleEnter, onEnter),
|
|
243
|
+
onExit: createChainedFunction(handleExit, onExit)
|
|
244
|
+
};
|
|
248
245
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
246
|
+
as: as,
|
|
249
247
|
id: id,
|
|
250
|
-
|
|
248
|
+
name: "select",
|
|
249
|
+
block: block,
|
|
250
|
+
disabled: disabled,
|
|
251
|
+
appearance: appearance,
|
|
252
|
+
triggerProps: triggerProps,
|
|
251
253
|
ref: trigger,
|
|
252
254
|
placement: placement,
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
speaker: renderPopup
|
|
256
|
-
}, /*#__PURE__*/React.createElement(Box, {
|
|
257
|
-
as: as,
|
|
258
|
-
className: classes,
|
|
255
|
+
speaker: renderPopup,
|
|
256
|
+
rootRef: root,
|
|
259
257
|
style: style,
|
|
260
|
-
|
|
261
|
-
|
|
258
|
+
classPrefix: classPrefix,
|
|
259
|
+
className: className
|
|
260
|
+
}, /*#__PURE__*/React.createElement(PickerToggle, _extends({
|
|
262
261
|
ref: target,
|
|
263
262
|
appearance: appearance,
|
|
264
263
|
onClean: createChainedFunction(handleClean, onClean),
|
|
@@ -271,7 +270,7 @@ const SelectPicker = forwardRef((props, ref) => {
|
|
|
271
270
|
focusItemValue: focusItemValue,
|
|
272
271
|
active: active,
|
|
273
272
|
placement: placement
|
|
274
|
-
}), selectedElement || (locale === null || locale === void 0 ? void 0 : locale.placeholder)))
|
|
273
|
+
}, rest), selectedElement || (locale === null || locale === void 0 ? void 0 : locale.placeholder)));
|
|
275
274
|
});
|
|
276
275
|
SelectPicker.displayName = 'SelectPicker';
|
|
277
276
|
export default SelectPicker;
|