rsuite 5.2.0 → 5.2.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 +6 -0
- package/CHANGELOG.md +42 -0
- package/PanelGroup/styles/index.less +12 -12
- package/README.md +3 -44
- package/Sidenav/styles/index.less +4 -0
- package/Table/styles/index.less +0 -4
- package/cjs/Carousel/Carousel.d.ts +1 -1
- package/cjs/CheckTreePicker/CheckTreePicker.js +6 -3
- package/cjs/CheckTreePicker/utils.d.ts +1 -1
- package/cjs/CheckTreePicker/utils.js +7 -6
- package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
- package/cjs/DateRangePicker/Calendar.d.ts +2 -1
- package/cjs/DateRangePicker/Calendar.js +26 -5
- package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/cjs/DateRangePicker/DateRangePicker.js +25 -3
- package/cjs/Dropdown/DropdownItem.js +16 -19
- package/cjs/Dropdown/useRenderDropdownItem.d.ts +2 -0
- package/cjs/Dropdown/useRenderDropdownItem.js +26 -0
- package/cjs/InputPicker/InputPicker.js +1 -1
- package/cjs/MaskedInput/MaskedInput.d.ts +5 -42
- package/cjs/MaskedInput/MaskedInput.js +9 -63
- package/cjs/MaskedInput/TextMask.d.ts +43 -0
- package/cjs/MaskedInput/TextMask.js +80 -0
- package/cjs/Menu/Menu.js +46 -34
- package/cjs/Menu/MenuItem.js +16 -12
- package/cjs/Modal/utils.js +9 -10
- package/cjs/Overlay/Position.js +7 -4
- package/cjs/Picker/PickerToggle.js +7 -5
- package/cjs/Picker/VirtualizedList.d.ts +29 -2
- package/cjs/Picker/utils.d.ts +6 -14
- package/cjs/Picker/utils.js +54 -33
- package/cjs/RadioGroup/RadioGroup.js +2 -2
- package/cjs/Rate/Rate.js +3 -1
- package/cjs/Sidenav/SidenavDropdownItem.js +17 -10
- package/cjs/TreePicker/TreePicker.js +6 -3
- package/cjs/utils/useElementResize.d.ts +1 -1
- package/cjs/utils/useElementResize.js +11 -6
- package/dist/rsuite-rtl.css +48 -6
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +48 -6
- package/dist/rsuite.js +349 -359
- 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.LICENSE.txt +9 -0
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Carousel/Carousel.d.ts +1 -1
- package/esm/CheckTreePicker/CheckTreePicker.js +6 -3
- package/esm/CheckTreePicker/utils.d.ts +1 -1
- package/esm/CheckTreePicker/utils.js +7 -6
- package/esm/CheckboxGroup/CheckboxGroup.js +2 -2
- package/esm/DateRangePicker/Calendar.d.ts +2 -1
- package/esm/DateRangePicker/Calendar.js +27 -5
- package/esm/DateRangePicker/DateRangePicker.d.ts +2 -0
- package/esm/DateRangePicker/DateRangePicker.js +23 -3
- package/esm/Dropdown/DropdownItem.js +15 -19
- package/esm/Dropdown/useRenderDropdownItem.d.ts +2 -0
- package/esm/Dropdown/useRenderDropdownItem.js +18 -0
- package/esm/InputPicker/InputPicker.js +1 -1
- package/esm/MaskedInput/MaskedInput.d.ts +5 -42
- package/esm/MaskedInput/MaskedInput.js +9 -63
- package/esm/MaskedInput/TextMask.d.ts +43 -0
- package/esm/MaskedInput/TextMask.js +67 -0
- package/esm/Menu/Menu.js +46 -36
- package/esm/Menu/MenuItem.js +16 -12
- package/esm/Modal/utils.js +8 -7
- package/esm/Overlay/Position.js +6 -3
- package/esm/Picker/PickerToggle.js +7 -5
- package/esm/Picker/VirtualizedList.d.ts +29 -2
- package/esm/Picker/utils.d.ts +6 -14
- package/esm/Picker/utils.js +54 -33
- package/esm/RadioGroup/RadioGroup.js +2 -2
- package/esm/Rate/Rate.js +2 -1
- package/esm/Sidenav/SidenavDropdownItem.js +16 -10
- package/esm/TreePicker/TreePicker.js +6 -3
- package/esm/utils/useElementResize.d.ts +1 -1
- package/esm/utils/useElementResize.js +12 -5
- package/package.json +3 -3
package/esm/Menu/Menu.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import React, { useCallback, useContext, useRef } from 'react';
|
|
2
|
+
import React, { useCallback, useContext, useRef, useMemo } from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import MenuContext, { MenuActionTypes, MoveFocusTo } from './MenuContext';
|
|
5
5
|
import { KEY_VALUES, useCustom } from '../utils';
|
|
@@ -40,7 +40,10 @@ function Menu(props) {
|
|
|
40
40
|
rtl = _useCustom.rtl;
|
|
41
41
|
|
|
42
42
|
var activeItem = (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;
|
|
43
|
-
|
|
43
|
+
|
|
44
|
+
var _useFocus = useFocus(menuElementRef),
|
|
45
|
+
grabFocus = _useFocus.grab;
|
|
46
|
+
|
|
44
47
|
var openMenu = useCallback(function (event) {
|
|
45
48
|
dispatch({
|
|
46
49
|
type: MenuActionTypes.OpenMenu
|
|
@@ -54,8 +57,8 @@ function Menu(props) {
|
|
|
54
57
|
}
|
|
55
58
|
|
|
56
59
|
onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(true, event);
|
|
57
|
-
|
|
58
|
-
}, [dispatch, onToggleMenu,
|
|
60
|
+
grabFocus();
|
|
61
|
+
}, [dispatch, onToggleMenu, grabFocus]);
|
|
59
62
|
var closeMenu = useCallback(function (event, returnFocusToButton) {
|
|
60
63
|
if (returnFocusToButton === void 0) {
|
|
61
64
|
returnFocusToButton = true;
|
|
@@ -150,41 +153,48 @@ function Menu(props) {
|
|
|
150
153
|
if (disabled) return;
|
|
151
154
|
openMenu(event);
|
|
152
155
|
}, [open, disabled, openMenu]);
|
|
153
|
-
var buttonEventHandlers = {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
156
|
+
var buttonEventHandlers = useMemo(function () {
|
|
157
|
+
var buttonEventHandlers = {
|
|
158
|
+
onKeyDown: handleButtonKeydown
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Bind event of trigger,
|
|
162
|
+
* not used in in the expanded state of '<Sidenav>'
|
|
163
|
+
*/
|
|
164
|
+
|
|
165
|
+
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {
|
|
166
|
+
buttonEventHandlers.onClick = handleButtonClick;
|
|
167
|
+
}
|
|
164
168
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {
|
|
170
|
+
buttonEventHandlers.onContextMenu = handleButtonContextMenu;
|
|
171
|
+
}
|
|
168
172
|
|
|
173
|
+
return buttonEventHandlers;
|
|
174
|
+
}, [openMenuOn, handleButtonKeydown, handleButtonClick, handleButtonContextMenu]);
|
|
169
175
|
var buttonId = useUniqueId('menubutton-');
|
|
170
|
-
var menuId = useUniqueId('menu-');
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
176
|
+
var menuId = useUniqueId('menu-');
|
|
177
|
+
var buttonAriaAttributes = useMemo(function () {
|
|
178
|
+
// Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-14
|
|
179
|
+
return {
|
|
180
|
+
role: 'button',
|
|
181
|
+
'aria-haspopup': 'menu',
|
|
182
|
+
'aria-expanded': open || undefined,
|
|
183
|
+
// it's recommend to remove aria-expanded when menu is hidden
|
|
184
|
+
'aria-controls': menuId
|
|
185
|
+
};
|
|
186
|
+
}, [open, menuId]);
|
|
187
|
+
var buttonProps = useMemo(function () {
|
|
188
|
+
return _extends({
|
|
189
|
+
id: buttonId
|
|
190
|
+
}, buttonAriaAttributes, buttonEventHandlers, {
|
|
191
|
+
// render props
|
|
192
|
+
open: open
|
|
193
|
+
});
|
|
194
|
+
}, [buttonId, buttonAriaAttributes, buttonEventHandlers, open]);
|
|
195
|
+
var customMenuButton = useMemo(function () {
|
|
196
|
+
return renderMenuButton === null || renderMenuButton === void 0 ? void 0 : renderMenuButton(buttonProps, buttonElementRef);
|
|
197
|
+
}, [renderMenuButton, buttonProps, buttonElementRef]);
|
|
188
198
|
var buttonElement = customMenuButton !== null && customMenuButton !== void 0 ? customMenuButton : /*#__PURE__*/React.createElement("button", _extends({
|
|
189
199
|
ref: buttonElementRef
|
|
190
200
|
}, buttonProps), menuButtonText);
|
package/esm/Menu/MenuItem.js
CHANGED
|
@@ -32,20 +32,24 @@ function MenuItem(props) {
|
|
|
32
32
|
}, [disabled, onActivate]); // Gain/release focus on mousedown in `menubar`
|
|
33
33
|
|
|
34
34
|
var handleMouseDown = useCallback(function () {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
if (!hasFocus) {
|
|
36
|
+
dispatch({
|
|
37
|
+
type: MenuActionTypes.MoveFocus,
|
|
38
|
+
to: MoveFocusTo.Specific,
|
|
39
|
+
id: menuitemRef.current.id
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}, [hasFocus, dispatch]); // Gain/release focus on mouseenter/mouseleave in `menu`
|
|
41
43
|
|
|
42
44
|
var handleMouseMove = useCallback(function () {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
if (!hasFocus) {
|
|
46
|
+
dispatch({
|
|
47
|
+
type: MenuActionTypes.MoveFocus,
|
|
48
|
+
to: MoveFocusTo.Specific,
|
|
49
|
+
id: menuitemRef.current.id
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}, [hasFocus, dispatch]);
|
|
49
53
|
var handleMouseLeave = useCallback(function () {
|
|
50
54
|
dispatch({
|
|
51
55
|
type: MenuActionTypes.MoveFocus,
|
package/esm/Modal/utils.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState, useRef, useCallback, useEffect } from 'react';
|
|
2
|
-
import bindElementResize, { unbind as unbindElementResize } from 'element-resize-event';
|
|
3
2
|
import getHeight from 'dom-lib/getHeight';
|
|
4
3
|
import on from 'dom-lib/on';
|
|
4
|
+
import { ResizeObserver } from '@juggle/resize-observer';
|
|
5
5
|
export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
6
6
|
var _useState = useState({}),
|
|
7
7
|
bodyStyles = _useState[0],
|
|
@@ -12,6 +12,7 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
12
12
|
prefix = options.prefix;
|
|
13
13
|
var windowResizeListener = useRef();
|
|
14
14
|
var contentElement = useRef();
|
|
15
|
+
var contentElementResizeObserver = useRef();
|
|
15
16
|
var updateBodyStyles = useCallback(function (_event, entering) {
|
|
16
17
|
var dialog = ref.current;
|
|
17
18
|
var scrollHeight = dialog ? dialog.scrollHeight : 0;
|
|
@@ -40,13 +41,10 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
40
41
|
setBodyStyles(styles);
|
|
41
42
|
}, [prefix, ref]);
|
|
42
43
|
var onDestroyEvents = useCallback(function () {
|
|
43
|
-
var _windowResizeListener, _windowResizeListener2;
|
|
44
|
+
var _windowResizeListener, _windowResizeListener2, _contentElementResize;
|
|
44
45
|
|
|
45
46
|
(_windowResizeListener = windowResizeListener.current) === null || _windowResizeListener === void 0 ? void 0 : (_windowResizeListener2 = _windowResizeListener.off) === null || _windowResizeListener2 === void 0 ? void 0 : _windowResizeListener2.call(_windowResizeListener);
|
|
46
|
-
|
|
47
|
-
if (contentElement.current) {
|
|
48
|
-
unbindElementResize(contentElement.current);
|
|
49
|
-
}
|
|
47
|
+
(_contentElementResize = contentElementResizeObserver.current) === null || _contentElementResize === void 0 ? void 0 : _contentElementResize.disconnect();
|
|
50
48
|
}, []);
|
|
51
49
|
var onChangeBodyStyles = useCallback(function (entering) {
|
|
52
50
|
if (overflow && !drawer) {
|
|
@@ -55,7 +53,10 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
55
53
|
updateBodyStyles(null, entering);
|
|
56
54
|
contentElement.current = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.querySelector("." + prefix('content'));
|
|
57
55
|
windowResizeListener.current = on(window, 'resize', updateBodyStyles);
|
|
58
|
-
|
|
56
|
+
contentElementResizeObserver.current = new ResizeObserver(function () {
|
|
57
|
+
return updateBodyStyles();
|
|
58
|
+
});
|
|
59
|
+
contentElementResizeObserver.current.observe(contentElement.current);
|
|
59
60
|
}
|
|
60
61
|
}, [drawer, overflow, prefix, ref, updateBodyStyles]);
|
|
61
62
|
useEffect(function () {
|
package/esm/Overlay/Position.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useState, useEffect, useRef, useMemo, useCallback, useImperativeHandle } from 'react';
|
|
2
|
-
import bindElementResize from 'element-resize-event';
|
|
3
2
|
import PropTypes from 'prop-types';
|
|
4
3
|
import classNames from 'classnames';
|
|
5
4
|
import getContainer from 'dom-lib/getContainer';
|
|
@@ -8,6 +7,7 @@ import removeClass from 'dom-lib/removeClass';
|
|
|
8
7
|
import on from 'dom-lib/on';
|
|
9
8
|
import addClass from 'dom-lib/addClass';
|
|
10
9
|
import addStyle from 'dom-lib/addStyle';
|
|
10
|
+
import { ResizeObserver } from '@juggle/resize-observer';
|
|
11
11
|
import isElement from '../DOMHelper/isElement';
|
|
12
12
|
import positionUtils from './positionUtils';
|
|
13
13
|
import { getDOMNode } from '../utils';
|
|
@@ -23,6 +23,7 @@ var usePosition = function usePosition(props, ref) {
|
|
|
23
23
|
triggerTarget = props.triggerTarget;
|
|
24
24
|
var containerRef = useRef();
|
|
25
25
|
var lastTargetRef = useRef();
|
|
26
|
+
var overlayResizeObserver = useRef();
|
|
26
27
|
var defaultPosition = {
|
|
27
28
|
positionLeft: 0,
|
|
28
29
|
positionTop: 0,
|
|
@@ -109,17 +110,19 @@ var usePosition = function usePosition(props, ref) {
|
|
|
109
110
|
|
|
110
111
|
if (overlay) {
|
|
111
112
|
// Update the position when the size of the overlay changes
|
|
112
|
-
|
|
113
|
+
overlayResizeObserver.current = new ResizeObserver(function () {
|
|
113
114
|
return updatePosition(true, true);
|
|
114
115
|
});
|
|
116
|
+
overlayResizeObserver.current.observe(overlay);
|
|
115
117
|
}
|
|
116
118
|
|
|
117
119
|
return function () {
|
|
118
|
-
var _containerScrollListe;
|
|
120
|
+
var _containerScrollListe, _overlayResizeObserve;
|
|
119
121
|
|
|
120
122
|
lastTargetRef.current = null;
|
|
121
123
|
(_containerScrollListe = containerScrollListener) === null || _containerScrollListe === void 0 ? void 0 : _containerScrollListe.off();
|
|
122
124
|
resizeListener === null || resizeListener === void 0 ? void 0 : resizeListener.off();
|
|
125
|
+
(_overlayResizeObserve = overlayResizeObserver.current) === null || _overlayResizeObserve === void 0 ? void 0 : _overlayResizeObserve.disconnect();
|
|
123
126
|
};
|
|
124
127
|
}, [preventOverflow, ref, updatePosition]);
|
|
125
128
|
useUpdateEffect(function () {
|
|
@@ -12,7 +12,7 @@ import CloseButton from '../CloseButton';
|
|
|
12
12
|
import { useClassNames, KEY_VALUES, mergeRefs } from '../utils';
|
|
13
13
|
import Plaintext from '../Plaintext';
|
|
14
14
|
import useToggleCaret from '../utils/useToggleCaret';
|
|
15
|
-
import
|
|
15
|
+
import TextMask from '../MaskedInput/TextMask';
|
|
16
16
|
import deprecatePropType from '../utils/deprecatePropType';
|
|
17
17
|
var defaultInputMask = [];
|
|
18
18
|
var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
@@ -83,15 +83,17 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
83
83
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
84
84
|
|
|
85
85
|
if (input) {
|
|
86
|
-
|
|
86
|
+
var _inputRef$current;
|
|
87
|
+
|
|
88
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
87
89
|
}
|
|
88
90
|
}, [input, onFocus]);
|
|
89
91
|
var handleBlur = useCallback(function (event) {
|
|
90
92
|
if (document.activeElement !== inputRef.current) {
|
|
91
|
-
var _inputRef$
|
|
93
|
+
var _inputRef$current2;
|
|
92
94
|
|
|
93
95
|
setActive(false);
|
|
94
|
-
(_inputRef$
|
|
96
|
+
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
@@ -146,7 +148,7 @@ var PickerToggle = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
146
148
|
onFocus: !disabled ? handleFocus : null // The debounce is set to 200 to solve the flicker caused by the switch between input and div.
|
|
147
149
|
,
|
|
148
150
|
onBlur: !disabled ? debounce(handleBlur, 200) : null
|
|
149
|
-
}), /*#__PURE__*/React.createElement(
|
|
151
|
+
}), /*#__PURE__*/React.createElement(TextMask, {
|
|
150
152
|
mask: inputMask,
|
|
151
153
|
value: Array.isArray(inputValue) ? inputValue.toString() : inputValue,
|
|
152
154
|
onBlur: handleInputBlur,
|
|
@@ -1,9 +1,36 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ListProps, ListRowProps } from 'react-virtualized/dist/commonjs/List';
|
|
3
3
|
import { AutoSizerProps } from 'react-virtualized/dist/commonjs/AutoSizer';
|
|
4
|
+
import type { Alignment } from 'react-virtualized';
|
|
4
5
|
export interface ListInstance {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Forcefully re-render the inner Grid component.
|
|
8
|
+
*/
|
|
9
|
+
forceUpdateGrid(): void;
|
|
10
|
+
/**
|
|
11
|
+
* Gets offset for a given row and alignment.
|
|
12
|
+
*/
|
|
13
|
+
getOffsetForRow(params: {
|
|
14
|
+
alignment?: Alignment;
|
|
15
|
+
index?: number;
|
|
16
|
+
}): number;
|
|
17
|
+
/**
|
|
18
|
+
* Pre-measure all rows in a List.
|
|
19
|
+
*/
|
|
20
|
+
measureAllRows(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Recompute row heights and offsets after the specified index (defaults to 0).
|
|
23
|
+
*/
|
|
24
|
+
recomputeRowHeights(index?: number): void;
|
|
25
|
+
/**
|
|
26
|
+
* Scroll to the specified offset. Useful for animating position changes.
|
|
27
|
+
*/
|
|
28
|
+
scrollToPosition(scrollTop?: number): void;
|
|
29
|
+
/**
|
|
30
|
+
* Ensure row is visible. This method can be used to safely scroll back to a cell
|
|
31
|
+
* that a user has scrolled away from even if it was previously scrolled to.
|
|
32
|
+
*/
|
|
33
|
+
scrollToRow(index?: number): void;
|
|
7
34
|
}
|
|
8
35
|
export type { ListProps, AutoSizerProps, ListRowProps };
|
|
9
36
|
export declare const List: React.ComponentType<ListProps>;
|
package/esm/Picker/utils.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { OverlayTriggerInstance } from './PickerToggleTrigger';
|
|
3
3
|
import { TypeAttributes, ItemDataType } from '../@types/common';
|
|
4
|
+
import { ListInstance } from './VirtualizedList';
|
|
4
5
|
interface NodeKeys {
|
|
5
6
|
valueKey: string;
|
|
6
7
|
childrenKey: string;
|
|
@@ -103,25 +104,16 @@ export declare function useSearch(props: SearchProps): {
|
|
|
103
104
|
checkShouldDisplay: (item: ItemDataType, keyword?: string) => boolean;
|
|
104
105
|
handleSearch: (searchKeyword: string, event: React.SyntheticEvent) => void;
|
|
105
106
|
};
|
|
106
|
-
interface
|
|
107
|
+
interface PickerDependentParameters {
|
|
107
108
|
triggerRef?: React.RefObject<OverlayTriggerInstance>;
|
|
108
|
-
rootRef?: React.RefObject<
|
|
109
|
+
rootRef?: React.RefObject<any>;
|
|
109
110
|
overlayRef?: React.RefObject<HTMLElement>;
|
|
110
111
|
targetRef?: React.RefObject<HTMLElement>;
|
|
112
|
+
listRef?: React.RefObject<ListInstance>;
|
|
113
|
+
inline?: boolean;
|
|
111
114
|
}
|
|
112
115
|
/**
|
|
113
116
|
* A hook of the exposed method of Picker
|
|
114
|
-
*
|
|
115
|
-
* {
|
|
116
|
-
* root: Element;
|
|
117
|
-
* overlay: Element;
|
|
118
|
-
* target?: Element;
|
|
119
|
-
* updatePosition:() => void;
|
|
120
|
-
* open:() => void;
|
|
121
|
-
* close:() => void;
|
|
122
|
-
* }
|
|
123
|
-
* @param ref
|
|
124
|
-
* @param params
|
|
125
117
|
*/
|
|
126
|
-
export declare function usePublicMethods(ref: any,
|
|
118
|
+
export declare function usePublicMethods(ref: any, parmas: PickerDependentParameters): void;
|
|
127
119
|
export {};
|
package/esm/Picker/utils.js
CHANGED
|
@@ -376,9 +376,15 @@ export var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
376
376
|
|
|
377
377
|
|
|
378
378
|
if (event.key.length === 1 && /\w/.test(event.key)) {
|
|
379
|
-
var
|
|
379
|
+
var _event$target;
|
|
380
380
|
|
|
381
|
-
|
|
381
|
+
// Exclude Input
|
|
382
|
+
// eg: <SelectPicker renderExtraFooter={() => <Input />} />
|
|
383
|
+
if (((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) !== 'INPUT') {
|
|
384
|
+
var _searchInputRef$curre;
|
|
385
|
+
|
|
386
|
+
(_searchInputRef$curre = searchInputRef.current) === null || _searchInputRef$curre === void 0 ? void 0 : _searchInputRef$curre.focus();
|
|
387
|
+
}
|
|
382
388
|
}
|
|
383
389
|
}
|
|
384
390
|
|
|
@@ -455,23 +461,14 @@ export function useSearch(props) {
|
|
|
455
461
|
|
|
456
462
|
/**
|
|
457
463
|
* A hook of the exposed method of Picker
|
|
458
|
-
*
|
|
459
|
-
* {
|
|
460
|
-
* root: Element;
|
|
461
|
-
* overlay: Element;
|
|
462
|
-
* target?: Element;
|
|
463
|
-
* updatePosition:() => void;
|
|
464
|
-
* open:() => void;
|
|
465
|
-
* close:() => void;
|
|
466
|
-
* }
|
|
467
|
-
* @param ref
|
|
468
|
-
* @param params
|
|
469
464
|
*/
|
|
470
|
-
export function usePublicMethods(ref,
|
|
471
|
-
var triggerRef =
|
|
472
|
-
overlayRef =
|
|
473
|
-
targetRef =
|
|
474
|
-
rootRef =
|
|
465
|
+
export function usePublicMethods(ref, parmas) {
|
|
466
|
+
var triggerRef = parmas.triggerRef,
|
|
467
|
+
overlayRef = parmas.overlayRef,
|
|
468
|
+
targetRef = parmas.targetRef,
|
|
469
|
+
rootRef = parmas.rootRef,
|
|
470
|
+
listRef = parmas.listRef,
|
|
471
|
+
inline = parmas.inline;
|
|
475
472
|
var handleOpen = useCallback(function () {
|
|
476
473
|
var _triggerRef$current3;
|
|
477
474
|
|
|
@@ -487,10 +484,9 @@ export function usePublicMethods(ref, _ref, disabled) {
|
|
|
487
484
|
|
|
488
485
|
(_triggerRef$current5 = triggerRef.current) === null || _triggerRef$current5 === void 0 ? void 0 : _triggerRef$current5.updatePosition();
|
|
489
486
|
}, [triggerRef]);
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
useImperativeHandle(ref, function () {
|
|
487
|
+
useImperativeHandle(ref, function () {
|
|
488
|
+
// Tree and CheckTree
|
|
489
|
+
if (inline) {
|
|
494
490
|
return {
|
|
495
491
|
get root() {
|
|
496
492
|
var _triggerRef$current6;
|
|
@@ -498,18 +494,43 @@ export function usePublicMethods(ref, _ref, disabled) {
|
|
|
498
494
|
return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current6 = triggerRef.current) === null || _triggerRef$current6 === void 0 ? void 0 : _triggerRef$current6.root;
|
|
499
495
|
},
|
|
500
496
|
|
|
501
|
-
get
|
|
502
|
-
|
|
503
|
-
|
|
497
|
+
get list() {
|
|
498
|
+
if (!(listRef !== null && listRef !== void 0 && listRef.current)) {
|
|
499
|
+
throw new Error('The list is not found, please set `virtualized` for the component.');
|
|
500
|
+
}
|
|
504
501
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
},
|
|
502
|
+
return listRef === null || listRef === void 0 ? void 0 : listRef.current;
|
|
503
|
+
}
|
|
508
504
|
|
|
509
|
-
updatePosition: handleUpdatePosition,
|
|
510
|
-
open: handleOpen,
|
|
511
|
-
close: handleClose
|
|
512
505
|
};
|
|
513
|
-
}
|
|
514
|
-
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
return {
|
|
509
|
+
get root() {
|
|
510
|
+
var _triggerRef$current7;
|
|
511
|
+
|
|
512
|
+
return rootRef !== null && rootRef !== void 0 && rootRef.current ? rootRef === null || rootRef === void 0 ? void 0 : rootRef.current : (_triggerRef$current7 = triggerRef.current) === null || _triggerRef$current7 === void 0 ? void 0 : _triggerRef$current7.root;
|
|
513
|
+
},
|
|
514
|
+
|
|
515
|
+
get overlay() {
|
|
516
|
+
return overlayRef.current;
|
|
517
|
+
},
|
|
518
|
+
|
|
519
|
+
get target() {
|
|
520
|
+
return targetRef === null || targetRef === void 0 ? void 0 : targetRef.current;
|
|
521
|
+
},
|
|
522
|
+
|
|
523
|
+
get list() {
|
|
524
|
+
if (!(listRef !== null && listRef !== void 0 && listRef.current)) {
|
|
525
|
+
throw new Error("\n The list is not found.\n 1.Please set virtualized for the component.\n 2.Please confirm whether the picker is open.\n ");
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
return listRef === null || listRef === void 0 ? void 0 : listRef.current;
|
|
529
|
+
},
|
|
530
|
+
|
|
531
|
+
updatePosition: handleUpdatePosition,
|
|
532
|
+
open: handleOpen,
|
|
533
|
+
close: handleClose
|
|
534
|
+
};
|
|
535
|
+
});
|
|
515
536
|
}
|
|
@@ -55,10 +55,10 @@ var RadioGroup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
55
55
|
}, [disabled, handleChange, inline, isControlled, name, plaintext, readOnly, value]);
|
|
56
56
|
return /*#__PURE__*/React.createElement(RadioContext.Provider, {
|
|
57
57
|
value: contextValue
|
|
58
|
-
}, plaintext ? /*#__PURE__*/React.createElement(Plaintext, {
|
|
58
|
+
}, plaintext ? /*#__PURE__*/React.createElement(Plaintext, _extends({
|
|
59
59
|
ref: ref,
|
|
60
60
|
localeKey: "notSelected"
|
|
61
|
-
}, value ? children : null) : /*#__PURE__*/React.createElement(Component, _extends({
|
|
61
|
+
}, rest), value ? children : null) : /*#__PURE__*/React.createElement(Component, _extends({
|
|
62
62
|
role: "radiogroup"
|
|
63
63
|
}, rest, {
|
|
64
64
|
ref: ref,
|
package/esm/Rate/Rate.js
CHANGED
|
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
|
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
3
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
4
4
|
import PropTypes from 'prop-types';
|
|
5
|
+
import isNil from 'lodash/isNil';
|
|
5
6
|
import Star from '@rsuite/icons/legacy/Star';
|
|
6
7
|
import { useClassNames, useControlled, shallowEqualArray, SIZE, KEY_VALUES } from '../utils';
|
|
7
8
|
import { transformValueToCharacterMap, transformCharacterMapToValue } from './utils';
|
|
@@ -120,7 +121,7 @@ var Rate = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
120
121
|
return /*#__PURE__*/React.createElement(Plaintext, {
|
|
121
122
|
localeKey: "notSelected",
|
|
122
123
|
className: className
|
|
123
|
-
}, value + "(" + max + ")");
|
|
124
|
+
}, !isNil(value) ? value + "(" + max + ")" : null);
|
|
124
125
|
}
|
|
125
126
|
|
|
126
127
|
return /*#__PURE__*/React.createElement(Component, _extends({
|
|
@@ -9,6 +9,7 @@ import Ripple from '../Ripple';
|
|
|
9
9
|
import SafeAnchor from '../SafeAnchor';
|
|
10
10
|
import NavContext from '../Nav/NavContext';
|
|
11
11
|
import DropdownContext from '../Dropdown/DropdownContext';
|
|
12
|
+
import { useRenderDropdownItem } from '../Dropdown/useRenderDropdownItem';
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* Tree View Node
|
|
@@ -59,34 +60,39 @@ var SidenavDropdownItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
59
60
|
var menuitemEventHandlers = {
|
|
60
61
|
onClick: createChainedFunction(handleClick, onClick)
|
|
61
62
|
};
|
|
63
|
+
var renderDropdownItem = useRenderDropdownItem(Component);
|
|
62
64
|
|
|
63
65
|
if (divider) {
|
|
64
|
-
return
|
|
66
|
+
return renderDropdownItem(_extends({
|
|
65
67
|
ref: ref,
|
|
66
|
-
role:
|
|
68
|
+
role: 'separator',
|
|
67
69
|
style: style,
|
|
68
70
|
className: merge(prefix('divider'), className)
|
|
69
71
|
}, rest));
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
if (panel) {
|
|
73
|
-
return
|
|
75
|
+
return renderDropdownItem(_extends({
|
|
74
76
|
ref: ref,
|
|
75
|
-
role:
|
|
77
|
+
role: 'none presentation',
|
|
76
78
|
style: style,
|
|
77
79
|
className: merge(prefix('panel'), className)
|
|
78
|
-
}, rest
|
|
80
|
+
}, rest, {
|
|
81
|
+
children: children
|
|
82
|
+
}));
|
|
79
83
|
}
|
|
80
84
|
|
|
81
|
-
return
|
|
85
|
+
return renderDropdownItem(_extends({
|
|
82
86
|
ref: ref
|
|
83
87
|
}, rest, {
|
|
84
88
|
style: style,
|
|
85
89
|
className: classes,
|
|
86
|
-
|
|
87
|
-
}, menuitemEventHandlers
|
|
88
|
-
|
|
89
|
-
|
|
90
|
+
'aria-current': selected || undefined
|
|
91
|
+
}, menuitemEventHandlers, {
|
|
92
|
+
children: /*#__PURE__*/React.createElement(React.Fragment, null, icon && /*#__PURE__*/React.cloneElement(icon, {
|
|
93
|
+
className: prefix('menu-icon')
|
|
94
|
+
}), children, /*#__PURE__*/React.createElement(Ripple, null))
|
|
95
|
+
}), SafeAnchor);
|
|
90
96
|
});
|
|
91
97
|
SidenavDropdownItem.displayName = 'Sidenav.Dropdown.Item';
|
|
92
98
|
SidenavDropdownItem.propTypes = {
|
|
@@ -412,10 +412,13 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
412
412
|
(_targetRef$current2 = targetRef.current) === null || _targetRef$current2 === void 0 ? void 0 : _targetRef$current2.focus();
|
|
413
413
|
}, [activeNode, setSearchKeyword, valueKey]);
|
|
414
414
|
usePublicMethods(ref, {
|
|
415
|
+
rootRef: inline ? treeViewRef : null,
|
|
415
416
|
triggerRef: triggerRef,
|
|
416
417
|
overlayRef: overlayRef,
|
|
417
|
-
targetRef: targetRef
|
|
418
|
-
|
|
418
|
+
targetRef: targetRef,
|
|
419
|
+
listRef: listRef,
|
|
420
|
+
inline: inline
|
|
421
|
+
});
|
|
419
422
|
var handleFocusItem = useCallback(function (key) {
|
|
420
423
|
var focusableItems = getFocusableItems(filteredData, {
|
|
421
424
|
disabledItemValues: disabledItemValues,
|
|
@@ -627,7 +630,7 @@ var TreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
627
630
|
return /*#__PURE__*/React.createElement("div", {
|
|
628
631
|
role: "tree",
|
|
629
632
|
id: id ? id + "-listbox" : undefined,
|
|
630
|
-
ref:
|
|
633
|
+
ref: treeViewRef,
|
|
631
634
|
className: classes,
|
|
632
635
|
style: styles,
|
|
633
636
|
onKeyDown: inline ? handleTreeKeyDown : undefined
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
* @param eventTarget The target to listen for events on
|
|
6
6
|
* @param listener An event handler
|
|
7
7
|
*/
|
|
8
|
-
export default function useElementResize(eventTarget:
|
|
8
|
+
export default function useElementResize(eventTarget: Element | (() => Element), listener: ResizeObserverCallback): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
2
|
-
import
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
import { ResizeObserver } from '@juggle/resize-observer';
|
|
3
3
|
/**
|
|
4
4
|
* Attach the event handler directly to the specified DOM element,
|
|
5
5
|
* and it will be triggered when the size of the DOM element is changed.
|
|
@@ -9,11 +9,18 @@ import bindElementResize, { unbind } from 'element-resize-event';
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
export default function useElementResize(eventTarget, listener) {
|
|
12
|
+
var resizeObserver = useRef();
|
|
12
13
|
useEffect(function () {
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
if (!resizeObserver.current) {
|
|
15
|
+
var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
|
|
16
|
+
resizeObserver.current = new ResizeObserver(listener);
|
|
17
|
+
resizeObserver.current.observe(target);
|
|
18
|
+
}
|
|
19
|
+
|
|
15
20
|
return function () {
|
|
16
|
-
|
|
21
|
+
var _resizeObserver$curre;
|
|
22
|
+
|
|
23
|
+
(_resizeObserver$curre = resizeObserver.current) === null || _resizeObserver$curre === void 0 ? void 0 : _resizeObserver$curre.disconnect();
|
|
17
24
|
};
|
|
18
25
|
}, [eventTarget, listener]);
|
|
19
26
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rsuite",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.4",
|
|
4
4
|
"description": "A suite of react components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@babel/runtime": "^7.8.4",
|
|
28
|
+
"@juggle/resize-observer": "^3.3.1",
|
|
28
29
|
"@rsuite/icons": "^1.0.2",
|
|
29
30
|
"@types/chai": "^4.2.18",
|
|
30
31
|
"@types/lodash": "^4.14.134",
|
|
@@ -33,11 +34,10 @@
|
|
|
33
34
|
"classnames": "^2.3.1",
|
|
34
35
|
"date-fns": "^2.13.0",
|
|
35
36
|
"dom-lib": "^3.0.0",
|
|
36
|
-
"element-resize-event": "^3.0.6",
|
|
37
37
|
"lodash": "^4.17.11",
|
|
38
38
|
"prop-types": "^15.7.2",
|
|
39
39
|
"react-virtualized": "^9.22.3",
|
|
40
|
-
"rsuite-table": "^5.
|
|
40
|
+
"rsuite-table": "^5.2.2",
|
|
41
41
|
"schema-typed": "^2.0.2"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|