rsuite 5.60.0 → 5.60.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.
Files changed (70) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/DatePicker/styles/index.css +1 -0
  3. package/DatePicker/styles/index.less +1 -0
  4. package/DateRangePicker/styles/index.css +4 -3
  5. package/DateRangePicker/styles/index.less +7 -5
  6. package/LICENSE +1 -1
  7. package/README.md +70 -89
  8. package/RangeSlider/styles/index.css +1 -1
  9. package/Slider/styles/index.css +1 -1
  10. package/Slider/styles/index.less +1 -1
  11. package/Toggle/styles/index.css +8 -2
  12. package/Toggle/styles/index.less +4 -2
  13. package/cjs/DateInput/DateField.js +3 -1
  14. package/cjs/DateInput/DateInput.js +17 -16
  15. package/cjs/DateInput/{useDateInputState.d.ts → hooks/useDateInputState.d.ts} +1 -1
  16. package/cjs/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
  17. package/cjs/DateInput/hooks/useFieldCursor.d.ts +6 -0
  18. package/cjs/DateInput/hooks/useFieldCursor.js +56 -0
  19. package/cjs/DateInput/hooks/useSelectedState.d.ts +14 -0
  20. package/cjs/DateInput/hooks/useSelectedState.js +23 -0
  21. package/cjs/DateInput/index.d.ts +5 -3
  22. package/cjs/DateInput/index.js +11 -5
  23. package/cjs/DateInput/utils.d.ts +0 -1
  24. package/cjs/DateInput/utils.js +2 -24
  25. package/cjs/DateRangeInput/DateRangeInput.js +16 -17
  26. package/cjs/DateRangePicker/DateRangePicker.js +17 -9
  27. package/cjs/DateRangePicker/utils.d.ts +2 -2
  28. package/cjs/DateRangePicker/utils.js +2 -2
  29. package/dist/rsuite-no-reset-rtl.css +13 -6
  30. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  31. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  32. package/dist/rsuite-no-reset.css +13 -6
  33. package/dist/rsuite-no-reset.min.css +1 -1
  34. package/dist/rsuite-no-reset.min.css.map +1 -1
  35. package/dist/rsuite-rtl.css +13 -6
  36. package/dist/rsuite-rtl.min.css +1 -1
  37. package/dist/rsuite-rtl.min.css.map +1 -1
  38. package/dist/rsuite.css +13 -6
  39. package/dist/rsuite.js +48 -26
  40. package/dist/rsuite.js.map +1 -1
  41. package/dist/rsuite.min.css +1 -1
  42. package/dist/rsuite.min.css.map +1 -1
  43. package/dist/rsuite.min.js +1 -1
  44. package/dist/rsuite.min.js.map +1 -1
  45. package/esm/DateInput/DateField.js +3 -1
  46. package/esm/DateInput/DateInput.js +19 -18
  47. package/esm/DateInput/{useDateInputState.d.ts → hooks/useDateInputState.d.ts} +1 -1
  48. package/esm/DateInput/{useDateInputState.js → hooks/useDateInputState.js} +2 -2
  49. package/esm/DateInput/hooks/useFieldCursor.d.ts +6 -0
  50. package/esm/DateInput/hooks/useFieldCursor.js +49 -0
  51. package/esm/DateInput/hooks/useSelectedState.d.ts +14 -0
  52. package/esm/DateInput/hooks/useSelectedState.js +17 -0
  53. package/esm/DateInput/index.d.ts +5 -3
  54. package/esm/DateInput/index.js +5 -3
  55. package/esm/DateInput/utils.d.ts +0 -1
  56. package/esm/DateInput/utils.js +2 -23
  57. package/esm/DateRangeInput/DateRangeInput.js +17 -18
  58. package/esm/DateRangePicker/DateRangePicker.js +17 -9
  59. package/esm/DateRangePicker/utils.d.ts +2 -2
  60. package/esm/DateRangePicker/utils.js +2 -2
  61. package/package.json +2 -2
  62. package/styles/variables.less +0 -1
  63. /package/cjs/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
  64. /package/cjs/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
  65. /package/cjs/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
  66. /package/cjs/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
  67. /package/esm/DateInput/{useIsFocused.d.ts → hooks/useIsFocused.d.ts} +0 -0
  68. /package/esm/DateInput/{useIsFocused.js → hooks/useIsFocused.js} +0 -0
  69. /package/esm/DateInput/{useKeyboardInputEvent.d.ts → hooks/useKeyboardInputEvent.d.ts} +0 -0
  70. /package/esm/DateInput/{useKeyboardInputEvent.js → hooks/useKeyboardInputEvent.js} +0 -0
