rsuite 5.64.0 → 5.64.2
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 +21 -0
- package/Radio/styles/index.css +3 -0
- package/Radio/styles/index.less +4 -0
- package/cjs/DateInput/DateField.js +2 -2
- package/cjs/DateInput/DateInput.js +12 -5
- package/cjs/DateInput/hooks/useFieldCursor.d.ts +1 -0
- package/cjs/DateInput/hooks/useFieldCursor.js +11 -5
- package/cjs/DateRangeInput/DateRangeInput.js +11 -3
- package/cjs/Drawer/Drawer.d.ts +1 -1
- package/cjs/Modal/Modal.js +0 -1
- package/cjs/Modal/utils.d.ts +0 -1
- package/cjs/Modal/utils.js +3 -4
- package/cjs/Panel/PanelBody.js +4 -3
- package/dist/rsuite-no-reset-rtl.css +3 -0
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +3 -0
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +3 -0
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +3 -0
- package/dist/rsuite.js +63 -52
- 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/DateInput/DateField.js +2 -2
- package/esm/DateInput/DateInput.js +12 -5
- package/esm/DateInput/hooks/useFieldCursor.d.ts +1 -0
- package/esm/DateInput/hooks/useFieldCursor.js +11 -5
- package/esm/DateRangeInput/DateRangeInput.js +11 -3
- package/esm/Drawer/Drawer.d.ts +1 -1
- package/esm/Modal/Modal.js +0 -1
- package/esm/Modal/utils.d.ts +0 -1
- package/esm/Modal/utils.js +3 -4
- package/esm/Panel/PanelBody.js +4 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
## [5.64.2](https://github.com/rsuite/rsuite/compare/v5.64.1...v5.64.2) (2024-06-21)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **Panel:** fix unable to add className to PanelBody ([#3845](https://github.com/rsuite/rsuite/issues/3845)) ([ca70540](https://github.com/rsuite/rsuite/commit/ca705409fcd5539b2e95e34be3245414ede84237))
|
|
7
|
+
* **radio:** disabled radio control hover cursor ([#3847](https://github.com/rsuite/rsuite/issues/3847)) ([99f7859](https://github.com/rsuite/rsuite/commit/99f7859921defdd7b7fc980552653a4c2f391028))
|
|
8
|
+
* remove unnecessary dependencies ([#3844](https://github.com/rsuite/rsuite/issues/3844)) ([51d70ba](https://github.com/rsuite/rsuite/commit/51d70ba00a35c5fc8d75c324cb856e811adebcd1))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## [5.64.1](https://github.com/rsuite/rsuite/compare/v5.64.0...v5.64.1) (2024-06-14)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **DateInput,DateRangeInput:** fix date input error when manually input date ([#3832](https://github.com/rsuite/rsuite/issues/3832)) ([40db883](https://github.com/rsuite/rsuite/commit/40db883280d940aa871a77f92608ae0d2c37f2e9))
|
|
18
|
+
* **Modal:** fix `overflow` not working when Modal is in Drawer ([#3839](https://github.com/rsuite/rsuite/issues/3839)) ([d65b28d](https://github.com/rsuite/rsuite/commit/d65b28dc2ba3fb534ee760ace5bc93dd34e06afb))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
1
22
|
# [5.64.0](https://github.com/rsuite/rsuite/compare/v5.62.1...v5.64.0) (2024-05-30)
|
|
2
23
|
|
|
3
24
|
|
package/Radio/styles/index.css
CHANGED
package/Radio/styles/index.less
CHANGED
|
@@ -170,7 +170,7 @@ var useDateField = exports.useDateField = function useDateField(format, localize
|
|
|
170
170
|
hour = dateField.hour,
|
|
171
171
|
minute = dateField.minute,
|
|
172
172
|
second = dateField.second;
|
|
173
|
-
var date = new Date(year || 0, typeof month === 'number' ? month - 1 : 0,
|
|
173
|
+
var date = new Date(year || 0, typeof month === 'number' ? Math.max(month - 1, 0) : 0,
|
|
174
174
|
// The default day is 1 when the value is null, otherwise it becomes the last day of the month.
|
|
175
175
|
day || 1, hour || 0, minute || 0, second || 0);
|
|
176
176
|
if (typeof type === 'undefined' || typeof value === 'undefined') {
|
|
@@ -183,7 +183,7 @@ var useDateField = exports.useDateField = function useDateField(format, localize
|
|
|
183
183
|
|
|
184
184
|
// Invalid Date
|
|
185
185
|
return new Date('');
|
|
186
|
-
} else if (type === 'day' && value === 0) {
|
|
186
|
+
} else if ((type === 'day' || type === 'month') && value === 0) {
|
|
187
187
|
// Invalid Date. If the type is day and the value is 0, it is considered an invalid date.
|
|
188
188
|
return new Date('');
|
|
189
189
|
}
|
|
@@ -61,6 +61,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
61
61
|
isEmptyValue = _useDateInputState.isEmptyValue;
|
|
62
62
|
var _useFieldCursor = (0, _useFieldCursor2.default)(formatStr, valueProp),
|
|
63
63
|
isMoveCursor = _useFieldCursor.isMoveCursor,
|
|
64
|
+
isResetValue = _useFieldCursor.isResetValue,
|
|
64
65
|
increment = _useFieldCursor.increment,
|
|
65
66
|
reset = _useFieldCursor.reset;
|
|
66
67
|
var dateString = toDateString();
|
|
@@ -87,7 +88,11 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
87
88
|
}));
|
|
88
89
|
setSelectedState(state);
|
|
89
90
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
90
|
-
|
|
91
|
+
|
|
92
|
+
// If the selected field changes, reset the input state
|
|
93
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
94
|
+
reset();
|
|
95
|
+
}
|
|
91
96
|
});
|
|
92
97
|
var onSegmentValueChange = (0, _hooks.useEventCallback)(function (event) {
|
|
93
98
|
var input = event.target;
|
|
@@ -110,14 +115,12 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
110
115
|
if (!pattern) {
|
|
111
116
|
return;
|
|
112
117
|
}
|
|
113
|
-
increment();
|
|
114
118
|
var field = getDateField(pattern);
|
|
115
119
|
var value = parseInt(key, 10);
|
|
116
120
|
var padValue = parseInt("" + (field.value || '') + key, 10);
|
|
117
121
|
var newValue = value;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if ((0, _utils2.validateDateTime)(field.name, padValue)) {
|
|
122
|
+
if ((0, _utils2.validateDateTime)(field.name, padValue) && !isResetValue()) {
|
|
123
|
+
// Check if the value entered by the user is a valid date
|
|
121
124
|
newValue = padValue;
|
|
122
125
|
}
|
|
123
126
|
setDateField(pattern, newValue, function (date) {
|
|
@@ -133,6 +136,7 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
133
136
|
}));
|
|
134
137
|
setSelectedState(nextState);
|
|
135
138
|
setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
|
|
139
|
+
increment();
|
|
136
140
|
|
|
137
141
|
// If the field is full value, move the cursor to the next field
|
|
138
142
|
if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
|
|
@@ -161,6 +165,9 @@ var DateInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
161
165
|
}));
|
|
162
166
|
setSelectedState(state);
|
|
163
167
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
168
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
169
|
+
reset();
|
|
170
|
+
}
|
|
164
171
|
});
|
|
165
172
|
var onKeyboardInput = (0, _useKeyboardInputEvent.default)({
|
|
166
173
|
onSegmentChange: onSegmentChange,
|
|
@@ -9,12 +9,17 @@ var _utils = require("../utils");
|
|
|
9
9
|
var _hooks = require("../../internals/hooks");
|
|
10
10
|
function useFieldCursor(format, value) {
|
|
11
11
|
var typeCount = (0, _react.useRef)(0);
|
|
12
|
-
var increment = function
|
|
12
|
+
var increment = (0, _react.useCallback)(function () {
|
|
13
13
|
typeCount.current += 1;
|
|
14
|
-
};
|
|
15
|
-
var reset = function
|
|
14
|
+
}, []);
|
|
15
|
+
var reset = (0, _react.useCallback)(function () {
|
|
16
16
|
typeCount.current = 0;
|
|
17
|
-
};
|
|
17
|
+
}, []);
|
|
18
|
+
var isResetValue = (0, _react.useCallback)(function () {
|
|
19
|
+
return typeCount.current === 0;
|
|
20
|
+
}, []);
|
|
21
|
+
|
|
22
|
+
// Check if the cursor should move to the next field
|
|
18
23
|
var isMoveCursor = (0, _react.useCallback)(function (value, pattern) {
|
|
19
24
|
var patternGroup = (0, _utils.getPatternGroups)(format, pattern);
|
|
20
25
|
if (value.toString().length === patternGroup.length) {
|
|
@@ -48,7 +53,8 @@ function useFieldCursor(format, value) {
|
|
|
48
53
|
return {
|
|
49
54
|
increment: increment,
|
|
50
55
|
reset: reset,
|
|
51
|
-
isMoveCursor: isMoveCursor
|
|
56
|
+
isMoveCursor: isMoveCursor,
|
|
57
|
+
isResetValue: isResetValue
|
|
52
58
|
};
|
|
53
59
|
}
|
|
54
60
|
var _default = exports.default = useFieldCursor;
|
|
@@ -70,6 +70,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
70
70
|
}));
|
|
71
71
|
var _useFieldCursor = (0, _DateInput.useFieldCursor)(formatStr, valueProp),
|
|
72
72
|
isMoveCursor = _useFieldCursor.isMoveCursor,
|
|
73
|
+
isResetValue = _useFieldCursor.isResetValue,
|
|
73
74
|
increment = _useFieldCursor.increment,
|
|
74
75
|
reset = _useFieldCursor.reset;
|
|
75
76
|
var getActiveState = function getActiveState(type) {
|
|
@@ -127,7 +128,11 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
127
128
|
}));
|
|
128
129
|
setSelectedState(state);
|
|
129
130
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
130
|
-
|
|
131
|
+
|
|
132
|
+
// If the selected field changes, reset the input state
|
|
133
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
134
|
+
reset();
|
|
135
|
+
}
|
|
131
136
|
});
|
|
132
137
|
var onSegmentValueChange = (0, _hooks.useEventCallback)(function (event) {
|
|
133
138
|
var input = event.target;
|
|
@@ -150,14 +155,13 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
150
155
|
if (!pattern) {
|
|
151
156
|
return;
|
|
152
157
|
}
|
|
153
|
-
increment();
|
|
154
158
|
var field = getActiveState().getDateField(pattern);
|
|
155
159
|
var value = parseInt(key, 10);
|
|
156
160
|
var padValue = parseInt("" + (field.value || '') + key, 10);
|
|
157
161
|
var newValue = value;
|
|
158
162
|
|
|
159
163
|
// Check if the value entered by the user is a valid date
|
|
160
|
-
if ((0, _DateInput.validateDateTime)(field.name, padValue)) {
|
|
164
|
+
if ((0, _DateInput.validateDateTime)(field.name, padValue) && !isResetValue()) {
|
|
161
165
|
newValue = padValue;
|
|
162
166
|
}
|
|
163
167
|
getActiveState().setDateField(pattern, newValue, function (date) {
|
|
@@ -173,6 +177,7 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
173
177
|
}));
|
|
174
178
|
setSelectedState(nextState);
|
|
175
179
|
setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
|
|
180
|
+
increment();
|
|
176
181
|
|
|
177
182
|
// If the field is full value, move the cursor to the next field
|
|
178
183
|
if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
|
|
@@ -209,6 +214,9 @@ var DateRangeInput = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
209
214
|
setDateType(dateType);
|
|
210
215
|
setSelectedState(state);
|
|
211
216
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
217
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
218
|
+
reset();
|
|
219
|
+
}
|
|
212
220
|
});
|
|
213
221
|
var onKeyboardInput = (0, _DateInput.useKeyboardInputEvent)({
|
|
214
222
|
onSegmentChange: onSegmentChange,
|
package/cjs/Drawer/Drawer.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import DrawerHeader from './DrawerHeader';
|
|
|
6
6
|
import DrawerActions from './DrawerActions';
|
|
7
7
|
import DrawerFooter from './DrawerFooter';
|
|
8
8
|
import DrawerTitle from './DrawerTitle';
|
|
9
|
-
export interface DrawerProps extends ModalProps {
|
|
9
|
+
export interface DrawerProps extends Omit<ModalProps, 'overflow'> {
|
|
10
10
|
/** The placement of Drawer */
|
|
11
11
|
placement?: TypeAttributes.Placement4;
|
|
12
12
|
/** Custom close button */
|
package/cjs/Modal/Modal.js
CHANGED
|
@@ -93,7 +93,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
93
93
|
// The style of the Modal body will be updated with the size of the window or container.
|
|
94
94
|
var _useBodyStyles = (0, _utils2.useBodyStyles)(dialogRef, {
|
|
95
95
|
overflow: overflow,
|
|
96
|
-
drawer: isDrawer,
|
|
97
96
|
prefix: prefix,
|
|
98
97
|
size: size
|
|
99
98
|
}),
|
package/cjs/Modal/utils.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { TypeAttributes } from '../internals/types';
|
|
|
3
3
|
export type ModalSize = TypeAttributes.Size | 'full' | number | string;
|
|
4
4
|
export declare const useBodyStyles: (ref: React.RefObject<HTMLElement>, options: {
|
|
5
5
|
overflow: boolean;
|
|
6
|
-
drawer: boolean;
|
|
7
6
|
size?: ModalSize | undefined;
|
|
8
7
|
prefix: (...classes: any) => string;
|
|
9
8
|
}) => [import("react").CSSProperties | null, (entering?: boolean) => void, () => void];
|
package/cjs/Modal/utils.js
CHANGED
|
@@ -13,7 +13,6 @@ var useBodyStyles = exports.useBodyStyles = function useBodyStyles(ref, options)
|
|
|
13
13
|
bodyStyles = _useState[0],
|
|
14
14
|
setBodyStyles = _useState[1];
|
|
15
15
|
var overflow = options.overflow,
|
|
16
|
-
drawer = options.drawer,
|
|
17
16
|
prefix = options.prefix,
|
|
18
17
|
size = options.size;
|
|
19
18
|
var windowResizeListener = (0, _react.useRef)();
|
|
@@ -52,11 +51,11 @@ var useBodyStyles = exports.useBodyStyles = function useBodyStyles(ref, options)
|
|
|
52
51
|
contentElementResizeObserver.current = null;
|
|
53
52
|
}, []);
|
|
54
53
|
var onChangeBodyStyles = (0, _react.useCallback)(function (entering) {
|
|
55
|
-
if (
|
|
54
|
+
if (!overflow || size === 'full') {
|
|
56
55
|
setBodyStyles(null);
|
|
57
56
|
return;
|
|
58
57
|
}
|
|
59
|
-
if (
|
|
58
|
+
if (ref.current) {
|
|
60
59
|
updateBodyStyles(undefined, entering);
|
|
61
60
|
contentElement.current = ref.current.querySelector("." + prefix('content'));
|
|
62
61
|
if (!windowResizeListener.current) {
|
|
@@ -69,7 +68,7 @@ var useBodyStyles = exports.useBodyStyles = function useBodyStyles(ref, options)
|
|
|
69
68
|
contentElementResizeObserver.current.observe(contentElement.current);
|
|
70
69
|
}
|
|
71
70
|
}
|
|
72
|
-
}, [
|
|
71
|
+
}, [overflow, prefix, ref, size, updateBodyStyles]);
|
|
73
72
|
(0, _react.useEffect)(function () {
|
|
74
73
|
return onDestroyEvents;
|
|
75
74
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
package/cjs/Panel/PanelBody.js
CHANGED
|
@@ -10,7 +10,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
10
10
|
var _Collapse = _interopRequireDefault(require("../Animation/Collapse"));
|
|
11
11
|
var _hooks = require("../internals/hooks");
|
|
12
12
|
var _ScrollView = _interopRequireDefault(require("../internals/ScrollView"));
|
|
13
|
-
var _excluded = ["classPrefix", "children", "collapsible", "expanded", "bodyFill", "role", "id", "labelId", "scrollShadow", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "onScroll"],
|
|
13
|
+
var _excluded = ["classPrefix", "children", "collapsible", "expanded", "bodyFill", "role", "id", "labelId", "scrollShadow", "className", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "onScroll"],
|
|
14
14
|
_excluded2 = ["className"];
|
|
15
15
|
var PanelBody = function PanelBody(props) {
|
|
16
16
|
var _props$classPrefix = props.classPrefix,
|
|
@@ -23,6 +23,7 @@ var PanelBody = function PanelBody(props) {
|
|
|
23
23
|
id = props.id,
|
|
24
24
|
labelId = props.labelId,
|
|
25
25
|
scrollShadow = props.scrollShadow,
|
|
26
|
+
className = props.className,
|
|
26
27
|
onEnter = props.onEnter,
|
|
27
28
|
onEntering = props.onEntering,
|
|
28
29
|
onEntered = props.onEntered,
|
|
@@ -35,9 +36,9 @@ var PanelBody = function PanelBody(props) {
|
|
|
35
36
|
merge = _useClassNames.merge,
|
|
36
37
|
prefix = _useClassNames.prefix,
|
|
37
38
|
withClassPrefix = _useClassNames.withClassPrefix;
|
|
38
|
-
var bodyClasses = withClassPrefix({
|
|
39
|
+
var bodyClasses = merge(className, withClassPrefix({
|
|
39
40
|
fill: bodyFill
|
|
40
|
-
});
|
|
41
|
+
}));
|
|
41
42
|
var renderBody = function renderBody(bodyProps) {
|
|
42
43
|
return /*#__PURE__*/_react.default.createElement(_ScrollView.default, (0, _extends2.default)({}, rest, bodyProps, {
|
|
43
44
|
customScrollbar: true,
|
|
@@ -12101,6 +12101,9 @@ textarea.rs-inline-edit-sm .rs-plaintext {
|
|
|
12101
12101
|
bottom: -10px;
|
|
12102
12102
|
right: -10px;
|
|
12103
12103
|
}
|
|
12104
|
+
.rs-radio-control [type='radio']:disabled {
|
|
12105
|
+
cursor: not-allowed;
|
|
12106
|
+
}
|
|
12104
12107
|
.rs-radio-control::before,
|
|
12105
12108
|
.rs-radio-control .rs-radio-inner::before,
|
|
12106
12109
|
.rs-radio-control .rs-radio-inner::after {
|