rsuite 5.48.1 → 5.50.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 +27 -0
- package/Cascader/styles/index.less +5 -4
- package/DatePicker/styles/index.less +18 -11
- package/DateRangeInput/package.json +7 -0
- package/DateRangePicker/styles/index.less +20 -0
- package/Dropdown/styles/index.less +5 -4
- package/Dropdown/styles/mixin.less +0 -11
- package/InputGroup/styles/index.less +1 -0
- package/Picker/styles/index.less +51 -24
- package/Picker/styles/mixin.less +17 -13
- package/README.md +34 -24
- package/Sidenav/styles/index.less +2 -0
- package/TagInput/styles/index.less +1 -1
- package/cjs/AutoComplete/AutoComplete.js +25 -26
- package/cjs/Calendar/Calendar.d.ts +5 -1
- package/cjs/Calendar/CalendarContainer.d.ts +7 -1
- package/cjs/Calendar/CalendarContainer.js +11 -4
- package/cjs/Calendar/CalendarHeader.js +2 -0
- package/cjs/Calendar/MonthDropdown.js +7 -2
- package/cjs/Calendar/MonthDropdownItem.js +2 -2
- package/cjs/Calendar/Table.js +6 -1
- package/cjs/Calendar/TimeDropdown.js +17 -10
- package/cjs/Calendar/types.d.ts +1 -0
- package/cjs/Cascader/Cascader.js +46 -48
- package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
- package/cjs/CheckPicker/CheckPicker.js +33 -36
- package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
- package/cjs/CustomProvider/CustomProvider.d.ts +13 -0
- package/cjs/CustomProvider/CustomProvider.js +2 -2
- package/cjs/DateInput/DateField.d.ts +9 -31
- package/cjs/DateInput/DateField.js +61 -12
- package/cjs/DateInput/DateInput.d.ts +7 -2
- package/cjs/DateInput/DateInput.js +74 -92
- package/cjs/DateInput/index.d.ts +4 -0
- package/cjs/DateInput/index.js +19 -1
- package/cjs/DateInput/useDateInputState.d.ts +7 -31
- package/cjs/DateInput/useDateInputState.js +39 -15
- package/cjs/DateInput/useIsFocused.d.ts +7 -0
- package/cjs/DateInput/useIsFocused.js +28 -0
- package/cjs/DateInput/useKeyboardInputEvent.d.ts +10 -0
- package/cjs/DateInput/useKeyboardInputEvent.js +44 -0
- package/cjs/DateInput/utils.d.ts +23 -1
- package/cjs/DateInput/utils.js +155 -51
- package/cjs/DatePicker/DatePicker.d.ts +25 -8
- package/cjs/DatePicker/DatePicker.js +208 -241
- package/cjs/DatePicker/Toolbar.js +5 -22
- package/cjs/DatePicker/utils.d.ts +5 -1
- package/cjs/DatePicker/utils.js +17 -1
- package/cjs/DateRangeInput/DateRangeInput.d.ts +29 -0
- package/cjs/DateRangeInput/DateRangeInput.js +244 -0
- package/cjs/DateRangeInput/index.d.ts +3 -0
- package/cjs/DateRangeInput/index.js +9 -0
- package/cjs/DateRangeInput/utils.d.ts +61 -0
- package/cjs/DateRangeInput/utils.js +146 -0
- package/cjs/DateRangePicker/Calendar.js +24 -23
- package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/cjs/DateRangePicker/DateRangePicker.js +251 -203
- package/cjs/DateRangePicker/types.d.ts +11 -3
- package/cjs/DateRangePicker/utils.d.ts +2 -1
- package/cjs/DateRangePicker/utils.js +7 -5
- package/cjs/FormControl/FormControl.d.ts +11 -1
- package/cjs/FormControl/FormControl.js +6 -5
- package/cjs/Input/Input.d.ts +11 -0
- package/cjs/Input/Input.js +11 -8
- package/cjs/InputPicker/InputPicker.js +62 -63
- package/cjs/MultiCascader/MultiCascader.js +40 -42
- package/cjs/Overlay/OverlayTrigger.d.ts +3 -0
- package/cjs/Overlay/OverlayTrigger.js +5 -0
- package/cjs/Picker/PickerIndicator.d.ts +10 -0
- package/cjs/Picker/PickerIndicator.js +49 -0
- package/cjs/Picker/PickerLabel.d.ts +9 -0
- package/cjs/Picker/PickerLabel.js +23 -0
- package/cjs/Picker/PickerToggle.d.ts +17 -22
- package/cjs/Picker/PickerToggle.js +52 -177
- package/cjs/Picker/index.d.ts +3 -0
- package/cjs/Picker/index.js +10 -1
- package/cjs/Picker/usePickerRef.d.ts +19 -0
- package/cjs/Picker/usePickerRef.js +88 -0
- package/cjs/Picker/utils.d.ts +5 -9
- package/cjs/Picker/utils.js +22 -89
- package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
- package/cjs/SelectPicker/SelectPicker.js +39 -42
- package/cjs/TreePicker/TreePicker.js +72 -75
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +3 -1
- package/cjs/locales/index.d.ts +2 -2
- package/cjs/utils/constants.d.ts +2 -1
- package/cjs/utils/constants.js +1 -0
- package/cjs/utils/dateUtils.d.ts +0 -1
- package/cjs/utils/dateUtils.js +0 -6
- package/cjs/utils/getStringLength.d.ts +2 -0
- package/cjs/utils/getStringLength.js +18 -0
- package/cjs/utils/index.d.ts +3 -0
- package/cjs/utils/index.js +11 -2
- package/cjs/utils/useCustom.js +1 -1
- package/cjs/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/cjs/utils/useIsomorphicLayoutEffect.js +9 -0
- package/dist/rsuite-no-reset-rtl.css +140 -207
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +140 -207
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +140 -75
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +140 -75
- package/dist/rsuite.js +4833 -258
- 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/AutoComplete/AutoComplete.js +28 -29
- package/esm/Calendar/Calendar.d.ts +5 -1
- package/esm/Calendar/CalendarContainer.d.ts +7 -1
- package/esm/Calendar/CalendarContainer.js +12 -5
- package/esm/Calendar/CalendarHeader.js +2 -0
- package/esm/Calendar/MonthDropdown.js +7 -2
- package/esm/Calendar/MonthDropdownItem.js +2 -2
- package/esm/Calendar/Table.js +6 -1
- package/esm/Calendar/TimeDropdown.js +17 -10
- package/esm/Calendar/types.d.ts +1 -0
- package/esm/Cascader/Cascader.js +49 -51
- package/esm/CheckPicker/CheckPicker.d.ts +2 -2
- package/esm/CheckPicker/CheckPicker.js +36 -39
- package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
- package/esm/CustomProvider/CustomProvider.d.ts +13 -0
- package/esm/CustomProvider/CustomProvider.js +3 -3
- package/esm/DateInput/DateField.d.ts +9 -31
- package/esm/DateInput/DateField.js +61 -12
- package/esm/DateInput/DateInput.d.ts +7 -2
- package/esm/DateInput/DateInput.js +77 -95
- package/esm/DateInput/index.d.ts +4 -0
- package/esm/DateInput/index.js +4 -0
- package/esm/DateInput/useDateInputState.d.ts +7 -31
- package/esm/DateInput/useDateInputState.js +41 -18
- package/esm/DateInput/useIsFocused.d.ts +7 -0
- package/esm/DateInput/useIsFocused.js +22 -0
- package/esm/DateInput/useKeyboardInputEvent.d.ts +10 -0
- package/esm/DateInput/useKeyboardInputEvent.js +38 -0
- package/esm/DateInput/utils.d.ts +23 -1
- package/esm/DateInput/utils.js +150 -51
- package/esm/DatePicker/DatePicker.d.ts +25 -8
- package/esm/DatePicker/DatePicker.js +211 -244
- package/esm/DatePicker/Toolbar.js +5 -22
- package/esm/DatePicker/utils.d.ts +5 -1
- package/esm/DatePicker/utils.js +16 -1
- package/esm/DateRangeInput/DateRangeInput.d.ts +29 -0
- package/esm/DateRangeInput/DateRangeInput.js +237 -0
- package/esm/DateRangeInput/index.d.ts +3 -0
- package/esm/DateRangeInput/index.js +3 -0
- package/esm/DateRangeInput/utils.d.ts +61 -0
- package/esm/DateRangeInput/utils.js +137 -0
- package/esm/DateRangePicker/Calendar.js +25 -23
- package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
- package/esm/DateRangePicker/DateRangePicker.js +253 -205
- package/esm/DateRangePicker/types.d.ts +11 -3
- package/esm/DateRangePicker/utils.d.ts +2 -1
- package/esm/DateRangePicker/utils.js +7 -5
- package/esm/FormControl/FormControl.d.ts +11 -1
- package/esm/FormControl/FormControl.js +4 -3
- package/esm/Input/Input.d.ts +11 -0
- package/esm/Input/Input.js +12 -9
- package/esm/InputPicker/InputPicker.js +64 -65
- package/esm/MultiCascader/MultiCascader.js +43 -45
- package/esm/Overlay/OverlayTrigger.d.ts +3 -0
- package/esm/Overlay/OverlayTrigger.js +5 -0
- package/esm/Picker/PickerIndicator.d.ts +10 -0
- package/esm/Picker/PickerIndicator.js +43 -0
- package/esm/Picker/PickerLabel.d.ts +9 -0
- package/esm/Picker/PickerLabel.js +17 -0
- package/esm/Picker/PickerToggle.d.ts +17 -22
- package/esm/Picker/PickerToggle.js +54 -179
- package/esm/Picker/index.d.ts +3 -0
- package/esm/Picker/index.js +3 -0
- package/esm/Picker/usePickerRef.d.ts +19 -0
- package/esm/Picker/usePickerRef.js +82 -0
- package/esm/Picker/utils.d.ts +5 -9
- package/esm/Picker/utils.js +24 -90
- package/esm/SelectPicker/SelectPicker.d.ts +2 -2
- package/esm/SelectPicker/SelectPicker.js +42 -45
- package/esm/TreePicker/TreePicker.js +75 -78
- package/esm/index.d.ts +2 -0
- package/esm/index.js +1 -0
- package/esm/locales/index.d.ts +2 -2
- package/esm/utils/constants.d.ts +2 -1
- package/esm/utils/constants.js +1 -0
- package/esm/utils/dateUtils.d.ts +0 -1
- package/esm/utils/dateUtils.js +0 -5
- package/esm/utils/getStringLength.d.ts +2 -0
- package/esm/utils/getStringLength.js +13 -0
- package/esm/utils/index.d.ts +3 -0
- package/esm/utils/index.js +4 -1
- package/esm/utils/useCustom.js +2 -2
- package/esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
- package/esm/utils/useIsomorphicLayoutEffect.js +4 -0
- package/package.json +1 -1
- package/styles/color-modes/dark.less +1 -0
- package/styles/color-modes/high-contrast.less +1 -0
- package/styles/color-modes/light.less +1 -0
- package/styles/mixins/combobox.less +10 -0
- package/styles/normalize.less +230 -231
|
@@ -1,26 +1,31 @@
|
|
|
1
1
|
'use client';
|
|
2
|
+
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
|
-
|
|
5
|
+
var _templateObject;
|
|
6
|
+
import React, { useEffect, useRef, useState, useMemo } from 'react';
|
|
5
7
|
import isNil from 'lodash/isNil';
|
|
6
8
|
import omit from 'lodash/omit';
|
|
7
9
|
import partial from 'lodash/partial';
|
|
8
10
|
import pick from 'lodash/pick';
|
|
9
|
-
import debounce from 'lodash/debounce';
|
|
10
11
|
import PropTypes from 'prop-types';
|
|
11
|
-
import
|
|
12
|
+
import IconCalendar from '@rsuite/icons/legacy/Calendar';
|
|
13
|
+
import IconClockO from '@rsuite/icons/legacy/ClockO';
|
|
12
14
|
import { FormattedDate } from '../CustomProvider';
|
|
13
15
|
import Toolbar from '../DatePicker/Toolbar';
|
|
14
16
|
import PredefinedRanges from '../DatePicker/PredefinedRanges';
|
|
15
17
|
import Stack from '../Stack';
|
|
16
|
-
import { omitTriggerPropKeys, PickerOverlay, pickerPropTypes,
|
|
17
|
-
import { createChainedFunction, DATERANGE_DISABLED_TARGET,
|
|
18
|
-
import { addMonths, compareAsc,
|
|
18
|
+
import { omitTriggerPropKeys, PickerOverlay, pickerPropTypes, PickerToggleTrigger, PickerIndicator, PickerLabel, pickTriggerPropKeys, usePickerClassName, onMenuKeyDown } from '../Picker';
|
|
19
|
+
import { createChainedFunction, DATERANGE_DISABLED_TARGET, mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEventCallback, partitionHTMLProps, getStringLength } from '../utils';
|
|
20
|
+
import { addMonths, compareAsc, isValid, isBefore, isSameDay, addDays, startOfDay, endOfDay, shouldRenderTime, isAfter, copyTime, isSameMonth, shouldRenderMonth, shouldRenderDate, reverseDateRangeOmitTime, getReversedTimeMeridian, calendarOnlyProps, shouldOnlyRenderTime } from '../utils/dateUtils';
|
|
19
21
|
import Calendar from './Calendar';
|
|
20
22
|
import * as disabledDateUtils from './disabledDateUtils';
|
|
21
23
|
import { getSafeCalendarDate, getMonthHoverRange, getWeekHoverRange, isSameRange } from './utils';
|
|
22
24
|
import { deprecatePropTypeNew } from '../utils/deprecatePropType';
|
|
23
25
|
import DateRangePickerContext from './DateRangePickerContext';
|
|
26
|
+
import DateRangeInput from '../DateRangeInput';
|
|
27
|
+
import InputGroup from '../InputGroup';
|
|
28
|
+
import usePickerRef from '../Picker/usePickerRef';
|
|
24
29
|
/**
|
|
25
30
|
* A date range picker allows you to select a date range from a calendar.
|
|
26
31
|
*
|
|
@@ -43,18 +48,22 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
43
48
|
character = _props$character === void 0 ? ' ~ ' : _props$character,
|
|
44
49
|
defaultCalendarValue = props.defaultCalendarValue,
|
|
45
50
|
defaultValue = props.defaultValue,
|
|
51
|
+
plaintext = props.plaintext,
|
|
46
52
|
disabled = props.disabled,
|
|
47
53
|
DEPRECATED_disabledDateProp = props.disabledDate,
|
|
48
54
|
shouldDisableDate = props.shouldDisableDate,
|
|
49
55
|
_props$format = props.format,
|
|
50
56
|
formatStr = _props$format === void 0 ? 'yyyy-MM-dd' : _props$format,
|
|
51
57
|
hoverRange = props.hoverRange,
|
|
58
|
+
idProp = props.id,
|
|
52
59
|
_props$isoWeek = props.isoWeek,
|
|
53
60
|
isoWeek = _props$isoWeek === void 0 ? false : _props$isoWeek,
|
|
54
61
|
_props$limitEndYear = props.limitEndYear,
|
|
55
62
|
limitEndYear = _props$limitEndYear === void 0 ? 1000 : _props$limitEndYear,
|
|
56
63
|
limitStartYear = props.limitStartYear,
|
|
57
64
|
overrideLocale = props.locale,
|
|
65
|
+
loading = props.loading,
|
|
66
|
+
label = props.label,
|
|
58
67
|
menuClassName = props.menuClassName,
|
|
59
68
|
menuStyle = props.menuStyle,
|
|
60
69
|
oneTap = props.oneTap,
|
|
@@ -63,14 +72,14 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
63
72
|
_props$placement = props.placement,
|
|
64
73
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
65
74
|
ranges = props.ranges,
|
|
66
|
-
|
|
75
|
+
readOnly = props.readOnly,
|
|
67
76
|
_props$showOneCalenda = props.showOneCalendar,
|
|
68
77
|
showOneCalendar = _props$showOneCalenda === void 0 ? false : _props$showOneCalenda,
|
|
69
78
|
showWeekNumbers = props.showWeekNumbers,
|
|
70
79
|
showMeridian = props.showMeridian,
|
|
71
80
|
style = props.style,
|
|
72
|
-
|
|
73
|
-
|
|
81
|
+
size = props.size,
|
|
82
|
+
caretAsProp = props.caretAs,
|
|
74
83
|
valueProp = props.value,
|
|
75
84
|
onChange = props.onChange,
|
|
76
85
|
onClean = props.onClean,
|
|
@@ -83,18 +92,25 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
83
92
|
onSelect = props.onSelect,
|
|
84
93
|
onShortcutClick = props.onShortcutClick,
|
|
85
94
|
renderTitle = props.renderTitle,
|
|
86
|
-
|
|
95
|
+
restProps = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "defaultCalendarValue", "defaultValue", "plaintext", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "readOnly", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "size", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect", "onShortcutClick", "renderTitle"]);
|
|
96
|
+
var id = useUniqueId(classPrefix + "-", idProp);
|
|
97
|
+
var _usePickerRef = usePickerRef(ref),
|
|
98
|
+
trigger = _usePickerRef.trigger,
|
|
99
|
+
root = _usePickerRef.root,
|
|
100
|
+
target = _usePickerRef.target,
|
|
101
|
+
overlay = _usePickerRef.overlay;
|
|
87
102
|
var _useClassNames = useClassNames(classPrefix),
|
|
88
103
|
merge = _useClassNames.merge,
|
|
89
104
|
prefix = _useClassNames.prefix;
|
|
90
105
|
var _useCustom = useCustom('DateRangePicker', overrideLocale),
|
|
91
106
|
locale = _useCustom.locale,
|
|
92
|
-
formatDate = _useCustom.formatDate
|
|
93
|
-
parseDate = _useCustom.parseDate;
|
|
107
|
+
formatDate = _useCustom.formatDate;
|
|
94
108
|
var rangeFormatStr = "" + formatStr + character + formatStr;
|
|
95
109
|
var _useControlled = useControlled(valueProp, defaultValue !== null && defaultValue !== void 0 ? defaultValue : null),
|
|
96
110
|
value = _useControlled[0],
|
|
97
|
-
setValue = _useControlled[1];
|
|
111
|
+
setValue = _useControlled[1]; // Show only the calendar month panel. formatStr = 'yyyy-MM'
|
|
112
|
+
var onlyShowMonth = shouldRenderMonth(formatStr) && !shouldRenderDate(formatStr);
|
|
113
|
+
|
|
98
114
|
/**
|
|
99
115
|
* Whether to complete the selection.
|
|
100
116
|
* Everytime selection will change this value. If the value is false, it means that the selection has not been completed.
|
|
@@ -123,9 +139,6 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
123
139
|
})),
|
|
124
140
|
calendarDate = _useState4[0],
|
|
125
141
|
setCalendarDate = _useState4[1];
|
|
126
|
-
var _useState5 = useState(),
|
|
127
|
-
inputState = _useState5[0],
|
|
128
|
-
setInputState = _useState5[1];
|
|
129
142
|
/**
|
|
130
143
|
* When hoverRange is set, `selectValue` will be updated during the hover process,
|
|
131
144
|
* which will cause the `selectValue` to be updated after the first click,
|
|
@@ -136,16 +149,16 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
136
149
|
/**
|
|
137
150
|
* Get the time on the calendar.
|
|
138
151
|
*/
|
|
139
|
-
var getCalendarDatetime =
|
|
152
|
+
var getCalendarDatetime = function getCalendarDatetime(calendarKey) {
|
|
140
153
|
var index = calendarKey === 'start' ? 0 : 1;
|
|
141
154
|
return (calendarDate === null || calendarDate === void 0 ? void 0 : calendarDate[index]) || (defaultCalendarValue === null || defaultCalendarValue === void 0 ? void 0 : defaultCalendarValue[index]);
|
|
142
|
-
}
|
|
155
|
+
};
|
|
143
156
|
|
|
144
157
|
/**
|
|
145
158
|
* Call this function to update the calendar panel rendering benchmark value.
|
|
146
159
|
* If params `value` is not passed, it defaults to [new Date(), addMonth(new Date(), 1)].
|
|
147
160
|
*/
|
|
148
|
-
var
|
|
161
|
+
var setCalendarDateRange = function setCalendarDateRange(_ref3) {
|
|
149
162
|
var dateRange = _ref3.dateRange,
|
|
150
163
|
calendarKey = _ref3.calendarKey,
|
|
151
164
|
eventName = _ref3.eventName;
|
|
@@ -166,44 +179,29 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
166
179
|
// Make the calendar render the value of defaultCalendarValue after clearing the value.
|
|
167
180
|
nextValue = defaultCalendarValue;
|
|
168
181
|
}
|
|
169
|
-
|
|
182
|
+
var nextCalendarDate = getSafeCalendarDate({
|
|
170
183
|
value: nextValue,
|
|
171
|
-
calendarKey: calendarKey
|
|
172
|
-
|
|
173
|
-
|
|
184
|
+
calendarKey: calendarKey,
|
|
185
|
+
allowAameMonth: onlyShowMonth
|
|
186
|
+
});
|
|
187
|
+
setCalendarDate(nextCalendarDate);
|
|
188
|
+
if (onlyShowMonth && eventName === 'changeMonth') {
|
|
189
|
+
setSelectedDates(nextCalendarDate);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
174
192
|
|
|
175
193
|
// if valueProp changed then update selectValue/hoverValue
|
|
176
194
|
useEffect(function () {
|
|
177
195
|
setSelectedDates(valueProp !== null && valueProp !== void 0 ? valueProp : []);
|
|
178
196
|
setHoverDateRange(valueProp !== null && valueProp !== void 0 ? valueProp : null);
|
|
179
197
|
}, [valueProp]);
|
|
180
|
-
var
|
|
181
|
-
isPickerToggleActive = _useState6[0],
|
|
182
|
-
setPickerToggleActive = _useState6[1];
|
|
183
|
-
var rootRef = useRef(null);
|
|
184
|
-
var overlayRef = useRef(null);
|
|
185
|
-
var targetRef = useRef(null);
|
|
186
|
-
var triggerRef = useRef(null);
|
|
187
|
-
var handleCloseDropdown = useCallback(function () {
|
|
188
|
-
var _triggerRef$current, _triggerRef$current$c;
|
|
189
|
-
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$c = _triggerRef$current.close) === null || _triggerRef$current$c === void 0 ? void 0 : _triggerRef$current$c.call(_triggerRef$current);
|
|
190
|
-
}, []);
|
|
191
|
-
usePublicMethods(ref, {
|
|
192
|
-
triggerRef: triggerRef,
|
|
193
|
-
overlayRef: overlayRef,
|
|
194
|
-
targetRef: targetRef,
|
|
195
|
-
rootRef: rootRef
|
|
196
|
-
});
|
|
197
|
-
var getDisplayString = useCallback(function (nextValue, isPlaintext) {
|
|
198
|
+
var getDateRangeString = function getDateRangeString(nextValue) {
|
|
198
199
|
var _nextValue$, _nextValue$2;
|
|
199
200
|
var startDate = (_nextValue$ = nextValue === null || nextValue === void 0 ? void 0 : nextValue[0]) !== null && _nextValue$ !== void 0 ? _nextValue$ : null;
|
|
200
201
|
var endDate = (_nextValue$2 = nextValue === null || nextValue === void 0 ? void 0 : nextValue[1]) !== null && _nextValue$2 !== void 0 ? _nextValue$2 : null;
|
|
201
202
|
if (startDate && endDate) {
|
|
202
203
|
var displayValue = [startDate, endDate].sort(compareAsc);
|
|
203
|
-
|
|
204
|
-
return formatDate(displayValue[0], formatStr) + character + formatDate(displayValue[1], formatStr);
|
|
205
|
-
}
|
|
206
|
-
return renderValue ? renderValue(displayValue, formatStr) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedDate, {
|
|
204
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedDate, {
|
|
207
205
|
date: displayValue[0],
|
|
208
206
|
formatStr: formatStr
|
|
209
207
|
}), character, /*#__PURE__*/React.createElement(FormattedDate, {
|
|
@@ -211,13 +209,23 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
211
209
|
formatStr: formatStr
|
|
212
210
|
}));
|
|
213
211
|
}
|
|
214
|
-
return
|
|
215
|
-
}
|
|
212
|
+
return rangeFormatStr;
|
|
213
|
+
};
|
|
214
|
+
var getInputHtmlSize = function getInputHtmlSize() {
|
|
215
|
+
var padding = 4;
|
|
216
|
+
var strings = rangeFormatStr;
|
|
217
|
+
if (value) {
|
|
218
|
+
var _startDate2 = value[0],
|
|
219
|
+
_endDate2 = value[1];
|
|
220
|
+
strings = "" + formatDate(_startDate2, formatStr) + character + formatDate(_endDate2, formatStr);
|
|
221
|
+
}
|
|
222
|
+
return getStringLength(strings) + padding;
|
|
223
|
+
};
|
|
216
224
|
|
|
217
225
|
/**
|
|
218
226
|
* preset hover range
|
|
219
227
|
*/
|
|
220
|
-
var getHoverRangeValue =
|
|
228
|
+
var getHoverRangeValue = function getHoverRangeValue(date) {
|
|
221
229
|
function getHoverRangeFunc() {
|
|
222
230
|
if (hoverRange === 'week') {
|
|
223
231
|
return partial(getWeekHoverRange, isoWeek);
|
|
@@ -239,29 +247,29 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
239
247
|
hoverValues = reverseDateRangeOmitTime(hoverValues);
|
|
240
248
|
}
|
|
241
249
|
return hoverValues;
|
|
242
|
-
}
|
|
243
|
-
var
|
|
250
|
+
};
|
|
251
|
+
var setDateRange = function setDateRange(event, nextValue, closeOverlay) {
|
|
244
252
|
if (closeOverlay === void 0) {
|
|
245
253
|
closeOverlay = true;
|
|
246
254
|
}
|
|
247
255
|
// If nextValue is null, it means that the user is erasing the selected dates.
|
|
248
256
|
setSelectedDates(nextValue !== null && nextValue !== void 0 ? nextValue : []);
|
|
257
|
+
setValue(nextValue);
|
|
249
258
|
if (!isSameRange(nextValue, value, formatStr)) {
|
|
250
|
-
setValue(nextValue);
|
|
251
259
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
|
|
252
260
|
}
|
|
253
261
|
|
|
254
262
|
// `closeOverlay` default value is `true`
|
|
255
263
|
if (closeOverlay !== false) {
|
|
256
|
-
|
|
264
|
+
handleClose();
|
|
257
265
|
}
|
|
258
|
-
}
|
|
266
|
+
};
|
|
259
267
|
|
|
260
268
|
/**
|
|
261
269
|
* Select the date range. If oneTap is not set, you need to click twice to select the start time and end time.
|
|
262
270
|
* The MouseMove event is called between the first click and the second click to update the selection state.
|
|
263
271
|
*/
|
|
264
|
-
var handleMouseMove =
|
|
272
|
+
var handleMouseMove = useEventCallback(function (date) {
|
|
265
273
|
var nextHoverDateRange = getHoverRangeValue(date);
|
|
266
274
|
|
|
267
275
|
// If hasDoneSelect is false,
|
|
@@ -271,7 +279,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
271
279
|
// If `hoverRange` is set, you need to change the value of hoverDateRange according to the rules
|
|
272
280
|
if (!isNil(nextHoverDateRange) && !isNil(selectRangeValueRef.current)) {
|
|
273
281
|
var nextSelectedDates = [selectRangeValueRef.current[0], nextHoverDateRange[1]];
|
|
274
|
-
if (
|
|
282
|
+
if (isBefore(nextHoverDateRange[0], selectRangeValueRef.current[0])) {
|
|
275
283
|
nextSelectedDates = [nextHoverDateRange[0], selectRangeValueRef.current[1]];
|
|
276
284
|
}
|
|
277
285
|
setSelectedDates(nextSelectedDates);
|
|
@@ -285,12 +293,12 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
285
293
|
} else if (!isNil(nextHoverDateRange)) {
|
|
286
294
|
setHoverDateRange(nextHoverDateRange);
|
|
287
295
|
}
|
|
288
|
-
}
|
|
296
|
+
});
|
|
289
297
|
|
|
290
298
|
/**
|
|
291
299
|
* Callback for selecting a date cell in the calendar grid
|
|
292
300
|
*/
|
|
293
|
-
var handleSelectDate =
|
|
301
|
+
var handleSelectDate = useEventCallback(function (index, date, event) {
|
|
294
302
|
var calendarKey = index === 0 ? 'start' : 'end';
|
|
295
303
|
var nextSelectDates = hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : [];
|
|
296
304
|
var hoverRangeValue = getHoverRangeValue(date);
|
|
@@ -298,7 +306,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
298
306
|
|
|
299
307
|
// in `oneTap` mode
|
|
300
308
|
if (isSelectedIdle && oneTap) {
|
|
301
|
-
|
|
309
|
+
setDateRange(event, noHoverRangeValid ? [startOfDay(date), endOfDay(date)] : hoverRangeValue);
|
|
302
310
|
setSelectedIdle(false);
|
|
303
311
|
return;
|
|
304
312
|
}
|
|
@@ -340,14 +348,14 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
340
348
|
setHoverDateRange([nextSelectDates[0], nextSelectDates[0]]);
|
|
341
349
|
}
|
|
342
350
|
setSelectedDates(nextSelectDates);
|
|
343
|
-
|
|
351
|
+
setCalendarDateRange({
|
|
344
352
|
dateRange: nextSelectDates,
|
|
345
353
|
calendarKey: calendarKey,
|
|
346
354
|
eventName: 'changeDate'
|
|
347
355
|
});
|
|
348
356
|
onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
|
|
349
357
|
setSelectedIdle(!isSelectedIdle);
|
|
350
|
-
}
|
|
358
|
+
});
|
|
351
359
|
|
|
352
360
|
/**
|
|
353
361
|
* If `selectValue` changed, there will be the following effects.
|
|
@@ -359,21 +367,21 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
359
367
|
var doneSelected = selectValueLength === 0 || selectValueLength === 2;
|
|
360
368
|
doneSelected && setHoverDateRange(null);
|
|
361
369
|
}, [selectedDates]);
|
|
362
|
-
var
|
|
370
|
+
var handleSingleCalendarMonth = useEventCallback(function (index, date) {
|
|
363
371
|
var calendarKey = index === 0 ? 'start' : 'end';
|
|
364
372
|
var nextCalendarDate = Array.from(calendarDate);
|
|
365
373
|
nextCalendarDate[index] = date;
|
|
366
|
-
|
|
374
|
+
setCalendarDateRange({
|
|
367
375
|
dateRange: nextCalendarDate,
|
|
368
376
|
calendarKey: calendarKey,
|
|
369
377
|
eventName: 'changeMonth'
|
|
370
378
|
});
|
|
371
|
-
}
|
|
372
|
-
var
|
|
379
|
+
});
|
|
380
|
+
var handleSingleCalendarTime = useEventCallback(function (index, date) {
|
|
373
381
|
var calendarKey = index === 0 ? 'start' : 'end';
|
|
374
382
|
var nextCalendarDate = Array.from(calendarDate);
|
|
375
383
|
nextCalendarDate[index] = date;
|
|
376
|
-
|
|
384
|
+
setCalendarDateRange({
|
|
377
385
|
dateRange: nextCalendarDate,
|
|
378
386
|
calendarKey: calendarKey,
|
|
379
387
|
eventName: 'changeTime'
|
|
@@ -388,12 +396,12 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
388
396
|
}) : new Date(date.valueOf());
|
|
389
397
|
return next;
|
|
390
398
|
});
|
|
391
|
-
}
|
|
399
|
+
});
|
|
392
400
|
|
|
393
401
|
/**
|
|
394
402
|
* The callback triggered when PM/AM is switched.
|
|
395
403
|
*/
|
|
396
|
-
var handleToggleMeridian =
|
|
404
|
+
var handleToggleMeridian = useEventCallback(function (index) {
|
|
397
405
|
var nextCalendarDate = Array.from(calendarDate);
|
|
398
406
|
nextCalendarDate[index] = getReversedTimeMeridian(nextCalendarDate[index]);
|
|
399
407
|
setCalendarDate(nextCalendarDate);
|
|
@@ -404,21 +412,38 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
404
412
|
nextSelectedDates[index] = getReversedTimeMeridian(nextSelectedDates[index]);
|
|
405
413
|
setSelectedDates(nextSelectedDates);
|
|
406
414
|
}
|
|
407
|
-
}
|
|
415
|
+
});
|
|
416
|
+
var handleEnter = useEventCallback(function () {
|
|
417
|
+
var nextCalendarDate;
|
|
418
|
+
if (value && value.length) {
|
|
419
|
+
var _startDate3 = value[0],
|
|
420
|
+
endData = value[1];
|
|
421
|
+
nextCalendarDate = [_startDate3, isSameMonth(_startDate3, endData) ? addMonths(endData, 1) : endData];
|
|
422
|
+
} else {
|
|
423
|
+
// Reset the date on the calendar to the default date
|
|
424
|
+
nextCalendarDate = getSafeCalendarDate({
|
|
425
|
+
value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
setSelectedDates(value !== null && value !== void 0 ? value : []);
|
|
429
|
+
setCalendarDateRange({
|
|
430
|
+
dateRange: nextCalendarDate
|
|
431
|
+
});
|
|
432
|
+
});
|
|
408
433
|
|
|
409
434
|
/**
|
|
410
435
|
* Toolbar operation callback function
|
|
411
436
|
*/
|
|
412
|
-
var handleShortcutPageDate =
|
|
437
|
+
var handleShortcutPageDate = useEventCallback(function (range, closeOverlay, event) {
|
|
413
438
|
if (closeOverlay === void 0) {
|
|
414
439
|
closeOverlay = false;
|
|
415
440
|
}
|
|
416
441
|
var value = range.value;
|
|
417
|
-
|
|
442
|
+
setCalendarDateRange({
|
|
418
443
|
dateRange: value
|
|
419
444
|
});
|
|
420
445
|
if (closeOverlay) {
|
|
421
|
-
|
|
446
|
+
setDateRange(event, value, closeOverlay);
|
|
422
447
|
} else {
|
|
423
448
|
setSelectedDates(value !== null && value !== void 0 ? value : []);
|
|
424
449
|
}
|
|
@@ -426,99 +451,41 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
426
451
|
|
|
427
452
|
// End unfinished selections.
|
|
428
453
|
setSelectedIdle(true);
|
|
429
|
-
}
|
|
430
|
-
var handleOK =
|
|
431
|
-
|
|
454
|
+
});
|
|
455
|
+
var handleOK = useEventCallback(function (event) {
|
|
456
|
+
setDateRange(event, selectedDates);
|
|
432
457
|
onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event);
|
|
433
|
-
}
|
|
434
|
-
var handleClean =
|
|
435
|
-
|
|
458
|
+
});
|
|
459
|
+
var handleClean = useEventCallback(function (event) {
|
|
460
|
+
setCalendarDateRange({
|
|
436
461
|
dateRange: null
|
|
437
462
|
});
|
|
438
|
-
|
|
439
|
-
|
|
463
|
+
setDateRange(event, null);
|
|
464
|
+
onClean === null || onClean === void 0 ? void 0 : onClean(event);
|
|
465
|
+
event.stopPropagation();
|
|
466
|
+
});
|
|
440
467
|
|
|
441
468
|
/**
|
|
442
469
|
* Callback after the input box value is changed.
|
|
443
470
|
*/
|
|
444
|
-
var handleInputChange =
|
|
445
|
-
|
|
446
|
-
var rangeValue = value.split(character);
|
|
447
|
-
|
|
448
|
-
// isMatch('01/11/2020', 'MM/dd/yyyy') ==> true
|
|
449
|
-
// isMatch('2020-11-01', 'MM/dd/yyyy') ==> false
|
|
450
|
-
if (!DateUtils.isMatch(rangeValue[0], formatStr, {
|
|
451
|
-
locale: locale.dateLocale
|
|
452
|
-
}) || !DateUtils.isMatch(rangeValue[1], formatStr, {
|
|
453
|
-
locale: locale.dateLocale
|
|
454
|
-
})) {
|
|
455
|
-
setInputState('Error');
|
|
471
|
+
var handleInputChange = useEventCallback(function (value, event) {
|
|
472
|
+
if (!value) {
|
|
456
473
|
return;
|
|
457
474
|
}
|
|
458
|
-
var startDate =
|
|
459
|
-
|
|
475
|
+
var startDate = value[0],
|
|
476
|
+
endDate = value[1];
|
|
460
477
|
var selectValue = [startDate, endDate];
|
|
461
|
-
if (!DateUtils.isValid(startDate) || !DateUtils.isValid(endDate)) {
|
|
462
|
-
setInputState('Error');
|
|
463
|
-
return;
|
|
464
|
-
}
|
|
465
|
-
if (isDateDisabled(startDate, selectValue, true, DATERANGE_DISABLED_TARGET.CALENDAR)) {
|
|
466
|
-
setInputState('Error');
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
478
|
setHoverDateRange(selectValue);
|
|
470
479
|
setSelectedDates(selectValue);
|
|
471
|
-
|
|
480
|
+
setCalendarDateRange({
|
|
472
481
|
dateRange: selectValue
|
|
473
482
|
});
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
*/
|
|
481
|
-
var handleInputPressEnd = useCallback(function (event) {
|
|
482
|
-
if (inputState === 'Typing') {
|
|
483
|
-
handleValueUpdate(event, selectedDates.length === 2 ? selectedDates : null);
|
|
484
|
-
}
|
|
485
|
-
setInputState('Initial');
|
|
486
|
-
}, [handleValueUpdate, selectedDates, inputState]);
|
|
487
|
-
var handleInputBackspace = useCallback(function (event) {
|
|
488
|
-
var value = event.target.value;
|
|
489
|
-
|
|
490
|
-
// When the input box is empty, the date is cleared.
|
|
491
|
-
if (value === '') {
|
|
492
|
-
handleClean(event);
|
|
493
|
-
}
|
|
494
|
-
}, [handleClean]);
|
|
495
|
-
var handleEnter = useCallback(function () {
|
|
496
|
-
var nextCalendarDate;
|
|
497
|
-
if (value && value.length) {
|
|
498
|
-
var _startDate2 = value[0],
|
|
499
|
-
endData = value[1];
|
|
500
|
-
nextCalendarDate = [_startDate2, isSameMonth(_startDate2, endData) ? addMonths(endData, 1) : endData];
|
|
501
|
-
} else {
|
|
502
|
-
// Reset the date on the calendar to the default date
|
|
503
|
-
nextCalendarDate = getSafeCalendarDate({
|
|
504
|
-
value: defaultCalendarValue !== null && defaultCalendarValue !== void 0 ? defaultCalendarValue : null
|
|
505
|
-
});
|
|
506
|
-
}
|
|
507
|
-
setSelectedDates(value !== null && value !== void 0 ? value : []);
|
|
508
|
-
updateCalendarDateRange({
|
|
509
|
-
dateRange: nextCalendarDate
|
|
510
|
-
});
|
|
511
|
-
}, [defaultCalendarValue, updateCalendarDateRange, setSelectedDates, value]);
|
|
512
|
-
var handleEntered = useCallback(function () {
|
|
513
|
-
onOpen === null || onOpen === void 0 ? void 0 : onOpen();
|
|
514
|
-
setPickerToggleActive(true);
|
|
515
|
-
}, [onOpen]);
|
|
516
|
-
var handleExited = useCallback(function () {
|
|
517
|
-
setPickerToggleActive(false);
|
|
518
|
-
setSelectedIdle(true);
|
|
519
|
-
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
520
|
-
}, [onClose]);
|
|
521
|
-
var isDateDisabled = useCallback(function (date, selectDate, selectedDone, target) {
|
|
483
|
+
setDateRange(event, selectValue);
|
|
484
|
+
});
|
|
485
|
+
var isDateDisabled = function isDateDisabled(date, options) {
|
|
486
|
+
var selectDate = options.selectDate,
|
|
487
|
+
selectedDone = options.selectedDone,
|
|
488
|
+
target = options.target;
|
|
522
489
|
if (typeof shouldDisableDate === 'function') {
|
|
523
490
|
return shouldDisableDate(date, selectDate, selectedDone, target);
|
|
524
491
|
}
|
|
@@ -526,27 +493,31 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
526
493
|
return DEPRECATED_disabledDateProp(date, selectDate, selectedDone, target);
|
|
527
494
|
}
|
|
528
495
|
return false;
|
|
529
|
-
}
|
|
530
|
-
var disabledByBetween =
|
|
496
|
+
};
|
|
497
|
+
var disabledByBetween = function disabledByBetween(start, end, type) {
|
|
531
498
|
// If the date is between the start and the end
|
|
532
499
|
// the button is disabled
|
|
533
|
-
while (
|
|
534
|
-
if (isDateDisabled(start,
|
|
500
|
+
while (isBefore(start, end) || isSameDay(start, end)) {
|
|
501
|
+
if (isDateDisabled(start, {
|
|
502
|
+
selectDate: selectedDates,
|
|
503
|
+
selectedDone: isSelectedIdle,
|
|
504
|
+
target: type
|
|
505
|
+
})) {
|
|
535
506
|
return true;
|
|
536
507
|
}
|
|
537
|
-
start =
|
|
508
|
+
start = addDays(start, 1);
|
|
538
509
|
}
|
|
539
510
|
return false;
|
|
540
|
-
}
|
|
541
|
-
var disabledOkButton =
|
|
511
|
+
};
|
|
512
|
+
var disabledOkButton = function disabledOkButton() {
|
|
542
513
|
var start = selectedDates[0],
|
|
543
514
|
end = selectedDates[1];
|
|
544
515
|
if (!start || !end || !isSelectedIdle) {
|
|
545
516
|
return true;
|
|
546
517
|
}
|
|
547
518
|
return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
|
|
548
|
-
}
|
|
549
|
-
var disabledShortcutButton =
|
|
519
|
+
};
|
|
520
|
+
var disabledShortcutButton = function disabledShortcutButton(value) {
|
|
550
521
|
if (value === void 0) {
|
|
551
522
|
value = [];
|
|
552
523
|
}
|
|
@@ -557,17 +528,26 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
557
528
|
return true;
|
|
558
529
|
}
|
|
559
530
|
return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
|
|
560
|
-
}
|
|
561
|
-
var
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
531
|
+
};
|
|
532
|
+
var handleClose = useEventCallback(function () {
|
|
533
|
+
var _trigger$current, _trigger$current$clos;
|
|
534
|
+
(_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : (_trigger$current$clos = _trigger$current.close) === null || _trigger$current$clos === void 0 ? void 0 : _trigger$current$clos.call(_trigger$current);
|
|
535
|
+
});
|
|
536
|
+
var handleInputKeyDown = useEventCallback(function (event) {
|
|
537
|
+
onMenuKeyDown(event, {
|
|
538
|
+
esc: handleClose,
|
|
539
|
+
enter: function enter() {
|
|
540
|
+
var _trigger$current2;
|
|
541
|
+
var _ref4 = ((_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.getState()) || {},
|
|
542
|
+
open = _ref4.open;
|
|
543
|
+
if (!open) {
|
|
544
|
+
var _trigger$current3;
|
|
545
|
+
(_trigger$current3 = trigger.current) === null || _trigger$current3 === void 0 ? void 0 : _trigger$current3.open();
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
});
|
|
549
|
+
});
|
|
550
|
+
var renderCalendarOverlay = function renderCalendarOverlay(positionProps, speakerRef) {
|
|
571
551
|
var left = positionProps.left,
|
|
572
552
|
top = positionProps.top,
|
|
573
553
|
className = positionProps.className;
|
|
@@ -575,13 +555,27 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
575
555
|
var panelClasses = prefix('daterange-panel', {
|
|
576
556
|
'daterange-panel-show-one-calendar': showOneCalendar
|
|
577
557
|
});
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Set a min-width (528px) when there are two calendars
|
|
561
|
+
* @see https://github.com/rsuite/rsuite/issues/3522
|
|
562
|
+
*/
|
|
563
|
+
var panelStyles = {
|
|
564
|
+
minWidth: showOneCalendar ? 'auto' : 528
|
|
565
|
+
};
|
|
578
566
|
var styles = _extends({}, menuStyle, {
|
|
579
567
|
left: left,
|
|
580
568
|
top: top
|
|
581
569
|
});
|
|
582
570
|
var calendarProps = {
|
|
583
571
|
calendarDate: calendarDate,
|
|
584
|
-
disabledDate:
|
|
572
|
+
disabledDate: function disabledDate(date, values, type) {
|
|
573
|
+
return isDateDisabled(date, {
|
|
574
|
+
selectDate: values,
|
|
575
|
+
selectedDone: isSelectedIdle,
|
|
576
|
+
target: type
|
|
577
|
+
});
|
|
578
|
+
},
|
|
585
579
|
format: formatStr,
|
|
586
580
|
hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined,
|
|
587
581
|
isoWeek: isoWeek,
|
|
@@ -591,8 +585,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
591
585
|
showWeekNumbers: showWeekNumbers,
|
|
592
586
|
value: selectedDates,
|
|
593
587
|
showMeridian: showMeridian,
|
|
594
|
-
onChangeCalendarMonth:
|
|
595
|
-
onChangeCalendarTime:
|
|
588
|
+
onChangeCalendarMonth: handleSingleCalendarMonth,
|
|
589
|
+
onChangeCalendarTime: handleSingleCalendarTime,
|
|
596
590
|
onMouseMove: handleMouseMove,
|
|
597
591
|
onSelect: handleSelectDate,
|
|
598
592
|
onToggleMeridian: handleToggleMeridian,
|
|
@@ -606,12 +600,15 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
606
600
|
});
|
|
607
601
|
return /*#__PURE__*/React.createElement(PickerOverlay, {
|
|
608
602
|
role: "dialog",
|
|
603
|
+
"aria-labelledby": label ? id + "-label" : undefined,
|
|
604
|
+
tabIndex: -1,
|
|
609
605
|
className: classes,
|
|
610
|
-
ref: mergeRefs(
|
|
611
|
-
target:
|
|
606
|
+
ref: mergeRefs(overlay, speakerRef),
|
|
607
|
+
target: trigger,
|
|
612
608
|
style: styles
|
|
613
609
|
}, /*#__PURE__*/React.createElement("div", {
|
|
614
|
-
className: panelClasses
|
|
610
|
+
className: panelClasses,
|
|
611
|
+
style: panelStyles
|
|
615
612
|
}, /*#__PURE__*/React.createElement(Stack, {
|
|
616
613
|
alignItems: "flex-start"
|
|
617
614
|
}, sideRanges.length > 0 && /*#__PURE__*/React.createElement(PredefinedRanges, {
|
|
@@ -622,12 +619,14 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
622
619
|
calendarDate: calendarDate,
|
|
623
620
|
locale: locale,
|
|
624
621
|
disabledShortcut: disabledShortcutButton,
|
|
625
|
-
onShortcutClick: handleShortcutPageDate
|
|
622
|
+
onShortcutClick: handleShortcutPageDate,
|
|
623
|
+
"data-testid": "daterange-predefined-side"
|
|
626
624
|
}), /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
627
625
|
className: prefix('daterange-content')
|
|
628
626
|
}, /*#__PURE__*/React.createElement("div", {
|
|
629
|
-
className: prefix('daterange-header')
|
|
630
|
-
|
|
627
|
+
className: prefix('daterange-header'),
|
|
628
|
+
"data-testid": "daterange-header"
|
|
629
|
+
}, getDateRangeString(selectedDates)), /*#__PURE__*/React.createElement("div", {
|
|
631
630
|
className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
|
|
632
631
|
}, /*#__PURE__*/React.createElement(DateRangePickerContext.Provider, {
|
|
633
632
|
value: {
|
|
@@ -658,39 +657,88 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
658
657
|
})),
|
|
659
658
|
classes = _usePickerClassName[0],
|
|
660
659
|
usedClassNamePropKeys = _usePickerClassName[1];
|
|
660
|
+
var caretAs = useMemo(function () {
|
|
661
|
+
if (caretAsProp === null) {
|
|
662
|
+
return null;
|
|
663
|
+
}
|
|
664
|
+
return caretAsProp || (shouldOnlyRenderTime(formatStr) ? IconClockO : IconCalendar);
|
|
665
|
+
}, [caretAsProp, formatStr]);
|
|
666
|
+
var isErrorValue = function isErrorValue(value) {
|
|
667
|
+
if (!value) {
|
|
668
|
+
return false;
|
|
669
|
+
}
|
|
670
|
+
var startDate = value[0],
|
|
671
|
+
endDate = value[1];
|
|
672
|
+
if (!isValid(startDate) || !isValid(endDate)) {
|
|
673
|
+
return true;
|
|
674
|
+
}
|
|
675
|
+
if (isBefore(endDate, startDate)) {
|
|
676
|
+
return true;
|
|
677
|
+
}
|
|
678
|
+
var disabledOptions = {
|
|
679
|
+
selectDate: value,
|
|
680
|
+
selectedDone: isSelectedIdle,
|
|
681
|
+
target: DATERANGE_DISABLED_TARGET.INPUT
|
|
682
|
+
};
|
|
683
|
+
if (isDateDisabled(startDate, disabledOptions) || isDateDisabled(endDate, disabledOptions)) {
|
|
684
|
+
return true;
|
|
685
|
+
}
|
|
686
|
+
return false;
|
|
687
|
+
};
|
|
688
|
+
var _partitionHTMLProps = partitionHTMLProps(restProps, {
|
|
689
|
+
htmlProps: [],
|
|
690
|
+
includeAria: true
|
|
691
|
+
}),
|
|
692
|
+
ariaProps = _partitionHTMLProps[0],
|
|
693
|
+
rest = _partitionHTMLProps[1];
|
|
694
|
+
var showCleanButton = cleanable && hasValue && !readOnly;
|
|
695
|
+
var invalidValue = value && isErrorValue(value);
|
|
661
696
|
return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
|
|
697
|
+
trigger: "active",
|
|
698
|
+
ref: trigger,
|
|
662
699
|
pickerProps: pick(props, pickTriggerPropKeys),
|
|
663
|
-
ref: triggerRef,
|
|
664
700
|
placement: placement,
|
|
665
701
|
onEnter: createChainedFunction(handleEnter, onEnter),
|
|
666
|
-
onEntered: createChainedFunction(
|
|
667
|
-
onExited: createChainedFunction(
|
|
668
|
-
speaker:
|
|
702
|
+
onEntered: createChainedFunction(onOpen, onEntered),
|
|
703
|
+
onExited: createChainedFunction(onClose, onExited),
|
|
704
|
+
speaker: renderCalendarOverlay
|
|
669
705
|
}, /*#__PURE__*/React.createElement(Component, {
|
|
670
|
-
ref:
|
|
671
|
-
className: merge(className, classes, (_merge = {}, _merge[prefix('error')] =
|
|
706
|
+
ref: root,
|
|
707
|
+
className: merge(className, classes, (_merge = {}, _merge[prefix('error')] = invalidValue, _merge)),
|
|
672
708
|
style: style
|
|
673
|
-
}, /*#__PURE__*/React.createElement(
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
709
|
+
}, plaintext ? /*#__PURE__*/React.createElement(DateRangeInput, {
|
|
710
|
+
value: value,
|
|
711
|
+
format: formatStr,
|
|
712
|
+
plaintext: plaintext
|
|
713
|
+
}) : /*#__PURE__*/React.createElement(InputGroup, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys, calendarOnlyProps)), {
|
|
714
|
+
inside: true,
|
|
715
|
+
size: size
|
|
716
|
+
}), /*#__PURE__*/React.createElement(PickerLabel, {
|
|
717
|
+
className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["label"]))),
|
|
718
|
+
id: id + "-label"
|
|
719
|
+
}, label), /*#__PURE__*/React.createElement(DateRangeInput, _extends({
|
|
720
|
+
"aria-haspopup": "dialog",
|
|
721
|
+
"aria-invalid": invalidValue,
|
|
722
|
+
"aria-labelledby": label ? id + "-label" : undefined
|
|
723
|
+
}, ariaProps, {
|
|
724
|
+
ref: target,
|
|
725
|
+
id: id,
|
|
726
|
+
value: value,
|
|
727
|
+
character: character,
|
|
728
|
+
format: formatStr,
|
|
729
|
+
placeholder: placeholder ? placeholder : rangeFormatStr,
|
|
691
730
|
disabled: disabled,
|
|
692
|
-
|
|
693
|
-
|
|
731
|
+
onChange: handleInputChange,
|
|
732
|
+
readOnly: readOnly || !editable || loading,
|
|
733
|
+
plaintext: plaintext,
|
|
734
|
+
onKeyDown: handleInputKeyDown,
|
|
735
|
+
htmlSize: getInputHtmlSize()
|
|
736
|
+
})), /*#__PURE__*/React.createElement(PickerIndicator, {
|
|
737
|
+
loading: loading,
|
|
738
|
+
caretAs: caretAs,
|
|
739
|
+
onClose: handleClean,
|
|
740
|
+
showCleanButton: showCleanButton
|
|
741
|
+
}))));
|
|
694
742
|
});
|
|
695
743
|
DateRangePicker.after = disabledDateUtils.after;
|
|
696
744
|
DateRangePicker.afterToday = disabledDateUtils.afterToday;
|