rsuite 5.21.0 → 5.22.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 +21 -973
- package/DatePicker/styles/index.less +11 -0
- package/Table/styles/index.less +12 -7
- package/cjs/Calendar/Calendar.js +1 -1
- package/cjs/Calendar/CalendarContainer.d.ts +2 -2
- package/cjs/Calendar/CalendarContainer.js +11 -11
- package/cjs/Calendar/MonthDropdownItem.js +1 -1
- package/cjs/Calendar/TimeDropdown.js +1 -1
- package/cjs/Calendar/types.d.ts +2 -2
- package/cjs/DatePicker/DatePicker.js +29 -7
- package/cjs/DatePicker/types.d.ts +1 -0
- package/cjs/DateRangePicker/Calendar.d.ts +2 -2
- package/cjs/DateRangePicker/Calendar.js +18 -13
- package/cjs/DateRangePicker/DateRangePicker.js +100 -55
- package/cjs/DateRangePicker/utils.d.ts +1 -1
- package/cjs/DateRangePicker/utils.js +11 -6
- package/cjs/utils/dateUtils.d.ts +16 -0
- package/cjs/utils/dateUtils.js +62 -8
- package/dist/rsuite-rtl.css +20 -6
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +20 -6
- package/dist/rsuite.js +35 -24
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Calendar/Calendar.js +1 -1
- package/esm/Calendar/CalendarContainer.d.ts +2 -2
- package/esm/Calendar/CalendarContainer.js +11 -11
- package/esm/Calendar/MonthDropdownItem.js +1 -1
- package/esm/Calendar/TimeDropdown.js +1 -1
- package/esm/Calendar/types.d.ts +2 -2
- package/esm/DatePicker/DatePicker.js +26 -7
- package/esm/DatePicker/types.d.ts +1 -0
- package/esm/DateRangePicker/Calendar.d.ts +2 -2
- package/esm/DateRangePicker/Calendar.js +18 -13
- package/esm/DateRangePicker/DateRangePicker.js +102 -55
- package/esm/DateRangePicker/utils.d.ts +1 -1
- package/esm/DateRangePicker/utils.js +11 -6
- package/esm/utils/dateUtils.d.ts +16 -0
- package/esm/utils/dateUtils.js +47 -1
- package/package.json +3 -3
- package/styles/variables.less +1 -0
|
@@ -34,6 +34,17 @@
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
// Predefined Ranges
|
|
38
|
+
.rs-picker-date-predefined {
|
|
39
|
+
height: 325px;
|
|
40
|
+
border-right: 1px solid var(--rs-border-primary);
|
|
41
|
+
padding: 4px 0;
|
|
42
|
+
|
|
43
|
+
.rs-btn {
|
|
44
|
+
display: block;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
37
48
|
// Calendar in DatePicker popup
|
|
38
49
|
.rs-picker-menu {
|
|
39
50
|
@calendar-width: (
|
package/Table/styles/index.less
CHANGED
|
@@ -60,13 +60,6 @@
|
|
|
60
60
|
box-shadow: none;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
// Added transition for hover
|
|
64
|
-
&-row,
|
|
65
|
-
&-cell-group,
|
|
66
|
-
&-cell {
|
|
67
|
-
transition: background-color 0.3s linear;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
63
|
&-hover &-row:not(&-row-header):hover,
|
|
71
64
|
&-hover &-row:hover &-cell-group,
|
|
72
65
|
&-hover &-row:hover &-cell {
|
|
@@ -215,6 +208,18 @@
|
|
|
215
208
|
}
|
|
216
209
|
}
|
|
217
210
|
|
|
211
|
+
&-cell-full-text {
|
|
212
|
+
&:hover {
|
|
213
|
+
z-index: 1 !important;
|
|
214
|
+
width: auto !important;
|
|
215
|
+
box-shadow: inset @table-cell-hover-color 0px 0px 2px;
|
|
216
|
+
|
|
217
|
+
.rs-table-cell-content {
|
|
218
|
+
width: auto !important;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
218
223
|
&-cell-header-sortable &-cell-content {
|
|
219
224
|
cursor: pointer;
|
|
220
225
|
}
|
package/cjs/Calendar/Calendar.js
CHANGED
|
@@ -100,7 +100,7 @@ var CalendarPanel = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
100
100
|
renderCell: customRenderCell,
|
|
101
101
|
onMoveForward: handleChange,
|
|
102
102
|
onMoveBackward: handleChange,
|
|
103
|
-
|
|
103
|
+
onChangeMonth: handleChange,
|
|
104
104
|
onSelect: handleSelect
|
|
105
105
|
}));
|
|
106
106
|
});
|
|
@@ -39,9 +39,9 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
|
|
|
39
39
|
/** Custom locale */
|
|
40
40
|
locale: CalendarLocale;
|
|
41
41
|
/** Callback after the date has changed */
|
|
42
|
-
|
|
42
|
+
onChangeMonth?: (nextPageDate: Date, event: React.MouseEvent) => void;
|
|
43
43
|
/** Callback after the time has changed */
|
|
44
|
-
|
|
44
|
+
onChangeTime?: (nextPageTime: Date, event: React.MouseEvent) => void;
|
|
45
45
|
/** Callback after mouse enter other date cell */
|
|
46
46
|
onMouseMove?: (date: Date) => void;
|
|
47
47
|
/** Switch to the callback triggered after the previous month. */
|
|
@@ -53,8 +53,8 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
|
|
|
53
53
|
isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
|
|
54
54
|
limitEndYear = props.limitEndYear,
|
|
55
55
|
locale = props.locale,
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
onChangeMonth = props.onChangeMonth,
|
|
57
|
+
onChangeTime = props.onChangeTime,
|
|
58
58
|
onMouseMove = props.onMouseMove,
|
|
59
59
|
onMoveBackward = props.onMoveBackward,
|
|
60
60
|
onMoveForward = props.onMoveForward,
|
|
@@ -69,7 +69,7 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
|
|
|
69
69
|
showMeridian = props.showMeridian,
|
|
70
70
|
showWeekNumbers = props.showWeekNumbers,
|
|
71
71
|
inline = props.inline,
|
|
72
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "inSameMonth", "isoWeek", "limitEndYear", "locale", "
|
|
72
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "dateRange", "disabledBackward", "defaultState", "disabledDate", "disabledForward", "format", "hoverRangeValue", "inSameMonth", "isoWeek", "limitEndYear", "locale", "onChangeMonth", "onChangeTime", "onMouseMove", "onMoveBackward", "onMoveForward", "onSelect", "onToggleMeridian", "onToggleMonthDropdown", "onToggleTimeDropdown", "calendarDate", "renderCell", "renderTitle", "renderToolbar", "showMeridian", "showWeekNumbers", "inline"]);
|
|
73
73
|
|
|
74
74
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
75
75
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
@@ -141,10 +141,10 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
|
|
|
141
141
|
'show-week-numbers': showWeekNumbers
|
|
142
142
|
}));
|
|
143
143
|
var timeDropdownProps = (0, _pick.default)(rest, _dateUtils.calendarOnlyProps);
|
|
144
|
-
var
|
|
144
|
+
var handleChangeMonth = (0, _react.useCallback)(function (date, event) {
|
|
145
145
|
reset();
|
|
146
|
-
|
|
147
|
-
}, [
|
|
146
|
+
onChangeMonth === null || onChangeMonth === void 0 ? void 0 : onChangeMonth(date, event);
|
|
147
|
+
}, [onChangeMonth, reset]);
|
|
148
148
|
var contextValue = (0, _react.useMemo)(function () {
|
|
149
149
|
return {
|
|
150
150
|
date: calendarDate,
|
|
@@ -155,15 +155,15 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
|
|
|
155
155
|
inSameMonth: inSameMonth !== null && inSameMonth !== void 0 ? inSameMonth : inSameThisMonthDate,
|
|
156
156
|
isoWeek: isoWeek,
|
|
157
157
|
locale: locale,
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
onChangeMonth: handleChangeMonth,
|
|
159
|
+
onChangeTime: onChangeTime,
|
|
160
160
|
onMouseMove: onMouseMove,
|
|
161
161
|
onSelect: onSelect,
|
|
162
162
|
renderCell: renderCell,
|
|
163
163
|
showWeekNumbers: showWeekNumbers,
|
|
164
164
|
inline: inline
|
|
165
165
|
};
|
|
166
|
-
}, [calendarDate, dateRange, format,
|
|
166
|
+
}, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameMonth, inSameThisMonthDate, inline, isDisabledDate, isoWeek, locale, onChangeTime, onMouseMove, onSelect, renderCell, showWeekNumbers]);
|
|
167
167
|
return /*#__PURE__*/_react.default.createElement(_CalendarContext.CalendarProvider, {
|
|
168
168
|
value: contextValue
|
|
169
169
|
}, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, (0, _dateUtils.omitHideDisabledProps)(rest), {
|
|
@@ -214,8 +214,8 @@ CalendarContainer.propTypes = {
|
|
|
214
214
|
isoWeek: _propTypes.default.bool,
|
|
215
215
|
limitEndYear: _propTypes.default.number,
|
|
216
216
|
locale: _propTypes.default.object,
|
|
217
|
-
|
|
218
|
-
|
|
217
|
+
onChangeMonth: _propTypes.default.func,
|
|
218
|
+
onChangeTime: _propTypes.default.func,
|
|
219
219
|
onMoveBackward: _propTypes.default.func,
|
|
220
220
|
onMoveForward: _propTypes.default.func,
|
|
221
221
|
onSelect: _propTypes.default.func,
|
|
@@ -36,7 +36,7 @@ var MonthDropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props,
|
|
|
36
36
|
|
|
37
37
|
var _useCalendarContext = (0, _CalendarContext.useCalendarContext)(),
|
|
38
38
|
date = _useCalendarContext.date,
|
|
39
|
-
onSelect = _useCalendarContext.
|
|
39
|
+
onSelect = _useCalendarContext.onChangeMonth;
|
|
40
40
|
|
|
41
41
|
var handleClick = (0, _react.useCallback)(function (event) {
|
|
42
42
|
if (disabled) {
|
|
@@ -125,7 +125,7 @@ var TimeDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
125
125
|
locale = _useCalendarContext.locale,
|
|
126
126
|
format = _useCalendarContext.format,
|
|
127
127
|
date = _useCalendarContext.date,
|
|
128
|
-
onSelect = _useCalendarContext.
|
|
128
|
+
onSelect = _useCalendarContext.onChangeTime;
|
|
129
129
|
|
|
130
130
|
var rowRef = (0, _react.useRef)(null);
|
|
131
131
|
(0, _react.useEffect)(function () {
|
package/cjs/Calendar/types.d.ts
CHANGED
|
@@ -8,8 +8,8 @@ export interface CalendarInnerContextValue {
|
|
|
8
8
|
hoverRangeValue?: [Date, Date];
|
|
9
9
|
inSameMonth?: (date: Date) => boolean;
|
|
10
10
|
isoWeek: boolean;
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
onChangeMonth?: (nextPageDate: Date, event: React.MouseEvent) => void;
|
|
12
|
+
onChangeTime?: (nextPageTime: Date, event: React.MouseEvent) => void;
|
|
13
13
|
onMouseMove?: (date: Date) => void;
|
|
14
14
|
onSelect?: (date: Date, event: React.MouseEvent) => void;
|
|
15
15
|
renderCell?: (date: Date) => React.ReactNode;
|
|
@@ -31,6 +31,10 @@ var _useCalendarDate2 = _interopRequireDefault(require("../Calendar/useCalendarD
|
|
|
31
31
|
|
|
32
32
|
var _Toolbar = _interopRequireDefault(require("./Toolbar"));
|
|
33
33
|
|
|
34
|
+
var _Stack = _interopRequireDefault(require("../Stack"));
|
|
35
|
+
|
|
36
|
+
var _PredefinedRanges = _interopRequireDefault(require("./PredefinedRanges"));
|
|
37
|
+
|
|
34
38
|
var _utils = require("../utils");
|
|
35
39
|
|
|
36
40
|
var _Picker = require("../Picker");
|
|
@@ -154,7 +158,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
154
158
|
* A callback triggered when the time on the calendar changes.
|
|
155
159
|
*/
|
|
156
160
|
|
|
157
|
-
var
|
|
161
|
+
var handleChangeTime = (0, _react.useCallback)(function (nextPageTime) {
|
|
158
162
|
setCalendarDate(nextPageTime);
|
|
159
163
|
handleDateChange(nextPageTime);
|
|
160
164
|
}, [handleDateChange, setCalendarDate]);
|
|
@@ -255,7 +259,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
255
259
|
* A callback triggered when the date on the calendar changes.
|
|
256
260
|
*/
|
|
257
261
|
|
|
258
|
-
var
|
|
262
|
+
var handleChangeMonth = (0, _react.useCallback)(function (nextPageDate, event) {
|
|
259
263
|
setCalendarDate(nextPageDate);
|
|
260
264
|
handleDateChange(nextPageDate); // Show only the calendar month panel. formatStr = 'yyyy-MM'
|
|
261
265
|
|
|
@@ -360,11 +364,18 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
360
364
|
onSelect: handleSelect,
|
|
361
365
|
onToggleMonthDropdown: onToggleMonthDropdown,
|
|
362
366
|
onToggleTimeDropdown: onToggleTimeDropdown,
|
|
363
|
-
|
|
364
|
-
|
|
367
|
+
onChangeMonth: handleChangeMonth,
|
|
368
|
+
onChangeTime: handleChangeTime,
|
|
365
369
|
onToggleMeridian: handleToggleMeridian
|
|
366
370
|
}));
|
|
367
371
|
|
|
372
|
+
var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
373
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
|
|
374
|
+
})) || [];
|
|
375
|
+
var bottomRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
|
|
376
|
+
return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
|
|
377
|
+
})) || [];
|
|
378
|
+
|
|
368
379
|
var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
|
|
369
380
|
var left = positionProps.left,
|
|
370
381
|
top = positionProps.top,
|
|
@@ -380,16 +391,27 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
380
391
|
ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
|
|
381
392
|
style: styles,
|
|
382
393
|
target: triggerRef
|
|
383
|
-
},
|
|
394
|
+
}, /*#__PURE__*/_react.default.createElement(_Stack.default, {
|
|
395
|
+
alignItems: "flex-start"
|
|
396
|
+
}, sideRanges.length > 0 && /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
|
|
397
|
+
direction: "column",
|
|
398
|
+
spacing: 0,
|
|
399
|
+
className: prefix('date-predefined'),
|
|
400
|
+
ranges: sideRanges,
|
|
401
|
+
calendarDate: calendarDate,
|
|
402
|
+
locale: locale,
|
|
403
|
+
disabledShortcut: disabledToolbarHandle,
|
|
404
|
+
onClickShortcut: handleShortcutPageDate
|
|
405
|
+
}), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, calendar, /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
|
|
384
406
|
locale: locale,
|
|
385
|
-
ranges:
|
|
407
|
+
ranges: bottomRanges,
|
|
386
408
|
calendarDate: calendarDate,
|
|
387
409
|
disabledOkBtn: disabledToolbarHandle,
|
|
388
410
|
disabledShortcut: disabledToolbarHandle,
|
|
389
411
|
onClickShortcut: handleShortcutPageDate,
|
|
390
412
|
onOk: handleOK,
|
|
391
413
|
hideOkBtn: oneTap
|
|
392
|
-
}));
|
|
414
|
+
}))));
|
|
393
415
|
};
|
|
394
416
|
|
|
395
417
|
var hasValue = !!value;
|
|
@@ -14,11 +14,11 @@ export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, Omit
|
|
|
14
14
|
isoWeek?: boolean;
|
|
15
15
|
limitEndYear?: number;
|
|
16
16
|
locale?: DatePickerLocale;
|
|
17
|
-
|
|
17
|
+
onChangeCalendarMonth?: (index: number, date: Date) => void;
|
|
18
18
|
onChangeCalendarTime?: (index: number, date: Date) => void;
|
|
19
19
|
onToggleMeridian: (index: number, event: React.MouseEvent) => void;
|
|
20
|
+
onSelect?: (index: number, date: Date, event: React.SyntheticEvent) => void;
|
|
20
21
|
onMouseMove?: (date: Date) => void;
|
|
21
|
-
onSelect?: (date: Date, event: React.SyntheticEvent) => void;
|
|
22
22
|
showWeekNumbers?: boolean;
|
|
23
23
|
value?: [] | [Date] | [Date, Date];
|
|
24
24
|
}
|
|
@@ -32,22 +32,26 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
32
32
|
_props$index = props.index,
|
|
33
33
|
index = _props$index === void 0 ? 0 : _props$index,
|
|
34
34
|
limitEndYear = props.limitEndYear,
|
|
35
|
-
|
|
35
|
+
onChangeCalendarMonth = props.onChangeCalendarMonth,
|
|
36
36
|
onChangeCalendarTime = props.onChangeCalendarTime,
|
|
37
37
|
onToggleMeridian = props.onToggleMeridian,
|
|
38
|
+
onSelect = props.onSelect,
|
|
38
39
|
_props$value = props.value,
|
|
39
40
|
value = _props$value === void 0 ? [] : _props$value,
|
|
40
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "
|
|
41
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "onChangeCalendarMonth", "onChangeCalendarTime", "onToggleMeridian", "onSelect", "value"]);
|
|
41
42
|
var onMoveForward = (0, _react.useCallback)(function (nextPageDate) {
|
|
42
|
-
|
|
43
|
-
}, [index,
|
|
43
|
+
onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate);
|
|
44
|
+
}, [index, onChangeCalendarMonth]);
|
|
44
45
|
var onMoveBackward = (0, _react.useCallback)(function (nextPageDate) {
|
|
45
|
-
|
|
46
|
-
}, [index,
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
}, [index,
|
|
50
|
-
var
|
|
46
|
+
onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate);
|
|
47
|
+
}, [index, onChangeCalendarMonth]);
|
|
48
|
+
var handleSelect = (0, _react.useCallback)(function (date, event) {
|
|
49
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(index, date, event);
|
|
50
|
+
}, [index, onSelect]);
|
|
51
|
+
var handleChangeMonth = (0, _react.useCallback)(function (nextPageDate) {
|
|
52
|
+
onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate);
|
|
53
|
+
}, [index, onChangeCalendarMonth]);
|
|
54
|
+
var handleChangeTime = (0, _react.useCallback)(function (nextPageDate) {
|
|
51
55
|
onChangeCalendarTime === null || onChangeCalendarTime === void 0 ? void 0 : onChangeCalendarTime(index, nextPageDate);
|
|
52
56
|
}, [index, onChangeCalendarTime]);
|
|
53
57
|
var handleToggleMeridian = (0, _react.useCallback)(function (event) {
|
|
@@ -75,11 +79,12 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
75
79
|
inSameMonth: inSameMonth,
|
|
76
80
|
index: index,
|
|
77
81
|
limitEndYear: limitEndYear,
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
onChangeMonth: handleChangeMonth,
|
|
83
|
+
onChangeTime: handleChangeTime,
|
|
80
84
|
onMoveBackward: handleMoveBackward,
|
|
81
85
|
onMoveForward: handleMoveForward,
|
|
82
86
|
onToggleMeridian: handleToggleMeridian,
|
|
87
|
+
onSelect: handleSelect,
|
|
83
88
|
calendarDate: getCalendarDate(),
|
|
84
89
|
ref: ref
|
|
85
90
|
}));
|
|
@@ -98,7 +103,7 @@ Calendar.propTypes = {
|
|
|
98
103
|
disabledDate: _propTypes.default.func,
|
|
99
104
|
onSelect: _propTypes.default.func,
|
|
100
105
|
onMouseMove: _propTypes.default.func,
|
|
101
|
-
|
|
106
|
+
onChangeCalendarMonth: _propTypes.default.func
|
|
102
107
|
};
|
|
103
108
|
var _default = Calendar;
|
|
104
109
|
exports.default = _default;
|
|
@@ -144,8 +144,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
144
144
|
setHoverDateRange = _useState2[1]; // The displayed calendar panel is rendered based on this value.
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
var _useState3 = (0, _react.useState)((0, _utils2.
|
|
148
|
-
value: (_ref2 =
|
|
147
|
+
var _useState3 = (0, _react.useState)((0, _utils2.getSafeCalendarDate)({
|
|
148
|
+
value: (_ref2 = value !== null && value !== void 0 ? value : defaultCalendarValue) !== null && _ref2 !== void 0 ? _ref2 : null
|
|
149
149
|
})),
|
|
150
150
|
calendarDate = _useState3[0],
|
|
151
151
|
setCalendarDate = _useState3[1];
|
|
@@ -161,37 +161,47 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
161
161
|
|
|
162
162
|
|
|
163
163
|
var selectRangeValueRef = (0, _react.useRef)(null);
|
|
164
|
+
/**
|
|
165
|
+
* Get the time on the calendar.
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
var getCalendarDatetime = (0, _react.useCallback)(function (calendarKey) {
|
|
169
|
+
var index = calendarKey === 'start' ? 0 : 1;
|
|
170
|
+
return (calendarDate === null || calendarDate === void 0 ? void 0 : calendarDate[index]) || (defaultCalendarValue === null || defaultCalendarValue === void 0 ? void 0 : defaultCalendarValue[index]);
|
|
171
|
+
}, [calendarDate, defaultCalendarValue]);
|
|
164
172
|
/**
|
|
165
173
|
* Call this function to update the calendar panel rendering benchmark value.
|
|
166
174
|
* If params `value` is not passed, it defaults to [new Date(), addMonth(new Date(), 1)].
|
|
167
175
|
*/
|
|
168
176
|
|
|
169
|
-
var updateCalendarDateRange = (0, _react.useCallback)(function (
|
|
170
|
-
var
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
var _endDate =
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
seconds: getSeconds(calendarEndDate)
|
|
177
|
+
var updateCalendarDateRange = (0, _react.useCallback)(function (_ref3) {
|
|
178
|
+
var dateRange = _ref3.dateRange,
|
|
179
|
+
calendarKey = _ref3.calendarKey,
|
|
180
|
+
eventName = _ref3.eventName;
|
|
181
|
+
var nextValue = dateRange; // The time should remain the same when the dates in the date range are changed.
|
|
182
|
+
|
|
183
|
+
if ((0, _dateUtils.shouldRenderTime)(formatStr) && dateRange !== null && dateRange !== void 0 && dateRange.length && eventName !== 'changeTime') {
|
|
184
|
+
var _startDate = (0, _dateUtils.copyTime)({
|
|
185
|
+
from: getCalendarDatetime('start'),
|
|
186
|
+
to: dateRange[0]
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
var _endDate = (0, _dateUtils.copyTime)({
|
|
190
|
+
from: getCalendarDatetime('end'),
|
|
191
|
+
to: dateRange.length === 1 ? (0, _dateUtils.addMonths)(_startDate, 1) : dateRange[1]
|
|
185
192
|
});
|
|
186
193
|
|
|
187
194
|
nextValue = [_startDate, _endDate];
|
|
195
|
+
} else if (dateRange === null && typeof defaultCalendarValue !== 'undefined') {
|
|
196
|
+
// Make the calendar render the value of defaultCalendarValue after clearing the value.
|
|
197
|
+
nextValue = defaultCalendarValue;
|
|
188
198
|
}
|
|
189
199
|
|
|
190
|
-
setCalendarDate((0, _utils2.
|
|
200
|
+
setCalendarDate((0, _utils2.getSafeCalendarDate)({
|
|
191
201
|
value: nextValue,
|
|
192
202
|
calendarKey: calendarKey
|
|
193
203
|
}));
|
|
194
|
-
}, [
|
|
204
|
+
}, [formatStr, defaultCalendarValue, getCalendarDatetime]); // if valueProp changed then update selectValue/hoverValue
|
|
195
205
|
|
|
196
206
|
(0, _react.useEffect)(function () {
|
|
197
207
|
setSelectedDates(valueProp !== null && valueProp !== void 0 ? valueProp : []);
|
|
@@ -269,8 +279,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
269
279
|
return null;
|
|
270
280
|
}
|
|
271
281
|
|
|
272
|
-
if (
|
|
273
|
-
hoverValues.
|
|
282
|
+
if ((0, _dateUtils.isAfter)(hoverValues[0], hoverValues[1])) {
|
|
283
|
+
hoverValues = (0, _dateUtils.reverseDateRangeOmitTime)(hoverValues);
|
|
274
284
|
}
|
|
275
285
|
|
|
276
286
|
return hoverValues;
|
|
@@ -327,7 +337,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
327
337
|
* Callback for selecting a date cell in the calendar grid
|
|
328
338
|
*/
|
|
329
339
|
|
|
330
|
-
var handleSelectDate = (0, _react.useCallback)(function (date, event) {
|
|
340
|
+
var handleSelectDate = (0, _react.useCallback)(function (index, date, event) {
|
|
341
|
+
var calendarKey = index === 0 ? 'start' : 'end';
|
|
331
342
|
var nextSelectDates = hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : [];
|
|
332
343
|
var hoverRangeValue = getHoverRangeValue(date);
|
|
333
344
|
var noHoverRangeValid = (0, _isNil.default)(hoverRangeValue); // in `oneTap` mode
|
|
@@ -355,19 +366,38 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
355
366
|
nextSelectDates = hoverRangeValue;
|
|
356
367
|
selectRangeValueRef.current = hoverRangeValue;
|
|
357
368
|
}
|
|
358
|
-
}
|
|
369
|
+
}
|
|
359
370
|
|
|
371
|
+
if (nextSelectDates.length === 2) {
|
|
372
|
+
// If user have completed the selection, then sort the selected dates.
|
|
373
|
+
if ((0, _dateUtils.isAfter)(nextSelectDates[0], nextSelectDates[1])) {
|
|
374
|
+
nextSelectDates = (0, _dateUtils.reverseDateRangeOmitTime)(nextSelectDates);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
if ((0, _dateUtils.shouldRenderTime)(formatStr)) {
|
|
378
|
+
nextSelectDates = [(0, _dateUtils.copyTime)({
|
|
379
|
+
from: getCalendarDatetime('start'),
|
|
380
|
+
to: nextSelectDates[0]
|
|
381
|
+
}), (0, _dateUtils.copyTime)({
|
|
382
|
+
from: getCalendarDatetime('end'),
|
|
383
|
+
to: nextSelectDates[1]
|
|
384
|
+
})];
|
|
385
|
+
}
|
|
360
386
|
|
|
361
|
-
|
|
362
|
-
|
|
387
|
+
setHoverDateRange(nextSelectDates);
|
|
388
|
+
} else {
|
|
389
|
+
setHoverDateRange([nextSelectDates[0], nextSelectDates[0]]);
|
|
363
390
|
}
|
|
364
391
|
|
|
365
|
-
setHoverDateRange(nextSelectDates.length === 2 ? nextSelectDates : [nextSelectDates[0], nextSelectDates[0]]);
|
|
366
392
|
setSelectedDates(nextSelectDates);
|
|
367
|
-
updateCalendarDateRange(
|
|
393
|
+
updateCalendarDateRange({
|
|
394
|
+
dateRange: nextSelectDates,
|
|
395
|
+
calendarKey: calendarKey,
|
|
396
|
+
eventName: 'changeDate'
|
|
397
|
+
});
|
|
368
398
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
|
|
369
399
|
hasDoneSelect.current = !hasDoneSelect.current;
|
|
370
|
-
}, [getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
|
|
400
|
+
}, [formatStr, getCalendarDatetime, getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
|
|
371
401
|
/**
|
|
372
402
|
* If `selectValue` changed, there will be the following effects.
|
|
373
403
|
* 1. Check if the selection is completed.
|
|
@@ -379,41 +409,48 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
379
409
|
var doneSelected = selectValueLength === 0 || selectValueLength === 2;
|
|
380
410
|
doneSelected && setHoverDateRange(null);
|
|
381
411
|
}, [selectedDates]);
|
|
382
|
-
var
|
|
412
|
+
var updateSingleCalendarMonth = (0, _react.useCallback)(function (index, date) {
|
|
413
|
+
var calendarKey = index === 0 ? 'start' : 'end';
|
|
383
414
|
var nextCalendarDate = Array.from(calendarDate);
|
|
384
415
|
nextCalendarDate[index] = date;
|
|
385
|
-
updateCalendarDateRange(
|
|
416
|
+
updateCalendarDateRange({
|
|
417
|
+
dateRange: nextCalendarDate,
|
|
418
|
+
calendarKey: calendarKey,
|
|
419
|
+
eventName: 'changeMonth'
|
|
420
|
+
});
|
|
386
421
|
}, [calendarDate, updateCalendarDateRange]);
|
|
387
422
|
var updateSingleCalendarTime = (0, _react.useCallback)(function (index, date) {
|
|
423
|
+
var calendarKey = index === 0 ? 'start' : 'end';
|
|
424
|
+
var nextCalendarDate = Array.from(calendarDate);
|
|
425
|
+
nextCalendarDate[index] = date;
|
|
426
|
+
updateCalendarDateRange({
|
|
427
|
+
dateRange: nextCalendarDate,
|
|
428
|
+
calendarKey: calendarKey,
|
|
429
|
+
eventName: 'changeTime'
|
|
430
|
+
});
|
|
388
431
|
setSelectedDates(function (prev) {
|
|
389
|
-
var next = [].concat(prev);
|
|
390
|
-
var clonedDate = new Date(date.valueOf()); // if next[index] is not empty, only update the time after aligning the year, month and day
|
|
432
|
+
var next = [].concat(prev); // if next[index] is not empty, only update the time after aligning the year, month and day
|
|
391
433
|
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
next[index] = clonedDate;
|
|
434
|
+
next[index] = next[index] ? (0, _dateUtils.copyTime)({
|
|
435
|
+
from: date,
|
|
436
|
+
to: next[index]
|
|
437
|
+
}) : new Date(date.valueOf());
|
|
397
438
|
return next;
|
|
398
439
|
});
|
|
399
|
-
|
|
400
|
-
}, [updateSingleCalendarDate]);
|
|
440
|
+
}, [calendarDate, updateCalendarDateRange]);
|
|
401
441
|
/**
|
|
402
442
|
* The callback triggered when PM/AM is switched.
|
|
403
443
|
*/
|
|
404
444
|
|
|
405
445
|
var handleToggleMeridian = (0, _react.useCallback)(function (index) {
|
|
406
|
-
var
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
var hours = _utils.DateUtils.getHours(clonedDate);
|
|
410
|
-
|
|
411
|
-
var nextHours = hours >= 12 ? hours - 12 : hours + 12;
|
|
412
|
-
next[index] = _utils.DateUtils.setHours(clonedDate, nextHours);
|
|
413
|
-
setCalendarDate(next); // If the value already exists, update the value again.
|
|
446
|
+
var nextCalendarDate = Array.from(calendarDate);
|
|
447
|
+
nextCalendarDate[index] = (0, _dateUtils.getReversedTimeMeridian)(nextCalendarDate[index]);
|
|
448
|
+
setCalendarDate(nextCalendarDate); // If the value already exists, update the value again.
|
|
414
449
|
|
|
415
450
|
if (selectedDates.length === 2) {
|
|
416
|
-
|
|
451
|
+
var nextSelectedDates = Array.from(selectedDates);
|
|
452
|
+
nextSelectedDates[index] = (0, _dateUtils.getReversedTimeMeridian)(nextSelectedDates[index]);
|
|
453
|
+
setSelectedDates(nextSelectedDates);
|
|
417
454
|
}
|
|
418
455
|
}, [calendarDate, selectedDates]);
|
|
419
456
|
/**
|
|
@@ -425,7 +462,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
425
462
|
closeOverlay = false;
|
|
426
463
|
}
|
|
427
464
|
|
|
428
|
-
updateCalendarDateRange(
|
|
465
|
+
updateCalendarDateRange({
|
|
466
|
+
dateRange: value
|
|
467
|
+
});
|
|
429
468
|
|
|
430
469
|
if (closeOverlay) {
|
|
431
470
|
handleValueUpdate(event, value, closeOverlay);
|
|
@@ -441,7 +480,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
441
480
|
onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event);
|
|
442
481
|
}, [handleValueUpdate, onOk, selectedDates]);
|
|
443
482
|
var handleClean = (0, _react.useCallback)(function (event) {
|
|
444
|
-
updateCalendarDateRange(
|
|
483
|
+
updateCalendarDateRange({
|
|
484
|
+
dateRange: null
|
|
485
|
+
});
|
|
445
486
|
handleValueUpdate(event, null);
|
|
446
487
|
}, [handleValueUpdate, updateCalendarDateRange]);
|
|
447
488
|
/**
|
|
@@ -478,7 +519,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
478
519
|
|
|
479
520
|
setHoverDateRange(selectValue);
|
|
480
521
|
setSelectedDates(selectValue);
|
|
481
|
-
updateCalendarDateRange(
|
|
522
|
+
updateCalendarDateRange({
|
|
523
|
+
dateRange: selectValue
|
|
524
|
+
});
|
|
482
525
|
}, // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
483
526
|
[character, rangeFormatStr, updateCalendarDateRange]);
|
|
484
527
|
/**
|
|
@@ -501,13 +544,15 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
501
544
|
nextCalendarDate = [_startDate2, (0, _dateUtils.isSameMonth)(_startDate2, endData) ? (0, _dateUtils.addMonths)(endData, 1) : endData];
|
|
502
545
|
} else {
|
|
503
546
|
// Reset the date on the calendar to the default date
|
|
504
|
-
nextCalendarDate = (0, _utils2.
|
|
547
|
+
nextCalendarDate = (0, _utils2.getSafeCalendarDate)({
|
|
505
548
|
value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null
|
|
506
549
|
});
|
|
507
550
|
}
|
|
508
551
|
|
|
509
552
|
setSelectedDates(value !== null && value !== void 0 ? value : []);
|
|
510
|
-
updateCalendarDateRange(
|
|
553
|
+
updateCalendarDateRange({
|
|
554
|
+
dateRange: nextCalendarDate
|
|
555
|
+
});
|
|
511
556
|
}, [defaultCalendarValue, updateCalendarDateRange, setSelectedDates, value]);
|
|
512
557
|
var handleEntered = (0, _react.useCallback)(function () {
|
|
513
558
|
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
@@ -594,7 +639,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
|
|
|
594
639
|
showWeekNumbers: showWeekNumbers,
|
|
595
640
|
value: selectedDates,
|
|
596
641
|
showMeridian: showMeridian,
|
|
597
|
-
|
|
642
|
+
onChangeCalendarMonth: updateSingleCalendarMonth,
|
|
598
643
|
onChangeCalendarTime: updateSingleCalendarTime,
|
|
599
644
|
onMouseMove: handleMouseMove,
|
|
600
645
|
onSelect: handleSelectDate,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DateRange } from './types';
|
|
2
|
-
export declare function
|
|
2
|
+
export declare function getSafeCalendarDate({ value, calendarKey }: {
|
|
3
3
|
value: [] | [Date] | [Date, Date] | null;
|
|
4
4
|
calendarKey?: 'start' | 'end';
|
|
5
5
|
}): DateRange;
|