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 +8 -0
- package/cjs/Calendar/CalendarHeader.js +12 -3
- package/cjs/Cascader/Cascader.js +1 -1
- package/cjs/DateRangePicker/DateRangePicker.js +42 -33
- package/cjs/DateRangePicker/DateRangePickerContext.d.ts +7 -0
- package/cjs/DateRangePicker/DateRangePickerContext.js +19 -0
- package/cjs/utils/dateUtils.js +6 -6
- package/dist/rsuite-no-reset-rtl.css +16690 -0
- package/dist/rsuite-no-reset-rtl.min.css +2 -0
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -0
- package/dist/rsuite-no-reset.css +16714 -0
- package/dist/rsuite-no-reset.min.css +2 -0
- package/dist/rsuite-no-reset.min.css.map +1 -0
- package/dist/rsuite.js +15 -4
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/CalendarHeader.js +11 -3
- package/esm/Cascader/Cascader.js +1 -1
- package/esm/DateRangePicker/DateRangePicker.js +41 -33
- package/esm/DateRangePicker/DateRangePickerContext.d.ts +7 -0
- package/esm/DateRangePicker/DateRangePickerContext.js +6 -0
- package/esm/utils/dateUtils.js +6 -6
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ import Button from '../Button';
|
|
|
9
9
|
import { useClassNames } from '../utils';
|
|
10
10
|
import { FormattedDate } from '../CustomProvider';
|
|
11
11
|
import { useCalendarContext } from './CalendarContext';
|
|
12
|
+
import { useDateRangePickerContext } from '../DateRangePicker/DateRangePickerContext';
|
|
12
13
|
var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
13
14
|
var _props$as = props.as,
|
|
14
15
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -39,6 +40,9 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
39
40
|
inline = _useCalendarContext.inline,
|
|
40
41
|
disabledDate = _useCalendarContext.disabledDate;
|
|
41
42
|
|
|
43
|
+
var _useDateRangePickerCo = useDateRangePickerContext(),
|
|
44
|
+
isSelectedIdle = _useDateRangePickerCo.isSelectedIdle;
|
|
45
|
+
|
|
42
46
|
var _useClassNames = useClassNames(classPrefix),
|
|
43
47
|
prefix = _useClassNames.prefix,
|
|
44
48
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
@@ -114,7 +118,9 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
114
118
|
var classes = merge(className, withClassPrefix({
|
|
115
119
|
'has-month': hasMonth,
|
|
116
120
|
'has-time': showTime
|
|
117
|
-
}));
|
|
121
|
+
})); // If the date is not selected, the time cannot be selected (it only works in DateRangePicker).
|
|
122
|
+
|
|
123
|
+
var disableSelectTime = typeof isSelectedIdle === 'undefined' ? false : !isSelectedIdle;
|
|
118
124
|
return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
|
|
119
125
|
ref: ref,
|
|
120
126
|
className: classes
|
|
@@ -122,13 +128,15 @@ var CalendarHeader = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
122
128
|
className: prefix('time-toolbar')
|
|
123
129
|
}, /*#__PURE__*/React.createElement(Button, _extends({}, btnProps, {
|
|
124
130
|
className: timeTitleClasses,
|
|
125
|
-
onClick: onToggleTimeDropdown
|
|
131
|
+
onClick: onToggleTimeDropdown,
|
|
132
|
+
disabled: disableSelectTime
|
|
126
133
|
}), date && /*#__PURE__*/React.createElement(FormattedDate, {
|
|
127
134
|
date: date,
|
|
128
135
|
formatStr: getTimeFormat()
|
|
129
136
|
})), showMeridian && /*#__PURE__*/React.createElement(Button, _extends({}, btnProps, {
|
|
130
137
|
className: prefix('meridian'),
|
|
131
|
-
onClick: onToggleMeridian
|
|
138
|
+
onClick: onToggleMeridian,
|
|
139
|
+
disabled: disableSelectTime
|
|
132
140
|
}), date && /*#__PURE__*/React.createElement(FormattedDate, {
|
|
133
141
|
date: date,
|
|
134
142
|
formatStr: "a"
|
package/esm/Cascader/Cascader.js
CHANGED
|
@@ -18,6 +18,7 @@ import Calendar from './Calendar';
|
|
|
18
18
|
import * as disabledDateUtils from './disabledDateUtils';
|
|
19
19
|
import { getSafeCalendarDate, getMonthHoverRange, getWeekHoverRange, isSameRange } from './utils';
|
|
20
20
|
import { deprecatePropTypeNew } from '../utils/deprecatePropType';
|
|
21
|
+
import DateRangePickerContext from './DateRangePickerContext';
|
|
21
22
|
var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
22
23
|
var _ref, _ref2, _merge;
|
|
23
24
|
|
|
@@ -98,7 +99,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
98
99
|
*/
|
|
99
100
|
|
|
100
101
|
|
|
101
|
-
var
|
|
102
|
+
var _useState = useState(true),
|
|
103
|
+
isSelectedIdle = _useState[0],
|
|
104
|
+
setSelectedIdle = _useState[1];
|
|
102
105
|
/**
|
|
103
106
|
* The currently selected date range.
|
|
104
107
|
*
|
|
@@ -108,25 +111,26 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
108
111
|
*
|
|
109
112
|
*/
|
|
110
113
|
|
|
111
|
-
var _useState = useState((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
|
|
112
|
-
selectedDates = _useState[0],
|
|
113
|
-
setSelectedDates = _useState[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
|
|
114
114
|
|
|
115
|
+
var _useState2 = useState((_ref = valueProp !== null && valueProp !== void 0 ? valueProp : defaultValue) !== null && _ref !== void 0 ? _ref : []),
|
|
116
|
+
selectedDates = _useState2[0],
|
|
117
|
+
setSelectedDates = _useState2[1]; // The date of the current hover, used to reduce the calculation of `handleMouseMove`
|
|
115
118
|
|
|
116
|
-
var _useState2 = useState(null),
|
|
117
|
-
hoverDateRange = _useState2[0],
|
|
118
|
-
setHoverDateRange = _useState2[1]; // The displayed calendar panel is rendered based on this value.
|
|
119
119
|
|
|
120
|
+
var _useState3 = useState(null),
|
|
121
|
+
hoverDateRange = _useState3[0],
|
|
122
|
+
setHoverDateRange = _useState3[1]; // The displayed calendar panel is rendered based on this value.
|
|
120
123
|
|
|
121
|
-
|
|
124
|
+
|
|
125
|
+
var _useState4 = useState(getSafeCalendarDate({
|
|
122
126
|
value: (_ref2 = value !== null && value !== void 0 ? value : defaultCalendarValue) !== null && _ref2 !== void 0 ? _ref2 : null
|
|
123
127
|
})),
|
|
124
|
-
calendarDate =
|
|
125
|
-
setCalendarDate =
|
|
128
|
+
calendarDate = _useState4[0],
|
|
129
|
+
setCalendarDate = _useState4[1];
|
|
126
130
|
|
|
127
|
-
var
|
|
128
|
-
inputState =
|
|
129
|
-
setInputState =
|
|
131
|
+
var _useState5 = useState(),
|
|
132
|
+
inputState = _useState5[0],
|
|
133
|
+
setInputState = _useState5[1];
|
|
130
134
|
/**
|
|
131
135
|
* When hoverRange is set, `selectValue` will be updated during the hover process,
|
|
132
136
|
* which will cause the `selectValue` to be updated after the first click,
|
|
@@ -182,9 +186,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
182
186
|
setHoverDateRange(valueProp !== null && valueProp !== void 0 ? valueProp : null);
|
|
183
187
|
}, [valueProp]);
|
|
184
188
|
|
|
185
|
-
var
|
|
186
|
-
isPickerToggleActive =
|
|
187
|
-
setPickerToggleActive =
|
|
189
|
+
var _useState6 = useState(false),
|
|
190
|
+
isPickerToggleActive = _useState6[0],
|
|
191
|
+
setPickerToggleActive = _useState6[1];
|
|
188
192
|
|
|
189
193
|
var rootRef = useRef(null);
|
|
190
194
|
var overlayRef = useRef(null);
|
|
@@ -287,7 +291,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
287
291
|
// it means there's already one selected date
|
|
288
292
|
// and waiting for user to select the second date to complete the selection.
|
|
289
293
|
|
|
290
|
-
if (!
|
|
294
|
+
if (!isSelectedIdle) {
|
|
291
295
|
// If `hoverRange` is set, you need to change the value of hoverDateRange according to the rules
|
|
292
296
|
if (!isNil(nextHoverDateRange) && !isNil(selectRangeValueRef.current)) {
|
|
293
297
|
var nextSelectedDates = [selectRangeValueRef.current[0], nextHoverDateRange[1]];
|
|
@@ -306,7 +310,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
306
310
|
} else if (!isNil(nextHoverDateRange)) {
|
|
307
311
|
setHoverDateRange(nextHoverDateRange);
|
|
308
312
|
}
|
|
309
|
-
}, [getHoverRangeValue]);
|
|
313
|
+
}, [getHoverRangeValue, isSelectedIdle]);
|
|
310
314
|
/**
|
|
311
315
|
* Callback for selecting a date cell in the calendar grid
|
|
312
316
|
*/
|
|
@@ -317,23 +321,23 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
317
321
|
var hoverRangeValue = getHoverRangeValue(date);
|
|
318
322
|
var noHoverRangeValid = isNil(hoverRangeValue); // in `oneTap` mode
|
|
319
323
|
|
|
320
|
-
if (
|
|
324
|
+
if (isSelectedIdle && oneTap) {
|
|
321
325
|
handleValueUpdate(event, noHoverRangeValid ? [startOfDay(date), endOfDay(date)] : hoverRangeValue);
|
|
322
|
-
|
|
326
|
+
setSelectedIdle(false);
|
|
323
327
|
return;
|
|
324
328
|
} // no preset hover range can use
|
|
325
329
|
|
|
326
330
|
|
|
327
331
|
if (noHoverRangeValid) {
|
|
328
332
|
// start select
|
|
329
|
-
if (
|
|
333
|
+
if (isSelectedIdle) {
|
|
330
334
|
nextSelectDates = [date];
|
|
331
335
|
} else {
|
|
332
336
|
// finish select
|
|
333
337
|
nextSelectDates[1] = date;
|
|
334
338
|
}
|
|
335
339
|
} else {
|
|
336
|
-
if (!
|
|
340
|
+
if (!isSelectedIdle) {
|
|
337
341
|
nextSelectDates = selectedDates;
|
|
338
342
|
selectRangeValueRef.current = null;
|
|
339
343
|
} else {
|
|
@@ -370,8 +374,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
370
374
|
eventName: 'changeDate'
|
|
371
375
|
});
|
|
372
376
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
|
|
373
|
-
|
|
374
|
-
}, [formatStr, getCalendarDatetime, getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
|
|
377
|
+
setSelectedIdle(!isSelectedIdle);
|
|
378
|
+
}, [formatStr, getCalendarDatetime, getHoverRangeValue, handleValueUpdate, hoverDateRange, isSelectedIdle, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
|
|
375
379
|
/**
|
|
376
380
|
* If `selectValue` changed, there will be the following effects.
|
|
377
381
|
* 1. Check if the selection is completed.
|
|
@@ -447,7 +451,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
447
451
|
} // End unfinished selections.
|
|
448
452
|
|
|
449
453
|
|
|
450
|
-
|
|
454
|
+
setSelectedIdle(true);
|
|
451
455
|
}, [handleValueUpdate, updateCalendarDateRange]);
|
|
452
456
|
var handleOK = useCallback(function (event) {
|
|
453
457
|
handleValueUpdate(event, selectedDates);
|
|
@@ -534,7 +538,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
534
538
|
}, [onOpen]);
|
|
535
539
|
var handleExited = useCallback(function () {
|
|
536
540
|
setPickerToggleActive(false);
|
|
537
|
-
|
|
541
|
+
setSelectedIdle(true);
|
|
538
542
|
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
539
543
|
}, [onClose]);
|
|
540
544
|
var isDateDisabled = useCallback(function (date, selectDate, selectedDone, target) {
|
|
@@ -552,7 +556,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
552
556
|
// If the date is between the start and the end
|
|
553
557
|
// the button is disabled
|
|
554
558
|
while (DateUtils.isBefore(start, end) || DateUtils.isSameDay(start, end)) {
|
|
555
|
-
if (isDateDisabled(start, selectedDates,
|
|
559
|
+
if (isDateDisabled(start, selectedDates, isSelectedIdle, type)) {
|
|
556
560
|
return true;
|
|
557
561
|
}
|
|
558
562
|
|
|
@@ -560,17 +564,17 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
560
564
|
}
|
|
561
565
|
|
|
562
566
|
return false;
|
|
563
|
-
}, [isDateDisabled, selectedDates]);
|
|
567
|
+
}, [isDateDisabled, isSelectedIdle, selectedDates]);
|
|
564
568
|
var disabledOkButton = useCallback(function () {
|
|
565
569
|
var start = selectedDates[0],
|
|
566
570
|
end = selectedDates[1];
|
|
567
571
|
|
|
568
|
-
if (!start || !end || !
|
|
572
|
+
if (!start || !end || !isSelectedIdle) {
|
|
569
573
|
return true;
|
|
570
574
|
}
|
|
571
575
|
|
|
572
576
|
return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
|
|
573
|
-
}, [disabledByBetween, selectedDates]);
|
|
577
|
+
}, [disabledByBetween, isSelectedIdle, selectedDates]);
|
|
574
578
|
var disabledShortcutButton = useCallback(function (value) {
|
|
575
579
|
if (value === void 0) {
|
|
576
580
|
value = [];
|
|
@@ -587,8 +591,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
587
591
|
return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
|
|
588
592
|
}, [disabledByBetween]);
|
|
589
593
|
var handleDisabledDate = useCallback(function (date, values, type) {
|
|
590
|
-
return isDateDisabled(date, values,
|
|
591
|
-
}, [isDateDisabled]);
|
|
594
|
+
return isDateDisabled(date, values, isSelectedIdle, type);
|
|
595
|
+
}, [isDateDisabled, isSelectedIdle]);
|
|
592
596
|
var onPickerKeyDown = useToggleKeyDownEvent(_extends({
|
|
593
597
|
triggerRef: triggerRef,
|
|
594
598
|
targetRef: targetRef,
|
|
@@ -659,11 +663,15 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
659
663
|
className: prefix('daterange-header')
|
|
660
664
|
}, getDisplayString(selectedDates)), /*#__PURE__*/React.createElement("div", {
|
|
661
665
|
className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
|
|
666
|
+
}, /*#__PURE__*/React.createElement(DateRangePickerContext.Provider, {
|
|
667
|
+
value: {
|
|
668
|
+
isSelectedIdle: isSelectedIdle
|
|
669
|
+
}
|
|
662
670
|
}, /*#__PURE__*/React.createElement(Calendar, _extends({
|
|
663
671
|
index: 0
|
|
664
672
|
}, calendarProps)), !showOneCalendar && /*#__PURE__*/React.createElement(Calendar, _extends({
|
|
665
673
|
index: 1
|
|
666
|
-
}, calendarProps)))), /*#__PURE__*/React.createElement(Toolbar, {
|
|
674
|
+
}, calendarProps))))), /*#__PURE__*/React.createElement(Toolbar, {
|
|
667
675
|
locale: locale,
|
|
668
676
|
calendarDate: selectedDates,
|
|
669
677
|
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,6 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
var DateRangePickerContext = /*#__PURE__*/React.createContext({});
|
|
3
|
+
export default DateRangePickerContext;
|
|
4
|
+
export var useDateRangePickerContext = function useDateRangePickerContext() {
|
|
5
|
+
return useContext(DateRangePickerContext) || {};
|
|
6
|
+
};
|
package/esm/utils/dateUtils.js
CHANGED
|
@@ -57,21 +57,21 @@ function validTime(calendarProps, date) {
|
|
|
57
57
|
|
|
58
58
|
return Object.keys(calendarProps).some(function (key) {
|
|
59
59
|
if (/(Hours)/.test(key)) {
|
|
60
|
-
var _calendarProps$key
|
|
60
|
+
var _calendarProps$key;
|
|
61
61
|
|
|
62
|
-
return (_calendarProps$key =
|
|
62
|
+
return (_calendarProps$key = calendarProps[key]) === null || _calendarProps$key === void 0 ? void 0 : _calendarProps$key.call(calendarProps, getHours(date), date);
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
if (/(Minutes)/.test(key)) {
|
|
66
|
-
var _calendarProps$
|
|
66
|
+
var _calendarProps$key2;
|
|
67
67
|
|
|
68
|
-
return (_calendarProps$
|
|
68
|
+
return (_calendarProps$key2 = calendarProps[key]) === null || _calendarProps$key2 === void 0 ? void 0 : _calendarProps$key2.call(calendarProps, getMinutes(date), date);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
if (/(Seconds)/.test(key)) {
|
|
72
|
-
var _calendarProps$
|
|
72
|
+
var _calendarProps$key3;
|
|
73
73
|
|
|
74
|
-
return (_calendarProps$
|
|
74
|
+
return (_calendarProps$key3 = calendarProps[key]) === null || _calendarProps$key3 === void 0 ? void 0 : _calendarProps$key3.call(calendarProps, getSeconds(date), date);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
return false;
|