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.
@@ -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
- reset();
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
- // Check if the value entered by the user is a valid date
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,
@@ -2,5 +2,6 @@ export declare function useFieldCursor<V = Date | null>(format: string, value?:
2
2
  increment: () => void;
3
3
  reset: () => void;
4
4
  isMoveCursor: (value: number, pattern: string) => boolean;
5
+ isResetValue: () => boolean;
5
6
  };
6
7
  export default useFieldCursor;
@@ -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 increment() {
7
+ var increment = useCallback(function () {
8
8
  typeCount.current += 1;
9
- };
10
- var reset = function reset() {
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
- reset();
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,
@@ -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 */
@@ -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
  }),
@@ -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];
@@ -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 (drawer || size === 'full') {
49
+ if (!overflow || size === 'full') {
51
50
  setBodyStyles(null);
52
51
  return;
53
52
  }
54
- if (overflow && ref.current) {
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
- }, [drawer, overflow, prefix, ref, size, updateBodyStyles]);
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.0",
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-table": "^5.18.2",
41
+ "rsuite": "^5.64.0",
42
+ "rsuite-table": "^5.18.3",
42
43
  "schema-typed": "^2.2.2"
43
44
  },
44
45
  "peerDependencies": {