@@ -126,7 +126,9 @@ export var useDateField = function useDateField(format, localize, date) {
126
126
  if (typeof value === 'number') {
127
127
  value = padNumber(value, pattern.length);
128
128
  }
129
- str = str.replace(pattern, value);
129
+ if (typeof value !== 'undefined') {
130
+ str = str.replace(pattern, value);
131
+ }
130
132
  }
131
133
  });
132
134
  return str;
@@ -1,14 +1,16 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- import React, { useState, useRef, useMemo } from 'react';
4
+ import React, { useRef, useMemo } from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import Input from '../Input';
7
7
  import { mergeRefs, useCustom, useControlled, useEventCallback } from '../utils';
8
- import { getInputSelectedState, validateDateTime, isFieldFullValue, useInputSelection } from './utils';
9
- import useDateInputState from './useDateInputState';
10
- import useKeyboardInputEvent from './useKeyboardInputEvent';
11
- import useIsFocused from './useIsFocused';
8
+ import { getInputSelectedState, validateDateTime, useInputSelection } from './utils';
9
+ import useDateInputState from './hooks/useDateInputState';
10
+ import useKeyboardInputEvent from './hooks/useKeyboardInputEvent';
11
+ import useIsFocused from './hooks/useIsFocused';
12
+ import useFieldCursor from './hooks/useFieldCursor';
13
+ import useSelectedState from './hooks/useSelectedState';
12
14
  /**
13
15
  * The DateInput component lets users select a date with the keyboard.
14
16
  * @version 5.58.0
@@ -26,13 +28,9 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
26
28
  onFocus = props.onFocus,
27
29
  rest = _objectWithoutPropertiesLoose(props, ["format", "value", "defaultValue", "placeholder", "onChange", "onKeyDown", "onBlur", "onFocus"]);
28
30
  var inputRef = useRef();
29
- var _useState = useState({
30
- selectedPattern: 'y',
31
- selectionStart: 0,
32
- selectionEnd: 0
33
- }),
34
- selectedState = _useState[0],
35
- setSelectedState = _useState[1];
31
+ var _useSelectedState = useSelectedState(),
32
+ selectedState = _useSelectedState.selectedState,
33
+ setSelectedState = _useSelectedState.setSelectedState;
36
34
  var _useCustom = useCustom('Calendar'),
37
35
  locale = _useCustom.locale;
38
36
  var dateLocale = locale.dateLocale;
@@ -52,6 +50,10 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
52
50
  getDateField = _useDateInputState.getDateField,
53
51
  toDateString = _useDateInputState.toDateString,
54
52
  isEmptyValue = _useDateInputState.isEmptyValue;
53
+ var _useFieldCursor = useFieldCursor(formatStr, valueProp),
54
+ isMoveCursor = _useFieldCursor.isMoveCursor,
55
+ increment = _useFieldCursor.increment,
56
+ reset = _useFieldCursor.reset;
55
57
  var dateString = toDateString();
56
58
  var keyPressOptions = useMemo(function () {
57
59
  return {
@@ -74,8 +76,9 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
74
76
  input: input,
75
77
  direction: direction
76
78
  }));
77
- setSelectionRange(state.selectionStart, state.selectionEnd);
78
79
  setSelectedState(state);
80
+ setSelectionRange(state.selectionStart, state.selectionEnd);
81
+ reset();
79
82
  });
80
83
  var onSegmentValueChange = useEventCallback(function (event) {
81
84
  var input = event.target;
@@ -98,6 +101,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
98
101
  if (!pattern) {
99
102
  return;
100
103
  }
104
+ increment();
101
105
  var field = getDateField(pattern);
102
106
  var value = parseInt(key, 10);
103
107
  var padValue = parseInt("" + (field.value || '') + key, 10);
@@ -107,10 +111,6 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
107
111
  if (validateDateTime(field.name, padValue)) {
108
112
  newValue = padValue;
109
113
  }
110
- if (pattern === 'M') {
111
- // Month cannot be less than 1.
112
- newValue = Math.max(1, newValue);
113
- }
114
114
  setDateField(pattern, newValue, function (date) {
115
115
  return handleChange(date, event);
116
116
  });
@@ -126,7 +126,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
126
126
  setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
127
127
 
128
128
  // If the field is full value, move the cursor to the next field
129
- if (isFieldFullValue(formatStr, newValue, pattern) && input.selectionEnd !== input.value.length) {
129
+ if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
130
130
  onSegmentChange(event, 'right');
131
131
  }
132
132
  });
@@ -142,6 +142,7 @@ var DateInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
142
142
  setDateField(selectedState.selectedPattern, null, function (date) {
143
143
  return handleChange(date, event);
144
144
  });
145
+ reset();
145
146
  }
146
147
  });
147
148
  var handleClick = useEventCallback(function (event) {
@@ -1,4 +1,4 @@
1
- import { format } from '../utils/dateUtils';
1
+ import { format } from '../../utils/dateUtils';
2
2
  import type { Locale } from 'date-fns';
3
3
  interface DateInputState {
4
4
  formatStr: string;
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { useEffect } from 'react';
3
3
  import startCase from 'lodash/startCase';
4
- import { addDays, addMonths, addYears, addHours, addMinutes, addSeconds, format, isLastDayOfMonth, lastDayOfMonth, isValid } from '../utils/dateUtils';
5
- import { useDateField, patternMap } from './DateField';
4
+ import { addDays, addMonths, addYears, addHours, addMinutes, addSeconds, format, isLastDayOfMonth, lastDayOfMonth, isValid } from '../../utils/dateUtils';
5
+ import { useDateField, patternMap } from '../DateField';
6
6
  export function useDateInputState(_ref) {
7
7
  var formatStr = _ref.formatStr,
8
8
  locale = _ref.locale,
@@ -0,0 +1,6 @@
1
+ export declare function useFieldCursor<V = Date | null>(format: string, value?: V): {
2
+ increment: () => void;
3
+ reset: () => void;
4
+ isMoveCursor: (value: number, pattern: string) => boolean;
5
+ };
6
+ export default useFieldCursor;
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+ import { useCallback, useRef } from 'react';
3
+ import { getPatternGroups } from '../utils';
4
+ import useUpdateEffect from '../../utils/useUpdateEffect';
5
+ export function useFieldCursor(format, value) {
6
+ var typeCount = useRef(0);
7
+ var increment = function increment() {
8
+ typeCount.current += 1;
9
+ };
10
+ var reset = function reset() {
11
+ typeCount.current = 0;
12
+ };
13
+ var isMoveCursor = useCallback(function (value, pattern) {
14
+ var patternGroup = getPatternGroups(format, pattern);
15
+ if (value.toString().length === patternGroup.length) {
16
+ return true;
17
+ } else if (pattern === 'y' && typeCount.current === 4) {
18
+ return true;
19
+ } else if (pattern !== 'y' && typeCount.current === 2) {
20
+ return true;
21
+ }
22
+ switch (pattern) {
23
+ case 'M':
24
+ return parseInt(value + "0") > 12;
25
+ case 'd':
26
+ return parseInt(value + "0") > 31;
27
+ case 'H':
28
+ return parseInt(value + "0") > 23;
29
+ case 'h':
30
+ return parseInt(value + "0") > 12;
31
+ case 'm':
32
+ case 's':
33
+ return parseInt(value + "0") > 59;
34
+ default:
35
+ return false;
36
+ }
37
+ }, [format]);
38
+ useUpdateEffect(function () {
39
+ if (!value) {
40
+ reset();
41
+ }
42
+ }, [value]);
43
+ return {
44
+ increment: increment,
45
+ reset: reset,
46
+ isMoveCursor: isMoveCursor
47
+ };
48
+ }
49
+ export default useFieldCursor;
@@ -0,0 +1,14 @@
1
+ /// <reference types="react" />
2
+ export declare function useSelectedState(): {
3
+ selectedState: {
4
+ selectedPattern: string;
5
+ selectionStart: number;
6
+ selectionEnd: number;
7
+ };
8
+ setSelectedState: import("react").Dispatch<import("react").SetStateAction<{
9
+ selectedPattern: string;
10
+ selectionStart: number;
11
+ selectionEnd: number;
12
+ }>>;
13
+ };
14
+ export default useSelectedState;
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+ import { useState } from 'react';
3
+ var defaultSelectedState = {
4
+ selectedPattern: 'y',
5
+ selectionStart: 0,
6
+ selectionEnd: 0
7
+ };
8
+ export function useSelectedState() {
9
+ var _useState = useState(defaultSelectedState),
10
+ selectedState = _useState[0],
11
+ setSelectedState = _useState[1];
12
+ return {
13
+ selectedState: selectedState,
14
+ setSelectedState: setSelectedState
15
+ };
16
+ }
17
+ export default useSelectedState;
@@ -1,7 +1,9 @@
1
1
  import DateInput from './DateInput';
2
- export { useDateInputState } from './useDateInputState';
3
- export { useKeyboardInputEvent } from './useKeyboardInputEvent';
4
- export { useIsFocused } from './useIsFocused';
2
+ export { useDateInputState } from './hooks/useDateInputState';
3
+ export { useKeyboardInputEvent } from './hooks/useKeyboardInputEvent';
4
+ export { useIsFocused } from './hooks/useIsFocused';
5
+ export { useSelectedState } from './hooks/useSelectedState';
6
+ export { useFieldCursor } from './hooks/useFieldCursor';
5
7
  export * from './utils';
6
8
  export type { DateInputProps } from './DateInput';
7
9
  export default DateInput;
@@ -1,7 +1,9 @@
1
1
  'use client';
2
2
  import DateInput from './DateInput';
3
- export { useDateInputState } from './useDateInputState';
4
- export { useKeyboardInputEvent } from './useKeyboardInputEvent';
5
- export { useIsFocused } from './useIsFocused';
3
+ export { useDateInputState } from './hooks/useDateInputState';
4
+ export { useKeyboardInputEvent } from './hooks/useKeyboardInputEvent';
5
+ export { useIsFocused } from './hooks/useIsFocused';
6
+ export { useSelectedState } from './hooks/useSelectedState';
7
+ export { useFieldCursor } from './hooks/useFieldCursor';
6
8
  export * from './utils';
7
9
  export default DateInput;
@@ -58,6 +58,5 @@ export declare function getInputSelectedState(options: SelectedStateOptions): {
58
58
  };
59
59
  export declare function validateDateTime(type: string, value: number): boolean;
60
60
  export declare function modifyDate(date: Date, type: string, value: number): Date;
61
- export declare function isFieldFullValue(formatStr: string, value: number, pattern: string): boolean;
62
61
  export declare function useInputSelection(input: React.RefObject<any>): (selectionStart: number, selectionEnd: number) => void;
63
62
  export {};
@@ -215,31 +215,10 @@ export function modifyDate(date, type, value) {
215
215
  }
216
216
  return date;
217
217
  }
218
- export function isFieldFullValue(formatStr, value, pattern) {
219
- var patternGroup = getPatternGroups(formatStr, pattern);
220
- if (value.toString().length === patternGroup.length) {
221
- return true;
222
- }
223
- switch (pattern) {
224
- case 'M':
225
- return parseInt(value + "0") > 12;
226
- case 'd':
227
- return parseInt(value + "0") > 31;
228
- case 'H':
229
- return parseInt(value + "0") > 23;
230
- case 'h':
231
- return parseInt(value + "0") > 12;
232
- case 'm':
233
- case 's':
234
- return parseInt(value + "0") > 59;
235
- default:
236
- return false;
237
- }
238
- }
239
- var isTestEnvironment = typeof process !== 'undefined' && undefined === 'test';
240
218
  export function useInputSelection(input) {
241
219
  return function setSelectionRange(selectionStart, selectionEnd) {
242
- if (isTestEnvironment) {
220
+ var isTest = input.current.dataset.test === 'true';
221
+ if (isTest) {
243
222
  safeSetSelection(input.current, selectionStart, selectionEnd);
244
223
  return;
245
224
  }
@@ -5,7 +5,7 @@ import React, { useState, useRef, useMemo } from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import Input from '../Input';
7
7
  import { mergeRefs, useClassNames, useCustom, useControlled, useEventCallback } from '../utils';
8
- import { validateDateTime, isFieldFullValue, useDateInputState, useInputSelection, useKeyboardInputEvent, useIsFocused } from '../DateInput';
8
+ import { validateDateTime, useDateInputState, useInputSelection, useKeyboardInputEvent, useIsFocused, useSelectedState, useFieldCursor } from '../DateInput';
9
9
  import { getInputSelectedState, DateType, getDateType, isSwitchDateType } from './utils';
10
10
  /**
11
11
  * The DateRangeInput component lets users select a date with the keyboard.
@@ -34,13 +34,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
34
34
  merge = _useClassNames.merge;
35
35
  var classes = merge(className, withClassPrefix());
36
36
  var inputRef = useRef();
37
- var _useState = useState({
38
- selectedPattern: 'y',
39
- selectionStart: 0,
40
- selectionEnd: 0
41
- }),
42
- selectedState = _useState[0],
43
- setSelectedState = _useState[1];
37
+ var _useSelectedState = useSelectedState(),
38
+ selectedState = _useSelectedState.selectedState,
39
+ setSelectedState = _useSelectedState.setSelectedState;
44
40
  var _useCustom = useCustom('Calendar'),
45
41
  locale = _useCustom.locale;
46
42
  var rangeFormatStr = "" + formatStr + character + formatStr;
@@ -49,9 +45,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
49
45
  value = _useControlled[0],
50
46
  setValue = _useControlled[1],
51
47
  isControlled = _useControlled[2];
52
- var _useState2 = useState(DateType.Start),
53
- dateType = _useState2[0],
54
- setDateType = _useState2[1];
48
+ var _useState = useState(DateType.Start),
49
+ dateType = _useState[0],
50
+ setDateType = _useState[1];
55
51
  var dateInputOptions = {
56
52
  formatStr: formatStr,
57
53
  locale: dateLocale,
@@ -63,6 +59,10 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
63
59
  var endDateState = useDateInputState(_extends({}, dateInputOptions, {
64
60
  date: (value === null || value === void 0 ? void 0 : value[1]) || null
65
61
  }));
62
+ var _useFieldCursor = useFieldCursor(formatStr, valueProp),
63
+ isMoveCursor = _useFieldCursor.isMoveCursor,
64
+ increment = _useFieldCursor.increment,
65
+ reset = _useFieldCursor.reset;
66
66
  var getActiveState = function getActiveState(type) {
67
67
  if (type === void 0) {
68
68
  type = dateType;
@@ -116,8 +116,9 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
116
116
  input: input,
117
117
  direction: direction
118
118
  }));
119
- setSelectionRange(state.selectionStart, state.selectionEnd);
120
119
  setSelectedState(state);
120
+ setSelectionRange(state.selectionStart, state.selectionEnd);
121
+ reset();
121
122
  });
122
123
  var onSegmentValueChange = useEventCallback(function (event) {
123
124
  var input = event.target;
@@ -140,6 +141,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
140
141
  if (!pattern) {
141
142
  return;
142
143
  }
144
+ increment();
143
145
  var field = getActiveState().getDateField(pattern);
144
146
  var value = parseInt(key, 10);
145
147
  var padValue = parseInt("" + (field.value || '') + key, 10);
@@ -149,10 +151,6 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
149
151
  if (validateDateTime(field.name, padValue)) {
150
152
  newValue = padValue;
151
153
  }
152
- if (pattern === 'M') {
153
- // Month cannot be less than 1.
154
- newValue = Math.max(1, newValue);
155
- }
156
154
  getActiveState().setDateField(pattern, newValue, function (date) {
157
155
  return handleChange(date, event);
158
156
  });
@@ -168,7 +166,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
168
166
  setSelectionRange(nextState.selectionStart, nextState.selectionEnd);
169
167
 
170
168
  // If the field is full value, move the cursor to the next field
171
- if (isFieldFullValue(formatStr, newValue, pattern) && input.selectionEnd !== input.value.length) {
169
+ if (isMoveCursor(newValue, pattern) && input.selectionEnd !== input.value.length) {
172
170
  onSegmentChange(event, 'right');
173
171
  }
174
172
  });
@@ -184,6 +182,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
184
182
  getActiveState().setDateField(selectedState.selectedPattern, null, function (date) {
185
183
  return handleChange(date, event);
186
184
  });
185
+ reset();
187
186
  }
188
187
  });
189
188
  var handleClick = useEventCallback(function (event) {
@@ -192,7 +191,7 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
192
191
  return;
193
192
  }
194
193
  var cursorIndex = input.selectionStart === renderedValue.length ? 0 : input.selectionStart;
195
- var dateType = getDateType(renderedValue, character, cursorIndex);
194
+ var dateType = getDateType(renderedValue || rangeFormatStr, character, cursorIndex);
196
195
  var state = getInputSelectedState(_extends({}, keyPressOptions, {
197
196
  dateType: dateType,
198
197
  selectedMonth: getActiveState(dateType).dateField.month,
@@ -102,7 +102,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
102
102
  prefix = _useClassNames.prefix;
103
103
  var _useCustom = useCustom('DateRangePicker', overrideLocale),
104
104
  locale = _useCustom.locale,
105
- formatDate = _useCustom.formatDate;
105
+ formatDate = _useCustom.formatDate; // Default gap between two calendars, if `showOneCalendar` is set, the gap is 0
106
+ var calendarGap = showOneCalendar ? 0 : 1;
106
107
  var rangeFormatStr = "" + formatStr + character + formatStr;
107
108
  var _useControlled = useControlled(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null),
108
109
  value = _useControlled[0],
@@ -129,7 +130,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
129
130
  var _useState2 = useState((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
130
131
  selectedDates = _useState2[0],
131
132
  setSelectedDates = _useState2[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
132
- var _useState3 = useState(null),
133
+ var _useState3 = useState(value),
133
134
  hoverDateRange = _useState3[0],
134
135
  setHoverDateRange = _useState3[1]; // The displayed calendar panel is rendered based on this value.
135
136
  var _useState4 = useState(getSafeCalendarDate({
@@ -165,14 +166,14 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
165
166
  var nextValue = dateRange;
166
167
 
167
168
  // The time should remain the same when the dates in the date range are changed.
168
- if (shouldRenderTime(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && eventName !== 'changeTime' && eventName !== 'shortcutSelection') {
169
+ if (shouldRenderTime(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && (eventName === 'changeDate' || eventName === 'changeMonth')) {
169
170
  var _startDate = copyTime({
170
171
  from: getCalendarDatetime('start'),
171
172
  to: dateRange[0]
172
173
  });
173
174
  var _endDate = copyTime({
174
175
  from: getCalendarDatetime('end'),
175
- to: dateRange.length === 1 ? addMonths(_startDate, 1) : dateRange[1]
176
+ to: dateRange.length === 1 ? addMonths(_startDate, calendarGap) : dateRange[1]
176
177
  });
177
178
  nextValue = [_startDate, _endDate];
178
179
  } else if (dateRange === null && typeof defaultCalendarValue !== 'undefined') {
@@ -182,7 +183,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
182
183
  var nextCalendarDate = getSafeCalendarDate({
183
184
  value: nextValue,
184
185
  calendarKey: calendarKey,
185
- allowAameMonth: onlyShowMonth
186
+ // When only the month is displayed and only one calendar is displayed,
187
+ // there is no need to add a month and two calendar panels are allowed to display the same month
188
+ allowSameMonth: onlyShowMonth || showOneCalendar
186
189
  });
187
190
  setCalendarDate(nextCalendarDate);
188
191
  if (onlyShowMonth && eventName === 'changeMonth') {
@@ -331,6 +334,11 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
331
334
  } else {
332
335
  setHoverDateRange([nextSelectDates[0], nextSelectDates[0]]);
333
336
  }
337
+ if (isSelectedIdle) {
338
+ setActiveCalendarKey('end');
339
+ } else {
340
+ setActiveCalendarKey('start');
341
+ }
334
342
  setSelectedDates(nextSelectDates);
335
343
  setCalendarDateRange({
336
344
  dateRange: nextSelectDates,
@@ -402,7 +410,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
402
410
  if (value && value.length) {
403
411
  var _startDate3 = value[0],
404
412
  endData = value[1];
405
- nextCalendarDate = [_startDate3, isSameMonth(_startDate3, endData) ? addMonths(endData, 1) : endData];
413
+ nextCalendarDate = [_startDate3, isSameMonth(_startDate3, endData) ? addMonths(endData, calendarGap) : endData];
406
414
  } else {
407
415
  // Reset the date on the calendar to the default date
408
416
  nextCalendarDate = getSafeCalendarDate({
@@ -731,11 +739,11 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
731
739
  format: formatStr,
732
740
  placeholder: placeholder ? placeholder : rangeFormatStr,
733
741
  disabled: disabled,
734
- onChange: handleInputChange,
735
742
  readOnly: readOnly || !editable || loading,
736
743
  plaintext: plaintext,
737
- onKeyDown: handleInputKeyDown,
738
- htmlSize: getInputHtmlSize()
744
+ htmlSize: getInputHtmlSize(),
745
+ onChange: handleInputChange,
746
+ onKeyDown: handleInputKeyDown
739
747
  })), /*#__PURE__*/React.createElement(PickerIndicator, {
740
748
  loading: loading,
741
749
  caretAs: caretAs,
@@ -1,8 +1,8 @@
1
1
  import { DateRange } from './types';
2
- export declare function getSafeCalendarDate({ value, calendarKey, allowAameMonth }: {
2
+ export declare function getSafeCalendarDate({ value, calendarKey, allowSameMonth }: {
3
3
  value: [] | [Date] | [Date, Date] | null;
4
4
  calendarKey?: 'start' | 'end';
5
- allowAameMonth?: boolean;
5
+ allowSameMonth?: boolean;
6
6
  }): DateRange;
7
7
  export declare const isSameRange: (source: DateRange | null, dest: DateRange | null, format: string) => boolean;
8
8
  export declare const getMonthHoverRange: (date: Date) => DateRange;
@@ -5,10 +5,10 @@ export function getSafeCalendarDate(_ref) {
5
5
  var value = _ref.value,
6
6
  _ref$calendarKey = _ref.calendarKey,
7
7
  calendarKey = _ref$calendarKey === void 0 ? 'start' : _ref$calendarKey,
8
- allowAameMonth = _ref.allowAameMonth;
8
+ allowSameMonth = _ref.allowSameMonth;
9
9
  // Update calendarDate if the value is not null
10
10
  value = (_value = value) !== null && _value !== void 0 ? _value : [];
11
- var gap = allowAameMonth ? 0 : 1;
11
+ var gap = allowSameMonth ? 0 : 1;
12
12
  if (value[0] && value[1]) {
13
13
  var diffMonth = differenceInCalendarMonths(value[1], value[0]);
14
14
  if (calendarKey === 'start') {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.60.0",
3
+ "version": "5.60.2",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",
@@ -17,7 +17,7 @@
17
17
  "component",
18
18
  "react-component"
19
19
  ],
20
- "author": "HYPERS Team",
20
+ "author": "React Suite Team",
21
21
  "license": "MIT",
22
22
  "repository": {
23
23
  "type": "git",
@@ -774,7 +774,6 @@
774
774
  @date-range-picker-header-padding-vertical: 8px;
775
775
  @date-range-picker-header-font-size: @font-size-base;
776
776
  @date-range-picker-header-line-height: @line-height-base;
777
- @date-range-picker-calendar-default-width: 255px;
778
777
 
779
778
  // Input Picker
780
779