rsuite 5.4.0 → 5.4.4
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 -5
- package/CHANGELOG.md +38 -0
- package/CheckTreePicker/styles/index.less +1 -1
- package/Drawer/styles/index.less +3 -0
- package/Dropdown/styles/index.less +6 -22
- package/Dropdown/styles/mixin.less +0 -2
- package/Modal/styles/index.less +23 -22
- package/Navbar/styles/index.less +20 -8
- package/README.md +1 -1
- package/Sidenav/styles/index.less +8 -2
- package/cjs/Affix/Affix.js +3 -1
- package/cjs/AvatarGroup/AvatarGroup.js +9 -4
- package/cjs/ButtonGroup/ButtonGroup.js +9 -4
- package/cjs/Calendar/Calendar.js +21 -20
- package/cjs/Calendar/Header.js +1 -3
- package/cjs/Calendar/Table.js +1 -1
- package/cjs/Calendar/TableRow.js +12 -7
- package/cjs/Calendar/View.js +9 -5
- package/cjs/Calendar/useCalendarDate.d.ts +1 -1
- package/cjs/Calendar/useCalendarDate.js +1 -1
- package/cjs/Carousel/Carousel.js +7 -1
- package/cjs/Cascader/Cascader.js +13 -2
- package/cjs/CheckPicker/CheckPicker.d.ts +5 -2
- package/cjs/CheckPicker/test/CheckPicker.test.js +8 -0
- package/cjs/CheckTree/index.js +9 -4
- package/cjs/CheckTreePicker/CheckTreePicker.js +1 -1
- package/cjs/CheckTreePicker/utils.js +1 -1
- package/cjs/Container/Container.js +6 -3
- package/cjs/CustomProvider/CustomProvider.d.ts +14 -14
- package/cjs/CustomProvider/CustomProvider.js +4 -3
- package/cjs/DatePicker/DatePicker.d.ts +1 -1
- package/cjs/DatePicker/DatePicker.js +5 -5
- package/cjs/DateRangePicker/DateRangePicker.js +3 -3
- package/cjs/Disclosure/Disclosure.d.ts +8 -5
- package/cjs/Disclosure/Disclosure.js +51 -11
- package/cjs/Disclosure/DisclosureButton.d.ts +2 -2
- package/cjs/Disclosure/DisclosureContext.d.ts +6 -1
- package/cjs/Dropdown/Dropdown.js +1 -1
- package/cjs/Dropdown/DropdownItem.js +9 -10
- package/cjs/Dropdown/DropdownMenu.js +78 -26
- package/cjs/FormGroup/FormGroup.js +9 -4
- package/cjs/Menu/MenuItem.js +1 -1
- package/cjs/Modal/Modal.js +34 -22
- package/cjs/Modal/utils.js +16 -8
- package/cjs/MultiCascader/MultiCascader.js +6 -3
- package/cjs/Nav/Nav.js +10 -15
- package/cjs/Nav/NavItem.js +3 -1
- package/cjs/Navbar/index.d.ts +1 -0
- package/cjs/Navbar/index.js +4 -3
- package/cjs/Overlay/Modal.js +18 -32
- package/cjs/PanelGroup/PanelGroup.js +8 -5
- package/cjs/Picker/DropdownMenu.js +5 -0
- package/cjs/Picker/PickerToggle.js +2 -4
- package/cjs/SelectPicker/SelectPicker.d.ts +5 -2
- package/cjs/SelectPicker/test/SelectPicker.test.js +8 -0
- package/cjs/Toggle/Toggle.js +2 -1
- package/cjs/Tree/Tree.js +9 -4
- package/cjs/Uploader/UploadFileItem.d.ts +1 -1
- package/cjs/Uploader/UploadFileItem.js +1 -1
- package/cjs/Uploader/Uploader.js +3 -0
- package/cjs/utils/index.d.ts +1 -0
- package/cjs/utils/index.js +7 -2
- package/cjs/utils/propTypeChecker.d.ts +2 -6
- package/cjs/utils/propTypeChecker.js +7 -59
- package/cjs/utils/useClickOutside.js +6 -2
- package/cjs/utils/useMount.d.ts +2 -0
- package/cjs/utils/useMount.js +19 -0
- package/dist/rsuite-rtl.css +336 -180
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +336 -180
- package/dist/rsuite.js +67 -45
- 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/Affix/Affix.js +4 -2
- package/esm/AvatarGroup/AvatarGroup.js +7 -4
- package/esm/ButtonGroup/ButtonGroup.js +7 -4
- package/esm/Calendar/Calendar.js +22 -21
- package/esm/Calendar/Header.js +1 -3
- package/esm/Calendar/Table.js +1 -1
- package/esm/Calendar/TableRow.js +13 -8
- package/esm/Calendar/View.js +10 -6
- package/esm/Calendar/useCalendarDate.d.ts +1 -1
- package/esm/Calendar/useCalendarDate.js +1 -1
- package/esm/Carousel/Carousel.js +9 -3
- package/esm/Cascader/Cascader.js +13 -2
- package/esm/CheckPicker/CheckPicker.d.ts +5 -2
- package/esm/CheckPicker/test/CheckPicker.test.js +7 -0
- package/esm/CheckTree/index.js +7 -4
- package/esm/CheckTreePicker/CheckTreePicker.js +1 -1
- package/esm/CheckTreePicker/utils.js +1 -1
- package/esm/Container/Container.js +7 -4
- package/esm/CustomProvider/CustomProvider.d.ts +14 -14
- package/esm/CustomProvider/CustomProvider.js +2 -2
- package/esm/DatePicker/DatePicker.d.ts +1 -1
- package/esm/DatePicker/DatePicker.js +5 -4
- package/esm/DateRangePicker/DateRangePicker.js +3 -3
- package/esm/Disclosure/Disclosure.d.ts +8 -5
- package/esm/Disclosure/Disclosure.js +52 -13
- package/esm/Disclosure/DisclosureButton.d.ts +2 -2
- package/esm/Disclosure/DisclosureContext.d.ts +6 -1
- package/esm/Dropdown/Dropdown.js +1 -1
- package/esm/Dropdown/DropdownItem.js +9 -9
- package/esm/Dropdown/DropdownMenu.js +79 -27
- package/esm/FormGroup/FormGroup.js +7 -4
- package/esm/Menu/MenuItem.js +1 -1
- package/esm/Modal/Modal.js +36 -24
- package/esm/Modal/utils.js +16 -8
- package/esm/MultiCascader/MultiCascader.js +6 -3
- package/esm/Nav/Nav.js +11 -16
- package/esm/Nav/NavItem.js +3 -1
- package/esm/Navbar/index.d.ts +1 -0
- package/esm/Navbar/index.js +1 -0
- package/esm/Overlay/Modal.js +19 -33
- package/esm/PanelGroup/PanelGroup.js +9 -6
- package/esm/Picker/DropdownMenu.js +5 -0
- package/esm/Picker/PickerToggle.js +2 -4
- package/esm/SelectPicker/SelectPicker.d.ts +5 -2
- package/esm/SelectPicker/test/SelectPicker.test.js +7 -0
- package/esm/Toggle/Toggle.js +2 -1
- package/esm/Tree/Tree.js +7 -4
- package/esm/Uploader/UploadFileItem.d.ts +1 -1
- package/esm/Uploader/UploadFileItem.js +1 -1
- package/esm/Uploader/Uploader.js +4 -1
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +2 -1
- package/esm/utils/propTypeChecker.d.ts +2 -6
- package/esm/utils/propTypeChecker.js +7 -59
- package/esm/utils/useClickOutside.js +6 -2
- package/esm/utils/useMount.d.ts +2 -0
- package/esm/utils/useMount.js +13 -0
- package/package.json +2 -2
- package/styles/color-modes/dark.less +1 -0
- package/styles/color-modes/high-contrast.less +1 -0
- package/styles/color-modes/light.less +1 -0
- package/styles/mixins/utilities.less +17 -5
|
@@ -185,7 +185,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
return isPlaintext ? '' : placeholder || rangeFormatStr;
|
|
188
|
-
}, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue
|
|
188
|
+
}, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue]);
|
|
189
189
|
/**
|
|
190
190
|
* preset hover range
|
|
191
191
|
*/
|
|
@@ -237,7 +237,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
237
237
|
if (closeOverlay !== false) {
|
|
238
238
|
handleCloseDropdown();
|
|
239
239
|
}
|
|
240
|
-
}, [formatStr, handleCloseDropdown, onChange,
|
|
240
|
+
}, [formatStr, handleCloseDropdown, onChange, setValue, value]);
|
|
241
241
|
/**
|
|
242
242
|
* Select the date range. If oneTap is not set, you need to click twice to select the start time and end time.
|
|
243
243
|
* The MouseMove event is called between the first click and the second click to update the selection state.
|
|
@@ -267,7 +267,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
267
267
|
} else if (!isNil(nextHoverDateRange)) {
|
|
268
268
|
setHoverDateRange(nextHoverDateRange);
|
|
269
269
|
}
|
|
270
|
-
}, [getHoverRangeValue
|
|
270
|
+
}, [getHoverRangeValue]);
|
|
271
271
|
/**
|
|
272
272
|
* Callback for selecting a date cell in the calendar grid
|
|
273
273
|
*/
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import DisclosureButton from './DisclosureButton';
|
|
3
3
|
import DisclosureContent from './DisclosureContent';
|
|
4
|
-
export
|
|
4
|
+
export declare type DisclosureTrigger = 'click' | 'mouseover';
|
|
5
|
+
export interface DisclosureRenderProps extends Pick<React.HTMLAttributes<HTMLElement>, 'onMouseOver' | 'onMouseOut'> {
|
|
5
6
|
open: boolean;
|
|
6
7
|
}
|
|
7
8
|
export interface DisclosureProps {
|
|
@@ -13,10 +14,12 @@ export interface DisclosureProps {
|
|
|
13
14
|
hideOnClickOutside?: boolean;
|
|
14
15
|
/** Callback when disclosure button is being activated to update the open state */
|
|
15
16
|
onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
|
|
17
|
+
/** What mouse events should disclosure reacts to */
|
|
18
|
+
trigger?: DisclosureTrigger[];
|
|
16
19
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var Content: typeof DisclosureContent;
|
|
20
|
+
export interface DisclosureComponent extends React.FC<DisclosureProps> {
|
|
21
|
+
Button: typeof DisclosureButton;
|
|
22
|
+
Content: typeof DisclosureContent;
|
|
21
23
|
}
|
|
24
|
+
declare const Disclosure: DisclosureComponent;
|
|
22
25
|
export default Disclosure;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
// Headless Disclosure
|
|
3
3
|
// Ref: https://w3c.github.io/aria-practices/#disclosure
|
|
4
|
-
import React, { useMemo, useReducer, useRef } from 'react';
|
|
4
|
+
import React, { useMemo, useReducer, useRef, useCallback, useContext } from 'react';
|
|
5
5
|
import DisclosureContext, { DisclosureActionTypes } from './DisclosureContext';
|
|
6
6
|
import DisclosureButton from './DisclosureButton';
|
|
7
7
|
import DisclosureContent from './DisclosureContent';
|
|
@@ -26,14 +26,17 @@ function disclosureReducer(state, action) {
|
|
|
26
26
|
return state;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
var Disclosure = /*#__PURE__*/React.memo(function (props) {
|
|
30
30
|
var children = props.children,
|
|
31
31
|
openProp = props.open,
|
|
32
32
|
_props$defaultOpen = props.defaultOpen,
|
|
33
33
|
defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,
|
|
34
34
|
_props$hideOnClickOut = props.hideOnClickOutside,
|
|
35
35
|
hideOnClickOutside = _props$hideOnClickOut === void 0 ? false : _props$hideOnClickOut,
|
|
36
|
-
onToggle = props.onToggle
|
|
36
|
+
onToggle = props.onToggle,
|
|
37
|
+
_props$trigger = props.trigger,
|
|
38
|
+
trigger = _props$trigger === void 0 ? ['click'] : _props$trigger;
|
|
39
|
+
var parentDisclosure = useContext(DisclosureContext);
|
|
37
40
|
|
|
38
41
|
var _useReducer = useReducer(disclosureReducer, _extends({}, initialDisclosureState, {
|
|
39
42
|
open: defaultOpen
|
|
@@ -56,20 +59,56 @@ function Disclosure(props) {
|
|
|
56
59
|
});
|
|
57
60
|
}
|
|
58
61
|
});
|
|
59
|
-
var
|
|
62
|
+
var onMouseOver = useCallback(function (event) {
|
|
63
|
+
if (!open) {
|
|
64
|
+
dispatch({
|
|
65
|
+
type: DisclosureActionTypes.Show
|
|
66
|
+
});
|
|
67
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
|
|
68
|
+
}
|
|
69
|
+
}, [open, dispatch, onToggle]);
|
|
70
|
+
var onMouseOut = useCallback(function (event) {
|
|
71
|
+
if (open) {
|
|
72
|
+
dispatch({
|
|
73
|
+
type: DisclosureActionTypes.Hide
|
|
74
|
+
});
|
|
75
|
+
onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
|
|
76
|
+
}
|
|
77
|
+
}, [open, dispatch, onToggle]);
|
|
78
|
+
var contextValue = useMemo(function () {
|
|
79
|
+
var cascadeDispatch = function cascadeDispatch(action) {
|
|
80
|
+
var result = dispatch(action);
|
|
81
|
+
|
|
82
|
+
if ('cascade' in action) {
|
|
83
|
+
parentDisclosure === null || parentDisclosure === void 0 ? void 0 : parentDisclosure[1](action);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return result;
|
|
87
|
+
};
|
|
88
|
+
|
|
60
89
|
return [{
|
|
61
90
|
open: open
|
|
62
|
-
},
|
|
63
|
-
onToggle: onToggle
|
|
91
|
+
}, cascadeDispatch, {
|
|
92
|
+
onToggle: onToggle,
|
|
93
|
+
trigger: trigger
|
|
64
94
|
}];
|
|
65
|
-
}, [open, dispatch, onToggle]);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
95
|
+
}, [parentDisclosure, open, dispatch, onToggle, trigger]);
|
|
96
|
+
var renderProps = useMemo(function () {
|
|
97
|
+
var renderProps = {
|
|
98
|
+
open: open
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
if (trigger.includes('mouseover')) {
|
|
102
|
+
renderProps.onMouseOver = onMouseOver;
|
|
103
|
+
renderProps.onMouseOut = onMouseOut;
|
|
104
|
+
}
|
|
72
105
|
|
|
106
|
+
return renderProps;
|
|
107
|
+
}, [open, trigger, onMouseOver, onMouseOut]);
|
|
108
|
+
return /*#__PURE__*/React.createElement(DisclosureContext.Provider, {
|
|
109
|
+
value: contextValue
|
|
110
|
+
}, children(renderProps, containerElementRef));
|
|
111
|
+
});
|
|
73
112
|
Disclosure.Button = DisclosureButton;
|
|
74
113
|
Disclosure.Content = DisclosureContent;
|
|
75
114
|
export default Disclosure;
|
|
@@ -3,9 +3,9 @@ export interface DisclosureButtonRenderProps {
|
|
|
3
3
|
open: boolean;
|
|
4
4
|
}
|
|
5
5
|
export interface DisclosureButtonProps {
|
|
6
|
-
children: (props: React.
|
|
6
|
+
children: (props: React.HTMLAttributes<HTMLElement> & DisclosureButtonRenderProps, ref: React.Ref<HTMLElement>) => React.ReactElement<React.HTMLAttributes<HTMLElement>>;
|
|
7
7
|
}
|
|
8
|
-
declare function DisclosureButton(props: DisclosureButtonProps): React.ReactElement<React.HTMLAttributes<
|
|
8
|
+
declare function DisclosureButton(props: DisclosureButtonProps): React.ReactElement<React.HTMLAttributes<HTMLElement>, string | React.JSXElementConstructor<any>>;
|
|
9
9
|
declare namespace DisclosureButton {
|
|
10
10
|
var displayName: string;
|
|
11
11
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { Dispatch } from 'react';
|
|
2
|
+
import type { DisclosureTrigger } from './Disclosure';
|
|
2
3
|
export interface DisclosureState {
|
|
3
4
|
open: boolean;
|
|
4
5
|
}
|
|
@@ -7,12 +8,16 @@ export declare enum DisclosureActionTypes {
|
|
|
7
8
|
Hide = 1
|
|
8
9
|
}
|
|
9
10
|
export declare type DisclosureAction = {
|
|
10
|
-
type: DisclosureActionTypes;
|
|
11
|
+
type: DisclosureActionTypes.Show;
|
|
12
|
+
} | {
|
|
13
|
+
type: DisclosureActionTypes.Hide;
|
|
14
|
+
cascade?: boolean;
|
|
11
15
|
};
|
|
12
16
|
export declare type DisclosureContextProps = [
|
|
13
17
|
DisclosureState,
|
|
14
18
|
Dispatch<DisclosureAction>,
|
|
15
19
|
{
|
|
20
|
+
trigger: DisclosureTrigger[];
|
|
16
21
|
onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
|
|
17
22
|
}
|
|
18
23
|
];
|
package/esm/Dropdown/Dropdown.js
CHANGED
|
@@ -15,7 +15,7 @@ import DropdownToggle from './DropdownToggle';
|
|
|
15
15
|
import MenuContext from '../Menu/MenuContext';
|
|
16
16
|
import MenuItem from '../Menu/MenuItem';
|
|
17
17
|
import kebabCase from 'lodash/kebabCase';
|
|
18
|
-
import { NavbarContext } from '../Navbar
|
|
18
|
+
import { NavbarContext } from '../Navbar';
|
|
19
19
|
import Disclosure from '../Disclosure/Disclosure';
|
|
20
20
|
import SidenavDropdown from '../Sidenav/SidenavDropdown';
|
|
21
21
|
import NavContext from '../Nav/NavContext';
|
|
@@ -11,7 +11,6 @@ import { createChainedFunction, mergeRefs, shallowEqual, useClassNames } from '.
|
|
|
11
11
|
import { NavbarContext } from '../Navbar/Navbar';
|
|
12
12
|
import SidenavDropdownItem from '../Sidenav/SidenavDropdownItem';
|
|
13
13
|
import DisclosureContext, { DisclosureActionTypes } from '../Disclosure/DisclosureContext';
|
|
14
|
-
import SafeAnchor from '../SafeAnchor';
|
|
15
14
|
import NavContext from '../Nav/NavContext';
|
|
16
15
|
import useInternalId from '../utils/useInternalId';
|
|
17
16
|
import { DropdownActionType } from './DropdownState';
|
|
@@ -62,7 +61,8 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
62
61
|
|
|
63
62
|
var handleClickNavbarDropdownItem = useCallback(function (event) {
|
|
64
63
|
dispatchDisclosure === null || dispatchDisclosure === void 0 ? void 0 : dispatchDisclosure({
|
|
65
|
-
type: DisclosureActionTypes.Hide
|
|
64
|
+
type: DisclosureActionTypes.Hide,
|
|
65
|
+
cascade: true
|
|
66
66
|
});
|
|
67
67
|
handleSelectItem === null || handleSelectItem === void 0 ? void 0 : handleSelectItem(event);
|
|
68
68
|
}, [dispatchDisclosure, handleSelectItem]);
|
|
@@ -129,16 +129,16 @@ var DropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
129
129
|
dataAttributes['data-event-key-type'] = typeof eventKey;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
return
|
|
132
|
+
return renderDropdownItem(_extends({
|
|
133
133
|
ref: ref,
|
|
134
134
|
className: classes,
|
|
135
|
-
|
|
135
|
+
'aria-current': selected || undefined
|
|
136
136
|
}, dataAttributes, restProps, {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
})
|
|
137
|
+
onClick: createChainedFunction(handleClickNavbarDropdownItem, restProps.onClick),
|
|
138
|
+
children: /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
139
|
+
className: prefix('menu-icon')
|
|
140
|
+
}), children)
|
|
141
|
+
}));
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
@@ -2,9 +2,9 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
|
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
|
|
5
|
-
var _templateObject, _templateObject2;
|
|
5
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
6
6
|
|
|
7
|
-
import React, { useCallback, useContext } from 'react';
|
|
7
|
+
import React, { useCallback, useContext, useMemo } from 'react';
|
|
8
8
|
import omit from 'lodash/omit';
|
|
9
9
|
import Menu from '../Menu/Menu';
|
|
10
10
|
import MenuItem from '../Menu/MenuItem';
|
|
@@ -15,8 +15,10 @@ import AngleLeft from '@rsuite/icons/legacy/AngleLeft';
|
|
|
15
15
|
import AngleRight from '@rsuite/icons/legacy/AngleRight';
|
|
16
16
|
import useCustom from '../utils/useCustom';
|
|
17
17
|
import DropdownContext from './DropdownContext';
|
|
18
|
+
import { NavbarContext } from '../Navbar';
|
|
18
19
|
import Menubar from '../Menu/Menubar';
|
|
19
20
|
import SidenavDropdownMenu from '../Sidenav/SidenavDropdownMenu';
|
|
21
|
+
import Disclosure from '../Disclosure';
|
|
20
22
|
|
|
21
23
|
/**
|
|
22
24
|
* The <Dropdown.Menu> API
|
|
@@ -49,6 +51,7 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
49
51
|
|
|
50
52
|
var dropdown = useContext(DropdownContext);
|
|
51
53
|
var sidenav = useContext(SidenavContext);
|
|
54
|
+
var withinNavbar = Boolean(useContext(NavbarContext));
|
|
52
55
|
|
|
53
56
|
var _useCustom = useCustom('DropdownMenu'),
|
|
54
57
|
rtl = _useCustom.rtl;
|
|
@@ -69,17 +72,20 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
69
72
|
var _useClassNames3 = useClassNames('dropdown-item'),
|
|
70
73
|
mergeItemClassNames = _useClassNames3.merge,
|
|
71
74
|
withItemClassPrefix = _useClassNames3.withClassPrefix,
|
|
72
|
-
prefixItemClassName = _useClassNames3.prefix;
|
|
75
|
+
prefixItemClassName = _useClassNames3.prefix;
|
|
76
|
+
|
|
77
|
+
var contextValue = useMemo(function () {
|
|
78
|
+
return {
|
|
79
|
+
activeKey: activeKey,
|
|
80
|
+
onSelect: onSelect
|
|
81
|
+
};
|
|
82
|
+
}, [activeKey, onSelect]); // <Dropdown.Menu> is used outside of <Dropdown>
|
|
73
83
|
// renders a vertical `menubar`
|
|
74
84
|
|
|
75
|
-
|
|
76
85
|
if (!dropdown) {
|
|
77
86
|
var classes = merge(props.className, withClassPrefix());
|
|
78
87
|
return /*#__PURE__*/React.createElement(DropdownContext.Provider, {
|
|
79
|
-
value:
|
|
80
|
-
activeKey: activeKey,
|
|
81
|
-
onSelect: onSelect
|
|
82
|
-
}
|
|
88
|
+
value: contextValue
|
|
83
89
|
}, /*#__PURE__*/React.createElement(Menubar, {
|
|
84
90
|
vertical: true,
|
|
85
91
|
onActivateItem: function onActivateItem(event) {
|
|
@@ -110,22 +116,69 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
110
116
|
disabled = _omit.disabled,
|
|
111
117
|
menuProps = _objectWithoutPropertiesLoose(_omit, ["icon", "className", "disabled"]);
|
|
112
118
|
|
|
113
|
-
var Icon = rtl ? AngleLeft : AngleRight;
|
|
119
|
+
var Icon = rtl ? AngleLeft : AngleRight; // Renders a disclosure when used within <Navbar>
|
|
120
|
+
|
|
121
|
+
if (withinNavbar) {
|
|
122
|
+
return /*#__PURE__*/React.createElement(Disclosure, {
|
|
123
|
+
hideOnClickOutside: true,
|
|
124
|
+
trigger: ['click', 'mouseover']
|
|
125
|
+
}, function (_ref, containerRef) {
|
|
126
|
+
var open = _ref.open,
|
|
127
|
+
props = _objectWithoutPropertiesLoose(_ref, ["open"]);
|
|
128
|
+
|
|
129
|
+
var classes = mergeItemClassNames(className, withItemClassPrefix({
|
|
130
|
+
disabled: disabled,
|
|
131
|
+
open: open,
|
|
132
|
+
submenu: true
|
|
133
|
+
}));
|
|
134
|
+
return /*#__PURE__*/React.createElement("li", _extends({
|
|
135
|
+
ref: mergeRefs(ref, containerRef),
|
|
136
|
+
className: classes
|
|
137
|
+
}, props), /*#__PURE__*/React.createElement(Disclosure.Button, null, function (_ref2, buttonRef) {
|
|
138
|
+
var open = _ref2.open,
|
|
139
|
+
buttonProps = _objectWithoutPropertiesLoose(_ref2, ["open"]);
|
|
140
|
+
|
|
141
|
+
var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["toggle"]))), withItemClassPrefix({
|
|
142
|
+
'with-icon': icon,
|
|
143
|
+
open: open,
|
|
144
|
+
disabled: disabled
|
|
145
|
+
}));
|
|
146
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
|
147
|
+
ref: mergeRefs(buttonRef, buttonRef),
|
|
148
|
+
className: classes,
|
|
149
|
+
"data-event-key": eventKey,
|
|
150
|
+
"data-event-key-type": typeof eventKey
|
|
151
|
+
}, buttonProps), icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
152
|
+
className: prefix('menu-icon')
|
|
153
|
+
}), title, /*#__PURE__*/React.createElement(Icon, {
|
|
154
|
+
className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["toggle-icon"])))
|
|
155
|
+
}));
|
|
156
|
+
}), /*#__PURE__*/React.createElement(Disclosure.Content, null, function (_ref3, elementRef) {
|
|
157
|
+
var open = _ref3.open;
|
|
158
|
+
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
159
|
+
return /*#__PURE__*/React.createElement("ul", _extends({
|
|
160
|
+
ref: elementRef,
|
|
161
|
+
className: menuClassName,
|
|
162
|
+
hidden: !open
|
|
163
|
+
}, menuProps), children);
|
|
164
|
+
}));
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
114
168
|
return /*#__PURE__*/React.createElement(Menu, {
|
|
115
169
|
openMenuOn: ['mouseover', 'click'],
|
|
116
|
-
renderMenuButton: function renderMenuButton(
|
|
117
|
-
var open =
|
|
118
|
-
menuButtonProps = _objectWithoutPropertiesLoose(
|
|
170
|
+
renderMenuButton: function renderMenuButton(_ref4, buttonRef) {
|
|
171
|
+
var open = _ref4.open,
|
|
172
|
+
menuButtonProps = _objectWithoutPropertiesLoose(_ref4, ["open"]);
|
|
119
173
|
|
|
120
174
|
return /*#__PURE__*/React.createElement(MenuItem, {
|
|
121
175
|
disabled: disabled
|
|
122
|
-
}, function (
|
|
123
|
-
var selected =
|
|
124
|
-
active =
|
|
125
|
-
menuitem = _objectWithoutPropertiesLoose(
|
|
176
|
+
}, function (_ref5, menuitemRef) {
|
|
177
|
+
var selected = _ref5.selected,
|
|
178
|
+
active = _ref5.active,
|
|
179
|
+
menuitem = _objectWithoutPropertiesLoose(_ref5, ["selected", "active"]);
|
|
126
180
|
|
|
127
|
-
var classes = mergeItemClassNames(className, prefixItemClassName(
|
|
128
|
-
withItemClassPrefix({
|
|
181
|
+
var classes = mergeItemClassNames(className, prefixItemClassName(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["toggle"]))), withItemClassPrefix({
|
|
129
182
|
'with-icon': icon,
|
|
130
183
|
open: open,
|
|
131
184
|
active: selected,
|
|
@@ -140,13 +193,13 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
140
193
|
}, menuitem, omit(menuButtonProps, ['role'])), icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
141
194
|
className: prefix('menu-icon')
|
|
142
195
|
}), title, /*#__PURE__*/React.createElement(Icon, {
|
|
143
|
-
className: prefix(
|
|
196
|
+
className: prefix(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["toggle-icon"])))
|
|
144
197
|
}));
|
|
145
198
|
});
|
|
146
199
|
},
|
|
147
|
-
renderMenuPopup: function renderMenuPopup(
|
|
148
|
-
var open =
|
|
149
|
-
popupProps = _objectWithoutPropertiesLoose(
|
|
200
|
+
renderMenuPopup: function renderMenuPopup(_ref6, popupRef) {
|
|
201
|
+
var open = _ref6.open,
|
|
202
|
+
popupProps = _objectWithoutPropertiesLoose(_ref6, ["open"]);
|
|
150
203
|
|
|
151
204
|
var menuClassName = mergeMenuClassName(className, withMenuClassPrefix());
|
|
152
205
|
return /*#__PURE__*/React.createElement("ul", _extends({
|
|
@@ -156,15 +209,14 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
156
209
|
}, popupProps, menuProps), children);
|
|
157
210
|
},
|
|
158
211
|
onToggleMenu: handleToggleSubmenu
|
|
159
|
-
}, function (
|
|
160
|
-
var open =
|
|
161
|
-
menuContainer = _objectWithoutPropertiesLoose(
|
|
212
|
+
}, function (_ref7, menuContainerRef) {
|
|
213
|
+
var open = _ref7.open,
|
|
214
|
+
menuContainer = _objectWithoutPropertiesLoose(_ref7, ["open"]);
|
|
162
215
|
|
|
163
216
|
var classes = mergeItemClassNames(className, withItemClassPrefix({
|
|
164
217
|
disabled: disabled,
|
|
165
218
|
open: open,
|
|
166
|
-
submenu: true
|
|
167
|
-
|
|
219
|
+
submenu: true
|
|
168
220
|
}));
|
|
169
221
|
return /*#__PURE__*/React.createElement("li", _extends({
|
|
170
222
|
ref: mergeRefs(ref, menuContainerRef),
|
|
@@ -1,6 +1,6 @@
|
|
|
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, { useMemo } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
5
|
import { useClassNames } from '../utils';
|
|
6
6
|
export var FormGroupContext = /*#__PURE__*/React.createContext({});
|
|
@@ -18,10 +18,13 @@ var FormGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
18
18
|
merge = _useClassNames.merge;
|
|
19
19
|
|
|
20
20
|
var classes = merge(className, withClassPrefix());
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
var contextValue = useMemo(function () {
|
|
22
|
+
return {
|
|
23
23
|
controlId: controlId
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
|
+
}, [controlId]);
|
|
26
|
+
return /*#__PURE__*/React.createElement(FormGroupContext.Provider, {
|
|
27
|
+
value: contextValue
|
|
25
28
|
}, /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
26
29
|
ref: ref,
|
|
27
30
|
className: classes,
|
package/esm/Menu/MenuItem.js
CHANGED
|
@@ -42,7 +42,7 @@ function MenuItem(props) {
|
|
|
42
42
|
id: menuitemRef.current.id
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
|
-
}, [dispatch]); // Gain/release focus on mouseenter/mouseleave in `menu`
|
|
45
|
+
}, [dispatch, hasFocus]); // Gain/release focus on mouseenter/mouseleave in `menu`
|
|
46
46
|
|
|
47
47
|
var handleMouseMove = useCallback(function () {
|
|
48
48
|
if (!isNil(menuitemRef.current) && !hasFocus) {
|
package/esm/Modal/Modal.js
CHANGED
|
@@ -4,14 +4,14 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
4
4
|
|
|
5
5
|
var _templateObject, _templateObject2;
|
|
6
6
|
|
|
7
|
-
import React, { useRef, useMemo, useState,
|
|
7
|
+
import React, { useRef, useMemo, useState, useCallback } from 'react';
|
|
8
8
|
import PropTypes from 'prop-types';
|
|
9
9
|
import pick from 'lodash/pick';
|
|
10
10
|
import on from 'dom-lib/on';
|
|
11
11
|
import getAnimationEnd from 'dom-lib/getAnimationEnd';
|
|
12
12
|
import BaseModal, { modalPropTypes } from '../Overlay/Modal';
|
|
13
13
|
import Bounce from '../Animation/Bounce';
|
|
14
|
-
import { useClassNames, mergeRefs, SIZE } from '../utils';
|
|
14
|
+
import { useClassNames, mergeRefs, SIZE, useWillUnmount } from '../utils';
|
|
15
15
|
import ModalDialog, { modalDialogPropTypes } from './ModalDialog';
|
|
16
16
|
import { ModalContext } from './ModalContext';
|
|
17
17
|
import ModalBody from './ModalBody';
|
|
@@ -64,6 +64,10 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
64
64
|
merge = _useClassNames.merge,
|
|
65
65
|
prefix = _useClassNames.prefix;
|
|
66
66
|
|
|
67
|
+
var _useState = useState(false),
|
|
68
|
+
shake = _useState[0],
|
|
69
|
+
setShake = _useState[1];
|
|
70
|
+
|
|
67
71
|
var classes = merge(className, prefix(size, {
|
|
68
72
|
full: full
|
|
69
73
|
}));
|
|
@@ -90,24 +94,6 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
90
94
|
isDrawer: drawer
|
|
91
95
|
};
|
|
92
96
|
}, [dialogId, onClose, bodyStyles, drawer]);
|
|
93
|
-
|
|
94
|
-
var _useState = useState(false),
|
|
95
|
-
shake = _useState[0],
|
|
96
|
-
setShake = _useState[1];
|
|
97
|
-
|
|
98
|
-
var handleBackdropClick = useCallback(function () {
|
|
99
|
-
// When the value of `backdrop` is `static`, a jitter animation will be added to the dialog when clicked.
|
|
100
|
-
if (backdrop === 'static') {
|
|
101
|
-
setShake(true);
|
|
102
|
-
|
|
103
|
-
if (!transitionEndListener.current && dialogRef.current) {
|
|
104
|
-
//fix: https://github.com/rsuite/rsuite/blob/a93d13c14fb20cc58204babe3331d3c3da3fe1fd/src/Modal/styles/index.less#L59
|
|
105
|
-
transitionEndListener.current = on(dialogRef.current, getAnimationEnd(), function () {
|
|
106
|
-
setShake(false);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}, [backdrop]);
|
|
111
97
|
var handleExited = useCallback(function (node) {
|
|
112
98
|
var _transitionEndListene;
|
|
113
99
|
|
|
@@ -124,11 +110,37 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
124
110
|
onEntering === null || onEntering === void 0 ? void 0 : onEntering(node);
|
|
125
111
|
onChangeBodyStyles(true);
|
|
126
112
|
}, [onChangeBodyStyles, onEntering]);
|
|
127
|
-
|
|
113
|
+
var handleBackdropClick = useCallback(function (e) {
|
|
114
|
+
if (e.target !== e.currentTarget) {
|
|
115
|
+
return;
|
|
116
|
+
} // When the value of `backdrop` is `static`, a jitter animation will be added to the dialog when clicked.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
if (backdrop === 'static') {
|
|
120
|
+
setShake(true);
|
|
121
|
+
|
|
122
|
+
if (!transitionEndListener.current && dialogRef.current) {
|
|
123
|
+
//fix: https://github.com/rsuite/rsuite/blob/a93d13c14fb20cc58204babe3331d3c3da3fe1fd/src/Modal/styles/index.less#L59
|
|
124
|
+
transitionEndListener.current = on(dialogRef.current, getAnimationEnd(), function () {
|
|
125
|
+
setShake(false);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
onClose === null || onClose === void 0 ? void 0 : onClose(e);
|
|
133
|
+
}, [backdrop, onClose]);
|
|
134
|
+
var handleClick = useCallback(function (e) {
|
|
135
|
+
if (dialogRef.current && e.target !== dialogRef.current) {
|
|
136
|
+
handleBackdropClick(e);
|
|
137
|
+
}
|
|
138
|
+
}, [handleBackdropClick]);
|
|
139
|
+
useWillUnmount(function () {
|
|
128
140
|
var _transitionEndListene2;
|
|
129
141
|
|
|
130
142
|
(_transitionEndListene2 = transitionEndListener.current) === null || _transitionEndListene2 === void 0 ? void 0 : _transitionEndListene2.off();
|
|
131
|
-
}
|
|
143
|
+
});
|
|
132
144
|
return /*#__PURE__*/React.createElement(ModalContext.Provider, {
|
|
133
145
|
value: modalContextValue
|
|
134
146
|
}, /*#__PURE__*/React.createElement(BaseModal, _extends({}, rest, {
|
|
@@ -136,7 +148,6 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
136
148
|
backdrop: backdrop,
|
|
137
149
|
open: open,
|
|
138
150
|
onClose: onClose,
|
|
139
|
-
onBackdropClick: handleBackdropClick,
|
|
140
151
|
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["wrapper"]))),
|
|
141
152
|
onEntered: handleEntered,
|
|
142
153
|
onEntering: handleEntering,
|
|
@@ -149,7 +160,8 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
149
160
|
transition: animation ? animation : undefined,
|
|
150
161
|
animationProps: animationProps,
|
|
151
162
|
dialogTransitionTimeout: animationTimeout,
|
|
152
|
-
backdropTransitionTimeout: 150
|
|
163
|
+
backdropTransitionTimeout: 150,
|
|
164
|
+
onClick: backdrop ? handleClick : undefined
|
|
153
165
|
}), function (transitionProps, transitionRef) {
|
|
154
166
|
var transitionClassName = transitionProps.className,
|
|
155
167
|
transitionRest = _objectWithoutPropertiesLoose(transitionProps, ["className"]);
|
package/esm/Modal/utils.js
CHANGED
|
@@ -45,20 +45,28 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
45
45
|
|
|
46
46
|
(_windowResizeListener = windowResizeListener.current) === null || _windowResizeListener === void 0 ? void 0 : (_windowResizeListener2 = _windowResizeListener.off) === null || _windowResizeListener2 === void 0 ? void 0 : _windowResizeListener2.call(_windowResizeListener);
|
|
47
47
|
(_contentElementResize = contentElementResizeObserver.current) === null || _contentElementResize === void 0 ? void 0 : _contentElementResize.disconnect();
|
|
48
|
+
windowResizeListener.current = null;
|
|
49
|
+
contentElementResizeObserver.current = null;
|
|
48
50
|
}, []);
|
|
49
51
|
var onChangeBodyStyles = useCallback(function (entering) {
|
|
50
|
-
if (overflow && !drawer) {
|
|
52
|
+
if (overflow && !drawer && ref.current) {
|
|
51
53
|
updateBodyStyles(undefined, entering);
|
|
52
54
|
contentElement.current = ref.current.querySelector("." + prefix('content'));
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
57
|
-
|
|
55
|
+
|
|
56
|
+
if (!windowResizeListener.current) {
|
|
57
|
+
windowResizeListener.current = on(window, 'resize', updateBodyStyles);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (contentElement.current && !contentElementResizeObserver.current) {
|
|
61
|
+
contentElementResizeObserver.current = new ResizeObserver(function () {
|
|
62
|
+
return updateBodyStyles();
|
|
63
|
+
});
|
|
64
|
+
contentElementResizeObserver.current.observe(contentElement.current);
|
|
65
|
+
}
|
|
58
66
|
}
|
|
59
67
|
}, [drawer, overflow, prefix, ref, updateBodyStyles]);
|
|
60
68
|
useEffect(function () {
|
|
61
|
-
onDestroyEvents
|
|
62
|
-
}, [
|
|
69
|
+
return onDestroyEvents; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
70
|
+
}, []);
|
|
63
71
|
return [overflow ? bodyStyles : {}, onChangeBodyStyles, onDestroyEvents];
|
|
64
72
|
};
|
|
@@ -196,8 +196,11 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
196
196
|
children.then(function (data) {
|
|
197
197
|
node.loading = false;
|
|
198
198
|
node[childrenKey] = data;
|
|
199
|
-
|
|
200
|
-
|
|
199
|
+
|
|
200
|
+
if (targetRef.current) {
|
|
201
|
+
addFlattenData(data, node);
|
|
202
|
+
addColumn(data, cascadePaths.length);
|
|
203
|
+
}
|
|
201
204
|
});
|
|
202
205
|
} else {
|
|
203
206
|
node.loading = false;
|
|
@@ -234,7 +237,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
234
237
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextValue, node, checked, event);
|
|
235
238
|
}, [cascade, onChange, onCheck, setValue, splitValue, value, valueKey]);
|
|
236
239
|
var handleClean = useCallback(function (event) {
|
|
237
|
-
if (disabled) {
|
|
240
|
+
if (disabled || !targetRef.current) {
|
|
238
241
|
return;
|
|
239
242
|
}
|
|
240
243
|
|