rsuite 5.40.0 → 5.41.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/Navbar/styles/index.less +1 -1
- package/SelectPicker/styles/index.less +4 -8
- package/cjs/@types/common.js +1 -0
- package/cjs/@types/utils.js +12 -2
- package/cjs/Affix/Affix.js +39 -59
- package/cjs/Affix/index.js +1 -3
- package/cjs/Animation/Bounce.js +4 -13
- package/cjs/Animation/Collapse.js +19 -40
- package/cjs/Animation/Fade.js +6 -15
- package/cjs/Animation/Slide.js +6 -15
- package/cjs/Animation/Transition.js +16 -83
- package/cjs/Animation/index.js +1 -7
- package/cjs/Animation/utils.js +1 -6
- package/cjs/AutoComplete/AutoComplete.js +55 -90
- package/cjs/AutoComplete/index.js +1 -3
- package/cjs/AutoComplete/utils.js +1 -9
- package/cjs/Avatar/Avatar.js +18 -32
- package/cjs/Avatar/index.js +1 -3
- package/cjs/AvatarGroup/AvatarGroup.js +13 -27
- package/cjs/AvatarGroup/index.js +1 -3
- package/cjs/Badge/Badge.js +14 -27
- package/cjs/Badge/index.js +1 -3
- package/cjs/Breadcrumb/Breadcrumb.js +19 -41
- package/cjs/Breadcrumb/BreadcrumbItem.js +14 -26
- package/cjs/Breadcrumb/index.js +1 -3
- package/cjs/Button/Button.js +22 -40
- package/cjs/Button/index.js +1 -3
- package/cjs/ButtonGroup/ButtonGroup.js +15 -26
- package/cjs/ButtonGroup/ButtonGroupContext.js +1 -4
- package/cjs/ButtonGroup/index.js +1 -4
- package/cjs/ButtonToolbar/ButtonToolbar.js +10 -20
- package/cjs/ButtonToolbar/index.js +1 -3
- package/cjs/Calendar/Calendar.js +24 -43
- package/cjs/Calendar/CalendarBody.js +14 -28
- package/cjs/Calendar/CalendarContainer.js +46 -69
- package/cjs/Calendar/CalendarContext.js +1 -6
- package/cjs/Calendar/CalendarHeader.js +32 -59
- package/cjs/Calendar/MonthDropdown.js +22 -45
- package/cjs/Calendar/MonthDropdownItem.js +16 -31
- package/cjs/Calendar/Table.js +10 -21
- package/cjs/Calendar/TableHeaderRow.js +11 -25
- package/cjs/Calendar/TableRow.js +35 -66
- package/cjs/Calendar/TimeDropdown.js +24 -64
- package/cjs/Calendar/index.js +1 -8
- package/cjs/Calendar/types.js +1 -0
- package/cjs/Calendar/useCalendarDate.js +3 -13
- package/cjs/Calendar/useCalendarState.js +3 -8
- package/cjs/Carousel/Carousel.js +40 -65
- package/cjs/Carousel/index.js +1 -3
- package/cjs/Cascader/Cascader.js +126 -197
- package/cjs/Cascader/DropdownMenu.js +33 -65
- package/cjs/Cascader/index.js +1 -3
- package/cjs/Cascader/utils.js +13 -24
- package/cjs/CheckPicker/CheckPicker.js +105 -156
- package/cjs/CheckPicker/index.js +1 -3
- package/cjs/CheckTree/index.js +1 -8
- package/cjs/CheckTreePicker/CheckTreeNode.js +28 -54
- package/cjs/CheckTreePicker/CheckTreePicker.js +165 -247
- package/cjs/CheckTreePicker/index.js +1 -3
- package/cjs/CheckTreePicker/utils.js +12 -52
- package/cjs/Checkbox/Checkbox.js +48 -77
- package/cjs/Checkbox/index.js +1 -3
- package/cjs/CheckboxGroup/CheckboxGroup.js +20 -38
- package/cjs/CheckboxGroup/CheckboxGroupContext.js +1 -4
- package/cjs/CheckboxGroup/index.js +1 -4
- package/cjs/CloseButton/CloseButton.js +10 -20
- package/cjs/CloseButton/index.js +1 -3
- package/cjs/Col/Col.js +10 -23
- package/cjs/Col/index.js +1 -3
- package/cjs/Container/Container.js +11 -24
- package/cjs/Container/index.js +1 -3
- package/cjs/Content/Content.js +1 -3
- package/cjs/Content/index.js +1 -3
- package/cjs/CustomProvider/CustomProvider.js +13 -28
- package/cjs/CustomProvider/FormattedDate.js +3 -9
- package/cjs/CustomProvider/index.js +1 -6
- package/cjs/DOMHelper/index.js +1 -7
- package/cjs/DOMHelper/isElement.js +1 -2
- package/cjs/DatePicker/DatePicker.js +108 -161
- package/cjs/DatePicker/PredefinedRanges.js +12 -29
- package/cjs/DatePicker/Toolbar.js +20 -36
- package/cjs/DatePicker/index.js +1 -3
- package/cjs/DatePicker/types.js +1 -0
- package/cjs/DatePicker/utils.js +5 -13
- package/cjs/DateRangePicker/Calendar.js +18 -28
- package/cjs/DateRangePicker/DateRangePicker.js +128 -207
- package/cjs/DateRangePicker/DateRangePickerContext.js +1 -6
- package/cjs/DateRangePicker/disabledDateUtils.js +9 -32
- package/cjs/DateRangePicker/index.js +1 -3
- package/cjs/DateRangePicker/types.js +1 -0
- package/cjs/DateRangePicker/utils.js +7 -20
- package/cjs/Disclosure/Disclosure.js +14 -34
- package/cjs/Disclosure/DisclosureButton.js +4 -12
- package/cjs/Disclosure/DisclosureContent.js +1 -5
- package/cjs/Disclosure/DisclosureContext.js +1 -6
- package/cjs/Disclosure/index.js +1 -3
- package/cjs/Disclosure/useDisclosureContext.js +1 -6
- package/cjs/Divider/Divider.js +11 -20
- package/cjs/Divider/index.js +1 -3
- package/cjs/Drawer/Drawer.js +10 -27
- package/cjs/Drawer/index.js +1 -3
- package/cjs/Dropdown/Dropdown.js +35 -68
- package/cjs/Dropdown/DropdownContext.js +1 -4
- package/cjs/Dropdown/DropdownItem.js +22 -49
- package/cjs/Dropdown/DropdownMenu.js +36 -63
- package/cjs/Dropdown/DropdownSeparator.js +8 -17
- package/cjs/Dropdown/DropdownState.js +1 -10
- package/cjs/Dropdown/DropdownToggle.js +17 -29
- package/cjs/Dropdown/index.js +1 -3
- package/cjs/Dropdown/useRenderDropdownItem.js +1 -5
- package/cjs/FlexboxGrid/FlexboxGrid.js +12 -22
- package/cjs/FlexboxGrid/FlexboxGridItem.js +12 -22
- package/cjs/FlexboxGrid/index.js +1 -3
- package/cjs/Footer/Footer.js +1 -3
- package/cjs/Footer/index.js +1 -3
- package/cjs/Form/Form.js +36 -76
- package/cjs/Form/FormContext.js +1 -8
- package/cjs/Form/index.js +1 -4
- package/cjs/Form/useFormClassNames.js +11 -14
- package/cjs/Form/useSchemaModel.js +2 -6
- package/cjs/FormControl/FormControl.js +50 -82
- package/cjs/FormControl/index.js +1 -3
- package/cjs/FormControl/useRegisterModel.js +1 -3
- package/cjs/FormControlLabel/FormControlLabel.js +10 -22
- package/cjs/FormControlLabel/index.js +1 -3
- package/cjs/FormErrorMessage/FormErrorMessage.js +12 -27
- package/cjs/FormErrorMessage/index.js +1 -3
- package/cjs/FormGroup/FormGroup.js +9 -21
- package/cjs/FormGroup/index.js +1 -3
- package/cjs/FormHelpText/FormHelpText.js +11 -28
- package/cjs/FormHelpText/index.js +1 -3
- package/cjs/Grid/Grid.js +10 -19
- package/cjs/Grid/index.js +1 -3
- package/cjs/Header/Header.js +1 -3
- package/cjs/Header/index.js +1 -3
- package/cjs/IconButton/IconButton.js +11 -21
- package/cjs/IconButton/index.js +1 -3
- package/cjs/Input/Input.js +26 -43
- package/cjs/Input/index.js +1 -3
- package/cjs/InputGroup/InputGroup.js +23 -39
- package/cjs/InputGroup/InputGroupAddon.js +9 -18
- package/cjs/InputGroup/InputGroupButton.js +7 -17
- package/cjs/InputGroup/index.js +1 -3
- package/cjs/InputNumber/InputNumber.js +42 -88
- package/cjs/InputNumber/index.js +1 -3
- package/cjs/InputPicker/InputAutosize.js +17 -42
- package/cjs/InputPicker/InputPicker.js +149 -250
- package/cjs/InputPicker/InputSearch.js +15 -28
- package/cjs/InputPicker/index.js +1 -3
- package/cjs/List/List.js +37 -51
- package/cjs/List/ListContext.js +1 -5
- package/cjs/List/ListItem.js +26 -40
- package/cjs/List/helper/AutoScroller.js +11 -21
- package/cjs/List/helper/useManager.js +1 -8
- package/cjs/List/helper/useSortHelper.js +58 -82
- package/cjs/List/helper/utils.js +6 -19
- package/cjs/List/index.js +1 -3
- package/cjs/Loader/Loader.js +17 -26
- package/cjs/Loader/index.js +1 -3
- package/cjs/MaskedInput/MaskedInput.js +2 -8
- package/cjs/MaskedInput/TextMask.js +14 -23
- package/cjs/MaskedInput/adjustCaretPosition.js +99 -70
- package/cjs/MaskedInput/conformToMask.js +79 -73
- package/cjs/MaskedInput/createTextMaskInputElement.js +65 -71
- package/cjs/MaskedInput/index.js +1 -3
- package/cjs/MaskedInput/types.js +1 -0
- package/cjs/MaskedInput/utilities.js +1 -8
- package/cjs/Menu/Menu.js +35 -79
- package/cjs/Menu/MenuContext.js +1 -8
- package/cjs/Menu/MenuItem.js +15 -26
- package/cjs/Menu/Menubar.js +13 -32
- package/cjs/Menu/index.js +1 -3
- package/cjs/Menu/useMenu.js +5 -34
- package/cjs/Message/Message.js +23 -45
- package/cjs/Message/index.js +1 -3
- package/cjs/Modal/Modal.js +70 -91
- package/cjs/Modal/ModalBody.js +11 -25
- package/cjs/Modal/ModalContext.js +1 -4
- package/cjs/Modal/ModalDialog.js +14 -26
- package/cjs/Modal/ModalFooter.js +1 -3
- package/cjs/Modal/ModalHeader.js +14 -29
- package/cjs/Modal/ModalTitle.js +9 -20
- package/cjs/Modal/index.js +1 -3
- package/cjs/Modal/utils.js +8 -19
- package/cjs/MultiCascader/DropdownMenu.js +38 -64
- package/cjs/MultiCascader/MultiCascader.js +129 -192
- package/cjs/MultiCascader/index.js +1 -3
- package/cjs/MultiCascader/utils.js +44 -106
- package/cjs/Nav/Nav.js +27 -69
- package/cjs/Nav/NavContext.js +1 -4
- package/cjs/Nav/NavDropdown.js +28 -60
- package/cjs/Nav/NavDropdownItem.js +20 -42
- package/cjs/Nav/NavDropdownMenu.js +26 -54
- package/cjs/Nav/NavDropdownToggle.js +12 -26
- package/cjs/Nav/NavItem.js +20 -39
- package/cjs/Nav/NavMenu.js +2 -28
- package/cjs/Nav/index.js +1 -3
- package/cjs/Navbar/Navbar.js +10 -23
- package/cjs/Navbar/NavbarBody.js +1 -6
- package/cjs/Navbar/NavbarBrand.js +1 -3
- package/cjs/Navbar/NavbarDropdown.js +25 -49
- package/cjs/Navbar/NavbarDropdownItem.js +18 -44
- package/cjs/Navbar/NavbarDropdownMenu.js +22 -51
- package/cjs/Navbar/NavbarDropdownToggle.js +12 -25
- package/cjs/Navbar/NavbarHeader.js +1 -6
- package/cjs/Navbar/NavbarItem.js +19 -35
- package/cjs/Navbar/index.js +1 -3
- package/cjs/Notification/Notification.js +20 -43
- package/cjs/Notification/index.js +1 -3
- package/cjs/Overlay/Modal.js +40 -79
- package/cjs/Overlay/ModalManager.js +1 -26
- package/cjs/Overlay/Overlay.js +28 -50
- package/cjs/Overlay/OverlayContext.js +1 -4
- package/cjs/Overlay/OverlayTrigger.js +67 -116
- package/cjs/Overlay/Position.js +25 -64
- package/cjs/Overlay/index.js +1 -3
- package/cjs/Overlay/positionUtils.js +25 -86
- package/cjs/Pagination/Pagination.js +30 -70
- package/cjs/Pagination/PaginationButton.js +15 -29
- package/cjs/Pagination/PaginationGroup.js +38 -63
- package/cjs/Pagination/index.js +1 -3
- package/cjs/Panel/Panel.js +37 -61
- package/cjs/Panel/index.js +1 -3
- package/cjs/PanelGroup/PanelGroup.js +16 -29
- package/cjs/PanelGroup/index.js +1 -3
- package/cjs/Picker/DropdownMenu.js +50 -93
- package/cjs/Picker/DropdownMenuCheckItem.js +22 -33
- package/cjs/Picker/DropdownMenuGroup.js +10 -22
- package/cjs/Picker/DropdownMenuItem.js +15 -26
- package/cjs/Picker/PickerOverlay.js +12 -28
- package/cjs/Picker/PickerToggle.js +57 -89
- package/cjs/Picker/PickerToggleTrigger.js +8 -19
- package/cjs/Picker/SearchBar.js +14 -26
- package/cjs/Picker/SelectedElement.js +9 -17
- package/cjs/Picker/ToggleButton.js +1 -6
- package/cjs/Picker/index.js +1 -24
- package/cjs/Picker/propTypes.js +1 -7
- package/cjs/Picker/types.js +1 -0
- package/cjs/Picker/utils.js +94 -200
- package/cjs/Placeholder/Placeholder.js +1 -5
- package/cjs/Placeholder/PlaceholderGraph.js +13 -22
- package/cjs/Placeholder/PlaceholderGrid.js +18 -34
- package/cjs/Placeholder/PlaceholderParagraph.js +17 -29
- package/cjs/Placeholder/index.js +1 -3
- package/cjs/Plaintext/Plaintext.js +14 -23
- package/cjs/Plaintext/index.js +1 -3
- package/cjs/Popover/Popover.js +16 -27
- package/cjs/Popover/index.js +1 -3
- package/cjs/Progress/Progress.js +1 -4
- package/cjs/Progress/ProgressCircle.js +30 -47
- package/cjs/Progress/ProgressLine.js +19 -29
- package/cjs/Progress/index.js +1 -3
- package/cjs/Radio/Radio.js +42 -62
- package/cjs/Radio/index.js +1 -3
- package/cjs/RadioGroup/RadioGroup.js +22 -37
- package/cjs/RadioGroup/index.js +1 -3
- package/cjs/RadioTile/RadioTile.js +30 -47
- package/cjs/RadioTile/index.js +1 -3
- package/cjs/RadioTileGroup/RadioTileGroup.js +17 -32
- package/cjs/RadioTileGroup/index.js +1 -3
- package/cjs/RangeSlider/RangeSlider.js +63 -104
- package/cjs/RangeSlider/index.js +1 -3
- package/cjs/Rate/Character.js +16 -31
- package/cjs/Rate/Rate.js +35 -62
- package/cjs/Rate/index.js +1 -3
- package/cjs/Rate/utils.js +1 -6
- package/cjs/Ripple/Ripple.js +16 -40
- package/cjs/Ripple/index.js +1 -3
- package/cjs/Row/Row.js +11 -22
- package/cjs/Row/index.js +1 -3
- package/cjs/SafeAnchor/SafeAnchor.js +8 -19
- package/cjs/SafeAnchor/index.js +1 -3
- package/cjs/Schema/Schema.js +1 -2
- package/cjs/Schema/index.js +1 -3
- package/cjs/SelectPicker/SelectPicker.js +136 -170
- package/cjs/SelectPicker/index.js +1 -3
- package/cjs/Sidebar/Sidebar.js +13 -26
- package/cjs/Sidebar/index.js +1 -3
- package/cjs/Sidenav/ExpandedSidenavDropdown.js +32 -54
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +19 -41
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +22 -46
- package/cjs/Sidenav/Node.js +1 -12
- package/cjs/Sidenav/Sidenav.js +22 -45
- package/cjs/Sidenav/SidenavBody.js +1 -3
- package/cjs/Sidenav/SidenavDropdown.js +39 -70
- package/cjs/Sidenav/SidenavDropdownCollapse.js +9 -22
- package/cjs/Sidenav/SidenavDropdownItem.js +19 -45
- package/cjs/Sidenav/SidenavDropdownMenu.js +26 -54
- package/cjs/Sidenav/SidenavDropdownToggle.js +12 -25
- package/cjs/Sidenav/SidenavHeader.js +1 -3
- package/cjs/Sidenav/SidenavItem.js +27 -55
- package/cjs/Sidenav/SidenavToggle.js +11 -31
- package/cjs/Sidenav/index.js +1 -3
- package/cjs/Slider/Graduated.js +14 -29
- package/cjs/Slider/Handle.js +27 -52
- package/cjs/Slider/Input.js +2 -8
- package/cjs/Slider/Mark.js +11 -20
- package/cjs/Slider/ProgressBar.js +14 -23
- package/cjs/Slider/Slider.js +51 -84
- package/cjs/Slider/index.js +1 -3
- package/cjs/Slider/utils.js +1 -6
- package/cjs/Stack/Stack.js +22 -35
- package/cjs/Stack/StackItem.js +11 -17
- package/cjs/Stack/index.js +1 -3
- package/cjs/Steps/StepItem.js +16 -32
- package/cjs/Steps/Steps.js +18 -32
- package/cjs/Steps/index.js +1 -3
- package/cjs/Table/Table.js +6 -16
- package/cjs/Table/index.js +1 -3
- package/cjs/Tag/Tag.js +16 -28
- package/cjs/Tag/index.js +1 -3
- package/cjs/TagGroup/TagGroup.js +1 -3
- package/cjs/TagGroup/index.js +1 -3
- package/cjs/TagInput/index.js +7 -14
- package/cjs/TagPicker/index.js +5 -12
- package/cjs/Timeline/Timeline.js +14 -29
- package/cjs/Timeline/TimelineItem.js +14 -23
- package/cjs/Timeline/index.js +1 -3
- package/cjs/Toggle/Toggle.js +26 -45
- package/cjs/Toggle/index.js +1 -3
- package/cjs/Tooltip/Tooltip.js +13 -22
- package/cjs/Tooltip/index.js +1 -3
- package/cjs/Tree/Tree.js +1 -10
- package/cjs/Tree/TreeContext.js +1 -4
- package/cjs/Tree/index.js +1 -3
- package/cjs/TreePicker/TreeNode.js +37 -60
- package/cjs/TreePicker/TreePicker.js +155 -231
- package/cjs/TreePicker/index.js +1 -3
- package/cjs/Uploader/UploadFileItem.js +37 -82
- package/cjs/Uploader/UploadTrigger.js +24 -46
- package/cjs/Uploader/Uploader.js +89 -141
- package/cjs/Uploader/index.js +1 -3
- package/cjs/Whisper/Whisper.js +8 -20
- package/cjs/Whisper/index.js +1 -3
- package/cjs/Windowing/AutoSizer.js +13 -33
- package/cjs/Windowing/List.d.ts +2 -2
- package/cjs/Windowing/List.js +6 -22
- package/cjs/Windowing/index.js +1 -7
- package/cjs/index.js +1 -164
- package/cjs/locales/ar_EG.js +1 -4
- package/cjs/locales/da_DK.js +1 -5
- package/cjs/locales/de_DE.js +1 -5
- package/cjs/locales/default.js +1 -5
- package/cjs/locales/en_GB.js +1 -3
- package/cjs/locales/en_US.js +1 -4
- package/cjs/locales/es_AR.js +1 -5
- package/cjs/locales/es_ES.js +1 -5
- package/cjs/locales/fa_IR.js +1 -4
- package/cjs/locales/fi_FI.js +1 -5
- package/cjs/locales/fr_FR.js +1 -4
- package/cjs/locales/hu_HU.js +1 -5
- package/cjs/locales/index.js +1 -47
- package/cjs/locales/it_IT.js +1 -5
- package/cjs/locales/ja_JP.js +1 -5
- package/cjs/locales/kk_KZ.js +1 -4
- package/cjs/locales/ko_KR.js +1 -5
- package/cjs/locales/ne_NP.js +1 -5
- package/cjs/locales/nl_NL.js +1 -4
- package/cjs/locales/pt_BR.js +1 -4
- package/cjs/locales/ru_RU.js +1 -4
- package/cjs/locales/sv_SE.js +1 -5
- package/cjs/locales/tr_TR.js +1 -4
- package/cjs/locales/zh_CN.js +1 -4
- package/cjs/locales/zh_TW.js +1 -4
- package/cjs/toaster/ToastContainer.js +29 -52
- package/cjs/toaster/ToastContext.js +1 -4
- package/cjs/toaster/index.js +1 -4
- package/cjs/toaster/toaster.js +4 -27
- package/cjs/toaster/useToaster.js +2 -8
- package/cjs/utils/BrowserDetection.js +7 -24
- package/cjs/utils/ReactChildren.js +2 -19
- package/cjs/utils/ajaxUpload.js +15 -33
- package/cjs/utils/appendTooltip.js +3 -9
- package/cjs/utils/attachParent.js +1 -1
- package/cjs/utils/clone.js +1 -2
- package/cjs/utils/composeFunctions.js +1 -3
- package/cjs/utils/constants.js +3 -8
- package/cjs/utils/createChainedFunction.js +2 -6
- package/cjs/utils/createComponent.js +12 -24
- package/cjs/utils/dateUtils.js +7 -121
- package/cjs/utils/deprecateComponent.js +1 -8
- package/cjs/utils/deprecatePropType.js +2 -9
- package/cjs/utils/dom.js +3 -2
- package/cjs/utils/events.js +2 -3
- package/cjs/utils/getDOMNode.js +16 -9
- package/cjs/utils/getDataGroupBy.d.ts +0 -23
- package/cjs/utils/getDataGroupBy.js +5 -44
- package/cjs/utils/getSafeRegExpString.js +1 -1
- package/cjs/utils/guid.js +1 -1
- package/cjs/utils/htmlPropsUtils.js +23 -20
- package/cjs/utils/index.js +1 -86
- package/cjs/utils/isOneOf.js +1 -2
- package/cjs/utils/mergeRefs.js +1 -2
- package/cjs/utils/placementPolyfill.js +2 -5
- package/cjs/utils/prefix.js +4 -15
- package/cjs/utils/previewFile.js +1 -6
- package/cjs/utils/propTypeChecker.js +1 -8
- package/cjs/utils/reactToString.js +1 -5
- package/cjs/utils/render.js +3 -10
- package/cjs/utils/scrollTopAnimation.js +1 -9
- package/cjs/utils/shallowEqual.js +8 -14
- package/cjs/utils/shallowEqualArray.js +1 -7
- package/cjs/utils/statusIcons.js +1 -9
- package/cjs/utils/stringToObject.js +1 -7
- package/cjs/utils/tplTransform.js +2 -7
- package/cjs/utils/treeUtils.js +112 -327
- package/cjs/utils/useClassNames.js +9 -15
- package/cjs/utils/useClickOutside.js +4 -8
- package/cjs/utils/useControlled.js +11 -7
- package/cjs/utils/useCustom.js +12 -25
- package/cjs/utils/useElementResize.js +1 -6
- package/cjs/utils/useEnsuredRef.js +1 -4
- package/cjs/utils/useEventCallback.js +1 -4
- package/cjs/utils/useEventListener.js +1 -5
- package/cjs/utils/useFocus.js +5 -6
- package/cjs/utils/useInternalId.js +1 -6
- package/cjs/utils/useIsMounted.js +1 -3
- package/cjs/utils/useMap.js +5 -7
- package/cjs/utils/useMount.js +1 -4
- package/cjs/utils/usePortal.js +7 -20
- package/cjs/utils/useRootClose.js +9 -19
- package/cjs/utils/useTimeout.js +3 -8
- package/cjs/utils/useToggleCaret.js +2 -14
- package/cjs/utils/useUniqueId.js +2 -9
- package/cjs/utils/useUpdateEffect.js +3 -5
- package/cjs/utils/useUpdatedRef.js +1 -2
- package/cjs/utils/useWillUnmount.js +3 -5
- package/cjs/utils/warnOnce.js +2 -2
- package/dist/rsuite-no-reset-rtl.css +23 -25
- 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 +23 -25
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +23 -25
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +23 -25
- package/dist/rsuite.js +394 -427
- 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/@types/common.js +1 -0
- package/esm/@types/utils.js +14 -2
- package/esm/Affix/Affix.js +39 -50
- package/esm/Affix/index.js +1 -0
- package/esm/Animation/Bounce.js +4 -5
- package/esm/Animation/Collapse.js +19 -26
- package/esm/Animation/Fade.js +6 -7
- package/esm/Animation/Slide.js +6 -7
- package/esm/Animation/Transition.js +16 -69
- package/esm/Animation/index.js +1 -0
- package/esm/Animation/utils.js +1 -2
- package/esm/AutoComplete/AutoComplete.js +55 -75
- package/esm/AutoComplete/index.js +1 -0
- package/esm/AutoComplete/utils.js +1 -4
- package/esm/Avatar/Avatar.js +18 -22
- package/esm/Avatar/index.js +1 -0
- package/esm/AvatarGroup/AvatarGroup.js +13 -16
- package/esm/AvatarGroup/index.js +1 -0
- package/esm/Badge/Badge.js +14 -19
- package/esm/Badge/index.js +1 -0
- package/esm/Breadcrumb/Breadcrumb.js +19 -30
- package/esm/Breadcrumb/BreadcrumbItem.js +14 -17
- package/esm/Breadcrumb/index.js +1 -0
- package/esm/Button/Button.js +22 -28
- package/esm/Button/index.js +1 -0
- package/esm/ButtonGroup/ButtonGroup.js +15 -16
- package/esm/ButtonGroup/ButtonGroupContext.js +1 -0
- package/esm/ButtonGroup/index.js +1 -0
- package/esm/ButtonToolbar/ButtonToolbar.js +10 -12
- package/esm/ButtonToolbar/index.js +1 -0
- package/esm/Calendar/Calendar.js +24 -29
- package/esm/Calendar/CalendarBody.js +14 -18
- package/esm/Calendar/CalendarContainer.js +46 -51
- package/esm/Calendar/CalendarContext.js +1 -0
- package/esm/Calendar/CalendarHeader.js +32 -41
- package/esm/Calendar/MonthDropdown.js +22 -27
- package/esm/Calendar/MonthDropdownItem.js +16 -20
- package/esm/Calendar/Table.js +10 -11
- package/esm/Calendar/TableHeaderRow.js +11 -15
- package/esm/Calendar/TableRow.js +36 -50
- package/esm/Calendar/TimeDropdown.js +24 -48
- package/esm/Calendar/index.js +1 -0
- package/esm/Calendar/types.js +1 -0
- package/esm/Calendar/useCalendarDate.js +3 -11
- package/esm/Calendar/useCalendarState.js +3 -6
- package/esm/Carousel/Carousel.js +40 -52
- package/esm/Carousel/index.js +1 -0
- package/esm/Cascader/Cascader.js +126 -178
- package/esm/Cascader/DropdownMenu.js +33 -45
- package/esm/Cascader/index.js +1 -0
- package/esm/Cascader/utils.js +13 -22
- package/esm/CheckPicker/CheckPicker.js +105 -139
- package/esm/CheckPicker/index.js +1 -0
- package/esm/CheckTree/index.js +1 -0
- package/esm/CheckTreePicker/CheckTreeNode.js +28 -44
- package/esm/CheckTreePicker/CheckTreePicker.js +165 -232
- package/esm/CheckTreePicker/index.js +1 -0
- package/esm/CheckTreePicker/utils.js +12 -35
- package/esm/Checkbox/Checkbox.js +48 -66
- package/esm/Checkbox/index.js +1 -0
- package/esm/CheckboxGroup/CheckboxGroup.js +20 -25
- package/esm/CheckboxGroup/CheckboxGroupContext.js +1 -0
- package/esm/CheckboxGroup/index.js +1 -0
- package/esm/CloseButton/CloseButton.js +10 -13
- package/esm/CloseButton/index.js +1 -0
- package/esm/Col/Col.js +10 -13
- package/esm/Col/index.js +1 -0
- package/esm/Container/Container.js +11 -13
- package/esm/Container/index.js +1 -0
- package/esm/Content/Content.js +1 -1
- package/esm/Content/index.js +1 -0
- package/esm/CustomProvider/CustomProvider.js +13 -16
- package/esm/CustomProvider/FormattedDate.js +3 -6
- package/esm/CustomProvider/index.js +1 -0
- package/esm/DOMHelper/index.js +1 -2
- package/esm/DOMHelper/isElement.js +1 -1
- package/esm/DatePicker/DatePicker.js +108 -131
- package/esm/DatePicker/PredefinedRanges.js +12 -19
- package/esm/DatePicker/Toolbar.js +20 -26
- package/esm/DatePicker/index.js +1 -0
- package/esm/DatePicker/types.js +1 -0
- package/esm/DatePicker/utils.js +5 -8
- package/esm/DateRangePicker/Calendar.js +18 -18
- package/esm/DateRangePicker/DateRangePicker.js +128 -184
- package/esm/DateRangePicker/DateRangePickerContext.js +1 -0
- package/esm/DateRangePicker/disabledDateUtils.js +9 -24
- package/esm/DateRangePicker/index.js +1 -0
- package/esm/DateRangePicker/types.js +1 -0
- package/esm/DateRangePicker/utils.js +7 -12
- package/esm/Disclosure/Disclosure.js +13 -24
- package/esm/Disclosure/DisclosureButton.js +4 -7
- package/esm/Disclosure/DisclosureContent.js +1 -2
- package/esm/Disclosure/DisclosureContext.js +1 -2
- package/esm/Disclosure/index.js +1 -0
- package/esm/Disclosure/useDisclosureContext.js +1 -2
- package/esm/Divider/Divider.js +11 -12
- package/esm/Divider/index.js +1 -0
- package/esm/Drawer/Drawer.js +10 -11
- package/esm/Drawer/index.js +1 -0
- package/esm/Dropdown/Dropdown.js +35 -50
- package/esm/Dropdown/DropdownContext.js +1 -0
- package/esm/Dropdown/DropdownItem.js +22 -31
- package/esm/Dropdown/DropdownMenu.js +36 -49
- package/esm/Dropdown/DropdownSeparator.js +8 -10
- package/esm/Dropdown/DropdownState.js +1 -7
- package/esm/Dropdown/DropdownToggle.js +17 -17
- package/esm/Dropdown/index.js +1 -0
- package/esm/Dropdown/useRenderDropdownItem.js +1 -2
- package/esm/FlexboxGrid/FlexboxGrid.js +12 -13
- package/esm/FlexboxGrid/FlexboxGridItem.js +12 -14
- package/esm/FlexboxGrid/index.js +1 -0
- package/esm/Footer/Footer.js +1 -0
- package/esm/Footer/index.js +1 -0
- package/esm/Form/Form.js +36 -63
- package/esm/Form/FormContext.js +1 -0
- package/esm/Form/index.js +1 -0
- package/esm/Form/useFormClassNames.js +11 -13
- package/esm/Form/useSchemaModel.js +2 -4
- package/esm/FormControl/FormControl.js +48 -68
- package/esm/FormControl/index.js +1 -0
- package/esm/FormControl/useRegisterModel.js +1 -2
- package/esm/FormControlLabel/FormControlLabel.js +10 -12
- package/esm/FormControlLabel/index.js +1 -0
- package/esm/FormErrorMessage/FormErrorMessage.js +12 -18
- package/esm/FormErrorMessage/index.js +1 -0
- package/esm/FormGroup/FormGroup.js +9 -10
- package/esm/FormGroup/index.js +1 -0
- package/esm/FormHelpText/FormHelpText.js +11 -15
- package/esm/FormHelpText/index.js +1 -0
- package/esm/Grid/Grid.js +10 -11
- package/esm/Grid/index.js +1 -0
- package/esm/Header/Header.js +1 -0
- package/esm/Header/index.js +1 -0
- package/esm/IconButton/IconButton.js +11 -12
- package/esm/IconButton/index.js +1 -0
- package/esm/Input/Input.js +26 -32
- package/esm/Input/index.js +1 -0
- package/esm/InputGroup/InputGroup.js +23 -26
- package/esm/InputGroup/InputGroupAddon.js +9 -10
- package/esm/InputGroup/InputGroupButton.js +7 -9
- package/esm/InputGroup/index.js +1 -0
- package/esm/InputNumber/InputNumber.js +42 -72
- package/esm/InputNumber/index.js +1 -0
- package/esm/InputPicker/InputAutosize.js +17 -37
- package/esm/InputPicker/InputPicker.js +149 -225
- package/esm/InputPicker/InputSearch.js +15 -20
- package/esm/InputPicker/index.js +1 -0
- package/esm/List/List.js +37 -39
- package/esm/List/ListContext.js +1 -0
- package/esm/List/ListItem.js +26 -30
- package/esm/List/helper/AutoScroller.js +11 -21
- package/esm/List/helper/useManager.js +1 -6
- package/esm/List/helper/useSortHelper.js +58 -74
- package/esm/List/helper/utils.js +6 -11
- package/esm/List/index.js +1 -0
- package/esm/Loader/Loader.js +17 -19
- package/esm/Loader/index.js +1 -0
- package/esm/MaskedInput/MaskedInput.js +2 -1
- package/esm/MaskedInput/TextMask.js +12 -14
- package/esm/MaskedInput/adjustCaretPosition.js +99 -69
- package/esm/MaskedInput/conformToMask.js +79 -70
- package/esm/MaskedInput/createTextMaskInputElement.js +65 -62
- package/esm/MaskedInput/index.js +1 -0
- package/esm/MaskedInput/types.js +1 -0
- package/esm/MaskedInput/utilities.js +1 -6
- package/esm/Menu/Menu.js +35 -66
- package/esm/Menu/MenuContext.js +1 -4
- package/esm/Menu/MenuItem.js +15 -19
- package/esm/Menu/Menubar.js +13 -23
- package/esm/Menu/index.js +1 -0
- package/esm/Menu/useMenu.js +4 -27
- package/esm/Message/Message.js +23 -34
- package/esm/Message/index.js +1 -0
- package/esm/Modal/Modal.js +70 -69
- package/esm/Modal/ModalBody.js +11 -13
- package/esm/Modal/ModalContext.js +1 -0
- package/esm/Modal/ModalDialog.js +14 -18
- package/esm/Modal/ModalFooter.js +1 -0
- package/esm/Modal/ModalHeader.js +14 -16
- package/esm/Modal/ModalTitle.js +9 -10
- package/esm/Modal/index.js +1 -0
- package/esm/Modal/utils.js +8 -12
- package/esm/MultiCascader/DropdownMenu.js +38 -48
- package/esm/MultiCascader/MultiCascader.js +129 -174
- package/esm/MultiCascader/index.js +1 -0
- package/esm/MultiCascader/utils.js +44 -87
- package/esm/Nav/Nav.js +27 -45
- package/esm/Nav/NavContext.js +1 -0
- package/esm/Nav/NavDropdown.js +28 -44
- package/esm/Nav/NavDropdownItem.js +20 -31
- package/esm/Nav/NavDropdownMenu.js +26 -42
- package/esm/Nav/NavDropdownToggle.js +12 -15
- package/esm/Nav/NavItem.js +20 -28
- package/esm/Nav/NavMenu.js +2 -13
- package/esm/Nav/index.js +1 -0
- package/esm/Navbar/Navbar.js +10 -11
- package/esm/Navbar/NavbarBody.js +1 -0
- package/esm/Navbar/NavbarBrand.js +1 -0
- package/esm/Navbar/NavbarDropdown.js +25 -33
- package/esm/Navbar/NavbarDropdownItem.js +18 -30
- package/esm/Navbar/NavbarDropdownMenu.js +22 -37
- package/esm/Navbar/NavbarDropdownToggle.js +12 -14
- package/esm/Navbar/NavbarHeader.js +1 -0
- package/esm/Navbar/NavbarItem.js +19 -23
- package/esm/Navbar/index.js +1 -0
- package/esm/Notification/Notification.js +20 -32
- package/esm/Notification/index.js +1 -0
- package/esm/Overlay/Modal.js +40 -64
- package/esm/Overlay/ModalManager.js +1 -19
- package/esm/Overlay/Overlay.js +28 -37
- package/esm/Overlay/OverlayContext.js +1 -0
- package/esm/Overlay/OverlayTrigger.js +68 -101
- package/esm/Overlay/Position.js +25 -47
- package/esm/Overlay/index.js +1 -0
- package/esm/Overlay/positionUtils.js +25 -73
- package/esm/Pagination/Pagination.js +30 -55
- package/esm/Pagination/PaginationButton.js +15 -19
- package/esm/Pagination/PaginationGroup.js +38 -49
- package/esm/Pagination/index.js +1 -0
- package/esm/Panel/Panel.js +37 -49
- package/esm/Panel/index.js +1 -0
- package/esm/PanelGroup/PanelGroup.js +16 -18
- package/esm/PanelGroup/index.js +1 -0
- package/esm/Picker/DropdownMenu.js +50 -72
- package/esm/Picker/DropdownMenuCheckItem.js +22 -24
- package/esm/Picker/DropdownMenuGroup.js +10 -13
- package/esm/Picker/DropdownMenuItem.js +15 -18
- package/esm/Picker/PickerOverlay.js +12 -17
- package/esm/Picker/PickerToggle.js +57 -71
- package/esm/Picker/PickerToggleTrigger.js +8 -10
- package/esm/Picker/SearchBar.js +14 -15
- package/esm/Picker/SelectedElement.js +9 -14
- package/esm/Picker/ToggleButton.js +1 -0
- package/esm/Picker/index.js +1 -0
- package/esm/Picker/propTypes.js +1 -1
- package/esm/Picker/types.js +1 -0
- package/esm/Picker/utils.js +94 -182
- package/esm/Placeholder/Placeholder.js +1 -0
- package/esm/Placeholder/PlaceholderGraph.js +13 -16
- package/esm/Placeholder/PlaceholderGrid.js +18 -25
- package/esm/Placeholder/PlaceholderParagraph.js +17 -20
- package/esm/Placeholder/index.js +1 -0
- package/esm/Plaintext/Plaintext.js +14 -17
- package/esm/Plaintext/index.js +1 -0
- package/esm/Popover/Popover.js +16 -21
- package/esm/Popover/index.js +1 -0
- package/esm/Progress/Progress.js +1 -0
- package/esm/Progress/ProgressCircle.js +30 -39
- package/esm/Progress/ProgressLine.js +19 -21
- package/esm/Progress/index.js +1 -0
- package/esm/Radio/Radio.js +42 -52
- package/esm/Radio/index.js +1 -0
- package/esm/RadioGroup/RadioGroup.js +22 -25
- package/esm/RadioGroup/index.js +1 -0
- package/esm/RadioTile/RadioTile.js +30 -34
- package/esm/RadioTile/index.js +1 -0
- package/esm/RadioTileGroup/RadioTileGroup.js +17 -20
- package/esm/RadioTileGroup/index.js +1 -0
- package/esm/RangeSlider/RangeSlider.js +63 -86
- package/esm/RangeSlider/index.js +1 -0
- package/esm/Rate/Character.js +16 -21
- package/esm/Rate/Rate.js +35 -48
- package/esm/Rate/index.js +1 -0
- package/esm/Rate/utils.js +1 -2
- package/esm/Ripple/Ripple.js +16 -30
- package/esm/Ripple/index.js +1 -0
- package/esm/Row/Row.js +11 -14
- package/esm/Row/index.js +1 -0
- package/esm/SafeAnchor/SafeAnchor.js +8 -13
- package/esm/SafeAnchor/index.js +1 -0
- package/esm/Schema/Schema.js +1 -0
- package/esm/Schema/index.js +1 -0
- package/esm/SelectPicker/SelectPicker.js +137 -157
- package/esm/SelectPicker/index.js +1 -0
- package/esm/Sidebar/Sidebar.js +13 -18
- package/esm/Sidebar/index.js +1 -0
- package/esm/Sidenav/ExpandedSidenavDropdown.js +32 -35
- package/esm/Sidenav/ExpandedSidenavDropdownItem.js +19 -27
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +22 -29
- package/esm/Sidenav/Node.js +1 -10
- package/esm/Sidenav/Sidenav.js +22 -28
- package/esm/Sidenav/SidenavBody.js +1 -0
- package/esm/Sidenav/SidenavDropdown.js +39 -52
- package/esm/Sidenav/SidenavDropdownCollapse.js +9 -13
- package/esm/Sidenav/SidenavDropdownItem.js +19 -31
- package/esm/Sidenav/SidenavDropdownMenu.js +26 -41
- package/esm/Sidenav/SidenavDropdownToggle.js +12 -14
- package/esm/Sidenav/SidenavHeader.js +1 -0
- package/esm/Sidenav/SidenavItem.js +27 -37
- package/esm/Sidenav/SidenavToggle.js +11 -18
- package/esm/Sidenav/index.js +1 -0
- package/esm/Slider/Graduated.js +14 -21
- package/esm/Slider/Handle.js +27 -39
- package/esm/Slider/Input.js +2 -2
- package/esm/Slider/Mark.js +11 -14
- package/esm/Slider/ProgressBar.js +14 -18
- package/esm/Slider/Slider.js +51 -67
- package/esm/Slider/index.js +1 -0
- package/esm/Slider/utils.js +1 -5
- package/esm/Stack/Stack.js +22 -27
- package/esm/Stack/StackItem.js +11 -11
- package/esm/Stack/index.js +1 -0
- package/esm/Steps/StepItem.js +16 -22
- package/esm/Steps/Steps.js +18 -22
- package/esm/Steps/index.js +1 -0
- package/esm/Table/Table.js +6 -7
- package/esm/Table/index.js +1 -0
- package/esm/Tag/Tag.js +16 -19
- package/esm/Tag/index.js +1 -0
- package/esm/TagGroup/TagGroup.js +1 -0
- package/esm/TagGroup/index.js +1 -0
- package/esm/TagInput/index.js +7 -7
- package/esm/TagPicker/index.js +5 -5
- package/esm/Timeline/Timeline.js +14 -19
- package/esm/Timeline/TimelineItem.js +14 -15
- package/esm/Timeline/index.js +1 -0
- package/esm/Toggle/Toggle.js +26 -35
- package/esm/Toggle/index.js +1 -0
- package/esm/Tooltip/Tooltip.js +13 -16
- package/esm/Tooltip/index.js +1 -0
- package/esm/Tree/Tree.js +1 -3
- package/esm/Tree/TreeContext.js +1 -0
- package/esm/Tree/index.js +1 -0
- package/esm/TreePicker/TreeNode.js +37 -49
- package/esm/TreePicker/TreePicker.js +155 -218
- package/esm/TreePicker/index.js +1 -0
- package/esm/Uploader/UploadFileItem.js +37 -68
- package/esm/Uploader/UploadTrigger.js +24 -38
- package/esm/Uploader/Uploader.js +90 -132
- package/esm/Uploader/index.js +1 -0
- package/esm/Whisper/Whisper.js +8 -10
- package/esm/Whisper/index.js +1 -0
- package/esm/Windowing/AutoSizer.js +13 -24
- package/esm/Windowing/List.d.ts +2 -2
- package/esm/Windowing/List.js +6 -15
- package/esm/Windowing/index.js +1 -0
- package/esm/index.js +3 -0
- package/esm/locales/ar_EG.js +1 -0
- package/esm/locales/da_DK.js +1 -1
- package/esm/locales/de_DE.js +1 -1
- package/esm/locales/default.js +1 -1
- package/esm/locales/en_GB.js +1 -0
- package/esm/locales/en_US.js +1 -0
- package/esm/locales/es_AR.js +1 -1
- package/esm/locales/es_ES.js +1 -1
- package/esm/locales/fa_IR.js +1 -0
- package/esm/locales/fi_FI.js +1 -1
- package/esm/locales/fr_FR.js +1 -0
- package/esm/locales/hu_HU.js +1 -1
- package/esm/locales/index.js +1 -0
- package/esm/locales/it_IT.js +1 -1
- package/esm/locales/ja_JP.js +1 -1
- package/esm/locales/kk_KZ.js +1 -0
- package/esm/locales/ko_KR.js +1 -1
- package/esm/locales/ne_NP.js +1 -1
- package/esm/locales/nl_NL.js +1 -0
- package/esm/locales/pt_BR.js +1 -0
- package/esm/locales/ru_RU.js +1 -0
- package/esm/locales/sv_SE.js +1 -1
- package/esm/locales/tr_TR.js +1 -0
- package/esm/locales/zh_CN.js +1 -0
- package/esm/locales/zh_TW.js +1 -0
- package/esm/toaster/ToastContainer.js +29 -42
- package/esm/toaster/ToastContext.js +1 -0
- package/esm/toaster/index.js +1 -0
- package/esm/toaster/toaster.js +4 -22
- package/esm/toaster/useToaster.js +3 -5
- package/esm/utils/BrowserDetection.js +9 -9
- package/esm/utils/ReactChildren.js +2 -8
- package/esm/utils/ajaxUpload.js +15 -32
- package/esm/utils/appendTooltip.js +3 -3
- package/esm/utils/attachParent.js +1 -0
- package/esm/utils/clone.js +1 -1
- package/esm/utils/composeFunctions.js +1 -1
- package/esm/utils/constants.js +4 -7
- package/esm/utils/createChainedFunction.js +2 -5
- package/esm/utils/createComponent.js +12 -16
- package/esm/utils/dateUtils.js +7 -23
- package/esm/utils/deprecateComponent.js +2 -2
- package/esm/utils/deprecatePropType.js +4 -6
- package/esm/utils/dom.js +3 -1
- package/esm/utils/events.js +2 -1
- package/esm/utils/getDOMNode.js +15 -8
- package/esm/utils/getDataGroupBy.d.ts +0 -23
- package/esm/utils/getDataGroupBy.js +5 -39
- package/esm/utils/getSafeRegExpString.js +1 -0
- package/esm/utils/guid.js +1 -0
- package/esm/utils/htmlPropsUtils.js +23 -14
- package/esm/utils/index.js +2 -1
- package/esm/utils/isOneOf.js +1 -1
- package/esm/utils/mergeRefs.js +1 -1
- package/esm/utils/placementPolyfill.js +2 -4
- package/esm/utils/prefix.js +4 -4
- package/esm/utils/previewFile.js +1 -3
- package/esm/utils/propTypeChecker.js +1 -3
- package/esm/utils/reactToString.js +1 -2
- package/esm/utils/render.js +3 -5
- package/esm/utils/scrollTopAnimation.js +1 -5
- package/esm/utils/shallowEqual.js +8 -13
- package/esm/utils/shallowEqualArray.js +1 -5
- package/esm/utils/statusIcons.js +1 -0
- package/esm/utils/stringToObject.js +3 -4
- package/esm/utils/tplTransform.js +2 -4
- package/esm/utils/treeUtils.js +113 -265
- package/esm/utils/useClassNames.js +9 -9
- package/esm/utils/useClickOutside.js +4 -6
- package/esm/utils/useControlled.js +12 -6
- package/esm/utils/useCustom.js +12 -20
- package/esm/utils/useElementResize.js +2 -4
- package/esm/utils/useEnsuredRef.js +2 -3
- package/esm/utils/useEventCallback.js +2 -3
- package/esm/utils/useEventListener.js +2 -2
- package/esm/utils/useFocus.js +5 -4
- package/esm/utils/useInternalId.js +2 -3
- package/esm/utils/useIsMounted.js +1 -2
- package/esm/utils/useMap.js +5 -5
- package/esm/utils/useMount.js +1 -3
- package/esm/utils/usePortal.js +7 -13
- package/esm/utils/useRootClose.js +9 -13
- package/esm/utils/useTimeout.js +3 -7
- package/esm/utils/useToggleCaret.js +2 -7
- package/esm/utils/useUniqueId.js +2 -4
- package/esm/utils/useUpdateEffect.js +3 -4
- package/esm/utils/useUpdatedRef.js +2 -1
- package/esm/utils/useWillUnmount.js +4 -2
- package/esm/utils/warnOnce.js +2 -2
- package/package.json +2 -2
- package/styles/color-modes/light.less +4 -4
- package/styles/mixins/listbox.less +0 -2
- package/cjs/SelectPicker/Listbox.d.ts +0 -34
- package/cjs/SelectPicker/Listbox.js +0 -263
- package/cjs/SelectPicker/ListboxOption.d.ts +0 -11
- package/cjs/SelectPicker/ListboxOption.js +0 -50
- package/cjs/SelectPicker/ListboxOptionGroup.d.ts +0 -9
- package/cjs/SelectPicker/ListboxOptionGroup.js +0 -69
- package/esm/SelectPicker/Listbox.d.ts +0 -34
- package/esm/SelectPicker/Listbox.js +0 -240
- package/esm/SelectPicker/ListboxOption.d.ts +0 -11
- package/esm/SelectPicker/ListboxOption.js +0 -37
- package/esm/SelectPicker/ListboxOptionGroup.d.ts +0 -9
- package/esm/SelectPicker/ListboxOptionGroup.js +0 -53
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
3
|
import isString from 'lodash/isString';
|
|
3
4
|
import isNumber from 'lodash/isNumber';
|
|
@@ -22,95 +23,97 @@ export default function createTextMaskInputElement(config) {
|
|
|
22
23
|
// is for this to be read from the `inputElement` directly.
|
|
23
24
|
update: function update(rawValue, _temp) {
|
|
24
25
|
var _pipeResults, _pipeResults2;
|
|
25
|
-
|
|
26
26
|
var _ref = _temp === void 0 ? config : _temp,
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
inputElement = _ref.inputElement,
|
|
28
|
+
providedMask = _ref.mask,
|
|
29
|
+
guide = _ref.guide,
|
|
30
|
+
pipe = _ref.pipe,
|
|
31
|
+
_ref$placeholderChar = _ref.placeholderChar,
|
|
32
|
+
placeholderChar = _ref$placeholderChar === void 0 ? defaultPlaceholderChar : _ref$placeholderChar,
|
|
33
|
+
_ref$keepCharPosition = _ref.keepCharPositions,
|
|
34
|
+
keepCharPositions = _ref$keepCharPosition === void 0 ? false : _ref$keepCharPosition,
|
|
35
|
+
_ref$showMask = _ref.showMask,
|
|
36
|
+
showMask = _ref$showMask === void 0 ? false : _ref$showMask;
|
|
38
37
|
// if `rawValue` is `undefined`, read from the `inputElement`
|
|
39
38
|
if (typeof rawValue === 'undefined') {
|
|
40
39
|
rawValue = inputElement.value;
|
|
41
|
-
}
|
|
42
|
-
// This check is here to handle controlled framework components that repeat the `update` call on every render.
|
|
43
|
-
|
|
40
|
+
}
|
|
44
41
|
|
|
42
|
+
// If `rawValue` equals `state.previousConformedValue`, we don't need to change anything. So, we return.
|
|
43
|
+
// This check is here to handle controlled framework components that repeat the `update` call on every render.
|
|
45
44
|
if (rawValue === state.previousConformedValue) {
|
|
46
45
|
return;
|
|
47
|
-
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Text Mask accepts masks that are a combination of a `mask` and a `pipe` that work together. If such a `mask` is
|
|
48
49
|
// passed, we destructure it below, so the rest of the code can work normally as if a separate `mask` and a `pipe`
|
|
49
50
|
// were passed.
|
|
50
|
-
|
|
51
|
-
|
|
52
51
|
if (typeof providedMask === strObject && providedMask.pipe !== undefined && providedMask.mask !== undefined) {
|
|
53
52
|
pipe = providedMask.pipe;
|
|
54
53
|
providedMask = providedMask.mask;
|
|
55
|
-
}
|
|
56
|
-
// be `(___)` if the `placeholderChar` is set to `_`.
|
|
54
|
+
}
|
|
57
55
|
|
|
56
|
+
// The `placeholder` is an essential piece of how Text Mask works. For a mask like `(111)`, the placeholder would
|
|
57
|
+
// be `(___)` if the `placeholderChar` is set to `_`.
|
|
58
|
+
var placeholder;
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
// We don't know what the mask would be yet. If it is an array, we take it as is, but if it's a function, we will
|
|
60
61
|
// have to call that function to get the mask array.
|
|
62
|
+
var mask;
|
|
61
63
|
|
|
62
|
-
|
|
64
|
+
// If the provided mask is an array, we can call `convertMaskToPlaceholder` here once and we'll always have the
|
|
63
65
|
// correct `placeholder`.
|
|
64
|
-
|
|
65
66
|
if (providedMask instanceof Array) {
|
|
66
67
|
placeholder = convertMaskToPlaceholder(providedMask, placeholderChar);
|
|
67
|
-
}
|
|
68
|
-
// `false` for `mask` after initialization. See https://github.com/text-mask/text-mask/pull/359
|
|
69
|
-
|
|
68
|
+
}
|
|
70
69
|
|
|
70
|
+
// In framework components that support reactivity, it's possible to turn off masking by passing
|
|
71
|
+
// `false` for `mask` after initialization. See https://github.com/text-mask/text-mask/pull/359
|
|
71
72
|
if (providedMask === false) {
|
|
72
73
|
return;
|
|
73
|
-
}
|
|
74
|
-
// If it's something we can't work with `getSafeRawValue` will throw.
|
|
75
|
-
|
|
74
|
+
}
|
|
76
75
|
|
|
77
|
-
|
|
76
|
+
// We check the provided `rawValue` before moving further.
|
|
77
|
+
// If it's something we can't work with `getSafeRawValue` will throw.
|
|
78
|
+
var safeRawValue = getSafeRawValue(rawValue);
|
|
78
79
|
|
|
80
|
+
// `selectionEnd` indicates to us where the caret position is after the user has typed into the input
|
|
79
81
|
var currentCaretPosition = inputElement.selectionEnd; // We need to know what the `previousConformedValue` and `previousPlaceholder` is from the previous `update` call
|
|
80
|
-
|
|
81
82
|
var previousConformedValue = state.previousConformedValue,
|
|
82
|
-
|
|
83
|
-
var caretTrapIndexes;
|
|
84
|
-
// Then we also need to get the `placeholder`
|
|
83
|
+
previousPlaceholder = state.previousPlaceholder;
|
|
84
|
+
var caretTrapIndexes;
|
|
85
85
|
|
|
86
|
+
// If the `providedMask` is a function. We need to call it at every `update` to get the `mask` array.
|
|
87
|
+
// Then we also need to get the `placeholder`
|
|
86
88
|
if (typeof providedMask === 'function') {
|
|
87
89
|
mask = providedMask(safeRawValue, {
|
|
88
90
|
currentCaretPosition: currentCaretPosition,
|
|
89
91
|
previousConformedValue: previousConformedValue,
|
|
90
92
|
placeholderChar: placeholderChar
|
|
91
|
-
});
|
|
93
|
+
});
|
|
92
94
|
|
|
95
|
+
// disable masking if `mask` is `false`
|
|
93
96
|
if (mask === false) {
|
|
94
97
|
return;
|
|
95
|
-
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// mask functions can setup caret traps to have some control over how the caret moves. We need to process
|
|
96
101
|
// the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask and return
|
|
97
102
|
// the indexes of the caret traps.
|
|
98
|
-
|
|
99
|
-
|
|
100
103
|
var _processCaretTraps = processCaretTraps(mask),
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
+
maskWithoutCaretTraps = _processCaretTraps.maskWithoutCaretTraps,
|
|
105
|
+
indexes = _processCaretTraps.indexes;
|
|
104
106
|
mask = maskWithoutCaretTraps; // The processed mask is what we're interested in
|
|
105
|
-
|
|
106
107
|
caretTrapIndexes = indexes; // And we need to store these indexes because they're needed by `adjustCaretPosition`
|
|
107
108
|
|
|
108
|
-
placeholder = convertMaskToPlaceholder(mask, placeholderChar);
|
|
109
|
+
placeholder = convertMaskToPlaceholder(mask, placeholderChar);
|
|
110
|
+
|
|
111
|
+
// If the `providedMask` is not a function, we just use it as-is.
|
|
109
112
|
} else {
|
|
110
113
|
mask = providedMask;
|
|
111
|
-
}
|
|
112
|
-
|
|
114
|
+
}
|
|
113
115
|
|
|
116
|
+
// The following object will be passed to `conformToMask` to determine how the `rawValue` will be conformed
|
|
114
117
|
var conformToMaskConfig = {
|
|
115
118
|
previousConformedValue: previousConformedValue,
|
|
116
119
|
guide: guide,
|
|
@@ -119,24 +122,25 @@ export default function createTextMaskInputElement(config) {
|
|
|
119
122
|
placeholder: placeholder,
|
|
120
123
|
currentCaretPosition: currentCaretPosition,
|
|
121
124
|
keepCharPositions: keepCharPositions
|
|
122
|
-
};
|
|
125
|
+
};
|
|
123
126
|
|
|
127
|
+
// `conformToMask` returns `conformedValue` as part of an object for future API flexibility
|
|
124
128
|
var _conformToMask = conformToMask(safeRawValue, mask, conformToMaskConfig),
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
129
|
+
conformedValue = _conformToMask.conformedValue; // The following few lines are to support the `pipe` feature.
|
|
128
130
|
var piped = typeof pipe === 'function';
|
|
129
|
-
var pipeResults = {};
|
|
131
|
+
var pipeResults = {};
|
|
130
132
|
|
|
133
|
+
// If `pipe` is a function, we call it.
|
|
131
134
|
if (piped) {
|
|
132
135
|
// `pipe` receives the `conformedValue` and the configurations with which `conformToMask` was called.
|
|
133
136
|
pipeResults = pipe(conformedValue, _extends({
|
|
134
137
|
rawValue: safeRawValue
|
|
135
|
-
}, conformToMaskConfig));
|
|
138
|
+
}, conformToMaskConfig));
|
|
139
|
+
|
|
140
|
+
// `pipeResults` should be an object. But as a convenience, we allow the pipe author to just return `false` to
|
|
136
141
|
// indicate rejection. Or return just a string when there are no piped characters.
|
|
137
142
|
// If the `pipe` returns `false` or a string, the block below turns it into an object that the rest
|
|
138
143
|
// of the code can work with.
|
|
139
|
-
|
|
140
144
|
if (pipeResults === false) {
|
|
141
145
|
// If the `pipe` rejects `conformedValue`, we use the `previousConformedValue`, and set `rejected` to `true`.
|
|
142
146
|
pipeResults = {
|
|
@@ -148,13 +152,14 @@ export default function createTextMaskInputElement(config) {
|
|
|
148
152
|
value: pipeResults
|
|
149
153
|
};
|
|
150
154
|
}
|
|
151
|
-
}
|
|
152
|
-
// returned by `conformToMask`.
|
|
155
|
+
}
|
|
153
156
|
|
|
157
|
+
// Before we proceed, we need to know which conformed value to use, the one returned by the pipe or the one
|
|
158
|
+
// returned by `conformToMask`.
|
|
159
|
+
var finalConformedValue = piped ? (_pipeResults = pipeResults) === null || _pipeResults === void 0 ? void 0 : _pipeResults.value : conformedValue;
|
|
154
160
|
|
|
155
|
-
|
|
161
|
+
// After determining the conformed value, we will need to know where to set
|
|
156
162
|
// the caret position. `adjustCaretPosition` will tell us.
|
|
157
|
-
|
|
158
163
|
var adjustedCaretPosition = adjustCaretPosition({
|
|
159
164
|
previousConformedValue: previousConformedValue,
|
|
160
165
|
previousPlaceholder: previousPlaceholder,
|
|
@@ -165,23 +170,22 @@ export default function createTextMaskInputElement(config) {
|
|
|
165
170
|
placeholderChar: placeholderChar,
|
|
166
171
|
indexesOfPipedChars: (_pipeResults2 = pipeResults) === null || _pipeResults2 === void 0 ? void 0 : _pipeResults2.indexesOfPipedChars,
|
|
167
172
|
caretTrapIndexes: caretTrapIndexes
|
|
168
|
-
});
|
|
173
|
+
});
|
|
169
174
|
|
|
175
|
+
// Text Mask sets the input value to an empty string when the condition below is set. It provides a better UX.
|
|
170
176
|
var inputValueShouldBeEmpty = finalConformedValue === placeholder && adjustedCaretPosition === 0;
|
|
171
177
|
var emptyValue = showMask ? placeholder : emptyString;
|
|
172
178
|
var inputElementValue = inputValueShouldBeEmpty ? emptyValue : finalConformedValue;
|
|
173
179
|
state.previousConformedValue = inputElementValue; // store value for access for next time
|
|
180
|
+
state.previousPlaceholder = placeholder;
|
|
174
181
|
|
|
175
|
-
|
|
182
|
+
// In some cases, this `update` method will be repeatedly called with a raw value that has already been conformed
|
|
176
183
|
// and set to `inputElement.value`. The below check guards against needlessly readjusting the input state.
|
|
177
184
|
// See https://github.com/text-mask/text-mask/issues/231
|
|
178
|
-
|
|
179
185
|
if (inputElement.value === inputElementValue) {
|
|
180
186
|
return;
|
|
181
187
|
}
|
|
182
|
-
|
|
183
188
|
inputElement.value = inputElementValue; // set the input value
|
|
184
|
-
|
|
185
189
|
safeSetSelection(inputElement, adjustedCaretPosition); // adjust caret position
|
|
186
190
|
}
|
|
187
191
|
};
|
|
@@ -198,7 +202,6 @@ function safeSetSelection(element, selectionPosition) {
|
|
|
198
202
|
}
|
|
199
203
|
}
|
|
200
204
|
}
|
|
201
|
-
|
|
202
205
|
function getSafeRawValue(inputValue) {
|
|
203
206
|
if (isString(inputValue)) {
|
|
204
207
|
return inputValue;
|
package/esm/MaskedInput/index.js
CHANGED
package/esm/MaskedInput/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use client';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
var emptyArray = [];
|
|
2
3
|
var strCaretTrap = '[]';
|
|
3
4
|
export var defaultPlaceholderChar = '_';
|
|
@@ -5,19 +6,15 @@ export function convertMaskToPlaceholder(mask, placeholderChar) {
|
|
|
5
6
|
if (mask === void 0) {
|
|
6
7
|
mask = emptyArray;
|
|
7
8
|
}
|
|
8
|
-
|
|
9
9
|
if (placeholderChar === void 0) {
|
|
10
10
|
placeholderChar = defaultPlaceholderChar;
|
|
11
11
|
}
|
|
12
|
-
|
|
13
12
|
if (!Array.isArray(mask)) {
|
|
14
13
|
throw new Error('Text-mask:convertMaskToPlaceholder; The mask property must be an array.');
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
if (mask.indexOf(placeholderChar) !== -1) {
|
|
18
16
|
throw new Error('Placeholder character must not be used as part of the mask. Please specify a character ' + 'that is not present in your mask as your placeholder character.\n\n' + ("The placeholder character that was received is: " + JSON.stringify(placeholderChar) + "\n\n") + ("The mask that was received is: " + JSON.stringify(mask)));
|
|
19
17
|
}
|
|
20
|
-
|
|
21
18
|
return mask.map(function (char) {
|
|
22
19
|
return char instanceof RegExp ? placeholderChar : char;
|
|
23
20
|
}).join('');
|
|
@@ -25,12 +22,10 @@ export function convertMaskToPlaceholder(mask, placeholderChar) {
|
|
|
25
22
|
export function processCaretTraps(mask) {
|
|
26
23
|
var indexes = [];
|
|
27
24
|
var indexOfCaretTrap;
|
|
28
|
-
|
|
29
25
|
while (indexOfCaretTrap = mask.indexOf(strCaretTrap), indexOfCaretTrap !== -1) {
|
|
30
26
|
indexes.push(indexOfCaretTrap);
|
|
31
27
|
mask.splice(indexOfCaretTrap, 1);
|
|
32
28
|
}
|
|
33
|
-
|
|
34
29
|
return {
|
|
35
30
|
maskWithoutCaretTraps: mask,
|
|
36
31
|
indexes: indexes
|
package/esm/Menu/Menu.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
3
|
import React, { useCallback, useContext, useRef, useMemo } from 'react';
|
|
3
4
|
import PropTypes from 'prop-types';
|
|
@@ -11,25 +12,24 @@ import useClickOutside from '../utils/useClickOutside';
|
|
|
11
12
|
import { isFocusLeaving } from '../utils/events';
|
|
12
13
|
import { isFocusableElement } from '../utils/dom';
|
|
13
14
|
var defaultOpenMenuOn = ['click'];
|
|
15
|
+
|
|
14
16
|
/**
|
|
15
17
|
* Headless ARIA `menu`
|
|
16
18
|
* @private
|
|
17
19
|
*/
|
|
18
|
-
|
|
19
20
|
function Menu(_ref) {
|
|
20
21
|
var _items$activeItemInde;
|
|
21
|
-
|
|
22
22
|
var disabled = _ref.disabled,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
23
|
+
children = _ref.children,
|
|
24
|
+
_ref$openMenuOn = _ref.openMenuOn,
|
|
25
|
+
openMenuOn = _ref$openMenuOn === void 0 ? defaultOpenMenuOn : _ref$openMenuOn,
|
|
26
|
+
_ref$defaultOpen = _ref.defaultOpen,
|
|
27
|
+
defaultOpen = _ref$defaultOpen === void 0 ? false : _ref$defaultOpen,
|
|
28
|
+
openProp = _ref.open,
|
|
29
|
+
menuButtonText = _ref.menuButtonText,
|
|
30
|
+
renderMenuButton = _ref.renderMenuButton,
|
|
31
|
+
renderMenuPopup = _ref.renderMenuPopup,
|
|
32
|
+
onToggleMenu = _ref.onToggleMenu;
|
|
33
33
|
var buttonElementRef = useRef(null);
|
|
34
34
|
var menuElementRef = useRef(null);
|
|
35
35
|
var parentMenu = useContext(MenuContext);
|
|
@@ -38,33 +38,27 @@ function Menu(_ref) {
|
|
|
38
38
|
open: defaultOpen
|
|
39
39
|
});
|
|
40
40
|
var _menu$ = menu[0],
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
openState = _menu$.open,
|
|
42
|
+
items = _menu$.items,
|
|
43
|
+
activeItemIndex = _menu$.activeItemIndex,
|
|
44
|
+
dispatch = menu[1];
|
|
45
45
|
var openControlled = typeof openProp !== 'undefined';
|
|
46
46
|
var open = openControlled ? openProp : openState;
|
|
47
|
-
|
|
48
47
|
var _useCustom = useCustom('Menu'),
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
rtl = _useCustom.rtl;
|
|
51
49
|
var activeItem = isNil(activeItemIndex) ? null : (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;
|
|
52
|
-
|
|
53
50
|
var _useFocus = useFocus(menuElementRef),
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
grabFocus = _useFocus.grab;
|
|
56
52
|
var openMenu = useCallback(function (event) {
|
|
57
53
|
dispatch({
|
|
58
54
|
type: MenuActionTypes.OpenMenu
|
|
59
55
|
});
|
|
60
|
-
|
|
61
56
|
if (!event.isTrusted) {
|
|
62
57
|
dispatch({
|
|
63
58
|
type: MenuActionTypes.MoveFocus,
|
|
64
59
|
to: MoveFocusTo.First
|
|
65
60
|
});
|
|
66
61
|
}
|
|
67
|
-
|
|
68
62
|
onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(true, event);
|
|
69
63
|
grabFocus();
|
|
70
64
|
}, [dispatch, onToggleMenu, grabFocus]);
|
|
@@ -72,7 +66,6 @@ function Menu(_ref) {
|
|
|
72
66
|
if (returnFocusToButton === void 0) {
|
|
73
67
|
returnFocusToButton = true;
|
|
74
68
|
}
|
|
75
|
-
|
|
76
69
|
dispatch({
|
|
77
70
|
type: MenuActionTypes.CloseMenu
|
|
78
71
|
});
|
|
@@ -81,10 +74,8 @@ function Menu(_ref) {
|
|
|
81
74
|
to: MoveFocusTo.None
|
|
82
75
|
});
|
|
83
76
|
onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(false, event);
|
|
84
|
-
|
|
85
77
|
if (returnFocusToButton) {
|
|
86
78
|
var _buttonElementRef$cur;
|
|
87
|
-
|
|
88
79
|
(_buttonElementRef$cur = buttonElementRef.current) === null || _buttonElementRef$cur === void 0 ? void 0 : _buttonElementRef$cur.focus({
|
|
89
80
|
preventScroll: true
|
|
90
81
|
});
|
|
@@ -101,7 +92,6 @@ function Menu(_ref) {
|
|
|
101
92
|
enabled: open,
|
|
102
93
|
isOutside: function isOutside(event) {
|
|
103
94
|
var _buttonElementRef$cur2, _menuElementRef$curre;
|
|
104
|
-
|
|
105
95
|
return !((_buttonElementRef$cur2 = buttonElementRef.current) !== null && _buttonElementRef$cur2 !== void 0 && _buttonElementRef$cur2.contains(event.target)) && !((_menuElementRef$curre = menuElementRef.current) !== null && _menuElementRef$curre !== void 0 && _menuElementRef$curre.contains(event.target));
|
|
106
96
|
},
|
|
107
97
|
// fixme if clicking on a focusable element, don't move focus to menu button
|
|
@@ -109,11 +99,11 @@ function Menu(_ref) {
|
|
|
109
99
|
return closeMenu(event, !isFocusableElement(event.target));
|
|
110
100
|
}
|
|
111
101
|
});
|
|
102
|
+
|
|
112
103
|
/**
|
|
113
104
|
* Keyboard interaction on menu button
|
|
114
105
|
* @see https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-13
|
|
115
106
|
*/
|
|
116
|
-
|
|
117
107
|
var handleButtonKeydown = useCallback(function (e) {
|
|
118
108
|
switch (e.key) {
|
|
119
109
|
// Open the menu
|
|
@@ -121,7 +111,6 @@ function Menu(_ref) {
|
|
|
121
111
|
case KEY_VALUES.SPACE:
|
|
122
112
|
e.preventDefault();
|
|
123
113
|
e.stopPropagation();
|
|
124
|
-
|
|
125
114
|
if (!open) {
|
|
126
115
|
openMenu(e);
|
|
127
116
|
dispatch({
|
|
@@ -131,19 +120,15 @@ function Menu(_ref) {
|
|
|
131
120
|
} else {
|
|
132
121
|
closeMenu(e);
|
|
133
122
|
}
|
|
134
|
-
|
|
135
123
|
break;
|
|
136
124
|
// Open the menu (if closed) and move focus to first item
|
|
137
125
|
// This is mostly useful after opening the menu with click
|
|
138
|
-
|
|
139
126
|
case KEY_VALUES.DOWN:
|
|
140
127
|
e.preventDefault();
|
|
141
128
|
e.stopPropagation();
|
|
142
|
-
|
|
143
129
|
if (!open) {
|
|
144
130
|
openMenu(e);
|
|
145
131
|
}
|
|
146
|
-
|
|
147
132
|
dispatch({
|
|
148
133
|
type: MenuActionTypes.MoveFocus,
|
|
149
134
|
to: MoveFocusTo.First
|
|
@@ -155,13 +140,13 @@ function Menu(_ref) {
|
|
|
155
140
|
if (disabled) {
|
|
156
141
|
return;
|
|
157
142
|
}
|
|
158
|
-
|
|
159
143
|
toggleMenu(event);
|
|
160
144
|
}, [disabled, toggleMenu]);
|
|
161
145
|
var handleButtonContextMenu = useCallback(function (event) {
|
|
162
146
|
// prevents default contextmenu
|
|
163
|
-
event.preventDefault();
|
|
147
|
+
event.preventDefault();
|
|
164
148
|
|
|
149
|
+
// Only opens menu on right click. Left click can close the menu opened by a right click
|
|
165
150
|
if (open) return;
|
|
166
151
|
if (disabled) return;
|
|
167
152
|
openMenu(event);
|
|
@@ -170,19 +155,17 @@ function Menu(_ref) {
|
|
|
170
155
|
var buttonEventHandlers = {
|
|
171
156
|
onKeyDown: handleButtonKeydown
|
|
172
157
|
};
|
|
158
|
+
|
|
173
159
|
/**
|
|
174
160
|
* Bind event of trigger,
|
|
175
161
|
* not used in in the expanded state of '<Sidenav>'
|
|
176
162
|
*/
|
|
177
|
-
|
|
178
163
|
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {
|
|
179
164
|
buttonEventHandlers.onClick = handleButtonClick;
|
|
180
165
|
}
|
|
181
|
-
|
|
182
166
|
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {
|
|
183
167
|
buttonEventHandlers.onContextMenu = handleButtonContextMenu;
|
|
184
168
|
}
|
|
185
|
-
|
|
186
169
|
return buttonEventHandlers;
|
|
187
170
|
}, [openMenuOn, handleButtonKeydown, handleButtonClick, handleButtonContextMenu]);
|
|
188
171
|
var buttonId = useUniqueId('menubutton-');
|
|
@@ -211,11 +194,11 @@ function Menu(_ref) {
|
|
|
211
194
|
var buttonElement = customMenuButton !== null && customMenuButton !== void 0 ? customMenuButton : /*#__PURE__*/React.createElement("button", _extends({
|
|
212
195
|
ref: buttonElementRef
|
|
213
196
|
}, buttonProps), menuButtonText);
|
|
197
|
+
|
|
214
198
|
/**
|
|
215
199
|
* Keyboard interaction on menu
|
|
216
200
|
* @see https://www.w3.org/TR/wai-aria-practices-1.2/#keyboard-interaction-12
|
|
217
201
|
*/
|
|
218
|
-
|
|
219
202
|
var handleMenuKeydown = useCallback(function (e) {
|
|
220
203
|
switch (e.key) {
|
|
221
204
|
// Move focus to previous item
|
|
@@ -228,7 +211,6 @@ function Menu(_ref) {
|
|
|
228
211
|
});
|
|
229
212
|
break;
|
|
230
213
|
// Move focus to next item
|
|
231
|
-
|
|
232
214
|
case KEY_VALUES.DOWN:
|
|
233
215
|
e.preventDefault();
|
|
234
216
|
e.stopPropagation();
|
|
@@ -238,11 +220,9 @@ function Menu(_ref) {
|
|
|
238
220
|
});
|
|
239
221
|
break;
|
|
240
222
|
// When focus is in a menu and on a menuitem that has a submenu, opens the submenu and places focus on its first item.
|
|
241
|
-
|
|
242
223
|
case KEY_VALUES.RIGHT:
|
|
243
224
|
e.preventDefault();
|
|
244
225
|
e.stopPropagation();
|
|
245
|
-
|
|
246
226
|
if (!rtl) {
|
|
247
227
|
if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.getAttribute('aria-haspopup')) === 'menu') {
|
|
248
228
|
activeItem.click();
|
|
@@ -252,14 +232,11 @@ function Menu(_ref) {
|
|
|
252
232
|
type: MenuActionTypes.CloseMenu
|
|
253
233
|
});
|
|
254
234
|
}
|
|
255
|
-
|
|
256
235
|
break;
|
|
257
236
|
// When focus is in a submenu of an item in a menu, closes the submenu and returns focus to the parent menuitem.
|
|
258
|
-
|
|
259
237
|
case KEY_VALUES.LEFT:
|
|
260
238
|
e.preventDefault();
|
|
261
239
|
e.stopPropagation();
|
|
262
|
-
|
|
263
240
|
if (!rtl) {
|
|
264
241
|
if (isSubmenu) {
|
|
265
242
|
closeMenu(e);
|
|
@@ -267,10 +244,8 @@ function Menu(_ref) {
|
|
|
267
244
|
} else if ((activeItem === null || activeItem === void 0 ? void 0 : activeItem.getAttribute('aria-haspopup')) === 'menu') {
|
|
268
245
|
activeItem.click();
|
|
269
246
|
}
|
|
270
|
-
|
|
271
247
|
break;
|
|
272
248
|
// Move focus to the first item
|
|
273
|
-
|
|
274
249
|
case KEY_VALUES.HOME:
|
|
275
250
|
e.preventDefault();
|
|
276
251
|
e.stopPropagation();
|
|
@@ -280,7 +255,6 @@ function Menu(_ref) {
|
|
|
280
255
|
});
|
|
281
256
|
break;
|
|
282
257
|
// Move focus to the last item
|
|
283
|
-
|
|
284
258
|
case KEY_VALUES.END:
|
|
285
259
|
e.preventDefault();
|
|
286
260
|
e.stopPropagation();
|
|
@@ -291,40 +265,41 @@ function Menu(_ref) {
|
|
|
291
265
|
break;
|
|
292
266
|
// - When focus is on a menuitem that has a submenu, opens the submenu and places focus on its first item.
|
|
293
267
|
// - Otherwise, activates the item and closes the menu.
|
|
294
|
-
|
|
295
268
|
case KEY_VALUES.ENTER:
|
|
296
269
|
case KEY_VALUES.SPACE:
|
|
297
270
|
if (activeItem) {
|
|
298
271
|
e.preventDefault();
|
|
299
272
|
e.stopPropagation();
|
|
300
273
|
activeItem.click();
|
|
301
|
-
|
|
302
274
|
if (!activeItem.getAttribute('aria-haspopup')) {
|
|
303
275
|
closeMenu(e);
|
|
304
276
|
}
|
|
305
277
|
}
|
|
306
|
-
|
|
307
278
|
break;
|
|
308
279
|
// Close the menu that contains focus and return focus to the element or context,
|
|
309
280
|
// e.g., menu button or parent menuitem, from which the menu was opened.
|
|
310
|
-
|
|
311
281
|
case KEY_VALUES.ESC:
|
|
312
282
|
closeMenu(e);
|
|
313
283
|
break;
|
|
314
284
|
}
|
|
315
|
-
}, [dispatch, activeItem, isSubmenu, rtl, closeMenu]);
|
|
285
|
+
}, [dispatch, activeItem, isSubmenu, rtl, closeMenu]);
|
|
316
286
|
|
|
287
|
+
// Only used for clicks bubbling from child `menuitem`s.
|
|
317
288
|
var handleMenuClick = useCallback(function (event) {
|
|
318
|
-
var target = event.target;
|
|
289
|
+
var target = event.target;
|
|
319
290
|
|
|
320
|
-
|
|
291
|
+
// Only handle clicks on `menuitem`s
|
|
292
|
+
if (target.getAttribute('role') !== 'menuitem') return;
|
|
321
293
|
|
|
322
|
-
|
|
294
|
+
// Ignore clicks on `menuitem`s that controls a submenu
|
|
295
|
+
if (target.getAttribute('aria-haspopup') === 'menu') return;
|
|
323
296
|
|
|
297
|
+
// Ignore disabled `menuitem`s
|
|
324
298
|
if (target.getAttribute('aria-disabled') === 'true') return;
|
|
325
299
|
closeMenu(event, !isSubmenu);
|
|
326
|
-
}, [closeMenu, isSubmenu]);
|
|
300
|
+
}, [closeMenu, isSubmenu]);
|
|
327
301
|
|
|
302
|
+
// Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-13
|
|
328
303
|
var menuAriaAttributes = {
|
|
329
304
|
role: 'menu',
|
|
330
305
|
'aria-labelledby': buttonId,
|
|
@@ -334,17 +309,16 @@ function Menu(_ref) {
|
|
|
334
309
|
onClick: handleMenuClick,
|
|
335
310
|
onKeyDown: handleMenuKeydown
|
|
336
311
|
};
|
|
337
|
-
|
|
338
312
|
var menuProps = _extends({
|
|
339
313
|
id: menuId
|
|
340
314
|
}, menuAriaAttributes, menuEventHandlers, {
|
|
341
315
|
tabIndex: 0
|
|
342
316
|
});
|
|
343
|
-
|
|
344
317
|
var customMenuPopup = renderMenuPopup === null || renderMenuPopup === void 0 ? void 0 : renderMenuPopup(_extends({}, menuProps, {
|
|
345
318
|
open: open
|
|
346
|
-
}), menuElementRef);
|
|
319
|
+
}), menuElementRef);
|
|
347
320
|
|
|
321
|
+
// fixme Wrong children here
|
|
348
322
|
var menuElement = customMenuPopup !== null && customMenuPopup !== void 0 ? customMenuPopup : /*#__PURE__*/React.createElement("ul", _extends({
|
|
349
323
|
ref: menuElementRef
|
|
350
324
|
}, menuProps, {
|
|
@@ -370,12 +344,10 @@ function Menu(_ref) {
|
|
|
370
344
|
var rootEventHandlers = {
|
|
371
345
|
onBlur: handleContainerBlur
|
|
372
346
|
};
|
|
373
|
-
|
|
374
347
|
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('mouseover')) {
|
|
375
348
|
rootEventHandlers.onMouseEnter = handleMouseEnter;
|
|
376
349
|
rootEventHandlers.onMouseLeave = handleMouseLeave;
|
|
377
350
|
}
|
|
378
|
-
|
|
379
351
|
var rootProps = _extends({}, rootEventHandlers, {
|
|
380
352
|
children: /*#__PURE__*/React.createElement(React.Fragment, null, buttonElement, /*#__PURE__*/React.createElement(MenuContext.Provider, {
|
|
381
353
|
value: menu
|
|
@@ -383,14 +355,11 @@ function Menu(_ref) {
|
|
|
383
355
|
// render props
|
|
384
356
|
open: open
|
|
385
357
|
});
|
|
386
|
-
|
|
387
358
|
if (isSubmenu) {
|
|
388
359
|
rootProps.role = 'none presentation';
|
|
389
360
|
}
|
|
390
|
-
|
|
391
361
|
return children(rootProps, rootElementRef);
|
|
392
362
|
}
|
|
393
|
-
|
|
394
363
|
Menu.displayName = 'Menu';
|
|
395
364
|
Menu.propTypes = {
|
|
396
365
|
children: PropTypes.func.isRequired
|
package/esm/Menu/MenuContext.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
export var MenuActionTypes;
|
|
3
|
-
|
|
4
4
|
(function (MenuActionTypes) {
|
|
5
5
|
MenuActionTypes[MenuActionTypes["RegisterItem"] = 0] = "RegisterItem";
|
|
6
6
|
MenuActionTypes[MenuActionTypes["UnregisterItem"] = 1] = "UnregisterItem";
|
|
@@ -8,9 +8,7 @@ export var MenuActionTypes;
|
|
|
8
8
|
MenuActionTypes[MenuActionTypes["CloseMenu"] = 3] = "CloseMenu";
|
|
9
9
|
MenuActionTypes[MenuActionTypes["MoveFocus"] = 4] = "MoveFocus";
|
|
10
10
|
})(MenuActionTypes || (MenuActionTypes = {}));
|
|
11
|
-
|
|
12
11
|
export var MoveFocusTo;
|
|
13
|
-
|
|
14
12
|
(function (MoveFocusTo) {
|
|
15
13
|
MoveFocusTo[MoveFocusTo["Next"] = 0] = "Next";
|
|
16
14
|
MoveFocusTo[MoveFocusTo["Prev"] = 1] = "Prev";
|
|
@@ -19,7 +17,6 @@ export var MoveFocusTo;
|
|
|
19
17
|
MoveFocusTo[MoveFocusTo["Specific"] = 4] = "Specific";
|
|
20
18
|
MoveFocusTo[MoveFocusTo["None"] = 5] = "None";
|
|
21
19
|
})(MoveFocusTo || (MoveFocusTo = {}));
|
|
22
|
-
|
|
23
20
|
// Defaults to null for checking whether a Menu is inside another menu
|
|
24
21
|
var MenuContext = /*#__PURE__*/React.createContext(null);
|
|
25
22
|
MenuContext.displayName = 'MenuContext';
|