rsuite 5.29.0 → 5.30.0

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 CHANGED
@@ -1,3 +1,11 @@
1
+ # [5.30.0](https://github.com/rsuite/rsuite/compare/v5.29.0...v5.30.0) (2023-03-31)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Cascader:** fix infinite load state on inline mode and fix typo ([#3131](https://github.com/rsuite/rsuite/issues/3131)) ([faa05f0](https://github.com/rsuite/rsuite/commit/faa05f03df1ab890f0bcf13ebd173e52129400df))
6
+ - **DatePicker:** fix abnormal time display in the calendar header ([#3136](https://github.com/rsuite/rsuite/issues/3136)) ([860df1a](https://github.com/rsuite/rsuite/commit/860df1a7bd03b40371ac6891e45f3295b9edc72f))
7
+ - **DateRangePicker:** fix the error of invalid time during date selection ([#3135](https://github.com/rsuite/rsuite/issues/3135)) ([adeafdc](https://github.com/rsuite/rsuite/commit/adeafdc44162fd2ef9e2470094a52cb17b5cddb3))
8
+
1
9
  # [5.29.0](https://github.com/rsuite/rsuite/compare/v5.28.3...v5.29.0) (2023-03-24)
2
10
 
3
11
  ### Bug Fixes
@@ -29,6 +29,8 @@ var _CustomProvider = require("../CustomProvider");
29
29
 
30
30
  var _CalendarContext = require("./CalendarContext");
31
31
 
32
+ var _DateRangePickerContext = require("../DateRangePicker/DateRangePickerContext");
33
+
32
34
  var CalendarHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
33
35
  var _props$as = props.as,
34
36
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -59,6 +61,9 @@ var CalendarHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref
59
61
  inline = _useCalendarContext.inline,
60
62
  disabledDate = _useCalendarContext.disabledDate;
61
63
 
64
+ var _useDateRangePickerCo = (0, _DateRangePickerContext.useDateRangePickerContext)(),
65
+ isSelectedIdle = _useDateRangePickerCo.isSelectedIdle;
66
+
62
67
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
63
68
  prefix = _useClassNames.prefix,
64
69
  withClassPrefix = _useClassNames.withClassPrefix,
@@ -136,7 +141,9 @@ var CalendarHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref
136
141
  var classes = merge(className, withClassPrefix({
137
142
  'has-month': hasMonth,
138
143
  'has-time': showTime
139
- }));
144
+ })); // If the date is not selected, the time cannot be selected (it only works in DateRangePicker).
145
+
146
+ var disableSelectTime = typeof isSelectedIdle === 'undefined' ? false : !isSelectedIdle;
140
147
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
141
148
  ref: ref,
142
149
  className: classes
@@ -144,13 +151,15 @@ var CalendarHeader = /*#__PURE__*/_react.default.forwardRef(function (props, ref
144
151
  className: prefix('time-toolbar')
145
152
  }, /*#__PURE__*/_react.default.createElement(_Button.default, (0, _extends2.default)({}, btnProps, {
146
153
  className: timeTitleClasses,
147
- onClick: onToggleTimeDropdown
154
+ onClick: onToggleTimeDropdown,
155
+ disabled: disableSelectTime
148
156
  }), date && /*#__PURE__*/_react.default.createElement(_CustomProvider.FormattedDate, {
149
157
  date: date,
150
158
  formatStr: getTimeFormat()
151
159
  })), showMeridian && /*#__PURE__*/_react.default.createElement(_Button.default, (0, _extends2.default)({}, btnProps, {
152
160
  className: prefix('meridian'),
153
- onClick: onToggleMeridian
161
+ onClick: onToggleMeridian,
162
+ disabled: disableSelectTime
154
163
  }), date && /*#__PURE__*/_react.default.createElement(_CustomProvider.FormattedDate, {
155
164
  date: date,
156
165
  formatStr: "a"
@@ -295,7 +295,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
295
295
  node.loading = false;
296
296
  node[childrenKey] = data;
297
297
 
298
- if (targetRef.current) {
298
+ if (targetRef.current || inline) {
299
299
  addColumn(data, columnIndex);
300
300
  }
301
301
  });
@@ -47,6 +47,8 @@ var _utils2 = require("./utils");
47
47
 
48
48
  var _deprecatePropType = require("../utils/deprecatePropType");
49
49
 
50
+ var _DateRangePickerContext = _interopRequireDefault(require("./DateRangePickerContext"));
51
+
50
52
  var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
51
53
  var _ref, _ref2, _merge;
52
54
 
@@ -127,7 +129,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
127
129
  */
128
130
 
129
131
 
130
- var hasDoneSelect = (0, _react.useRef)(true);
132
+ var _useState = (0, _react.useState)(true),
133
+ isSelectedIdle = _useState[0],
134
+ setSelectedIdle = _useState[1];
131
135
  /**
132
136
  * The currently selected date range.
133
137
  *
@@ -137,25 +141,26 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
137
141
  *
138
142
  */
139
143
 
140
- var _useState = (0, _react.useState)((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
141
- selectedDates = _useState[0],
142
- setSelectedDates = _useState[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
144
+
145
+ var _useState2 = (0, _react.useState)((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
146
+ selectedDates = _useState2[0],
147
+ setSelectedDates = _useState2[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
143
148
 
144
149
 
145
- var _useState2 = (0, _react.useState)(null),
146
- hoverDateRange = _useState2[0],
147
- setHoverDateRange = _useState2[1]; // The displayed calendar panel is rendered based on this value.
150
+ var _useState3 = (0, _react.useState)(null),
151
+ hoverDateRange = _useState3[0],
152
+ setHoverDateRange = _useState3[1]; // The displayed calendar panel is rendered based on this value.
148
153
 
149
154
 
150
- var _useState3 = (0, _react.useState)((0, _utils2.getSafeCalendarDate)({
155
+ var _useState4 = (0, _react.useState)((0, _utils2.getSafeCalendarDate)({
151
156
  value: (_ref2 = value !== null && value !== void 0 ? value : defaultCalendarValue) !== null && _ref2 !== void 0 ? _ref2 : null
152
157
  })),
153
- calendarDate = _useState3[0],
154
- setCalendarDate = _useState3[1];
158
+ calendarDate = _useState4[0],
159
+ setCalendarDate = _useState4[1];
155
160
 
156
- var _useState4 = (0, _react.useState)(),
157
- inputState = _useState4[0],
158
- setInputState = _useState4[1];
161
+ var _useState5 = (0, _react.useState)(),
162
+ inputState = _useState5[0],
163
+ setInputState = _useState5[1];
159
164
  /**
160
165
  * When hoverRange is set, `selectValue` will be updated during the hover process,
161
166
  * which will cause the `selectValue` to be updated after the first click,
@@ -211,9 +216,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
211
216
  setHoverDateRange(valueProp !== null && valueProp !== void 0 ? valueProp : null);
212
217
  }, [valueProp]);
213
218
 
214
- var _useState5 = (0, _react.useState)(false),
215
- isPickerToggleActive = _useState5[0],
216
- setPickerToggleActive = _useState5[1];
219
+ var _useState6 = (0, _react.useState)(false),
220
+ isPickerToggleActive = _useState6[0],
221
+ setPickerToggleActive = _useState6[1];
217
222
 
218
223
  var rootRef = (0, _react.useRef)(null);
219
224
  var overlayRef = (0, _react.useRef)(null);
@@ -316,7 +321,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
316
321
  // it means there's already one selected date
317
322
  // and waiting for user to select the second date to complete the selection.
318
323
 
319
- if (!hasDoneSelect.current) {
324
+ if (!isSelectedIdle) {
320
325
  // If `hoverRange` is set, you need to change the value of hoverDateRange according to the rules
321
326
  if (!(0, _isNil.default)(nextHoverDateRange) && !(0, _isNil.default)(selectRangeValueRef.current)) {
322
327
  var nextSelectedDates = [selectRangeValueRef.current[0], nextHoverDateRange[1]];
@@ -335,7 +340,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
335
340
  } else if (!(0, _isNil.default)(nextHoverDateRange)) {
336
341
  setHoverDateRange(nextHoverDateRange);
337
342
  }
338
- }, [getHoverRangeValue]);
343
+ }, [getHoverRangeValue, isSelectedIdle]);
339
344
  /**
340
345
  * Callback for selecting a date cell in the calendar grid
341
346
  */
@@ -346,23 +351,23 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
346
351
  var hoverRangeValue = getHoverRangeValue(date);
347
352
  var noHoverRangeValid = (0, _isNil.default)(hoverRangeValue); // in `oneTap` mode
348
353
 
349
- if (hasDoneSelect.current && oneTap) {
354
+ if (isSelectedIdle && oneTap) {
350
355
  handleValueUpdate(event, noHoverRangeValid ? [(0, _dateUtils.startOfDay)(date), (0, _dateUtils.endOfDay)(date)] : hoverRangeValue);
351
- hasDoneSelect.current = false;
356
+ setSelectedIdle(false);
352
357
  return;
353
358
  } // no preset hover range can use
354
359
 
355
360
 
356
361
  if (noHoverRangeValid) {
357
362
  // start select
358
- if (hasDoneSelect.current) {
363
+ if (isSelectedIdle) {
359
364
  nextSelectDates = [date];
360
365
  } else {
361
366
  // finish select
362
367
  nextSelectDates[1] = date;
363
368
  }
364
369
  } else {
365
- if (!hasDoneSelect.current) {
370
+ if (!isSelectedIdle) {
366
371
  nextSelectDates = selectedDates;
367
372
  selectRangeValueRef.current = null;
368
373
  } else {
@@ -399,8 +404,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
399
404
  eventName: 'changeDate'
400
405
  });
401
406
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
402
- hasDoneSelect.current = !hasDoneSelect.current;
403
- }, [formatStr, getCalendarDatetime, getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
407
+ setSelectedIdle(!isSelectedIdle);
408
+ }, [formatStr, getCalendarDatetime, getHoverRangeValue, handleValueUpdate, hoverDateRange, isSelectedIdle, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
404
409
  /**
405
410
  * If `selectValue` changed, there will be the following effects.
406
411
  * 1. Check if the selection is completed.
@@ -476,7 +481,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
476
481
  } // End unfinished selections.
477
482
 
478
483
 
479
- hasDoneSelect.current = true;
484
+ setSelectedIdle(true);
480
485
  }, [handleValueUpdate, updateCalendarDateRange]);
481
486
  var handleOK = (0, _react.useCallback)(function (event) {
482
487
  handleValueUpdate(event, selectedDates);
@@ -563,7 +568,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
563
568
  }, [onOpen]);
564
569
  var handleExited = (0, _react.useCallback)(function () {
565
570
  setPickerToggleActive(false);
566
- hasDoneSelect.current = true;
571
+ setSelectedIdle(true);
567
572
  onClose === null || onClose === void 0 ? void 0 : onClose();
568
573
  }, [onClose]);
569
574
  var isDateDisabled = (0, _react.useCallback)(function (date, selectDate, selectedDone, target) {
@@ -581,7 +586,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
581
586
  // If the date is between the start and the end
582
587
  // the button is disabled
583
588
  while (_utils.DateUtils.isBefore(start, end) || _utils.DateUtils.isSameDay(start, end)) {
584
- if (isDateDisabled(start, selectedDates, hasDoneSelect.current, type)) {
589
+ if (isDateDisabled(start, selectedDates, isSelectedIdle, type)) {
585
590
  return true;
586
591
  }
587
592
 
@@ -589,17 +594,17 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
589
594
  }
590
595
 
591
596
  return false;
592
- }, [isDateDisabled, selectedDates]);
597
+ }, [isDateDisabled, isSelectedIdle, selectedDates]);
593
598
  var disabledOkButton = (0, _react.useCallback)(function () {
594
599
  var start = selectedDates[0],
595
600
  end = selectedDates[1];
596
601
 
597
- if (!start || !end || !hasDoneSelect.current) {
602
+ if (!start || !end || !isSelectedIdle) {
598
603
  return true;
599
604
  }
600
605
 
601
606
  return disabledByBetween(start, end, _utils.DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
602
- }, [disabledByBetween, selectedDates]);
607
+ }, [disabledByBetween, isSelectedIdle, selectedDates]);
603
608
  var disabledShortcutButton = (0, _react.useCallback)(function (value) {
604
609
  if (value === void 0) {
605
610
  value = [];
@@ -616,8 +621,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
616
621
  return disabledByBetween(start, end, _utils.DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
617
622
  }, [disabledByBetween]);
618
623
  var handleDisabledDate = (0, _react.useCallback)(function (date, values, type) {
619
- return isDateDisabled(date, values, hasDoneSelect.current, type);
620
- }, [isDateDisabled]);
624
+ return isDateDisabled(date, values, isSelectedIdle, type);
625
+ }, [isDateDisabled, isSelectedIdle]);
621
626
  var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
622
627
  triggerRef: triggerRef,
623
628
  targetRef: targetRef,
@@ -686,11 +691,15 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
686
691
  className: prefix('daterange-header')
687
692
  }, getDisplayString(selectedDates)), /*#__PURE__*/_react.default.createElement("div", {
688
693
  className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
694
+ }, /*#__PURE__*/_react.default.createElement(_DateRangePickerContext.default.Provider, {
695
+ value: {
696
+ isSelectedIdle: isSelectedIdle
697
+ }
689
698
  }, /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
690
699
  index: 0
691
700
  }, calendarProps)), !showOneCalendar && /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
692
701
  index: 1
693
- }, calendarProps)))), /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
702
+ }, calendarProps))))), /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
694
703
  locale: locale,
695
704
  calendarDate: selectedDates,
696
705
  disabledOkBtn: disabledOkButton,
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface DateRangePickerContextValue {
3
+ isSelectedIdle?: boolean;
4
+ }
5
+ declare const DateRangePickerContext: React.Context<DateRangePickerContextValue>;
6
+ export default DateRangePickerContext;
7
+ export declare const useDateRangePickerContext: () => DateRangePickerContextValue;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ exports.__esModule = true;
6
+ exports.useDateRangePickerContext = exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var DateRangePickerContext = /*#__PURE__*/_react.default.createContext({});
11
+
12
+ var _default = DateRangePickerContext;
13
+ exports.default = _default;
14
+
15
+ var useDateRangePickerContext = function useDateRangePickerContext() {
16
+ return (0, _react.useContext)(DateRangePickerContext) || {};
17
+ };
18
+
19
+ exports.useDateRangePickerContext = useDateRangePickerContext;
@@ -181,21 +181,21 @@ function validTime(calendarProps, date) {
181
181
 
182
182
  return Object.keys(calendarProps).some(function (key) {
183
183
  if (/(Hours)/.test(key)) {
184
- var _calendarProps$key, _calendarProps$key2;
184
+ var _calendarProps$key;
185
185
 
186
- return (_calendarProps$key = (_calendarProps$key2 = calendarProps[key]) === null || _calendarProps$key2 === void 0 ? void 0 : _calendarProps$key2.call(calendarProps, (0, _getHours.default)(date), date)) !== null && _calendarProps$key !== void 0 ? _calendarProps$key : true;
186
+ return (_calendarProps$key = calendarProps[key]) === null || _calendarProps$key === void 0 ? void 0 : _calendarProps$key.call(calendarProps, (0, _getHours.default)(date), date);
187
187
  }
188
188
 
189
189
  if (/(Minutes)/.test(key)) {
190
- var _calendarProps$key3, _calendarProps$key4;
190
+ var _calendarProps$key2;
191
191
 
192
- return (_calendarProps$key3 = (_calendarProps$key4 = calendarProps[key]) === null || _calendarProps$key4 === void 0 ? void 0 : _calendarProps$key4.call(calendarProps, (0, _getMinutes.default)(date), date)) !== null && _calendarProps$key3 !== void 0 ? _calendarProps$key3 : true;
192
+ return (_calendarProps$key2 = calendarProps[key]) === null || _calendarProps$key2 === void 0 ? void 0 : _calendarProps$key2.call(calendarProps, (0, _getMinutes.default)(date), date);
193
193
  }
194
194
 
195
195
  if (/(Seconds)/.test(key)) {
196
- var _calendarProps$key5, _calendarProps$key6;
196
+ var _calendarProps$key3;
197
197
 
198
- return (_calendarProps$key5 = (_calendarProps$key6 = calendarProps[key]) === null || _calendarProps$key6 === void 0 ? void 0 : _calendarProps$key6.call(calendarProps, (0, _getSeconds.default)(date), date)) !== null && _calendarProps$key5 !== void 0 ? _calendarProps$key5 : true;
198
+ return (_calendarProps$key3 = calendarProps[key]) === null || _calendarProps$key3 === void 0 ? void 0 : _calendarProps$key3.call(calendarProps, (0, _getSeconds.default)(date), date);
199
199
  }
200
200
 
201
201
  return false;