rsuite 5.64.0 → 5.64.1
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 +10 -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/dist/rsuite.js +60 -49
- package/dist/rsuite.js.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/package.json +3 -2
|
@@ -166,7 +166,7 @@ export var useDateField = function useDateField(format, localize, date) {
|
|
|
166
166
|
hour = dateField.hour,
|
|
167
167
|
minute = dateField.minute,
|
|
168
168
|
second = dateField.second;
|
|
169
|
-
var date = new Date(year || 0, typeof month === 'number' ? month - 1 : 0,
|
|
169
|
+
var date = new Date(year || 0, typeof month === 'number' ? Math.max(month - 1, 0) : 0,
|
|
170
170
|
// The default day is 1 when the value is null, otherwise it becomes the last day of the month.
|
|
171
171
|
day || 1, hour || 0, minute || 0, second || 0);
|
|
172
172
|
if (typeof type === 'undefined' || typeof value === 'undefined') {
|
|
@@ -179,7 +179,7 @@ export var useDateField = function useDateField(format, localize, date) {
|
|
|
179
179
|
|
|
180
180
|
// Invalid Date
|
|
181
181
|
return new Date('');
|
|
182
|
-
} else if (type === 'day' && value === 0) {
|
|
182
|
+
} else if ((type === 'day' || type === 'month') && value === 0) {
|
|
183
183
|
// Invalid Date. If the type is day and the value is 0, it is considered an invalid date.
|
|
184
184
|
return new Date('');
|
|
185
185
|
}
|
|
@@ -54,6 +54,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
54
54
|
isEmptyValue = _useDateInputState.isEmptyValue;
|
|
55
55
|
var _useFieldCursor = useFieldCursor(formatStr, valueProp),
|
|
56
56
|
isMoveCursor = _useFieldCursor.isMoveCursor,
|
|
57
|
+
isResetValue = _useFieldCursor.isResetValue,
|
|
57
58
|
increment = _useFieldCursor.increment,
|
|
58
59
|
reset = _useFieldCursor.reset;
|
|
59
60
|
var dateString = toDateString();
|
|
@@ -80,7 +81,11 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
80
81
|
}));
|
|
81
82
|
setSelectedState(state);
|
|
82
83
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
83
|
-
|
|
84
|
+
|
|
85
|
+
// If the selected field changes, reset the input state
|
|
86
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
87
|
+
reset();
|
|
88
|
+
}
|
|
84
89
|
});
|
|
85
90
|
var onSegmentValueChange = useEventCallback(function (event) {
|
|
86
91
|
var input = event.target;
|
|
@@ -103,14 +108,12 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
103
108
|
if (!pattern) {
|
|
104
109
|
return;
|
|
105
110
|
}
|
|
106
|
-
increment();
|
|
107
111
|
var field = getDateField(pattern);
|
|
108
112
|
var value = parseInt(key, 10);
|
|
109
113
|
var padValue = parseInt("" + (field.value || '') + key, 10);
|
|
110
114
|
var newValue = value;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
if (validateDateTime(field.name, padValue)) {
|
|
115
|
+
if (validateDateTime(field.name, padValue) && !isResetValue()) {
|
|
116
|
+
// Check if the value entered by the user is a valid date
|
|
114
117
|
newValue = padValue;
|
|
115
118
|
}
|
|
116
119
|
setDateField(pattern, newValue, function (date) {
|
|
@@ -126,6 +129,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
126
129
|
}));
|
|
127
130
|
setSelectedState(nextState);
|
|
128
131
|
setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
|
|
132
|
+
increment();
|
|
129
133
|
|
|
130
134
|
// If the field is full value, move the cursor to the next field
|
|
131
135
|
if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
|
|
@@ -154,6 +158,9 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
154
158
|
}));
|
|
155
159
|
setSelectedState(state);
|
|
156
160
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
161
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
162
|
+
reset();
|
|
163
|
+
}
|
|
157
164
|
});
|
|
158
165
|
var onKeyboardInput = useKeyboardInputEvent({
|
|
159
166
|
onSegmentChange: onSegmentChange,
|
|
@@ -4,12 +4,17 @@ import { getPatternGroups } from "../utils.js";
|
|
|
4
4
|
import { useUpdateEffect } from "../../internals/hooks/index.js";
|
|
5
5
|
export function useFieldCursor(format, value) {
|
|
6
6
|
var typeCount = useRef(0);
|
|
7
|
-
var increment = function
|
|
7
|
+
var increment = useCallback(function () {
|
|
8
8
|
typeCount.current += 1;
|
|
9
|
-
};
|
|
10
|
-
var reset = function
|
|
9
|
+
}, []);
|
|
10
|
+
var reset = useCallback(function () {
|
|
11
11
|
typeCount.current = 0;
|
|
12
|
-
};
|
|
12
|
+
}, []);
|
|
13
|
+
var isResetValue = useCallback(function () {
|
|
14
|
+
return typeCount.current === 0;
|
|
15
|
+
}, []);
|
|
16
|
+
|
|
17
|
+
// Check if the cursor should move to the next field
|
|
13
18
|
var isMoveCursor = useCallback(function (value, pattern) {
|
|
14
19
|
var patternGroup = getPatternGroups(format, pattern);
|
|
15
20
|
if (value.toString().length === patternGroup.length) {
|
|
@@ -43,7 +48,8 @@ export function useFieldCursor(format, value) {
|
|
|
43
48
|
return {
|
|
44
49
|
increment: increment,
|
|
45
50
|
reset: reset,
|
|
46
|
-
isMoveCursor: isMoveCursor
|
|
51
|
+
isMoveCursor: isMoveCursor,
|
|
52
|
+
isResetValue: isResetValue
|
|
47
53
|
};
|
|
48
54
|
}
|
|
49
55
|
export default useFieldCursor;
|
|
@@ -63,6 +63,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
63
63
|
}));
|
|
64
64
|
var _useFieldCursor = useFieldCursor(formatStr, valueProp),
|
|
65
65
|
isMoveCursor = _useFieldCursor.isMoveCursor,
|
|
66
|
+
isResetValue = _useFieldCursor.isResetValue,
|
|
66
67
|
increment = _useFieldCursor.increment,
|
|
67
68
|
reset = _useFieldCursor.reset;
|
|
68
69
|
var getActiveState = function getActiveState(type) {
|
|
@@ -120,7 +121,11 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
120
121
|
}));
|
|
121
122
|
setSelectedState(state);
|
|
122
123
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
123
|
-
|
|
124
|
+
|
|
125
|
+
// If the selected field changes, reset the input state
|
|
126
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
127
|
+
reset();
|
|
128
|
+
}
|
|
124
129
|
});
|
|
125
130
|
var onSegmentValueChange = useEventCallback(function (event) {
|
|
126
131
|
var input = event.target;
|
|
@@ -143,14 +148,13 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
143
148
|
if (!pattern) {
|
|
144
149
|
return;
|
|
145
150
|
}
|
|
146
|
-
increment();
|
|
147
151
|
var field = getActiveState().getDateField(pattern);
|
|
148
152
|
var value = parseInt(key, 10);
|
|
149
153
|
var padValue = parseInt("" + (field.value || '') + key, 10);
|
|
150
154
|
var newValue = value;
|
|
151
155
|
|
|
152
156
|
// Check if the value entered by the user is a valid date
|
|
153
|
-
if (validateDateTime(field.name, padValue)) {
|
|
157
|
+
if (validateDateTime(field.name, padValue) && !isResetValue()) {
|
|
154
158
|
newValue = padValue;
|
|
155
159
|
}
|
|
156
160
|
getActiveState().setDateField(pattern, newValue, function (date) {
|
|
@@ -166,6 +170,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
166
170
|
}));
|
|
167
171
|
setSelectedState(nextState);
|
|
168
172
|
setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
|
|
173
|
+
increment();
|
|
169
174
|
|
|
170
175
|
// If the field is full value, move the cursor to the next field
|
|
171
176
|
if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
|
|
@@ -202,6 +207,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
202
207
|
setDateType(dateType);
|
|
203
208
|
setSelectedState(state);
|
|
204
209
|
setSelectionRange(state.selectionStart, state.selectionEnd);
|
|
210
|
+
if (selectedState.selectedPattern !== state.selectedPattern) {
|
|
211
|
+
reset();
|
|
212
|
+
}
|
|
205
213
|
});
|
|
206
214
|
var onKeyboardInput = useKeyboardInputEvent({
|
|
207
215
|
onSegmentChange: onSegmentChange,
|
package/esm/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/esm/Modal/Modal.js
CHANGED
|
@@ -86,7 +86,6 @@ var Modal = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
86
86
|
// The style of the Modal body will be updated with the size of the window or container.
|
|
87
87
|
var _useBodyStyles = useBodyStyles(dialogRef, {
|
|
88
88
|
overflow: overflow,
|
|
89
|
-
drawer: isDrawer,
|
|
90
89
|
prefix: prefix,
|
|
91
90
|
size: size
|
|
92
91
|
}),
|
package/esm/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/esm/Modal/utils.js
CHANGED
|
@@ -8,7 +8,6 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
8
8
|
bodyStyles = _useState[0],
|
|
9
9
|
setBodyStyles = _useState[1];
|
|
10
10
|
var overflow = options.overflow,
|
|
11
|
-
drawer = options.drawer,
|
|
12
11
|
prefix = options.prefix,
|
|
13
12
|
size = options.size;
|
|
14
13
|
var windowResizeListener = useRef();
|
|
@@ -47,11 +46,11 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
47
46
|
contentElementResizeObserver.current = null;
|
|
48
47
|
}, []);
|
|
49
48
|
var onChangeBodyStyles = useCallback(function (entering) {
|
|
50
|
-
if (
|
|
49
|
+
if (!overflow || size === 'full') {
|
|
51
50
|
setBodyStyles(null);
|
|
52
51
|
return;
|
|
53
52
|
}
|
|
54
|
-
if (
|
|
53
|
+
if (ref.current) {
|
|
55
54
|
updateBodyStyles(undefined, entering);
|
|
56
55
|
contentElement.current = ref.current.querySelector("." + prefix('content'));
|
|
57
56
|
if (!windowResizeListener.current) {
|
|
@@ -64,7 +63,7 @@ export var useBodyStyles = function useBodyStyles(ref, options) {
|
|
|
64
63
|
contentElementResizeObserver.current.observe(contentElement.current);
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
|
-
}, [
|
|
66
|
+
}, [overflow, prefix, ref, size, updateBodyStyles]);
|
|
68
67
|
useEffect(function () {
|
|
69
68
|
return onDestroyEvents;
|
|
70
69
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rsuite",
|
|
3
|
-
"version": "5.64.
|
|
3
|
+
"version": "5.64.1",
|
|
4
4
|
"description": "A suite of react components",
|
|
5
5
|
"main": "cjs/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"prop-types": "^15.8.1",
|
|
39
39
|
"react-use-set": "^1.0.0",
|
|
40
40
|
"react-window": "^1.8.8",
|
|
41
|
-
"rsuite
|
|
41
|
+
"rsuite": "^5.64.0",
|
|
42
|
+
"rsuite-table": "^5.18.3",
|
|
42
43
|
"schema-typed": "^2.2.2"
|
|
43
44
|
},
|
|
44
45
|
"peerDependencies": {
|