rsuite 5.2.2 → 5.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/cjs/CheckboxGroup/CheckboxGroup.js +2 -2
- package/cjs/InputPicker/InputPicker.js +1 -1
- package/cjs/Menu/Menu.js +46 -34
- package/cjs/Menu/MenuItem.js +16 -12
- package/cjs/Picker/PickerToggle.js +5 -3
- package/cjs/RadioGroup/RadioGroup.js +2 -2
- package/cjs/Rate/Rate.js +3 -1
- package/cjs/utils/useElementResize.js +6 -3
- package/dist/rsuite.js +35 -13
- package/dist/rsuite.js.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/CheckboxGroup/CheckboxGroup.js +2 -2
- package/esm/InputPicker/InputPicker.js +1 -1
- package/esm/Menu/Menu.js +46 -36
- package/esm/Menu/MenuItem.js +16 -12
- package/esm/Picker/PickerToggle.js +5 -3
- package/esm/RadioGroup/RadioGroup.js +2 -2
- package/esm/Rate/Rate.js +2 -1
- package/esm/utils/useElementResize.js +6 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [5.2.3](https://github.com/rsuite/rsuite/compare/v5.2.2...v5.2.3) (2021-11-26)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **useElementResize:** fix ResizeObserver being created repeatedly ([#2161](https://github.com/rsuite/rsuite/issues/2161)) ([32e2fa7](https://github.com/rsuite/rsuite/commit/32e2fa76a396945498f198d176b630ac09a4e20d))
|
|
6
|
+
- focus handler ([#2154](https://github.com/rsuite/rsuite/issues/2154)) ([3b17fbc](https://github.com/rsuite/rsuite/commit/3b17fbcae6da59ca58788c6b3aa60d79692dffa1))
|
|
7
|
+
- **TagPicker:** fix tag misplacement in plaintext mode ([#2152](https://github.com/rsuite/rsuite/issues/2152)) ([6d32c71](https://github.com/rsuite/rsuite/commit/6d32c714e1b9be743d57b3ae4f1622d006e0f52c))
|
|
8
|
+
|
|
9
|
+
### Performance Improvements
|
|
10
|
+
|
|
11
|
+
- **Menu:** prevent uneccesary re-render when mouseove on menuitems ([#2148](https://github.com/rsuite/rsuite/issues/2148)) ([dc06498](https://github.com/rsuite/rsuite/commit/dc0649822fd68964281f44c4ec2daf84953edc63))
|
|
12
|
+
|
|
1
13
|
## [5.2.2](https://github.com/rsuite/rsuite/compare/v5.2.1...v5.2.2) (2021-11-19)
|
|
2
14
|
|
|
3
15
|
### Bug Fixes
|
|
@@ -83,10 +83,10 @@ var CheckboxGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
83
83
|
}, [disabled, handleChange, inline, isControlled, name, plaintext, readOnly, value]);
|
|
84
84
|
return /*#__PURE__*/_react.default.createElement(_CheckboxGroupContext.CheckboxGroupContext.Provider, {
|
|
85
85
|
value: contextValue
|
|
86
|
-
}, plaintext ? /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
|
|
86
|
+
}, plaintext ? /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({
|
|
87
87
|
ref: ref,
|
|
88
88
|
localeKey: "notSelected"
|
|
89
|
-
}, value !== null && value !== void 0 && value.length ? children : null) : /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
89
|
+
}, rest), value !== null && value !== void 0 && value.length ? children : null) : /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
|
|
90
90
|
ref: ref,
|
|
91
91
|
role: "group",
|
|
92
92
|
className: classes
|
|
@@ -696,7 +696,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
696
696
|
var plaintextProps = {}; // TagPicker has -6px margin-left on the plaintext wrapper
|
|
697
697
|
// for fixing margin-left on tags from 2nd line on
|
|
698
698
|
|
|
699
|
-
if (multi) {
|
|
699
|
+
if (multi && hasValue) {
|
|
700
700
|
plaintextProps.style = {
|
|
701
701
|
marginLeft: -6
|
|
702
702
|
};
|
package/cjs/Menu/Menu.js
CHANGED
|
@@ -21,7 +21,7 @@ var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
|
|
|
21
21
|
|
|
22
22
|
var _useMenu = _interopRequireDefault(require("./useMenu"));
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _useFocus2 = _interopRequireDefault(require("../utils/useFocus"));
|
|
25
25
|
|
|
26
26
|
var _useClickOutside = _interopRequireDefault(require("../utils/useClickOutside"));
|
|
27
27
|
|
|
@@ -60,7 +60,10 @@ function Menu(props) {
|
|
|
60
60
|
rtl = _useCustom.rtl;
|
|
61
61
|
|
|
62
62
|
var activeItem = (_items$activeItemInde = items[activeItemIndex]) === null || _items$activeItemInde === void 0 ? void 0 : _items$activeItemInde.element;
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
var _useFocus = (0, _useFocus2.default)(menuElementRef),
|
|
65
|
+
grabFocus = _useFocus.grab;
|
|
66
|
+
|
|
64
67
|
var openMenu = (0, _react.useCallback)(function (event) {
|
|
65
68
|
dispatch({
|
|
66
69
|
type: _MenuContext.MenuActionTypes.OpenMenu
|
|
@@ -74,8 +77,8 @@ function Menu(props) {
|
|
|
74
77
|
}
|
|
75
78
|
|
|
76
79
|
onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(true, event);
|
|
77
|
-
|
|
78
|
-
}, [dispatch, onToggleMenu,
|
|
80
|
+
grabFocus();
|
|
81
|
+
}, [dispatch, onToggleMenu, grabFocus]);
|
|
79
82
|
var closeMenu = (0, _react.useCallback)(function (event, returnFocusToButton) {
|
|
80
83
|
if (returnFocusToButton === void 0) {
|
|
81
84
|
returnFocusToButton = true;
|
|
@@ -170,39 +173,48 @@ function Menu(props) {
|
|
|
170
173
|
if (disabled) return;
|
|
171
174
|
openMenu(event);
|
|
172
175
|
}, [open, disabled, openMenu]);
|
|
173
|
-
var buttonEventHandlers = {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
176
|
+
var buttonEventHandlers = (0, _react.useMemo)(function () {
|
|
177
|
+
var buttonEventHandlers = {
|
|
178
|
+
onKeyDown: handleButtonKeydown
|
|
179
|
+
};
|
|
180
|
+
/**
|
|
181
|
+
* Bind event of trigger,
|
|
182
|
+
* not used in in the expanded state of '<Sidenav>'
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('click')) {
|
|
186
|
+
buttonEventHandlers.onClick = handleButtonClick;
|
|
187
|
+
}
|
|
184
188
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
189
|
+
if (openMenuOn !== null && openMenuOn !== void 0 && openMenuOn.includes('contextmenu')) {
|
|
190
|
+
buttonEventHandlers.onContextMenu = handleButtonContextMenu;
|
|
191
|
+
}
|
|
188
192
|
|
|
193
|
+
return buttonEventHandlers;
|
|
194
|
+
}, [openMenuOn, handleButtonKeydown, handleButtonClick, handleButtonContextMenu]);
|
|
189
195
|
var buttonId = (0, _useUniqueId.default)('menubutton-');
|
|
190
|
-
var menuId = (0, _useUniqueId.default)('menu-');
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
196
|
+
var menuId = (0, _useUniqueId.default)('menu-');
|
|
197
|
+
var buttonAriaAttributes = (0, _react.useMemo)(function () {
|
|
198
|
+
// Ref: https://www.w3.org/TR/wai-aria-practices-1.2/#wai-aria-roles-states-and-properties-14
|
|
199
|
+
return {
|
|
200
|
+
role: 'button',
|
|
201
|
+
'aria-haspopup': 'menu',
|
|
202
|
+
'aria-expanded': open || undefined,
|
|
203
|
+
// it's recommend to remove aria-expanded when menu is hidden
|
|
204
|
+
'aria-controls': menuId
|
|
205
|
+
};
|
|
206
|
+
}, [open, menuId]);
|
|
207
|
+
var buttonProps = (0, _react.useMemo)(function () {
|
|
208
|
+
return (0, _extends2.default)({
|
|
209
|
+
id: buttonId
|
|
210
|
+
}, buttonAriaAttributes, buttonEventHandlers, {
|
|
211
|
+
// render props
|
|
212
|
+
open: open
|
|
213
|
+
});
|
|
214
|
+
}, [buttonId, buttonAriaAttributes, buttonEventHandlers, open]);
|
|
215
|
+
var customMenuButton = (0, _react.useMemo)(function () {
|
|
216
|
+
return renderMenuButton === null || renderMenuButton === void 0 ? void 0 : renderMenuButton(buttonProps, buttonElementRef);
|
|
217
|
+
}, [renderMenuButton, buttonProps, buttonElementRef]);
|
|
206
218
|
var buttonElement = customMenuButton !== null && customMenuButton !== void 0 ? customMenuButton : /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
|
|
207
219
|
ref: buttonElementRef
|
|
208
220
|
}, buttonProps), menuButtonText);
|
package/cjs/Menu/MenuItem.js
CHANGED
|
@@ -44,20 +44,24 @@ function MenuItem(props) {
|
|
|
44
44
|
}, [disabled, onActivate]); // Gain/release focus on mousedown in `menubar`
|
|
45
45
|
|
|
46
46
|
var handleMouseDown = (0, _react.useCallback)(function () {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
if (!hasFocus) {
|
|
48
|
+
dispatch({
|
|
49
|
+
type: _MenuContext.MenuActionTypes.MoveFocus,
|
|
50
|
+
to: _MenuContext.MoveFocusTo.Specific,
|
|
51
|
+
id: menuitemRef.current.id
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}, [hasFocus, dispatch]); // Gain/release focus on mouseenter/mouseleave in `menu`
|
|
53
55
|
|
|
54
56
|
var handleMouseMove = (0, _react.useCallback)(function () {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
if (!hasFocus) {
|
|
58
|
+
dispatch({
|
|
59
|
+
type: _MenuContext.MenuActionTypes.MoveFocus,
|
|
60
|
+
to: _MenuContext.MoveFocusTo.Specific,
|
|
61
|
+
id: menuitemRef.current.id
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}, [hasFocus, dispatch]);
|
|
61
65
|
var handleMouseLeave = (0, _react.useCallback)(function () {
|
|
62
66
|
dispatch({
|
|
63
67
|
type: _MenuContext.MenuActionTypes.MoveFocus,
|
|
@@ -104,15 +104,17 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
104
104
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
105
105
|
|
|
106
106
|
if (input) {
|
|
107
|
-
|
|
107
|
+
var _inputRef$current;
|
|
108
|
+
|
|
109
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
108
110
|
}
|
|
109
111
|
}, [input, onFocus]);
|
|
110
112
|
var handleBlur = (0, _react.useCallback)(function (event) {
|
|
111
113
|
if (document.activeElement !== inputRef.current) {
|
|
112
|
-
var _inputRef$
|
|
114
|
+
var _inputRef$current2;
|
|
113
115
|
|
|
114
116
|
setActive(false);
|
|
115
|
-
(_inputRef$
|
|
117
|
+
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
|
|
@@ -73,10 +73,10 @@ var RadioGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
73
73
|
}, [disabled, handleChange, inline, isControlled, name, plaintext, readOnly, value]);
|
|
74
74
|
return /*#__PURE__*/_react.default.createElement(RadioContext.Provider, {
|
|
75
75
|
value: contextValue
|
|
76
|
-
}, plaintext ? /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
|
|
76
|
+
}, plaintext ? /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({
|
|
77
77
|
ref: ref,
|
|
78
78
|
localeKey: "notSelected"
|
|
79
|
-
}, value ? children : null) : /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
79
|
+
}, rest), value ? children : null) : /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
80
80
|
role: "radiogroup"
|
|
81
81
|
}, rest, {
|
|
82
82
|
ref: ref,
|
package/cjs/Rate/Rate.js
CHANGED
|
@@ -15,6 +15,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
15
15
|
|
|
16
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
17
|
|
|
18
|
+
var _isNil = _interopRequireDefault(require("lodash/isNil"));
|
|
19
|
+
|
|
18
20
|
var _Star = _interopRequireDefault(require("@rsuite/icons/legacy/Star"));
|
|
19
21
|
|
|
20
22
|
var _utils = require("../utils");
|
|
@@ -138,7 +140,7 @@ var Rate = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
138
140
|
return /*#__PURE__*/_react.default.createElement(_Plaintext.default, {
|
|
139
141
|
localeKey: "notSelected",
|
|
140
142
|
className: className
|
|
141
|
-
}, value + "(" + max + ")");
|
|
143
|
+
}, !(0, _isNil.default)(value) ? value + "(" + max + ")" : null);
|
|
142
144
|
}
|
|
143
145
|
|
|
144
146
|
return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
|
|
@@ -17,9 +17,12 @@ var _resizeObserver = require("@juggle/resize-observer");
|
|
|
17
17
|
function useElementResize(eventTarget, listener) {
|
|
18
18
|
var resizeObserver = (0, _react.useRef)();
|
|
19
19
|
(0, _react.useEffect)(function () {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
if (!resizeObserver.current) {
|
|
21
|
+
var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
|
|
22
|
+
resizeObserver.current = new _resizeObserver.ResizeObserver(listener);
|
|
23
|
+
resizeObserver.current.observe(target);
|
|
24
|
+
}
|
|
25
|
+
|
|
23
26
|
return function () {
|
|
24
27
|
var _resizeObserver$curre;
|
|
25
28
|
|