rsuite 5.13.0 → 5.15.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 +45 -0
- package/Dropdown/styles/index.less +8 -3
- package/Grid/styles/index.less +42 -10
- package/Sidenav/styles/index.less +45 -11
- 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/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/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/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/NavDropdownMenu.d.ts +12 -1
- package/cjs/Nav/NavDropdownMenu.js +9 -3
- package/cjs/Nav/test/Nav.test.d.ts +1 -0
- package/cjs/Nav/test/Nav.test.js +17 -0
- package/cjs/Navbar/NavbarDropdownMenu.d.ts +12 -1
- package/cjs/Navbar/NavbarDropdownMenu.js +9 -3
- 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/Popover/Popover.d.ts +2 -0
- package/cjs/Popover/Popover.js +6 -3
- package/cjs/Sidenav/SidenavDropdownToggle.js +2 -1
- package/cjs/Sidenav/SidenavItem.d.ts +4 -0
- package/cjs/Sidenav/SidenavItem.js +40 -31
- 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/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/dist/rsuite-rtl.css +741 -71
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +741 -71
- package/dist/rsuite.js +92 -103
- 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/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/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/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/NavDropdownMenu.d.ts +12 -1
- package/esm/Nav/NavDropdownMenu.js +8 -3
- package/esm/Nav/test/Nav.test.d.ts +1 -0
- package/esm/Nav/test/Nav.test.js +11 -0
- package/esm/Navbar/NavbarDropdownMenu.d.ts +12 -1
- package/esm/Navbar/NavbarDropdownMenu.js +8 -3
- 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/Popover/Popover.d.ts +2 -0
- package/esm/Popover/Popover.js +6 -3
- package/esm/Sidenav/SidenavDropdownToggle.js +2 -1
- package/esm/Sidenav/SidenavItem.d.ts +4 -0
- package/esm/Sidenav/SidenavItem.js +38 -31
- 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/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/package.json +1 -1
- package/styles/color-modes/dark.less +223 -181
- package/styles/color-modes/high-contrast.less +221 -179
- package/styles/color-modes/light.less +47 -5
- package/styles/colors/dark.less +91 -91
- package/styles/colors/high-contrast.less +91 -91
- package/styles/variables.less +35 -12
- package/styles/color-modes/common.less +0 -44
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
import _isUndefined from "lodash/isUndefined";
|
|
4
|
-
import React, { useRef, useEffect, useImperativeHandle, useCallback, useContext } from 'react';
|
|
4
|
+
import React, { useRef, useEffect, useImperativeHandle, useCallback, useContext, useState } from 'react';
|
|
5
5
|
import get from 'lodash/get';
|
|
6
6
|
import isNil from 'lodash/isNil';
|
|
7
7
|
import contains from 'dom-lib/contains';
|
|
@@ -73,12 +73,15 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
73
73
|
rootClose = _props$rootClose === void 0 ? true : _props$rootClose,
|
|
74
74
|
onClick = props.onClick,
|
|
75
75
|
onMouseOver = props.onMouseOver,
|
|
76
|
+
onMouseMove = props.onMouseMove,
|
|
76
77
|
onMouseOut = props.onMouseOut,
|
|
77
78
|
onContextMenu = props.onContextMenu,
|
|
78
79
|
onFocus = props.onFocus,
|
|
79
80
|
onBlur = props.onBlur,
|
|
80
81
|
onClose = props.onClose,
|
|
81
|
-
|
|
82
|
+
followCursor = props.followCursor,
|
|
83
|
+
onExited = props.onExited,
|
|
84
|
+
rest = _objectWithoutPropertiesLoose(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"]);
|
|
82
85
|
|
|
83
86
|
var _usePortal = usePortal({
|
|
84
87
|
container: container
|
|
@@ -90,7 +93,11 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
90
93
|
|
|
91
94
|
var _useControlled = useControlled(openProp, defaultOpen),
|
|
92
95
|
open = _useControlled[0],
|
|
93
|
-
setOpen = _useControlled[1];
|
|
96
|
+
setOpen = _useControlled[1];
|
|
97
|
+
|
|
98
|
+
var _useState = useState(null),
|
|
99
|
+
cursorPosition = _useState[0],
|
|
100
|
+
setCursorPosition = _useState[1]; // Delay the timer to close/open the overlay
|
|
94
101
|
// When the cursor moves from the trigger to the overlay, the overlay will be closed.
|
|
95
102
|
// In order to keep the overlay open, a timer is used to delay the closing.
|
|
96
103
|
|
|
@@ -138,6 +145,9 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
138
145
|
|
|
139
146
|
setOpen(false);
|
|
140
147
|
}, [delayClose, setOpen]);
|
|
148
|
+
var handleExited = useCallback(function () {
|
|
149
|
+
setCursorPosition(null);
|
|
150
|
+
}, []);
|
|
141
151
|
useImperativeHandle(ref, function () {
|
|
142
152
|
return {
|
|
143
153
|
get root() {
|
|
@@ -235,6 +245,16 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
235
245
|
handleCloseWhenLeave();
|
|
236
246
|
}
|
|
237
247
|
}, [handleCloseWhenLeave, trigger]);
|
|
248
|
+
var handledMoveOverlay = useCallback(function (event) {
|
|
249
|
+
setCursorPosition(function () {
|
|
250
|
+
return {
|
|
251
|
+
top: event.pageY,
|
|
252
|
+
left: event.pageX,
|
|
253
|
+
clientTop: event.clientX,
|
|
254
|
+
clientLeft: event.clientY
|
|
255
|
+
};
|
|
256
|
+
});
|
|
257
|
+
}, [open]);
|
|
238
258
|
var preventDefault = useCallback(function (event) {
|
|
239
259
|
event.preventDefault();
|
|
240
260
|
}, []);
|
|
@@ -244,7 +264,8 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
244
264
|
onMouseOver: onMouseOver,
|
|
245
265
|
onMouseOut: onMouseOut,
|
|
246
266
|
onFocus: onFocus,
|
|
247
|
-
onBlur: onBlur
|
|
267
|
+
onBlur: onBlur,
|
|
268
|
+
onMouseMove: onMouseMove
|
|
248
269
|
};
|
|
249
270
|
|
|
250
271
|
if (!disabled && !readOnly && !plaintext) {
|
|
@@ -282,6 +303,10 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
282
303
|
triggerEvents.onFocus = createChainedFunction(handleDelayedOpen, onFocus);
|
|
283
304
|
triggerEvents.onBlur = createChainedFunction(handleDelayedClose, onBlur);
|
|
284
305
|
}
|
|
306
|
+
|
|
307
|
+
if (trigger !== 'none') {
|
|
308
|
+
triggerEvents.onMouseMove = createChainedFunction(handledMoveOverlay, onMouseMove);
|
|
309
|
+
}
|
|
285
310
|
}
|
|
286
311
|
|
|
287
312
|
var renderOverlay = function renderOverlay() {
|
|
@@ -289,6 +314,7 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
289
314
|
rootClose: rootClose,
|
|
290
315
|
triggerTarget: triggerRef,
|
|
291
316
|
onClose: trigger !== 'none' ? createChainedFunction(handleClose, onClose) : undefined,
|
|
317
|
+
onExited: createChainedFunction(followCursor ? handleExited : undefined, onExited),
|
|
292
318
|
placement: placement,
|
|
293
319
|
container: container,
|
|
294
320
|
open: open
|
|
@@ -307,7 +333,9 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
307
333
|
|
|
308
334
|
return /*#__PURE__*/React.createElement(Overlay, _extends({}, overlayProps, {
|
|
309
335
|
ref: overlayRef,
|
|
310
|
-
childrenProps: speakerProps
|
|
336
|
+
childrenProps: speakerProps,
|
|
337
|
+
followCursor: followCursor,
|
|
338
|
+
cursorPosition: cursorPosition
|
|
311
339
|
}), typeof speaker === 'function' ? function (props, ref) {
|
|
312
340
|
return speaker(_extends({}, props, {
|
|
313
341
|
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/esm/Overlay/Position.js
CHANGED
|
@@ -21,7 +21,9 @@ var usePosition = function usePosition(props, ref) {
|
|
|
21
21
|
_props$containerPaddi = props.containerPadding,
|
|
22
22
|
containerPadding = _props$containerPaddi === void 0 ? 0 : _props$containerPaddi,
|
|
23
23
|
container = props.container,
|
|
24
|
-
triggerTarget = props.triggerTarget
|
|
24
|
+
triggerTarget = props.triggerTarget,
|
|
25
|
+
followCursor = props.followCursor,
|
|
26
|
+
cursorPosition = props.cursorPosition;
|
|
25
27
|
var containerRef = useRef(null);
|
|
26
28
|
var lastTargetRef = useRef(null);
|
|
27
29
|
var overlayResizeObserver = useRef();
|
|
@@ -71,7 +73,7 @@ var usePosition = function usePosition(props, ref) {
|
|
|
71
73
|
|
|
72
74
|
var overlay = getDOMNode(ref.current);
|
|
73
75
|
var containerElement = getContainer(typeof container === 'function' ? container() : container !== null && container !== void 0 ? container : null, ownerDocument(ref.current).body);
|
|
74
|
-
var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement);
|
|
76
|
+
var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement, followCursor ? cursorPosition : undefined);
|
|
75
77
|
|
|
76
78
|
if (forceUpdateDOM && overlay) {
|
|
77
79
|
var _overlay$className, _overlay$className$ma;
|
|
@@ -93,7 +95,7 @@ var usePosition = function usePosition(props, ref) {
|
|
|
93
95
|
|
|
94
96
|
containerRef.current = containerElement;
|
|
95
97
|
lastTargetRef.current = targetElement;
|
|
96
|
-
}, [container, ref, triggerTarget, utils]);
|
|
98
|
+
}, [container, ref, triggerTarget, utils, followCursor, cursorPosition]);
|
|
97
99
|
useEffect(function () {
|
|
98
100
|
updatePosition(false);
|
|
99
101
|
var overlay = getDOMNode(ref.current);
|
|
@@ -138,7 +140,9 @@ var usePosition = function usePosition(props, ref) {
|
|
|
138
140
|
|
|
139
141
|
var Position = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
140
142
|
var children = props.children,
|
|
141
|
-
className = props.className
|
|
143
|
+
className = props.className,
|
|
144
|
+
followCursor = props.followCursor,
|
|
145
|
+
cursorPosition = props.cursorPosition;
|
|
142
146
|
var childRef = React.useRef(null);
|
|
143
147
|
|
|
144
148
|
var _usePosition = usePosition(props, childRef),
|
|
@@ -159,6 +163,10 @@ var Position = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
159
163
|
updatePosition: updatePosition
|
|
160
164
|
};
|
|
161
165
|
});
|
|
166
|
+
useEffect(function () {
|
|
167
|
+
if (!followCursor || !cursorPosition) return;
|
|
168
|
+
updatePosition();
|
|
169
|
+
}, [followCursor, cursorPosition, updatePosition]);
|
|
162
170
|
|
|
163
171
|
if (typeof children === 'function') {
|
|
164
172
|
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;
|
|
@@ -6,6 +6,8 @@ import getOffset from 'dom-lib/getOffset';
|
|
|
6
6
|
import scrollTop from 'dom-lib/scrollTop';
|
|
7
7
|
import scrollLeft from 'dom-lib/scrollLeft';
|
|
8
8
|
import _getPosition from 'dom-lib/getPosition';
|
|
9
|
+
import getStyle from 'dom-lib/getStyle';
|
|
10
|
+
import nodeName from 'dom-lib/nodeName';
|
|
9
11
|
export var AutoPlacement = {
|
|
10
12
|
left: 'Start',
|
|
11
13
|
right: 'End',
|
|
@@ -130,6 +132,48 @@ export default (function (props) {
|
|
|
130
132
|
var offset = container.tagName === 'BODY' ? getOffset(target) : _getPosition(target, container, false);
|
|
131
133
|
return offset;
|
|
132
134
|
},
|
|
135
|
+
getCursorOffsetPosition: function getCursorOffsetPosition(target, container, cursorPosition) {
|
|
136
|
+
var left = cursorPosition.left,
|
|
137
|
+
top = cursorPosition.top,
|
|
138
|
+
clientLeft = cursorPosition.clientLeft,
|
|
139
|
+
clientTop = cursorPosition.clientTop;
|
|
140
|
+
var offset = {
|
|
141
|
+
left: left,
|
|
142
|
+
top: top,
|
|
143
|
+
width: 10,
|
|
144
|
+
height: 10
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
if (getStyle(target, 'position') === 'fixed') {
|
|
148
|
+
offset.left = clientLeft;
|
|
149
|
+
offset.top = clientTop;
|
|
150
|
+
return offset;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (container.tagName === 'BODY') {
|
|
154
|
+
return offset;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
var containerOffset = {
|
|
158
|
+
top: 0,
|
|
159
|
+
left: 0
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
if (nodeName(container) !== 'html') {
|
|
163
|
+
var nextParentOffset = getOffset(container);
|
|
164
|
+
|
|
165
|
+
if (nextParentOffset) {
|
|
166
|
+
containerOffset.top = nextParentOffset.top;
|
|
167
|
+
containerOffset.left = nextParentOffset.left;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
containerOffset.top += parseInt(getStyle(container, 'borderTopWidth'), 10) - scrollTop(container) || 0;
|
|
172
|
+
containerOffset.left += parseInt(getStyle(container, 'borderLeftWidth'), 10) - scrollLeft(container) || 0;
|
|
173
|
+
offset.left = left - containerOffset.left;
|
|
174
|
+
offset.top = top - containerOffset.top;
|
|
175
|
+
return offset;
|
|
176
|
+
},
|
|
133
177
|
calcAutoPlacement: function calcAutoPlacement(targetOffset, container, overlay) {
|
|
134
178
|
var _getContainerDimensio3 = getContainerDimensions(container),
|
|
135
179
|
width = _getContainerDimensio3.width,
|
|
@@ -194,8 +238,8 @@ export default (function (props) {
|
|
|
194
238
|
return "" + direction.key + AutoPlacement[align.key];
|
|
195
239
|
},
|
|
196
240
|
// Calculate the position of the overlay
|
|
197
|
-
calcOverlayPosition: function calcOverlayPosition(overlayNode, target, container) {
|
|
198
|
-
var childOffset = this.getPosition(target, container);
|
|
241
|
+
calcOverlayPosition: function calcOverlayPosition(overlayNode, target, container, cursorPosition) {
|
|
242
|
+
var childOffset = cursorPosition ? this.getCursorOffsetPosition(target, container, cursorPosition) : this.getPosition(target, container);
|
|
199
243
|
|
|
200
244
|
var _ref2 = getOffset(overlayNode),
|
|
201
245
|
overlayHeight = _ref2.height,
|
package/esm/Panel/Panel.js
CHANGED
|
@@ -40,23 +40,26 @@ var Panel = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
40
40
|
prefix = _useClassNames.prefix,
|
|
41
41
|
withClassPrefix = _useClassNames.withClassPrefix;
|
|
42
42
|
|
|
43
|
-
var _useControlled = useControlled(expandedProp, defaultExpanded),
|
|
44
|
-
expandedState = _useControlled[0],
|
|
45
|
-
setExpanded = _useControlled[1];
|
|
46
|
-
|
|
47
43
|
var _ref = useContext(PanelGroupContext) || {},
|
|
48
44
|
accordion = _ref.accordion,
|
|
49
45
|
activeKey = _ref.activeKey,
|
|
50
46
|
onGroupSelect = _ref.onGroupSelect;
|
|
51
47
|
|
|
48
|
+
var _useControlled = useControlled(expandedProp, defaultExpanded || typeof activeKey !== 'undefined' && activeKey === eventKey),
|
|
49
|
+
expandedState = _useControlled[0],
|
|
50
|
+
setExpanded = _useControlled[1];
|
|
51
|
+
|
|
52
52
|
var collapsible = collapsibleProp;
|
|
53
53
|
var headerRole = headerRoleProp;
|
|
54
54
|
var expanded = expandedState;
|
|
55
55
|
|
|
56
56
|
if (accordion) {
|
|
57
57
|
collapsible = true;
|
|
58
|
-
headerRole = 'button';
|
|
59
|
-
|
|
58
|
+
headerRole = 'button'; // Collapses all inactive panels.
|
|
59
|
+
|
|
60
|
+
if (typeof activeKey !== 'undefined' && activeKey !== eventKey) {
|
|
61
|
+
expanded = false;
|
|
62
|
+
}
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
var handleSelect = useCallback(function (event) {
|
package/esm/Picker/utils.d.ts
CHANGED
|
@@ -101,7 +101,7 @@ export declare function useSearch(props: SearchProps): {
|
|
|
101
101
|
filteredData: import("../CheckTreePicker/utils").TreeNodeType[];
|
|
102
102
|
updateFilteredData: (nextData: ItemDataType[]) => void;
|
|
103
103
|
setSearchKeyword: React.Dispatch<React.SetStateAction<string>>;
|
|
104
|
-
checkShouldDisplay: (item: ItemDataType, keyword?: string
|
|
104
|
+
checkShouldDisplay: (item: ItemDataType, keyword?: string) => boolean;
|
|
105
105
|
handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
|
|
106
106
|
};
|
|
107
107
|
interface PickerDependentParameters {
|
package/esm/Popover/Popover.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export interface PopoverProps extends WithAsProps {
|
|
|
7
7
|
visible?: boolean;
|
|
8
8
|
/** The content full the container */
|
|
9
9
|
full?: boolean;
|
|
10
|
+
/** Whether show the arrow indicator */
|
|
11
|
+
arrow?: boolean;
|
|
10
12
|
}
|
|
11
13
|
declare const Popover: RsRefForwardingComponent<'div', PopoverProps>;
|
|
12
14
|
export default Popover;
|
package/esm/Popover/Popover.js
CHANGED
|
@@ -18,7 +18,9 @@ var Popover = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
18
18
|
visible = props.visible,
|
|
19
19
|
className = props.className,
|
|
20
20
|
full = props.full,
|
|
21
|
-
|
|
21
|
+
_props$arrow = props.arrow,
|
|
22
|
+
arrow = _props$arrow === void 0 ? true : _props$arrow,
|
|
23
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "title", "children", "style", "visible", "className", "full", "arrow"]);
|
|
22
24
|
|
|
23
25
|
var _useClassNames = useClassNames(classPrefix),
|
|
24
26
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
@@ -40,7 +42,7 @@ var Popover = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
40
42
|
ref: ref,
|
|
41
43
|
className: classes,
|
|
42
44
|
style: styles
|
|
43
|
-
}), /*#__PURE__*/React.createElement("div", {
|
|
45
|
+
}), arrow && /*#__PURE__*/React.createElement("div", {
|
|
44
46
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["arrow"]))),
|
|
45
47
|
"aria-hidden": true
|
|
46
48
|
}), title && /*#__PURE__*/React.createElement("h3", {
|
|
@@ -58,6 +60,7 @@ Popover.propTypes = {
|
|
|
58
60
|
style: PropTypes.object,
|
|
59
61
|
visible: PropTypes.bool,
|
|
60
62
|
className: PropTypes.string,
|
|
61
|
-
full: PropTypes.bool
|
|
63
|
+
full: PropTypes.bool,
|
|
64
|
+
arrow: PropTypes.bool
|
|
62
65
|
};
|
|
63
66
|
export default Popover;
|
|
@@ -36,7 +36,8 @@ var SidenavDropdownToggle = /*#__PURE__*/React.forwardRef(function (props, ref)
|
|
|
36
36
|
}));
|
|
37
37
|
var toggle = /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
38
38
|
ref: ref,
|
|
39
|
-
className: classes
|
|
39
|
+
className: classes,
|
|
40
|
+
tooltip: children
|
|
40
41
|
}), children, !noCaret && /*#__PURE__*/React.createElement(ArrowDownLineIcon, {
|
|
41
42
|
className: prefix('caret')
|
|
42
43
|
}));
|
|
@@ -14,6 +14,10 @@ export interface SidenavItemProps<T = any> extends WithAsProps, Omit<React.HTMLA
|
|
|
14
14
|
onSelect?: (eventKey: T, event: React.MouseEvent) => void;
|
|
15
15
|
divider?: boolean;
|
|
16
16
|
panel?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Content of the tooltip
|
|
19
|
+
*/
|
|
20
|
+
tooltip?: React.ReactNode;
|
|
17
21
|
}
|
|
18
22
|
/**
|
|
19
23
|
* @private
|
|
@@ -3,13 +3,15 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
import React, { useContext, useCallback } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import isNil from 'lodash/isNil';
|
|
6
|
-
import { useClassNames, shallowEqual, mergeRefs,
|
|
6
|
+
import { useClassNames, shallowEqual, mergeRefs, createChainedFunction } from '../utils';
|
|
7
7
|
import Ripple from '../Ripple';
|
|
8
8
|
import SafeAnchor from '../SafeAnchor';
|
|
9
9
|
import NavContext from '../Nav/NavContext';
|
|
10
10
|
import MenuItem from '../Menu/MenuItem';
|
|
11
11
|
import omit from 'lodash/omit';
|
|
12
12
|
import { SidenavContext } from './Sidenav';
|
|
13
|
+
import Whisper from '../Whisper';
|
|
14
|
+
import Tooltip from '../Tooltip';
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* @private
|
|
@@ -24,7 +26,7 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
24
26
|
var _props$as = props.as,
|
|
25
27
|
Component = _props$as === void 0 ? SafeAnchor : _props$as,
|
|
26
28
|
activeProp = props.active,
|
|
27
|
-
|
|
29
|
+
children = props.children,
|
|
28
30
|
className = props.className,
|
|
29
31
|
disabled = props.disabled,
|
|
30
32
|
_props$classPrefix = props.classPrefix,
|
|
@@ -36,7 +38,9 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
36
38
|
onSelect = props.onSelect,
|
|
37
39
|
divider = props.divider,
|
|
38
40
|
panel = props.panel,
|
|
39
|
-
|
|
41
|
+
_props$tooltip = props.tooltip,
|
|
42
|
+
tooltip = _props$tooltip === void 0 ? children : _props$tooltip,
|
|
43
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "active", "children", "className", "disabled", "classPrefix", "icon", "eventKey", "style", "onClick", "onSelect", "divider", "panel", "tooltip"]);
|
|
40
44
|
|
|
41
45
|
var _ref = useContext(NavContext),
|
|
42
46
|
activeKey = _ref.activeKey,
|
|
@@ -56,34 +60,37 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
56
60
|
}, [disabled, onSelect, onSelectFromNav, eventKey, onClick]);
|
|
57
61
|
|
|
58
62
|
if (!sidenav.expanded) {
|
|
59
|
-
return /*#__PURE__*/React.createElement(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}, function (
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
return /*#__PURE__*/React.createElement(Whisper, {
|
|
64
|
+
trigger: "hover",
|
|
65
|
+
speaker: /*#__PURE__*/React.createElement(Tooltip, null, tooltip),
|
|
66
|
+
placement: "right"
|
|
67
|
+
}, function (triggerProps, triggerRef) {
|
|
68
|
+
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
69
|
+
selected: selected,
|
|
70
|
+
disabled: disabled,
|
|
71
|
+
onActivate: handleClick
|
|
72
|
+
}, function (_ref2, menuitemRef) {
|
|
73
|
+
var selected = _ref2.selected,
|
|
74
|
+
active = _ref2.active,
|
|
75
|
+
menuitem = _objectWithoutPropertiesLoose(_ref2, ["selected", "active"]);
|
|
67
76
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
77
|
+
var classes = merge(className, withClassPrefix({
|
|
78
|
+
focus: active,
|
|
79
|
+
active: selected,
|
|
80
|
+
disabled: disabled
|
|
81
|
+
})); // Show tooltip when inside a collapse <Sidenav>
|
|
73
82
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
},
|
|
85
|
-
message: _children,
|
|
86
|
-
placement: 'right'
|
|
83
|
+
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
84
|
+
ref: mergeRefs(mergeRefs(ref, menuitemRef), triggerRef),
|
|
85
|
+
disabled: Component === SafeAnchor ? disabled : undefined,
|
|
86
|
+
className: classes,
|
|
87
|
+
"data-event-key": eventKey
|
|
88
|
+
}, omit(rest, ['divider', 'panel']), triggerProps, menuitem, {
|
|
89
|
+
onMouseOver: createChainedFunction(menuitem.onMouseOver, triggerProps.onMouseOver),
|
|
90
|
+
onMouseOut: createChainedFunction(menuitem.onMouseOut, triggerProps.onMouseOut)
|
|
91
|
+
}), icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
92
|
+
className: prefix('icon')
|
|
93
|
+
}), children, /*#__PURE__*/React.createElement(Ripple, null));
|
|
87
94
|
});
|
|
88
95
|
});
|
|
89
96
|
}
|
|
@@ -103,7 +110,7 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
103
110
|
role: "none presentation",
|
|
104
111
|
style: style,
|
|
105
112
|
className: merge(className, prefix('panel'))
|
|
106
|
-
}, rest),
|
|
113
|
+
}, rest), children);
|
|
107
114
|
}
|
|
108
115
|
|
|
109
116
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
@@ -118,7 +125,7 @@ var SidenavItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
118
125
|
"data-event-key": eventKey
|
|
119
126
|
}, rest), icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
120
127
|
className: prefix('icon')
|
|
121
|
-
}),
|
|
128
|
+
}), children, /*#__PURE__*/React.createElement(Ripple, null));
|
|
122
129
|
});
|
|
123
130
|
SidenavItem.displayName = 'Sidenav.Item';
|
|
124
131
|
SidenavItem.propTypes = {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
|
|
3
3
|
export interface SidenavToggleProps extends WithAsProps {
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Expand then nav
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Use <Sidenav expanded> instead.
|
|
8
|
+
*/
|
|
5
9
|
expanded?: boolean;
|
|
6
10
|
/** Callback function for menu state switching */
|
|
7
11
|
onToggle?: (expanded: boolean, event: React.MouseEvent) => void;
|
|
@@ -1,29 +1,41 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useContext } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import IconButton from '../IconButton';
|
|
6
6
|
import { useClassNames } from '../utils';
|
|
7
7
|
import AngleLeft from '@rsuite/icons/legacy/AngleLeft';
|
|
8
8
|
import AngleRight from '@rsuite/icons/legacy/AngleRight';
|
|
9
|
+
import deprecatePropType from '../utils/deprecatePropType';
|
|
10
|
+
import { SidenavContext } from './Sidenav';
|
|
9
11
|
var SidenavToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
12
|
+
var sidenav = useContext(SidenavContext);
|
|
13
|
+
|
|
14
|
+
if (!sidenav) {
|
|
15
|
+
throw new Error('<Sidenav.Toggle> must be rendered within a <Sidenav>');
|
|
16
|
+
}
|
|
17
|
+
|
|
10
18
|
var _props$as = props.as,
|
|
11
19
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
12
|
-
|
|
20
|
+
DEPRECATED_expanded = props.expanded,
|
|
13
21
|
className = props.className,
|
|
14
22
|
_props$classPrefix = props.classPrefix,
|
|
15
23
|
classPrefix = _props$classPrefix === void 0 ? 'sidenav-toggle' : _props$classPrefix,
|
|
16
24
|
onToggle = props.onToggle,
|
|
17
|
-
rest = _objectWithoutPropertiesLoose(props, ["as", "expanded", "className", "classPrefix", "onToggle"]);
|
|
25
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "expanded", "className", "classPrefix", "onToggle"]); // if `expanded` prop is provided, it takes priority
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
var expanded = DEPRECATED_expanded !== null && DEPRECATED_expanded !== void 0 ? DEPRECATED_expanded : sidenav.expanded;
|
|
18
29
|
|
|
19
30
|
var _useClassNames = useClassNames(classPrefix),
|
|
20
31
|
merge = _useClassNames.merge,
|
|
21
|
-
withClassPrefix = _useClassNames.withClassPrefix
|
|
32
|
+
withClassPrefix = _useClassNames.withClassPrefix,
|
|
33
|
+
prefix = _useClassNames.prefix;
|
|
22
34
|
|
|
23
35
|
var classes = merge(className, withClassPrefix({
|
|
24
36
|
collapsed: !expanded
|
|
25
37
|
}));
|
|
26
|
-
var Icon = expanded ?
|
|
38
|
+
var Icon = expanded ? AngleLeft : AngleRight;
|
|
27
39
|
|
|
28
40
|
var handleToggle = function handleToggle(event) {
|
|
29
41
|
onToggle === null || onToggle === void 0 ? void 0 : onToggle(!expanded, event);
|
|
@@ -33,16 +45,17 @@ var SidenavToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
33
45
|
ref: ref,
|
|
34
46
|
className: classes
|
|
35
47
|
}), /*#__PURE__*/React.createElement(IconButton, {
|
|
36
|
-
appearance: "default",
|
|
37
48
|
icon: /*#__PURE__*/React.createElement(Icon, null),
|
|
38
|
-
|
|
49
|
+
className: prefix('button'),
|
|
50
|
+
onClick: handleToggle,
|
|
51
|
+
"aria-label": expanded ? 'Collapse' : 'Expand'
|
|
39
52
|
}));
|
|
40
53
|
});
|
|
41
|
-
SidenavToggle.displayName = '
|
|
54
|
+
SidenavToggle.displayName = 'Sidenav.Toggle';
|
|
42
55
|
SidenavToggle.propTypes = {
|
|
43
56
|
classPrefix: PropTypes.string,
|
|
44
57
|
className: PropTypes.string,
|
|
45
|
-
expanded: PropTypes.bool,
|
|
58
|
+
expanded: deprecatePropType(PropTypes.bool, 'Use <Sidenav expanded> instead.'),
|
|
46
59
|
onToggle: PropTypes.func
|
|
47
60
|
};
|
|
48
61
|
export default SidenavToggle;
|
package/esm/Toggle/Toggle.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { WithAsProps, TypeAttributes, RsRefForwardingComponent } from '../@types/common';
|
|
3
3
|
import { ToggleLocale } from '../locales';
|
|
4
4
|
export interface ToggleProps extends WithAsProps {
|
|
5
|
-
/**
|
|
5
|
+
/** Whether to disabled toggle */
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
/** Render the control as plain text */
|
|
8
8
|
plaintext?: boolean;
|
package/esm/Tooltip/Tooltip.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types
|
|
|
3
3
|
export interface TooltipProps extends WithAsProps {
|
|
4
4
|
/** Dispaly placement */
|
|
5
5
|
placement?: TypeAttributes.Placement;
|
|
6
|
-
/**
|
|
6
|
+
/** Whether visible */
|
|
7
7
|
visible?: boolean;
|
|
8
8
|
/** Primary content */
|
|
9
9
|
children?: React.ReactNode;
|
|
10
|
+
/** Whether show the arrow indicator */
|
|
11
|
+
arrow?: boolean;
|
|
10
12
|
}
|
|
11
13
|
declare const Tooltip: RsRefForwardingComponent<'div', TooltipProps>;
|
|
12
14
|
export default Tooltip;
|
package/esm/Tooltip/Tooltip.js
CHANGED
|
@@ -12,13 +12,17 @@ var Tooltip = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
12
12
|
children = props.children,
|
|
13
13
|
style = props.style,
|
|
14
14
|
visible = props.visible,
|
|
15
|
-
|
|
15
|
+
_props$arrow = props.arrow,
|
|
16
|
+
arrow = _props$arrow === void 0 ? true : _props$arrow,
|
|
17
|
+
rest = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "children", "style", "visible", "arrow"]);
|
|
16
18
|
|
|
17
19
|
var _useClassNames = useClassNames(classPrefix),
|
|
18
20
|
merge = _useClassNames.merge,
|
|
19
21
|
withClassPrefix = _useClassNames.withClassPrefix;
|
|
20
22
|
|
|
21
|
-
var classes = merge(className, withClassPrefix(
|
|
23
|
+
var classes = merge(className, withClassPrefix({
|
|
24
|
+
arrow: arrow
|
|
25
|
+
}));
|
|
22
26
|
|
|
23
27
|
var styles = _extends({
|
|
24
28
|
opacity: visible ? 1 : undefined
|
|
@@ -38,6 +42,7 @@ Tooltip.propTypes = {
|
|
|
38
42
|
classPrefix: PropTypes.string,
|
|
39
43
|
className: PropTypes.string,
|
|
40
44
|
style: PropTypes.object,
|
|
41
|
-
children: PropTypes.node
|
|
45
|
+
children: PropTypes.node,
|
|
46
|
+
arrow: PropTypes.bool
|
|
42
47
|
};
|
|
43
48
|
export default Tooltip;
|
package/esm/Whisper/Whisper.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { OverlayTriggerInstance } from '../Overlay/OverlayTrigger';
|
|
2
3
|
import { OverlayTriggerProps } from '../Overlay/OverlayTrigger';
|
|
3
4
|
export declare type WhisperProps = OverlayTriggerProps;
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
close: (delay?: number) => void;
|
|
7
|
-
}
|
|
8
|
-
declare const Whisper: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<unknown>>;
|
|
5
|
+
export declare type WhisperInstance = OverlayTriggerInstance;
|
|
6
|
+
declare const Whisper: React.ForwardRefExoticComponent<OverlayTriggerProps & React.RefAttributes<OverlayTriggerInstance>>;
|
|
9
7
|
export default Whisper;
|