rsuite 5.12.0 → 5.14.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/Button/styles/index.less +1 -0
- package/CHANGELOG.md +49 -0
- package/Dropdown/styles/index.less +8 -3
- package/Grid/styles/index.less +42 -10
- package/Nav/styles/index.less +7 -1
- package/Navbar/styles/index.less +6 -1
- package/Sidenav/styles/index.less +52 -16
- package/Table/styles/index.less +0 -2
- package/Tooltip/styles/index.less +4 -4
- package/cjs/@types/common.d.ts +6 -0
- package/cjs/Cascader/DropdownMenu.js +8 -3
- package/cjs/Cascader/utils.d.ts +1 -1
- package/cjs/Col/Col.d.ts +25 -5
- package/cjs/Col/Col.js +9 -1
- package/cjs/CustomProvider/CustomProvider.d.ts +20 -7
- package/cjs/CustomProvider/CustomProvider.js +24 -3
- package/cjs/Disclosure/Disclosure.d.ts +1 -1
- package/cjs/Disclosure/DisclosureContext.d.ts +1 -1
- package/cjs/Dropdown/Dropdown.js +26 -110
- package/cjs/Dropdown/DropdownItem.js +14 -58
- package/cjs/Dropdown/DropdownMenu.js +32 -76
- package/cjs/Dropdown/DropdownToggle.js +4 -17
- package/cjs/Dropdown/useRenderDropdownItem.d.ts +1 -1
- package/cjs/Form/Form.d.ts +8 -8
- package/cjs/Form/test/Form.test.d.ts +1 -0
- package/cjs/Form/test/Form.test.js +18 -0
- package/cjs/Menu/Menu.d.ts +1 -0
- package/cjs/Menu/Menu.js +1 -0
- package/cjs/Menu/MenuItem.d.ts +1 -0
- package/cjs/Menu/MenuItem.js +1 -0
- package/cjs/Menu/Menubar.d.ts +3 -0
- package/cjs/Menu/Menubar.js +4 -0
- package/cjs/Modal/test/Modal.test.d.ts +1 -0
- package/cjs/Modal/test/Modal.test.js +14 -0
- package/cjs/Modal/utils.d.ts +1 -1
- package/cjs/Nav/Nav.d.ts +7 -2
- package/cjs/Nav/Nav.js +105 -5
- package/cjs/Nav/NavContext.d.ts +2 -8
- package/cjs/Nav/NavContext.js +1 -7
- package/cjs/Nav/NavDropdown.d.ts +71 -0
- package/cjs/Nav/NavDropdown.js +193 -0
- package/cjs/Nav/NavDropdownItem.d.ts +39 -0
- package/cjs/Nav/NavDropdownItem.js +141 -0
- package/cjs/Nav/NavDropdownMenu.d.ts +37 -0
- package/cjs/Nav/NavDropdownMenu.js +162 -0
- package/cjs/Nav/NavDropdownToggle.d.ts +21 -0
- package/cjs/Nav/NavDropdownToggle.js +74 -0
- package/cjs/Nav/NavItem.d.ts +2 -0
- package/cjs/Nav/NavItem.js +13 -26
- package/cjs/Nav/NavMenu.d.ts +38 -0
- package/cjs/Nav/NavMenu.js +122 -0
- package/cjs/Nav/test/Nav.test.d.ts +1 -0
- package/cjs/Nav/test/Nav.test.js +17 -0
- package/cjs/Navbar/NavbarDropdown.d.ts +57 -0
- package/cjs/Navbar/NavbarDropdown.js +147 -0
- package/cjs/Navbar/NavbarDropdownItem.d.ts +41 -0
- package/cjs/Navbar/NavbarDropdownItem.js +149 -0
- package/cjs/Navbar/NavbarDropdownMenu.d.ts +48 -0
- package/cjs/Navbar/NavbarDropdownMenu.js +161 -0
- package/cjs/Navbar/NavbarDropdownToggle.d.ts +19 -0
- package/cjs/Navbar/NavbarDropdownToggle.js +72 -0
- package/cjs/Navbar/NavbarItem.d.ts +5 -2
- package/cjs/Navbar/NavbarItem.js +10 -4
- package/cjs/Overlay/Modal.d.ts +1 -4
- package/cjs/Overlay/Overlay.d.ts +3 -1
- package/cjs/Overlay/Overlay.js +6 -2
- package/cjs/Overlay/OverlayTrigger.d.ts +8 -4
- package/cjs/Overlay/OverlayTrigger.js +32 -4
- package/cjs/Overlay/Position.d.ts +3 -1
- package/cjs/Overlay/Position.js +12 -4
- package/cjs/Overlay/positionUtils.d.ts +11 -4
- package/cjs/Overlay/positionUtils.js +48 -2
- package/cjs/Panel/Panel.js +9 -6
- package/cjs/Picker/utils.d.ts +1 -1
- package/cjs/Picker/utils.js +22 -15
- package/cjs/Popover/Popover.d.ts +2 -0
- package/cjs/Popover/Popover.js +6 -3
- package/cjs/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
- package/cjs/Sidenav/ExpandedSidenavDropdown.js +166 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +141 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +145 -0
- package/cjs/Sidenav/Sidenav.d.ts +8 -2
- package/cjs/Sidenav/Sidenav.js +1 -2
- package/cjs/Sidenav/SidenavDropdown.d.ts +30 -8
- package/cjs/Sidenav/SidenavDropdown.js +144 -73
- package/cjs/Sidenav/SidenavDropdownItem.d.ts +22 -5
- package/cjs/Sidenav/SidenavDropdownItem.js +88 -72
- package/cjs/Sidenav/SidenavDropdownMenu.d.ts +26 -16
- package/cjs/Sidenav/SidenavDropdownMenu.js +122 -90
- package/cjs/Sidenav/SidenavDropdownToggle.d.ts +19 -0
- package/cjs/Sidenav/SidenavDropdownToggle.js +73 -0
- package/cjs/Sidenav/SidenavItem.d.ts +7 -0
- package/cjs/Sidenav/SidenavItem.js +54 -37
- package/cjs/Sidenav/SidenavToggle.d.ts +5 -1
- package/cjs/Sidenav/SidenavToggle.js +25 -9
- package/cjs/Toggle/Toggle.d.ts +1 -1
- package/cjs/Tooltip/Tooltip.d.ts +3 -1
- package/cjs/Tooltip/Tooltip.js +8 -3
- package/cjs/Whisper/Whisper.d.ts +3 -5
- package/cjs/Whisper/Whisper.js +6 -1
- package/cjs/Whisper/test/Whisper.test.d.ts +1 -0
- package/cjs/Whisper/test/Whisper.test.js +23 -0
- package/cjs/index.d.ts +3 -3
- package/cjs/index.js +3 -2
- package/cjs/toaster/ToastContainer.d.ts +1 -0
- package/cjs/toaster/ToastContainer.js +4 -1
- package/cjs/toaster/index.d.ts +1 -0
- package/cjs/toaster/index.js +4 -1
- package/cjs/toaster/toaster.d.ts +0 -1
- package/cjs/toaster/useToaster.d.ts +12 -0
- package/cjs/toaster/useToaster.js +43 -0
- package/cjs/utils/constants.d.ts +1 -0
- package/cjs/utils/constants.js +3 -1
- package/cjs/utils/deprecateComponent.js +4 -6
- package/cjs/utils/deprecatePropType.d.ts +1 -5
- package/cjs/utils/deprecatePropType.js +7 -14
- package/cjs/utils/stringToObject.d.ts +1 -1
- package/cjs/utils/tplTransform.d.ts +1 -1
- package/cjs/utils/treeUtils.d.ts +3 -3
- package/cjs/utils/treeUtils.js +8 -10
- package/cjs/utils/useCustom.d.ts +1 -1
- package/cjs/utils/useCustom.js +5 -3
- package/cjs/utils/useFocus.d.ts +1 -1
- package/cjs/utils/useInternalId.d.ts +1 -1
- package/cjs/utils/useInternalId.js +2 -2
- package/cjs/utils/warnOnce.d.ts +9 -0
- package/cjs/utils/warnOnce.js +22 -0
- package/dist/rsuite-rtl.css +735 -56
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +735 -56
- package/dist/rsuite.js +363 -121
- 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.d.ts +6 -0
- package/esm/Cascader/DropdownMenu.js +8 -3
- package/esm/Cascader/utils.d.ts +1 -1
- package/esm/Col/Col.d.ts +25 -5
- package/esm/Col/Col.js +10 -2
- package/esm/CustomProvider/CustomProvider.d.ts +20 -7
- package/esm/CustomProvider/CustomProvider.js +22 -3
- package/esm/Disclosure/Disclosure.d.ts +1 -1
- package/esm/Disclosure/DisclosureContext.d.ts +1 -1
- package/esm/Dropdown/Dropdown.js +25 -105
- package/esm/Dropdown/DropdownItem.js +13 -55
- package/esm/Dropdown/DropdownMenu.js +31 -76
- package/esm/Dropdown/DropdownToggle.js +4 -14
- package/esm/Dropdown/useRenderDropdownItem.d.ts +1 -1
- package/esm/Form/Form.d.ts +8 -8
- package/esm/Form/test/Form.test.d.ts +1 -0
- package/esm/Form/test/Form.test.js +11 -0
- package/esm/Menu/Menu.d.ts +1 -0
- package/esm/Menu/Menu.js +1 -0
- package/esm/Menu/MenuItem.d.ts +1 -0
- package/esm/Menu/MenuItem.js +1 -0
- package/esm/Menu/Menubar.d.ts +3 -0
- package/esm/Menu/Menubar.js +4 -0
- package/esm/Modal/test/Modal.test.d.ts +1 -0
- package/esm/Modal/test/Modal.test.js +9 -0
- package/esm/Modal/utils.d.ts +1 -1
- package/esm/Nav/Nav.d.ts +7 -2
- package/esm/Nav/Nav.js +96 -5
- package/esm/Nav/NavContext.d.ts +2 -8
- package/esm/Nav/NavContext.js +1 -6
- package/esm/Nav/NavDropdown.d.ts +71 -0
- package/esm/Nav/NavDropdown.js +170 -0
- package/esm/Nav/NavDropdownItem.d.ts +39 -0
- package/esm/Nav/NavDropdownItem.js +123 -0
- package/esm/Nav/NavDropdownMenu.d.ts +37 -0
- package/esm/Nav/NavDropdownMenu.js +143 -0
- package/esm/Nav/NavDropdownToggle.d.ts +21 -0
- package/esm/Nav/NavDropdownToggle.js +57 -0
- package/esm/Nav/NavItem.d.ts +2 -0
- package/esm/Nav/NavItem.js +13 -21
- package/esm/Nav/NavMenu.d.ts +38 -0
- package/esm/Nav/NavMenu.js +98 -0
- package/esm/Nav/test/Nav.test.d.ts +1 -0
- package/esm/Nav/test/Nav.test.js +11 -0
- package/esm/Navbar/NavbarDropdown.d.ts +57 -0
- package/esm/Navbar/NavbarDropdown.js +124 -0
- package/esm/Navbar/NavbarDropdownItem.d.ts +41 -0
- package/esm/Navbar/NavbarDropdownItem.js +128 -0
- package/esm/Navbar/NavbarDropdownMenu.d.ts +48 -0
- package/esm/Navbar/NavbarDropdownMenu.js +140 -0
- package/esm/Navbar/NavbarDropdownToggle.d.ts +19 -0
- package/esm/Navbar/NavbarDropdownToggle.js +55 -0
- package/esm/Navbar/NavbarItem.d.ts +5 -2
- package/esm/Navbar/NavbarItem.js +11 -4
- package/esm/Overlay/Modal.d.ts +1 -4
- package/esm/Overlay/Overlay.d.ts +3 -1
- package/esm/Overlay/Overlay.js +6 -2
- package/esm/Overlay/OverlayTrigger.d.ts +8 -4
- package/esm/Overlay/OverlayTrigger.js +33 -5
- package/esm/Overlay/Position.d.ts +3 -1
- package/esm/Overlay/Position.js +12 -4
- package/esm/Overlay/positionUtils.d.ts +11 -4
- package/esm/Overlay/positionUtils.js +46 -2
- package/esm/Panel/Panel.js +9 -6
- package/esm/Picker/utils.d.ts +1 -1
- package/esm/Picker/utils.js +22 -14
- package/esm/Popover/Popover.d.ts +2 -0
- package/esm/Popover/Popover.js +6 -3
- package/esm/Sidenav/ExpandedSidenavDropdown.d.ts +43 -0
- package/esm/Sidenav/ExpandedSidenavDropdown.js +140 -0
- package/esm/Sidenav/ExpandedSidenavDropdownItem.d.ts +31 -0
- package/esm/Sidenav/ExpandedSidenavDropdownItem.js +120 -0
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.d.ts +26 -0
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +121 -0
- package/esm/Sidenav/Sidenav.d.ts +8 -2
- package/esm/Sidenav/Sidenav.js +1 -2
- package/esm/Sidenav/SidenavDropdown.d.ts +30 -8
- package/esm/Sidenav/SidenavDropdown.js +145 -75
- package/esm/Sidenav/SidenavDropdownItem.d.ts +22 -5
- package/esm/Sidenav/SidenavDropdownItem.js +87 -71
- package/esm/Sidenav/SidenavDropdownMenu.d.ts +26 -16
- package/esm/Sidenav/SidenavDropdownMenu.js +122 -86
- package/esm/Sidenav/SidenavDropdownToggle.d.ts +19 -0
- package/esm/Sidenav/SidenavDropdownToggle.js +56 -0
- package/esm/Sidenav/SidenavItem.d.ts +7 -0
- package/esm/Sidenav/SidenavItem.js +53 -38
- package/esm/Sidenav/SidenavToggle.d.ts +5 -1
- package/esm/Sidenav/SidenavToggle.js +22 -9
- package/esm/Toggle/Toggle.d.ts +1 -1
- package/esm/Tooltip/Tooltip.d.ts +3 -1
- package/esm/Tooltip/Tooltip.js +8 -3
- package/esm/Whisper/Whisper.d.ts +3 -5
- package/esm/Whisper/Whisper.js +6 -1
- package/esm/Whisper/test/Whisper.test.d.ts +1 -0
- package/esm/Whisper/test/Whisper.test.js +16 -0
- package/esm/index.d.ts +3 -3
- package/esm/index.js +1 -1
- package/esm/toaster/ToastContainer.d.ts +1 -0
- package/esm/toaster/ToastContainer.js +1 -0
- package/esm/toaster/index.d.ts +1 -0
- package/esm/toaster/index.js +1 -0
- package/esm/toaster/toaster.d.ts +0 -1
- package/esm/toaster/useToaster.d.ts +12 -0
- package/esm/toaster/useToaster.js +34 -0
- package/esm/utils/constants.d.ts +1 -0
- package/esm/utils/constants.js +1 -0
- package/esm/utils/deprecateComponent.js +3 -4
- package/esm/utils/deprecatePropType.d.ts +1 -5
- package/esm/utils/deprecatePropType.js +3 -13
- package/esm/utils/stringToObject.d.ts +1 -1
- package/esm/utils/tplTransform.d.ts +1 -1
- package/esm/utils/treeUtils.d.ts +3 -3
- package/esm/utils/treeUtils.js +8 -10
- package/esm/utils/useCustom.d.ts +1 -1
- package/esm/utils/useCustom.js +5 -3
- package/esm/utils/useFocus.d.ts +1 -1
- package/esm/utils/useInternalId.d.ts +1 -1
- package/esm/utils/useInternalId.js +2 -2
- package/esm/utils/warnOnce.d.ts +9 -0
- package/esm/utils/warnOnce.js +18 -0
- package/package.json +1 -1
- package/styles/color-modes/dark.less +3 -0
- package/styles/color-modes/high-contrast.less +3 -0
- package/styles/color-modes/light.less +5 -2
- package/styles/variables.less +33 -12
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StandardProps } from '../@types/common';
|
|
3
|
+
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
4
|
+
export interface NavbarDropdownMenuProps<T = any> extends StandardProps {
|
|
5
|
+
/** Define the title as a submenu */
|
|
6
|
+
title?: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* The submenu expands from the left and defaults to the right
|
|
9
|
+
* @deprecated Use openDirection="start" instead.
|
|
10
|
+
*/
|
|
11
|
+
pullLeft?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Direction that the sub-menu open towards
|
|
14
|
+
* - start: towards the head of the reading direction (right by default, left in RTL)
|
|
15
|
+
* - end: towards the end of the reading direction (left by default, right in RTL)
|
|
16
|
+
*
|
|
17
|
+
* @default 'end'
|
|
18
|
+
*/
|
|
19
|
+
openDirection?: 'start' | 'end';
|
|
20
|
+
/**
|
|
21
|
+
* Only used for setting the default expand state when it's a submenu.
|
|
22
|
+
*/
|
|
23
|
+
eventKey?: T;
|
|
24
|
+
/** Set the icon */
|
|
25
|
+
icon?: React.ReactElement<IconProps>;
|
|
26
|
+
open?: boolean;
|
|
27
|
+
collapsible?: boolean;
|
|
28
|
+
expanded?: boolean;
|
|
29
|
+
active?: boolean;
|
|
30
|
+
disabled?: boolean;
|
|
31
|
+
activeKey?: T;
|
|
32
|
+
onToggle?: (open: boolean, eventKey?: T | undefined, event?: React.SyntheticEvent) => void;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* @private this component is not supposed to be used directly
|
|
36
|
+
* Instead it's rendered by a <Nav.Menu> within a <Navbar>
|
|
37
|
+
*
|
|
38
|
+
* <Navbar>
|
|
39
|
+
* <Nav>
|
|
40
|
+
* <Nav.Menu>
|
|
41
|
+
* <Nav.Menu title="menu"> -> This submenu will render <NavbarDropdownMenu> component
|
|
42
|
+
* </Nav.Menu>
|
|
43
|
+
* </Nav.Menu>
|
|
44
|
+
* </Nav>
|
|
45
|
+
* </Navbar>
|
|
46
|
+
*/
|
|
47
|
+
declare const NavbarDropdownMenu: React.ForwardRefExoticComponent<NavbarDropdownMenuProps<any> & Omit<React.HTMLAttributes<HTMLUListElement>, "title" | "onSelect"> & React.RefAttributes<HTMLElement>>;
|
|
48
|
+
export default NavbarDropdownMenu;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
6
|
+
|
|
7
|
+
exports.__esModule = true;
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
|
|
13
|
+
|
|
14
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
15
|
+
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
|
|
18
|
+
var _omit2 = _interopRequireDefault(require("lodash/omit"));
|
|
19
|
+
|
|
20
|
+
var _utils = require("../utils");
|
|
21
|
+
|
|
22
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
23
|
+
|
|
24
|
+
var _AngleLeft = _interopRequireDefault(require("@rsuite/icons/legacy/AngleLeft"));
|
|
25
|
+
|
|
26
|
+
var _AngleRight = _interopRequireDefault(require("@rsuite/icons/legacy/AngleRight"));
|
|
27
|
+
|
|
28
|
+
var _useCustom2 = _interopRequireDefault(require("../utils/useCustom"));
|
|
29
|
+
|
|
30
|
+
var _ = require(".");
|
|
31
|
+
|
|
32
|
+
var _Disclosure = _interopRequireDefault(require("../Disclosure"));
|
|
33
|
+
|
|
34
|
+
var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
|
|
35
|
+
|
|
36
|
+
var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
|
|
37
|
+
|
|
38
|
+
var _templateObject, _templateObject2;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @private this component is not supposed to be used directly
|
|
42
|
+
* Instead it's rendered by a <Nav.Menu> within a <Navbar>
|
|
43
|
+
*
|
|
44
|
+
* <Navbar>
|
|
45
|
+
* <Nav>
|
|
46
|
+
* <Nav.Menu>
|
|
47
|
+
* <Nav.Menu title="menu"> -> This submenu will render <NavbarDropdownMenu> component
|
|
48
|
+
* </Nav.Menu>
|
|
49
|
+
* </Nav.Menu>
|
|
50
|
+
* </Nav>
|
|
51
|
+
* </Navbar>
|
|
52
|
+
*/
|
|
53
|
+
var NavbarDropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
54
|
+
var navbar = (0, _react.useContext)(_.NavbarContext);
|
|
55
|
+
var nav = (0, _react.useContext)(_NavContext.default);
|
|
56
|
+
|
|
57
|
+
if (!navbar || !nav) {
|
|
58
|
+
throw new Error('<Navbar.Dropdown.Menu> must be rendered within a <Nav> within a <Navbar> component.');
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
var _onToggle = props.onToggle,
|
|
62
|
+
eventKey = props.eventKey,
|
|
63
|
+
title = props.title,
|
|
64
|
+
_props$classPrefix = props.classPrefix,
|
|
65
|
+
classPrefix = _props$classPrefix === void 0 ? 'dropdown-menu' : _props$classPrefix,
|
|
66
|
+
children = props.children,
|
|
67
|
+
_props$openDirection = props.openDirection,
|
|
68
|
+
openDirection = _props$openDirection === void 0 ? 'end' : _props$openDirection,
|
|
69
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["onToggle", "eventKey", "title", "classPrefix", "children", "openDirection"]);
|
|
70
|
+
|
|
71
|
+
var _useCustom = (0, _useCustom2.default)('DropdownMenu'),
|
|
72
|
+
rtl = _useCustom.rtl;
|
|
73
|
+
|
|
74
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
75
|
+
prefix = _useClassNames.prefix;
|
|
76
|
+
|
|
77
|
+
var _useClassNames2 = (0, _utils.useClassNames)('dropdown-menu'),
|
|
78
|
+
withMenuClassPrefix = _useClassNames2.withClassPrefix,
|
|
79
|
+
mergeMenuClassName = _useClassNames2.merge;
|
|
80
|
+
|
|
81
|
+
var _useClassNames3 = (0, _utils.useClassNames)('dropdown-item'),
|
|
82
|
+
mergeItemClassNames = _useClassNames3.merge,
|
|
83
|
+
withItemClassPrefix = _useClassNames3.withClassPrefix,
|
|
84
|
+
prefixItemClassName = _useClassNames3.prefix; // Parent menu exists. This is a submenu.
|
|
85
|
+
// Should render a `menuitem` that controls this submenu.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
var _omit = (0, _omit2.default)(rest, ['trigger']),
|
|
89
|
+
icon = _omit.icon,
|
|
90
|
+
className = _omit.className,
|
|
91
|
+
disabled = _omit.disabled,
|
|
92
|
+
menuProps = (0, _objectWithoutPropertiesLoose2.default)(_omit, ["icon", "className", "disabled"]);
|
|
93
|
+
|
|
94
|
+
var Icon = rtl ? _AngleLeft.default : _AngleRight.default;
|
|
95
|
+
return /*#__PURE__*/_react.default.createElement(_Disclosure.default, {
|
|
96
|
+
hideOnClickOutside: true,
|
|
97
|
+
trigger: ['click', 'mouseover'],
|
|
98
|
+
onToggle: function onToggle(open, event) {
|
|
99
|
+
return _onToggle === null || _onToggle === void 0 ? void 0 : _onToggle(open, undefined, event);
|
|
100
|
+
}
|
|
101
|
+
}, function (_ref, containerRef) {
|
|
102
|
+
var open = _ref.open,
|
|
103
|
+
props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["open"]);
|
|
104
|
+
var classes = mergeItemClassNames(className, withItemClassPrefix({
|
|
105
|
+
disabled: disabled,
|
|
106
|
+
open: open,
|
|
107
|
+
submenu: true
|
|
108
|
+
}));
|
|
109
|
+
return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({
|
|
110
|
+
ref: (0, _utils.mergeRefs)(ref, containerRef),
|
|
111
|
+
className: classes
|
|
112
|
+
}, props), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Button, null, function (_ref2, buttonRef) {
|
|
113
|
+
var open = _ref2.open,
|
|
114
|
+
buttonProps = (0, _objectWithoutPropertiesLoose2.default)(_ref2, ["open"]);
|
|
115
|
+
var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["toggle"]))), withItemClassPrefix({
|
|
116
|
+
'with-icon': icon,
|
|
117
|
+
open: open,
|
|
118
|
+
disabled: disabled
|
|
119
|
+
}));
|
|
120
|
+
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
121
|
+
ref: (0, _utils.mergeRefs)(buttonRef, buttonRef),
|
|
122
|
+
className: classes,
|
|
123
|
+
"data-event-key": eventKey,
|
|
124
|
+
"data-event-key-type": typeof eventKey
|
|
125
|
+
}, buttonProps), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
126
|
+
className: prefix('menu-icon')
|
|
127
|
+
}), title, /*#__PURE__*/_react.default.createElement(Icon, {
|
|
128
|
+
className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["toggle-icon"])))
|
|
129
|
+
}));
|
|
130
|
+
}), /*#__PURE__*/_react.default.createElement(_Disclosure.default.Content, null, function (_ref3, elementRef) {
|
|
131
|
+
var open = _ref3.open;
|
|
132
|
+
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
133
|
+
return /*#__PURE__*/_react.default.createElement("ul", (0, _extends2.default)({
|
|
134
|
+
ref: elementRef,
|
|
135
|
+
className: menuClassName,
|
|
136
|
+
hidden: !open,
|
|
137
|
+
"data-direction": openDirection
|
|
138
|
+
}, menuProps), children);
|
|
139
|
+
}));
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
NavbarDropdownMenu.displayName = 'Nav.Dropdown.Menu';
|
|
144
|
+
NavbarDropdownMenu.propTypes = {
|
|
145
|
+
active: _propTypes.default.bool,
|
|
146
|
+
activeKey: _propTypes.default.any,
|
|
147
|
+
className: _propTypes.default.string,
|
|
148
|
+
children: _propTypes.default.node,
|
|
149
|
+
icon: _propTypes.default.any,
|
|
150
|
+
classPrefix: _propTypes.default.string,
|
|
151
|
+
pullLeft: (0, _deprecatePropType.default)(_propTypes.default.bool, 'Use openDirection="start" instead.'),
|
|
152
|
+
openDirection: _propTypes.default.oneOf(['start', 'end']),
|
|
153
|
+
title: _propTypes.default.node,
|
|
154
|
+
open: _propTypes.default.bool,
|
|
155
|
+
eventKey: _propTypes.default.any,
|
|
156
|
+
expanded: _propTypes.default.bool,
|
|
157
|
+
collapsible: _propTypes.default.bool,
|
|
158
|
+
onToggle: _propTypes.default.func
|
|
159
|
+
};
|
|
160
|
+
var _default = NavbarDropdownMenu;
|
|
161
|
+
exports.default = _default;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Button from '../Button';
|
|
3
|
+
import { WithAsProps, RsRefForwardingComponent, TypeAttributes } from '../@types/common';
|
|
4
|
+
export interface NavbarDropdownToggleProps extends WithAsProps {
|
|
5
|
+
noCaret?: boolean;
|
|
6
|
+
renderToggle?: (props: WithAsProps, ref: React.Ref<any>) => any;
|
|
7
|
+
placement?: TypeAttributes.Placement8;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @private this component is not supposed to be used directly
|
|
11
|
+
* Instead it's rendered by a <Nav.Menu> call
|
|
12
|
+
*
|
|
13
|
+
* <Nav>
|
|
14
|
+
* <Nav.Menu> -> This will render <NavDropdown> component that renders a <NavDropdownToggle>
|
|
15
|
+
* </Nav.Menu>
|
|
16
|
+
* </Nav>
|
|
17
|
+
*/
|
|
18
|
+
declare const NavbarDropdownToggle: RsRefForwardingComponent<typeof Button, NavbarDropdownToggleProps>;
|
|
19
|
+
export default NavbarDropdownToggle;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
|
|
10
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
|
|
16
|
+
var _ArrowDownLine = _interopRequireDefault(require("@rsuite/icons/ArrowDownLine"));
|
|
17
|
+
|
|
18
|
+
var _utils = require("../utils");
|
|
19
|
+
|
|
20
|
+
var _NavbarItem = _interopRequireDefault(require("./NavbarItem"));
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @private this component is not supposed to be used directly
|
|
24
|
+
* Instead it's rendered by a <Nav.Menu> call
|
|
25
|
+
*
|
|
26
|
+
* <Nav>
|
|
27
|
+
* <Nav.Menu> -> This will render <NavDropdown> component that renders a <NavDropdownToggle>
|
|
28
|
+
* </Nav.Menu>
|
|
29
|
+
* </Nav>
|
|
30
|
+
*/
|
|
31
|
+
var NavbarDropdownToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
32
|
+
var _props$as = props.as,
|
|
33
|
+
Component = _props$as === void 0 ? _NavbarItem.default : _props$as,
|
|
34
|
+
className = props.className,
|
|
35
|
+
_props$classPrefix = props.classPrefix,
|
|
36
|
+
classPrefix = _props$classPrefix === void 0 ? 'navbar-item' : _props$classPrefix,
|
|
37
|
+
renderToggle = props.renderToggle,
|
|
38
|
+
children = props.children,
|
|
39
|
+
noCaret = props.noCaret,
|
|
40
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "renderToggle", "children", "noCaret"]);
|
|
41
|
+
|
|
42
|
+
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
43
|
+
prefix = _useClassNames.prefix,
|
|
44
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
45
|
+
merge = _useClassNames.merge;
|
|
46
|
+
|
|
47
|
+
var classes = merge(className, withClassPrefix({
|
|
48
|
+
'no-caret': noCaret
|
|
49
|
+
}));
|
|
50
|
+
|
|
51
|
+
var toggle = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
52
|
+
ref: ref,
|
|
53
|
+
className: classes
|
|
54
|
+
}), children, !noCaret && /*#__PURE__*/_react.default.createElement(_ArrowDownLine.default, {
|
|
55
|
+
className: prefix('caret')
|
|
56
|
+
}));
|
|
57
|
+
|
|
58
|
+
return renderToggle ? renderToggle(rest, ref) : toggle;
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
NavbarDropdownToggle.displayName = 'Navbar.Dropdown.Toggle';
|
|
62
|
+
NavbarDropdownToggle.propTypes = {
|
|
63
|
+
className: _propTypes.default.string,
|
|
64
|
+
children: _propTypes.default.node,
|
|
65
|
+
classPrefix: _propTypes.default.string,
|
|
66
|
+
noCaret: _propTypes.default.bool,
|
|
67
|
+
as: _propTypes.default.elementType,
|
|
68
|
+
renderToggle: _propTypes.default.func,
|
|
69
|
+
placement: _propTypes.default.oneOf(['bottomStart', 'bottomEnd', 'topStart', 'topEnd', 'leftStart', 'rightStart', 'leftEnd', 'rightEnd'])
|
|
70
|
+
};
|
|
71
|
+
var _default = NavbarDropdownToggle;
|
|
72
|
+
exports.default = _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { IconProps } from '@rsuite/icons/lib/Icon';
|
|
3
3
|
import { RsRefForwardingComponent, WithAsProps } from '../@types/common';
|
|
4
|
-
export interface
|
|
4
|
+
export interface NavbarItemProps<T = string> extends WithAsProps, Omit<React.HTMLAttributes<HTMLElement>, 'onSelect'> {
|
|
5
5
|
/** Activation status */
|
|
6
6
|
active?: boolean;
|
|
7
7
|
/** Disabled status */
|
|
@@ -15,5 +15,8 @@ export interface NavItemProps<T = string> extends WithAsProps, Omit<React.HTMLAt
|
|
|
15
15
|
/** Select the callback function that the event triggers. */
|
|
16
16
|
onSelect?: (eventKey: T | undefined, event: React.SyntheticEvent) => void;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
declare const NavbarItem: RsRefForwardingComponent<'a', NavbarItemProps>;
|
|
19
22
|
export default NavbarItem;
|
package/cjs/Navbar/NavbarItem.js
CHANGED
|
@@ -25,6 +25,9 @@ var _utils = require("../utils");
|
|
|
25
25
|
|
|
26
26
|
var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
|
|
27
27
|
|
|
28
|
+
/**
|
|
29
|
+
* @private
|
|
30
|
+
*/
|
|
28
31
|
var NavbarItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
29
32
|
var _props$as = props.as,
|
|
30
33
|
Component = _props$as === void 0 ? _SafeAnchor.default : _props$as,
|
|
@@ -41,9 +44,9 @@ var NavbarItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
41
44
|
onSelectProp = props.onSelect,
|
|
42
45
|
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "active", "disabled", "eventKey", "className", "classPrefix", "style", "children", "icon", "onClick", "onSelect"]);
|
|
43
46
|
|
|
44
|
-
var
|
|
45
|
-
activeKey =
|
|
46
|
-
onSelectFromNav =
|
|
47
|
+
var _ref = (0, _react.useContext)(_NavContext.default),
|
|
48
|
+
activeKey = _ref.activeKey,
|
|
49
|
+
onSelectFromNav = _ref.onSelect;
|
|
47
50
|
|
|
48
51
|
var active = activeProp !== null && activeProp !== void 0 ? activeProp : !(0, _isNil.default)(eventKey) && (0, _utils.shallowEqual)(eventKey, activeKey);
|
|
49
52
|
var emitSelect = (0, _react.useCallback)(function (event) {
|
|
@@ -52,6 +55,7 @@ var NavbarItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
52
55
|
}, [eventKey, onSelectProp, onSelectFromNav]);
|
|
53
56
|
|
|
54
57
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
58
|
+
prefix = _useClassNames.prefix,
|
|
55
59
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
56
60
|
merge = _useClassNames.merge;
|
|
57
61
|
|
|
@@ -72,7 +76,9 @@ var NavbarItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
72
76
|
className: classes,
|
|
73
77
|
onClick: handleClick,
|
|
74
78
|
style: style
|
|
75
|
-
}), icon
|
|
79
|
+
}), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
|
|
80
|
+
className: prefix('icon')
|
|
81
|
+
}), children, /*#__PURE__*/_react.default.createElement(_Ripple.default, null));
|
|
76
82
|
});
|
|
77
83
|
|
|
78
84
|
NavbarItem.displayName = 'Navbar.Item';
|
package/cjs/Overlay/Modal.d.ts
CHANGED
|
@@ -37,9 +37,6 @@ export interface BaseModalProps extends WithAsProps, AnimationEventProps {
|
|
|
37
37
|
onOpen?: () => void;
|
|
38
38
|
/** Called when Modal is closed */
|
|
39
39
|
onClose?: (event: React.SyntheticEvent) => void;
|
|
40
|
-
}
|
|
41
|
-
interface ModalProps extends BaseModalProps {
|
|
42
|
-
children: (props: any, ref: any) => React.ReactElement;
|
|
43
40
|
container?: HTMLElement | (() => HTMLElement);
|
|
44
41
|
containerClassName?: string;
|
|
45
42
|
backdropTransitionTimeout?: number;
|
|
@@ -48,7 +45,7 @@ interface ModalProps extends BaseModalProps {
|
|
|
48
45
|
onEsc?: React.KeyboardEventHandler;
|
|
49
46
|
onBackdropClick?: React.MouseEventHandler;
|
|
50
47
|
}
|
|
51
|
-
declare const Modal: RsRefForwardingComponent<'div',
|
|
48
|
+
declare const Modal: RsRefForwardingComponent<'div', BaseModalProps>;
|
|
52
49
|
export declare const modalPropTypes: {
|
|
53
50
|
as: PropTypes.Requireable<PropTypes.ReactComponentLike>;
|
|
54
51
|
className: PropTypes.Requireable<string>;
|
package/cjs/Overlay/Overlay.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { TypeAttributes, AnimationEventProps } from '../@types/common';
|
|
3
|
+
import { TypeAttributes, AnimationEventProps, CursorPosition } from '../@types/common';
|
|
4
4
|
export interface OverlayProps extends AnimationEventProps {
|
|
5
5
|
container?: HTMLElement | (() => HTMLElement | null) | null;
|
|
6
6
|
children: React.ReactElement | ((props: any, ref: any) => React.ReactElement);
|
|
@@ -14,6 +14,8 @@ export interface OverlayProps extends AnimationEventProps {
|
|
|
14
14
|
transition?: React.ElementType;
|
|
15
15
|
triggerTarget?: React.RefObject<any>;
|
|
16
16
|
onClose?: React.ReactEventHandler;
|
|
17
|
+
followCursor?: boolean;
|
|
18
|
+
cursorPosition?: CursorPosition | null;
|
|
17
19
|
}
|
|
18
20
|
export declare const overlayPropTypes: {
|
|
19
21
|
container: PropTypes.Requireable<any>;
|
package/cjs/Overlay/Overlay.js
CHANGED
|
@@ -67,7 +67,9 @@ var Overlay = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
67
67
|
onExiting = props.onExiting,
|
|
68
68
|
onEnter = props.onEnter,
|
|
69
69
|
onEntering = props.onEntering,
|
|
70
|
-
onEntered = props.onEntered
|
|
70
|
+
onEntered = props.onEntered,
|
|
71
|
+
followCursor = props.followCursor,
|
|
72
|
+
cursorPosition = props.cursorPosition;
|
|
71
73
|
|
|
72
74
|
var _useState = (0, _react.useState)(!open),
|
|
73
75
|
exited = _useState[0],
|
|
@@ -101,7 +103,9 @@ var Overlay = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
101
103
|
containerPadding: containerPadding,
|
|
102
104
|
triggerTarget: triggerTarget,
|
|
103
105
|
placement: placement,
|
|
104
|
-
preventOverflow: preventOverflow
|
|
106
|
+
preventOverflow: preventOverflow,
|
|
107
|
+
followCursor: followCursor,
|
|
108
|
+
cursorPosition: cursorPosition
|
|
105
109
|
};
|
|
106
110
|
|
|
107
111
|
var renderChildWithPosition = function renderChildWithPosition(transitionProps, transitionRef) {
|
|
@@ -50,16 +50,20 @@ export interface OverlayTriggerProps extends StandardProps, AnimationEventProps
|
|
|
50
50
|
onMouseOut?: React.MouseEventHandler;
|
|
51
51
|
/** Mouse over callback function */
|
|
52
52
|
onMouseOver?: React.MouseEventHandler;
|
|
53
|
+
/** Mouse move callback function */
|
|
54
|
+
onMouseMove?: React.MouseEventHandler;
|
|
53
55
|
/** Callback fired when open component */
|
|
54
56
|
onOpen?: () => void;
|
|
55
57
|
/** Callback fired when close component */
|
|
56
58
|
onClose?: () => void;
|
|
59
|
+
/** Whether speaker to follow the cursor */
|
|
60
|
+
followCursor?: boolean;
|
|
57
61
|
}
|
|
58
62
|
export interface OverlayTriggerInstance {
|
|
59
|
-
root: HTMLElement;
|
|
63
|
+
root: HTMLElement | undefined;
|
|
60
64
|
updatePosition: () => void;
|
|
61
|
-
open: () => void;
|
|
62
|
-
close: () => void;
|
|
65
|
+
open: (delay?: number) => void;
|
|
66
|
+
close: (delay?: number) => void;
|
|
63
67
|
}
|
|
64
|
-
declare const OverlayTrigger: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<
|
|
68
|
+
declare const OverlayTrigger: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<OverlayTriggerInstance>>;
|
|
65
69
|
export default OverlayTrigger;
|
|
@@ -93,12 +93,15 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
93
93
|
rootClose = _props$rootClose === void 0 ? true : _props$rootClose,
|
|
94
94
|
onClick = props.onClick,
|
|
95
95
|
onMouseOver = props.onMouseOver,
|
|
96
|
+
onMouseMove = props.onMouseMove,
|
|
96
97
|
onMouseOut = props.onMouseOut,
|
|
97
98
|
onContextMenu = props.onContextMenu,
|
|
98
99
|
onFocus = props.onFocus,
|
|
99
100
|
onBlur = props.onBlur,
|
|
100
101
|
onClose = props.onClose,
|
|
101
|
-
|
|
102
|
+
followCursor = props.followCursor,
|
|
103
|
+
onExited = props.onExited,
|
|
104
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["children", "container", "controlId", "defaultOpen", "trigger", "disabled", "readOnly", "plaintext", "open", "delay", "delayOpen", "delayClose", "enterable", "placement", "speaker", "rootClose", "onClick", "onMouseOver", "onMouseMove", "onMouseOut", "onContextMenu", "onFocus", "onBlur", "onClose", "followCursor", "onExited"]);
|
|
102
105
|
|
|
103
106
|
var _usePortal = (0, _utils.usePortal)({
|
|
104
107
|
container: container
|
|
@@ -110,7 +113,11 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
110
113
|
|
|
111
114
|
var _useControlled = (0, _utils.useControlled)(openProp, defaultOpen),
|
|
112
115
|
open = _useControlled[0],
|
|
113
|
-
setOpen = _useControlled[1];
|
|
116
|
+
setOpen = _useControlled[1];
|
|
117
|
+
|
|
118
|
+
var _useState = (0, _react.useState)(null),
|
|
119
|
+
cursorPosition = _useState[0],
|
|
120
|
+
setCursorPosition = _useState[1]; // Delay the timer to close/open the overlay
|
|
114
121
|
// When the cursor moves from the trigger to the overlay, the overlay will be closed.
|
|
115
122
|
// In order to keep the overlay open, a timer is used to delay the closing.
|
|
116
123
|
|
|
@@ -158,6 +165,9 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
158
165
|
|
|
159
166
|
setOpen(false);
|
|
160
167
|
}, [delayClose, setOpen]);
|
|
168
|
+
var handleExited = (0, _react.useCallback)(function () {
|
|
169
|
+
setCursorPosition(null);
|
|
170
|
+
}, []);
|
|
161
171
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
162
172
|
return {
|
|
163
173
|
get root() {
|
|
@@ -255,6 +265,16 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
255
265
|
handleCloseWhenLeave();
|
|
256
266
|
}
|
|
257
267
|
}, [handleCloseWhenLeave, trigger]);
|
|
268
|
+
var handledMoveOverlay = (0, _react.useCallback)(function (event) {
|
|
269
|
+
setCursorPosition(function () {
|
|
270
|
+
return {
|
|
271
|
+
top: event.pageY,
|
|
272
|
+
left: event.pageX,
|
|
273
|
+
clientTop: event.clientX,
|
|
274
|
+
clientLeft: event.clientY
|
|
275
|
+
};
|
|
276
|
+
});
|
|
277
|
+
}, [open]);
|
|
258
278
|
var preventDefault = (0, _react.useCallback)(function (event) {
|
|
259
279
|
event.preventDefault();
|
|
260
280
|
}, []);
|
|
@@ -264,7 +284,8 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
264
284
|
onMouseOver: onMouseOver,
|
|
265
285
|
onMouseOut: onMouseOut,
|
|
266
286
|
onFocus: onFocus,
|
|
267
|
-
onBlur: onBlur
|
|
287
|
+
onBlur: onBlur,
|
|
288
|
+
onMouseMove: onMouseMove
|
|
268
289
|
};
|
|
269
290
|
|
|
270
291
|
if (!disabled && !readOnly && !plaintext) {
|
|
@@ -302,6 +323,10 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
302
323
|
triggerEvents.onFocus = (0, _utils.createChainedFunction)(handleDelayedOpen, onFocus);
|
|
303
324
|
triggerEvents.onBlur = (0, _utils.createChainedFunction)(handleDelayedClose, onBlur);
|
|
304
325
|
}
|
|
326
|
+
|
|
327
|
+
if (trigger !== 'none') {
|
|
328
|
+
triggerEvents.onMouseMove = (0, _utils.createChainedFunction)(handledMoveOverlay, onMouseMove);
|
|
329
|
+
}
|
|
305
330
|
}
|
|
306
331
|
|
|
307
332
|
var renderOverlay = function renderOverlay() {
|
|
@@ -309,6 +334,7 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
309
334
|
rootClose: rootClose,
|
|
310
335
|
triggerTarget: triggerRef,
|
|
311
336
|
onClose: trigger !== 'none' ? (0, _utils.createChainedFunction)(handleClose, onClose) : undefined,
|
|
337
|
+
onExited: (0, _utils.createChainedFunction)(followCursor ? handleExited : undefined, onExited),
|
|
312
338
|
placement: placement,
|
|
313
339
|
container: container,
|
|
314
340
|
open: open
|
|
@@ -326,7 +352,9 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
326
352
|
|
|
327
353
|
return /*#__PURE__*/_react.default.createElement(_Overlay.default, (0, _extends2.default)({}, overlayProps, {
|
|
328
354
|
ref: overlayRef,
|
|
329
|
-
childrenProps: speakerProps
|
|
355
|
+
childrenProps: speakerProps,
|
|
356
|
+
followCursor: followCursor,
|
|
357
|
+
cursorPosition: cursorPosition
|
|
330
358
|
}), typeof speaker === 'function' ? function (props, ref) {
|
|
331
359
|
return speaker((0, _extends2.default)({}, props, {
|
|
332
360
|
onClose: handleClose
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { TypeAttributes } from '../@types/common';
|
|
2
|
+
import { CursorPosition, TypeAttributes } from '../@types/common';
|
|
3
3
|
export interface PositionChildProps {
|
|
4
4
|
className: string;
|
|
5
5
|
left?: number;
|
|
@@ -13,6 +13,8 @@ export interface PositionProps {
|
|
|
13
13
|
placement?: TypeAttributes.Placement;
|
|
14
14
|
preventOverflow?: boolean;
|
|
15
15
|
triggerTarget?: React.RefObject<any>;
|
|
16
|
+
followCursor?: boolean;
|
|
17
|
+
cursorPosition?: CursorPosition | null;
|
|
16
18
|
}
|
|
17
19
|
export interface PositionInstance {
|
|
18
20
|
updatePosition?: () => void;
|
package/cjs/Overlay/Position.js
CHANGED
|
@@ -41,7 +41,9 @@ var usePosition = function usePosition(props, ref) {
|
|
|
41
41
|
_props$containerPaddi = props.containerPadding,
|
|
42
42
|
containerPadding = _props$containerPaddi === void 0 ? 0 : _props$containerPaddi,
|
|
43
43
|
container = props.container,
|
|
44
|
-
triggerTarget = props.triggerTarget
|
|
44
|
+
triggerTarget = props.triggerTarget,
|
|
45
|
+
followCursor = props.followCursor,
|
|
46
|
+
cursorPosition = props.cursorPosition;
|
|
45
47
|
var containerRef = (0, _react.useRef)(null);
|
|
46
48
|
var lastTargetRef = (0, _react.useRef)(null);
|
|
47
49
|
var overlayResizeObserver = (0, _react.useRef)();
|
|
@@ -91,7 +93,7 @@ var usePosition = function usePosition(props, ref) {
|
|
|
91
93
|
|
|
92
94
|
var overlay = (0, _utils.getDOMNode)(ref.current);
|
|
93
95
|
var containerElement = (0, _getContainer.default)(typeof container === 'function' ? container() : container !== null && container !== void 0 ? container : null, (0, _ownerDocument.default)(ref.current).body);
|
|
94
|
-
var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement);
|
|
96
|
+
var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement, followCursor ? cursorPosition : undefined);
|
|
95
97
|
|
|
96
98
|
if (forceUpdateDOM && overlay) {
|
|
97
99
|
var _overlay$className, _overlay$className$ma;
|
|
@@ -113,7 +115,7 @@ var usePosition = function usePosition(props, ref) {
|
|
|
113
115
|
|
|
114
116
|
containerRef.current = containerElement;
|
|
115
117
|
lastTargetRef.current = targetElement;
|
|
116
|
-
}, [container, ref, triggerTarget, utils]);
|
|
118
|
+
}, [container, ref, triggerTarget, utils, followCursor, cursorPosition]);
|
|
117
119
|
(0, _react.useEffect)(function () {
|
|
118
120
|
updatePosition(false);
|
|
119
121
|
var overlay = (0, _utils.getDOMNode)(ref.current);
|
|
@@ -158,7 +160,9 @@ var usePosition = function usePosition(props, ref) {
|
|
|
158
160
|
|
|
159
161
|
var Position = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
160
162
|
var children = props.children,
|
|
161
|
-
className = props.className
|
|
163
|
+
className = props.className,
|
|
164
|
+
followCursor = props.followCursor,
|
|
165
|
+
cursorPosition = props.cursorPosition;
|
|
162
166
|
|
|
163
167
|
var childRef = _react.default.useRef(null);
|
|
164
168
|
|
|
@@ -180,6 +184,10 @@ var Position = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
180
184
|
updatePosition: updatePosition
|
|
181
185
|
};
|
|
182
186
|
});
|
|
187
|
+
(0, _react.useEffect)(function () {
|
|
188
|
+
if (!followCursor || !cursorPosition) return;
|
|
189
|
+
updatePosition();
|
|
190
|
+
}, [followCursor, cursorPosition, updatePosition]);
|
|
183
191
|
|
|
184
192
|
if (typeof children === 'function') {
|
|
185
193
|
var childProps = {
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import { TypeAttributes } from '../@types/common';
|
|
1
|
+
import { CursorPosition, TypeAttributes } from '../@types/common';
|
|
2
|
+
declare type Offset = {
|
|
3
|
+
top: number;
|
|
4
|
+
left: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
2
8
|
export interface PositionType {
|
|
3
9
|
positionLeft?: number;
|
|
4
10
|
positionTop?: number;
|
|
@@ -24,13 +30,14 @@ export interface Dimensions {
|
|
|
24
30
|
scrollY: number;
|
|
25
31
|
}
|
|
26
32
|
declare const _default: (props: UtilProps) => {
|
|
27
|
-
getPosition(target:
|
|
33
|
+
getPosition(target: HTMLElement, container: HTMLElement): {
|
|
28
34
|
top: number;
|
|
29
35
|
left: number;
|
|
30
36
|
height: number;
|
|
31
37
|
width: number;
|
|
32
|
-
} | null;
|
|
38
|
+
} | DOMRect | null;
|
|
39
|
+
getCursorOffsetPosition(target: HTMLElement, container: HTMLElement, cursorPosition: CursorPosition): Offset;
|
|
33
40
|
calcAutoPlacement(targetOffset: any, container: any, overlay: any): any;
|
|
34
|
-
calcOverlayPosition(overlayNode:
|
|
41
|
+
calcOverlayPosition(overlayNode: HTMLElement, target: HTMLElement, container: HTMLElement, cursorPosition?: CursorPosition | null): PositionType;
|
|
35
42
|
};
|
|
36
43
|
export default _default;
|