rsuite 5.59.1 → 5.59.3-alpha.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.
Files changed (141) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/DateRangePicker/styles/index.css +27 -0
  3. package/DateRangePicker/styles/index.less +27 -0
  4. package/cjs/@types/common.d.ts +1 -1
  5. package/cjs/Calendar/CalendarContainer.js +4 -4
  6. package/cjs/DatePicker/DatePicker.d.ts +3 -38
  7. package/cjs/DatePicker/DatePicker.js +86 -137
  8. package/cjs/DatePicker/PredefinedRanges.d.ts +1 -1
  9. package/cjs/DatePicker/PredefinedRanges.js +3 -3
  10. package/cjs/DatePicker/Toolbar.d.ts +1 -1
  11. package/cjs/DatePicker/Toolbar.js +13 -12
  12. package/cjs/DatePicker/hooks/useFocus.d.ts +13 -0
  13. package/cjs/DatePicker/hooks/useFocus.js +96 -0
  14. package/cjs/DatePicker/hooks/useMonthView.d.ts +10 -0
  15. package/cjs/DatePicker/hooks/useMonthView.js +28 -0
  16. package/cjs/DatePicker/index.d.ts +2 -1
  17. package/cjs/DatePicker/types.d.ts +37 -0
  18. package/cjs/DatePicker/utils.d.ts +9 -0
  19. package/cjs/DatePicker/utils.js +20 -2
  20. package/cjs/DateRangePicker/DateRangePicker.d.ts +15 -3
  21. package/cjs/DateRangePicker/DateRangePicker.js +58 -68
  22. package/cjs/DateRangePicker/DateRangePickerContext.d.ts +4 -1
  23. package/cjs/DateRangePicker/DateRangePickerContext.js +4 -4
  24. package/cjs/DateRangePicker/Header.d.ts +11 -0
  25. package/cjs/DateRangePicker/Header.js +65 -0
  26. package/cjs/DateRangePicker/disabledDateUtils.d.ts +1 -1
  27. package/cjs/DateRangePicker/disabledDateUtils.js +1 -1
  28. package/cjs/DateRangePicker/index.js +5 -0
  29. package/cjs/Form/Form.d.ts +56 -39
  30. package/cjs/Form/Form.js +64 -186
  31. package/cjs/Form/FormContext.d.ts +12 -9
  32. package/cjs/Form/FormContext.js +11 -5
  33. package/cjs/Form/hooks/useFormRef.d.ts +55 -0
  34. package/cjs/Form/hooks/useFormRef.js +45 -0
  35. package/cjs/Form/hooks/useFormValidate.d.ts +19 -0
  36. package/cjs/Form/hooks/useFormValidate.js +157 -0
  37. package/cjs/Form/hooks/useFormValue.d.ts +2 -1
  38. package/cjs/Form/hooks/useFormValue.js +12 -1
  39. package/cjs/Form/hooks/useSchemaModel.js +5 -0
  40. package/cjs/Form/index.d.ts +2 -1
  41. package/cjs/FormControl/FormControl.d.ts +1 -1
  42. package/cjs/FormControl/FormControl.js +50 -68
  43. package/cjs/FormControl/hooks/useField.d.ts +18 -0
  44. package/cjs/FormControl/hooks/useField.js +54 -0
  45. package/cjs/FormControl/hooks/useRegisterModel.d.ts +3 -0
  46. package/cjs/FormControl/hooks/useRegisterModel.js +22 -0
  47. package/cjs/FormControl/utils.d.ts +1 -0
  48. package/cjs/FormControl/utils.js +8 -0
  49. package/cjs/FormControlLabel/FormControlLabel.js +12 -9
  50. package/cjs/FormErrorMessage/FormErrorMessage.js +2 -5
  51. package/cjs/FormGroup/FormGroup.d.ts +18 -4
  52. package/cjs/FormGroup/FormGroup.js +28 -2
  53. package/cjs/FormGroup/index.d.ts +1 -0
  54. package/cjs/FormGroup/index.js +4 -3
  55. package/cjs/FormHelpText/FormHelpText.d.ts +2 -1
  56. package/cjs/FormHelpText/FormHelpText.js +16 -9
  57. package/cjs/Input/Input.js +4 -5
  58. package/cjs/utils/dateUtils.d.ts +72 -10
  59. package/cjs/utils/dateUtils.js +88 -29
  60. package/dist/rsuite-no-reset-rtl.css +27 -0
  61. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  62. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  63. package/dist/rsuite-no-reset.css +27 -0
  64. package/dist/rsuite-no-reset.min.css +1 -1
  65. package/dist/rsuite-no-reset.min.css.map +1 -1
  66. package/dist/rsuite-rtl.css +27 -0
  67. package/dist/rsuite-rtl.min.css +1 -1
  68. package/dist/rsuite-rtl.min.css.map +1 -1
  69. package/dist/rsuite.css +27 -0
  70. package/dist/rsuite.js +144 -44
  71. package/dist/rsuite.js.map +1 -1
  72. package/dist/rsuite.min.css +1 -1
  73. package/dist/rsuite.min.css.map +1 -1
  74. package/dist/rsuite.min.js +1 -1
  75. package/dist/rsuite.min.js.LICENSE.txt +35 -0
  76. package/dist/rsuite.min.js.map +1 -1
  77. package/esm/@types/common.d.ts +1 -1
  78. package/esm/Calendar/CalendarContainer.js +5 -5
  79. package/esm/DatePicker/DatePicker.d.ts +3 -38
  80. package/esm/DatePicker/DatePicker.js +88 -139
  81. package/esm/DatePicker/PredefinedRanges.d.ts +1 -1
  82. package/esm/DatePicker/PredefinedRanges.js +3 -3
  83. package/esm/DatePicker/Toolbar.d.ts +1 -1
  84. package/esm/DatePicker/Toolbar.js +13 -12
  85. package/esm/DatePicker/hooks/useFocus.d.ts +13 -0
  86. package/esm/DatePicker/hooks/useFocus.js +90 -0
  87. package/esm/DatePicker/hooks/useMonthView.d.ts +10 -0
  88. package/esm/DatePicker/hooks/useMonthView.js +22 -0
  89. package/esm/DatePicker/index.d.ts +2 -1
  90. package/esm/DatePicker/types.d.ts +37 -0
  91. package/esm/DatePicker/utils.d.ts +9 -0
  92. package/esm/DatePicker/utils.js +18 -2
  93. package/esm/DateRangePicker/DateRangePicker.d.ts +15 -3
  94. package/esm/DateRangePicker/DateRangePicker.js +61 -71
  95. package/esm/DateRangePicker/DateRangePickerContext.d.ts +4 -1
  96. package/esm/DateRangePicker/DateRangePickerContext.js +2 -2
  97. package/esm/DateRangePicker/Header.d.ts +11 -0
  98. package/esm/DateRangePicker/Header.js +59 -0
  99. package/esm/DateRangePicker/disabledDateUtils.d.ts +1 -1
  100. package/esm/DateRangePicker/disabledDateUtils.js +1 -1
  101. package/esm/DateRangePicker/index.js +4 -0
  102. package/esm/Form/Form.d.ts +56 -39
  103. package/esm/Form/Form.js +62 -183
  104. package/esm/Form/FormContext.d.ts +12 -9
  105. package/esm/Form/FormContext.js +6 -2
  106. package/esm/Form/hooks/useFormRef.d.ts +55 -0
  107. package/esm/Form/hooks/useFormRef.js +40 -0
  108. package/esm/Form/hooks/useFormValidate.d.ts +19 -0
  109. package/esm/Form/hooks/useFormValidate.js +152 -0
  110. package/esm/Form/hooks/useFormValue.d.ts +2 -1
  111. package/esm/Form/hooks/useFormValue.js +12 -1
  112. package/esm/Form/hooks/useSchemaModel.js +5 -0
  113. package/esm/Form/index.d.ts +2 -1
  114. package/esm/FormControl/FormControl.d.ts +1 -1
  115. package/esm/FormControl/FormControl.js +48 -66
  116. package/esm/FormControl/hooks/useField.d.ts +18 -0
  117. package/esm/FormControl/hooks/useField.js +48 -0
  118. package/esm/FormControl/hooks/useRegisterModel.d.ts +3 -0
  119. package/esm/FormControl/hooks/useRegisterModel.js +17 -0
  120. package/esm/FormControl/utils.d.ts +1 -0
  121. package/esm/FormControl/utils.js +4 -0
  122. package/esm/FormControlLabel/FormControlLabel.js +12 -8
  123. package/esm/FormErrorMessage/FormErrorMessage.js +2 -5
  124. package/esm/FormGroup/FormGroup.d.ts +18 -4
  125. package/esm/FormGroup/FormGroup.js +27 -1
  126. package/esm/FormGroup/index.d.ts +1 -0
  127. package/esm/FormGroup/index.js +1 -0
  128. package/esm/FormHelpText/FormHelpText.d.ts +2 -1
  129. package/esm/FormHelpText/FormHelpText.js +17 -9
  130. package/esm/Input/Input.js +4 -5
  131. package/esm/utils/dateUtils.d.ts +72 -10
  132. package/esm/utils/dateUtils.js +86 -28
  133. package/package.json +2 -2
  134. package/cjs/Form/hooks/useFormError.d.ts +0 -6
  135. package/cjs/Form/hooks/useFormError.js +0 -31
  136. package/cjs/FormControl/useRegisterModel.d.ts +0 -4
  137. package/cjs/FormControl/useRegisterModel.js +0 -18
  138. package/esm/Form/hooks/useFormError.d.ts +0 -6
  139. package/esm/Form/hooks/useFormError.js +0 -26
  140. package/esm/FormControl/useRegisterModel.d.ts +0 -4
  141. package/esm/FormControl/useRegisterModel.js +0 -13
@@ -0,0 +1,90 @@
1
+ 'use client';
2
+ import delay from 'lodash/delay';
3
+ import addMonths from 'date-fns/addMonths';
4
+ import addDays from 'date-fns/addDays';
5
+ import useEventCallback from '../../utils/useEventCallback';
6
+ import { getAriaLabel } from '../../Calendar/utils';
7
+ import { useCustom } from '../../utils';
8
+ import { onMenuKeyDown } from '../../internals/Picker/utils';
9
+ function useFocus(props) {
10
+ var target = props.target,
11
+ showMonth = props.showMonth,
12
+ id = props.id,
13
+ localeProp = props.locale;
14
+ var _useCustom = useCustom('DatePicker', localeProp),
15
+ locale = _useCustom.locale,
16
+ formatDate = _useCustom.formatDate;
17
+ /**
18
+ * Get the corresponding container based on date selection and month selection
19
+ */
20
+ var getOverlayContainer = function getOverlayContainer() {
21
+ return showMonth ? document.getElementById(id + "-calendar-month-dropdown") : document.getElementById(id + "-calendar-table");
22
+ };
23
+
24
+ /**
25
+ * Check whether the date is focusable
26
+ */
27
+ var checkFocusable = function checkFocusable(date) {
28
+ var formatStr = showMonth ? locale.formattedMonthPattern : locale.formattedDayPattern;
29
+ var ariaLabel = getAriaLabel(date, formatStr, formatDate);
30
+ var container = getOverlayContainer();
31
+ var dateElement = container === null || container === void 0 ? void 0 : container.querySelector("[aria-label=\"" + ariaLabel + "\"]");
32
+ if ((dateElement === null || dateElement === void 0 ? void 0 : dateElement.getAttribute('aria-disabled')) === 'true') {
33
+ return false;
34
+ }
35
+ return true;
36
+ };
37
+
38
+ /**
39
+ * Focus on the currently selected date element
40
+ */
41
+ var focusSelectedDate = function focusSelectedDate() {
42
+ delay(function () {
43
+ var container = getOverlayContainer();
44
+ var selectedElement = container === null || container === void 0 ? void 0 : container.querySelector('[aria-selected="true"]');
45
+ selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.focus();
46
+ }, 1);
47
+ };
48
+
49
+ /**
50
+ * Focus on the input element
51
+ */
52
+ var focusInput = useEventCallback(function () {
53
+ delay(function () {
54
+ var _target$current;
55
+ return (_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
56
+ }, 1);
57
+ });
58
+ var onKeyFocusEvent = useEventCallback(function (event, options) {
59
+ var date = options.date,
60
+ callback = options.callback;
61
+ var delta = 0;
62
+ var step = showMonth ? 6 : 7;
63
+ var changeDateFunc = showMonth ? addMonths : addDays;
64
+ onMenuKeyDown(event, {
65
+ down: function down() {
66
+ delta = step;
67
+ },
68
+ up: function up() {
69
+ delta = -step;
70
+ },
71
+ right: function right() {
72
+ delta = 1;
73
+ },
74
+ left: function left() {
75
+ delta = -1;
76
+ }
77
+ });
78
+ var nextDate = changeDateFunc(date, delta);
79
+ if (checkFocusable(nextDate)) {
80
+ callback(nextDate);
81
+ focusSelectedDate();
82
+ }
83
+ });
84
+ return {
85
+ focusInput: focusInput,
86
+ focusSelectedDate: focusSelectedDate,
87
+ onKeyFocusEvent: onKeyFocusEvent
88
+ };
89
+ }
90
+ export default useFocus;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ interface UseMonthViewProps {
3
+ onToggleMonthDropdown?: (toggle: boolean) => void;
4
+ }
5
+ declare function useMonthView(props: UseMonthViewProps): {
6
+ monthView: boolean;
7
+ setMonthView: import("react").Dispatch<import("react").SetStateAction<boolean>>;
8
+ toggleMonthView: (...args: any[]) => any;
9
+ };
10
+ export default useMonthView;
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ import { useState } from 'react';
3
+ import useEventCallback from '../../utils/useEventCallback';
4
+ function useMonthView(props) {
5
+ var onToggleMonthDropdown = props.onToggleMonthDropdown;
6
+ var _useState = useState(false),
7
+ monthView = _useState[0],
8
+ setMonthView = _useState[1];
9
+ /**
10
+ * The callback triggered after the month selection box is opened or closed.
11
+ */
12
+ var toggleMonthView = useEventCallback(function (show) {
13
+ onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(show);
14
+ setMonthView(show);
15
+ });
16
+ return {
17
+ monthView: monthView,
18
+ setMonthView: setMonthView,
19
+ toggleMonthView: toggleMonthView
20
+ };
21
+ }
22
+ export default useMonthView;
@@ -1,3 +1,4 @@
1
1
  import DatePicker from './DatePicker';
2
- export type { DatePickerProps, RangeType } from './DatePicker';
2
+ export type { RangeType } from './types';
3
+ export type { DatePickerProps } from './DatePicker';
3
4
  export default DatePicker;
@@ -9,3 +9,40 @@ export interface RangeType<T> {
9
9
  export interface InnerRange<T> extends Omit<RangeType<T>, 'value'> {
10
10
  value: T;
11
11
  }
12
+ export interface DeprecatedProps {
13
+ /**
14
+ * Display date panel when component initial
15
+ *
16
+ * @deprecated use <Calendar> instead
17
+ **/
18
+ inline?: boolean;
19
+ /**
20
+ * Whether to disable a date on the calendar view
21
+ *
22
+ * @returns date should be disabled (not selectable)
23
+ * @deprecated Use {@link shouldDisableDate} instead
24
+ */
25
+ disabledDate?: (date?: Date) => boolean;
26
+ /**
27
+ * Disabled hours
28
+ *
29
+ * @deprecated Use {@link shouldDisableHour} instead
30
+ */
31
+ disabledHours?: (hour: number, date: Date) => boolean;
32
+ /**
33
+ * Disabled minutes
34
+ *
35
+ * @deprecated Use {@link shouldDisableMinute} instead
36
+ */
37
+ disabledMinutes?: (minute: number, date: Date) => boolean;
38
+ /**
39
+ * Disabled seconds
40
+ *
41
+ * @deprecated Use {@link shouldDisableSecond} instead
42
+ */
43
+ disabledSeconds?: (second: number, date: Date) => boolean;
44
+ /**
45
+ * @deprecated
46
+ */
47
+ renderValue?: (value: Date, format: string) => string;
48
+ }
@@ -1,3 +1,5 @@
1
+ /// <reference types="lodash" />
2
+ import PropTypes from 'prop-types';
1
3
  import { ToolbarProps } from './Toolbar';
2
4
  import { InnerRange, RangeType } from './types';
3
5
  import { DateRange } from '../DateRangePicker/types';
@@ -12,3 +14,10 @@ export declare function splitRanges(ranges?: RangeType<Date>[]): {
12
14
  sideRanges: RangeType<Date>[];
13
15
  bottomRanges: RangeType<Date>[];
14
16
  };
17
+ export declare const deprecatedPropTypes: {
18
+ disabledDate: PropTypes.Requireable<(...args: any[]) => any>;
19
+ disabledHours: PropTypes.Requireable<(...args: any[]) => any>;
20
+ disabledMinutes: PropTypes.Requireable<(...args: any[]) => any>;
21
+ disabledSeconds: PropTypes.Requireable<(...args: any[]) => any>;
22
+ };
23
+ export declare const getRestProps: (props: any, omitProps?: string[]) => import("lodash").Omit<any, string>;
@@ -1,7 +1,11 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- import { subDays, startOfDay, endOfDay } from '../utils/dateUtils';
4
+ import PropTypes from 'prop-types';
5
+ import omit from 'lodash/omit';
6
+ import { deprecatePropTypeNew } from '../internals/propTypes';
7
+ import { omitTriggerPropKeys } from '../internals/Picker';
8
+ import { subDays, startOfDay, endOfDay, calendarOnlyProps } from '../utils/dateUtils';
5
9
  export function getDefaultRanges(value) {
6
10
  var today = new Date();
7
11
 
@@ -66,4 +70,16 @@ export function splitRanges(ranges) {
66
70
  sideRanges: sideRanges,
67
71
  bottomRanges: bottomRanges
68
72
  };
69
- }
73
+ }
74
+ export var deprecatedPropTypes = {
75
+ disabledDate: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableDate" property instead.'),
76
+ disabledHours: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableHour" property instead.'),
77
+ disabledMinutes: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableMinute" property instead.'),
78
+ disabledSeconds: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableSecond" property instead.')
79
+ };
80
+ export var getRestProps = function getRestProps(props, omitProps) {
81
+ if (omitProps === void 0) {
82
+ omitProps = [];
83
+ }
84
+ return omit(props, [].concat(omitTriggerPropKeys, calendarOnlyProps, omitProps));
85
+ };
@@ -8,9 +8,17 @@ export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLoc
8
8
  caretAs?: React.ElementType | null;
9
9
  /** Predefined date ranges */
10
10
  ranges?: RangeType[];
11
- /** Format date */
11
+ /**
12
+ * Format of the date displayed in the input box
13
+ *
14
+ * @default 'yyyy-MM-dd'
15
+ */
12
16
  format?: string;
13
- /** Rendered as an input, the date can be entered via the keyboard */
17
+ /**
18
+ * Rendered as an input, the date can be entered via the keyboard.
19
+ *
20
+ * @default true
21
+ */
14
22
  editable?: boolean;
15
23
  /** The date range that will be selected when you click on the date */
16
24
  hoverRange?: 'week' | 'month' | ((date: Date) => DateRange);
@@ -24,7 +32,11 @@ export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLoc
24
32
  isoWeek?: boolean;
25
33
  /** A label displayed at the beginning of toggle button */
26
34
  label?: React.ReactNode;
27
- /** Set the upper limit of the available year relative to the current selection date */
35
+ /**
36
+ * Set the upper limit of the available year relative to the current selection date.
37
+ *
38
+ * @default 1000
39
+ */
28
40
  limitEndYear?: number;
29
41
  /** Set the lower limit of the available year relative to the current selection date */
30
42
  limitStartYear?: number;
@@ -11,20 +11,19 @@ import pick from 'lodash/pick';
11
11
  import PropTypes from 'prop-types';
12
12
  import IconCalendar from '@rsuite/icons/legacy/Calendar';
13
13
  import IconClockO from '@rsuite/icons/legacy/ClockO';
14
- import { FormattedDate } from '../CustomProvider';
15
14
  import Toolbar from '../DatePicker/Toolbar';
16
15
  import PredefinedRanges from '../DatePicker/PredefinedRanges';
17
16
  import Stack from '../Stack';
18
17
  import { omitTriggerPropKeys, PickerPopup, pickerPropTypes, PickerToggleTrigger, PickerIndicator, PickerLabel, pickTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../internals/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';
18
+ import { createChainedFunction, DATERANGE_DISABLED_TARGET as TARGET, mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEventCallback, partitionHTMLProps, getStringLength } from '../utils';
19
+ import { addMonths, isValid, isBefore, isSameDay, addDays, startOfDay, endOfDay, shouldRenderTime, isAfter, copyTime, isSameMonth, shouldRenderMonth, shouldRenderDate, reverseDateRangeOmitTime, getReversedTimeMeridian, calendarOnlyProps, shouldOnlyRenderTime } from '../utils/dateUtils';
21
20
  import Calendar from './Calendar';
22
- import * as disabledDateUtils from './disabledDateUtils';
23
21
  import { getSafeCalendarDate, getMonthHoverRange, getWeekHoverRange, isSameRange } from './utils';
24
22
  import { deprecatePropTypeNew, oneOf } from '../internals/propTypes';
25
23
  import DateRangePickerContext from './DateRangePickerContext';
26
24
  import DateRangeInput from '../DateRangeInput';
27
25
  import InputGroup from '../InputGroup';
26
+ import Header from './Header';
28
27
  /**
29
28
  * A date range picker allows you to select a date range from a calendar.
30
29
  *
@@ -144,7 +143,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
144
143
  * so declare a Ref to temporarily store the `selectValue` of the first click.
145
144
  */
146
145
  var selectRangeValueRef = useRef(null);
147
-
146
+ var _useState5 = useState(),
147
+ activeCalendarKey = _useState5[0],
148
+ setActiveCalendarKey = _useState5[1];
148
149
  /**
149
150
  * Get the time on the calendar.
150
151
  */
@@ -194,22 +195,6 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
194
195
  setSelectedDates(valueProp !== null && valueProp !== void 0 ? valueProp : []);
195
196
  setHoverDateRange(valueProp !== null && valueProp !== void 0 ? valueProp : null);
196
197
  }, [valueProp]);
197
- var getDateRangeString = function getDateRangeString(nextValue) {
198
- var _ref4 = nextValue !== null && nextValue !== void 0 ? nextValue : [null, null],
199
- startDate = _ref4[0],
200
- endDate = _ref4[1];
201
- if (startDate && endDate) {
202
- var displayValue = [startDate, endDate].sort(compareAsc);
203
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormattedDate, {
204
- date: displayValue[0],
205
- formatStr: formatStr
206
- }), character, /*#__PURE__*/React.createElement(FormattedDate, {
207
- date: displayValue[1],
208
- formatStr: formatStr
209
- }));
210
- }
211
- return rangeFormatStr;
212
- };
213
198
  var getInputHtmlSize = function getInputHtmlSize() {
214
199
  var padding = 4;
215
200
  var strings = rangeFormatStr;
@@ -268,7 +253,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
268
253
  * Select the date range. If oneTap is not set, you need to click twice to select the start time and end time.
269
254
  * The MouseMove event is called between the first click and the second click to update the selection state.
270
255
  */
271
- var handleMouseMove = useEventCallback(function (date) {
256
+ var onMouseMove = useEventCallback(function (date) {
272
257
  var nextHoverDateRange = getHoverRangeValue(date);
273
258
 
274
259
  // If hasDoneSelect is false,
@@ -304,9 +289,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
304
289
  var noHoverRangeValid = isNil(hoverRangeValue);
305
290
 
306
291
  // in `oneTap` mode
307
- if (isSelectedIdle && oneTap) {
292
+ if (oneTap) {
308
293
  setDateRange(event, noHoverRangeValid ? [startOfDay(date), endOfDay(date)] : hoverRangeValue);
309
- setSelectedIdle(false);
294
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
310
295
  return;
311
296
  }
312
297
 
@@ -366,7 +351,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
366
351
  var doneSelected = selectValueLength === 0 || selectValueLength === 2;
367
352
  doneSelected && setHoverDateRange(null);
368
353
  }, [selectedDates]);
369
- var handleSingleCalendarMonth = useEventCallback(function (index, date) {
354
+ var onChangeCalendarMonth = useEventCallback(function (index, date) {
370
355
  var calendarKey = index === 0 ? 'start' : 'end';
371
356
  var nextCalendarDate = Array.from(calendarDate);
372
357
  nextCalendarDate[index] = date;
@@ -376,7 +361,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
376
361
  eventName: 'changeMonth'
377
362
  });
378
363
  });
379
- var handleSingleCalendarTime = useEventCallback(function (index, date) {
364
+ var onChangeCalendarTime = useEventCallback(function (index, date) {
380
365
  var calendarKey = index === 0 ? 'start' : 'end';
381
366
  var nextCalendarDate = Array.from(calendarDate);
382
367
  nextCalendarDate[index] = date;
@@ -400,7 +385,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
400
385
  /**
401
386
  * The callback triggered when PM/AM is switched.
402
387
  */
403
- var handleToggleMeridian = useEventCallback(function (index) {
388
+ var onToggleMeridian = useEventCallback(function (index) {
404
389
  var nextCalendarDate = Array.from(calendarDate);
405
390
  nextCalendarDate[index] = getReversedTimeMeridian(nextCalendarDate[index]);
406
391
  setCalendarDate(nextCalendarDate);
@@ -494,7 +479,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
494
479
  }
495
480
  return false;
496
481
  };
497
- var disabledByBetween = function disabledByBetween(start, end, type) {
482
+ var disableByBetween = function disableByBetween(start, end, type) {
498
483
  // If the date is between the start and the end
499
484
  // the button is disabled
500
485
  while (isBefore(start, end) || isSameDay(start, end)) {
@@ -509,15 +494,15 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
509
494
  }
510
495
  return false;
511
496
  };
512
- var disabledOkButton = function disabledOkButton() {
497
+ var disableOkButton = function disableOkButton() {
513
498
  var start = selectedDates[0],
514
499
  end = selectedDates[1];
515
500
  if (!start || !end || !isSelectedIdle) {
516
501
  return true;
517
502
  }
518
- return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_BUTTON_OK);
503
+ return disableByBetween(start, end, TARGET.TOOLBAR_BUTTON_OK);
519
504
  };
520
- var disabledShortcutButton = function disabledShortcutButton(value) {
505
+ var disableShortcut = function disableShortcut(value) {
521
506
  if (value === void 0) {
522
507
  value = [];
523
508
  }
@@ -527,7 +512,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
527
512
  if (!start || !end) {
528
513
  return true;
529
514
  }
530
- return disabledByBetween(start, end, DATERANGE_DISABLED_TARGET.TOOLBAR_SHORTCUT);
515
+ return disableByBetween(start, end, TARGET.TOOLBAR_SHORTCUT);
531
516
  };
532
517
  var handleClose = useEventCallback(function () {
533
518
  var _trigger$current, _trigger$current$clos;
@@ -538,8 +523,8 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
538
523
  esc: handleClose,
539
524
  enter: function enter() {
540
525
  var _trigger$current2;
541
- var _ref5 = ((_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.getState()) || {},
542
- open = _ref5.open;
526
+ var _ref4 = ((_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.getState()) || {},
527
+ open = _ref4.open;
543
528
  if (!open) {
544
529
  var _trigger$current3;
545
530
  (_trigger$current3 = trigger.current) === null || _trigger$current3 === void 0 ? void 0 : _trigger$current3.open();
@@ -567,31 +552,44 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
567
552
  left: left,
568
553
  top: top
569
554
  });
555
+ var disabledDate = function disabledDate(date, values, type) {
556
+ return isDateDisabled(date, {
557
+ selectDate: values,
558
+ selectedDone: isSelectedIdle,
559
+ target: type
560
+ });
561
+ };
570
562
  var calendarProps = {
571
- calendarDate: calendarDate,
572
- disabledDate: function disabledDate(date, values, type) {
573
- return isDateDisabled(date, {
574
- selectDate: values,
575
- selectedDone: isSelectedIdle,
576
- target: type
577
- });
578
- },
579
- format: formatStr,
580
- hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined,
563
+ locale: locale,
581
564
  isoWeek: isoWeek,
582
565
  limitEndYear: limitEndYear,
566
+ showMeridian: showMeridian,
567
+ calendarDate: calendarDate,
583
568
  limitStartYear: limitStartYear,
584
- locale: locale,
585
569
  showWeekNumbers: showWeekNumbers,
570
+ format: formatStr,
586
571
  value: selectedDates,
587
- showMeridian: showMeridian,
588
- onChangeCalendarMonth: handleSingleCalendarMonth,
589
- onChangeCalendarTime: handleSingleCalendarTime,
590
- onMouseMove: handleMouseMove,
572
+ hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined,
591
573
  onSelect: handleSelectDate,
592
- onToggleMeridian: handleToggleMeridian,
574
+ onChangeCalendarMonth: onChangeCalendarMonth,
575
+ onChangeCalendarTime: onChangeCalendarTime,
576
+ onToggleMeridian: onToggleMeridian,
577
+ onMouseMove: onMouseMove,
578
+ disabledDate: disabledDate,
593
579
  renderTitle: renderTitle
594
580
  };
581
+ var getCalendars = function getCalendars() {
582
+ if (showOneCalendar) {
583
+ return /*#__PURE__*/React.createElement(Calendar, _extends({
584
+ index: activeCalendarKey === 'end' ? 1 : 0
585
+ }, calendarProps));
586
+ }
587
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Calendar, _extends({
588
+ index: 0
589
+ }, calendarProps)), /*#__PURE__*/React.createElement(Calendar, _extends({
590
+ index: 1
591
+ }, calendarProps)));
592
+ };
595
593
  var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
596
594
  return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
597
595
  })) || [];
@@ -618,29 +616,29 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
618
616
  ranges: sideRanges,
619
617
  calendarDate: calendarDate,
620
618
  locale: locale,
621
- disabledShortcut: disabledShortcutButton,
619
+ disableShortcut: disableShortcut,
622
620
  onShortcutClick: handleShortcutPageDate,
623
621
  "data-testid": "daterange-predefined-side"
624
622
  }), /*#__PURE__*/React.createElement(Stack.Item, null, /*#__PURE__*/React.createElement("div", {
625
623
  className: prefix('daterange-content')
626
- }, showHeader && /*#__PURE__*/React.createElement("div", {
627
- className: prefix('daterange-header'),
628
- "data-testid": "daterange-header"
629
- }, getDateRangeString(isSelectedIdle ? selectedDates : hoverDateRange)), /*#__PURE__*/React.createElement("div", {
624
+ }, showHeader && /*#__PURE__*/React.createElement(Header, {
625
+ value: isSelectedIdle ? selectedDates : hoverDateRange,
626
+ formatStr: formatStr,
627
+ character: character,
628
+ clickable: showOneCalendar,
629
+ activeKey: activeCalendarKey,
630
+ onSelect: setActiveCalendarKey
631
+ }), /*#__PURE__*/React.createElement("div", {
630
632
  className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
631
633
  }, /*#__PURE__*/React.createElement(DateRangePickerContext.Provider, {
632
634
  value: {
633
635
  isSelectedIdle: isSelectedIdle
634
636
  }
635
- }, /*#__PURE__*/React.createElement(Calendar, _extends({
636
- index: 0
637
- }, calendarProps)), !showOneCalendar && /*#__PURE__*/React.createElement(Calendar, _extends({
638
- index: 1
639
- }, calendarProps))))), /*#__PURE__*/React.createElement(Toolbar, {
637
+ }, getCalendars()))), /*#__PURE__*/React.createElement(Toolbar, {
640
638
  locale: locale,
641
639
  calendarDate: selectedDates,
642
- disabledOkBtn: disabledOkButton,
643
- disabledShortcut: disabledShortcutButton,
640
+ disableOkBtn: disableOkButton,
641
+ disableShortcut: disableShortcut,
644
642
  hideOkBtn: oneTap,
645
643
  onOk: handleOK,
646
644
  onShortcutClick: handleShortcutPageDate,
@@ -683,7 +681,7 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
683
681
  var disabledOptions = {
684
682
  selectDate: value,
685
683
  selectedDone: isSelectedIdle,
686
- target: DATERANGE_DISABLED_TARGET.INPUT
684
+ target: TARGET.INPUT
687
685
  };
688
686
  if (isDateDisabled(startDate, disabledOptions) || isDateDisabled(endDate, disabledOptions)) {
689
687
  return true;
@@ -745,14 +743,6 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
745
743
  showCleanButton: showCleanButton
746
744
  }))));
747
745
  });
748
- DateRangePicker.after = disabledDateUtils.after;
749
- DateRangePicker.afterToday = disabledDateUtils.afterToday;
750
- DateRangePicker.allowedDays = disabledDateUtils.allowedDays;
751
- DateRangePicker.allowedMaxDays = disabledDateUtils.allowedMaxDays;
752
- DateRangePicker.allowedRange = disabledDateUtils.allowedRange;
753
- DateRangePicker.before = disabledDateUtils.before;
754
- DateRangePicker.beforeToday = disabledDateUtils.beforeToday;
755
- DateRangePicker.combine = disabledDateUtils.combine;
756
746
  DateRangePicker.displayName = 'DateRangePicker';
757
747
  DateRangePicker.propTypes = _extends({}, pickerPropTypes, {
758
748
  ranges: PropTypes.array,
@@ -1,7 +1,10 @@
1
1
  import React from 'react';
2
2
  interface DateRangePickerContextValue {
3
+ /**
4
+ * Whether to complete the selection.
5
+ */
3
6
  isSelectedIdle?: boolean;
4
7
  }
5
8
  declare const DateRangePickerContext: React.Context<DateRangePickerContextValue>;
6
- export default DateRangePickerContext;
7
9
  export declare const useDateRangePickerContext: () => DateRangePickerContextValue;
10
+ export default DateRangePickerContext;
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import React, { useContext } from 'react';
3
3
  var DateRangePickerContext = /*#__PURE__*/React.createContext({});
4
- export default DateRangePickerContext;
5
4
  export var useDateRangePickerContext = function useDateRangePickerContext() {
6
5
  return useContext(DateRangePickerContext) || {};
7
- };
6
+ };
7
+ export default DateRangePickerContext;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ interface HeaderProps {
3
+ formatStr: string;
4
+ character: string;
5
+ value: Date[] | null;
6
+ activeKey?: 'start' | 'end';
7
+ onSelect?: (eventKey: 'start' | 'end') => void;
8
+ clickable?: boolean;
9
+ }
10
+ declare function Header(props: HeaderProps): JSX.Element;
11
+ export default Header;
@@ -0,0 +1,59 @@
1
+ 'use client';
2
+ import React from 'react';
3
+ import { useClassNames } from '../utils';
4
+ import { compareAsc } from '../utils/dateUtils';
5
+ import { FormattedDate } from '../CustomProvider';
6
+ import Button from '../Button';
7
+ function Header(props) {
8
+ var _prefix;
9
+ var _useClassNames = useClassNames('picker'),
10
+ prefix = _useClassNames.prefix;
11
+ var formatStr = props.formatStr,
12
+ character = props.character,
13
+ value = props.value,
14
+ _props$activeKey = props.activeKey,
15
+ activeKey = _props$activeKey === void 0 ? 'start' : _props$activeKey,
16
+ clickable = props.clickable,
17
+ onSelect = props.onSelect;
18
+ var _ref = value !== null && value !== void 0 ? value : [null, null],
19
+ startDate = _ref[0],
20
+ endDate = _ref[1];
21
+ var v = startDate && endDate ? [startDate, endDate].sort(compareAsc) : [startDate, endDate];
22
+ var start = v[0] ? /*#__PURE__*/React.createElement(FormattedDate, {
23
+ date: v[0],
24
+ formatStr: formatStr
25
+ }) : formatStr;
26
+ var end = v[1] ? /*#__PURE__*/React.createElement(FormattedDate, {
27
+ date: v[1],
28
+ formatStr: formatStr
29
+ }) : formatStr;
30
+ return /*#__PURE__*/React.createElement("div", {
31
+ className: prefix('daterange-header', (_prefix = {}, _prefix["tab-active-" + activeKey] = clickable, _prefix)),
32
+ "data-testid": "daterange-header"
33
+ }, clickable ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
34
+ size: "xs",
35
+ appearance: "subtle",
36
+ className: prefix('header-date'),
37
+ onClick: function onClick() {
38
+ return onSelect === null || onSelect === void 0 ? void 0 : onSelect('start');
39
+ },
40
+ "aria-label": "Select start date"
41
+ }, start), /*#__PURE__*/React.createElement("span", {
42
+ className: prefix('header-character')
43
+ }, character), /*#__PURE__*/React.createElement(Button, {
44
+ size: "xs",
45
+ appearance: "subtle",
46
+ className: prefix('header-date'),
47
+ onClick: function onClick() {
48
+ return onSelect === null || onSelect === void 0 ? void 0 : onSelect('end');
49
+ },
50
+ "aria-label": "Select end date"
51
+ }, end)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
52
+ className: prefix('header-date')
53
+ }, start), /*#__PURE__*/React.createElement("span", {
54
+ className: prefix('header-character')
55
+ }, character), /*#__PURE__*/React.createElement("span", {
56
+ className: prefix('header-date')
57
+ }, end)));
58
+ }
59
+ export default Header;
@@ -4,7 +4,7 @@ import { DisabledDateFunction } from './types';
4
4
  */
5
5
  export declare function allowedMaxDays(days: number): DisabledDateFunction;
6
6
  /**
7
- Only allowed days are specified, other dates are disabled.
7
+ * Only allowed days are specified, other dates are disabled.
8
8
  */
9
9
  export declare function allowedDays(days: number): DisabledDateFunction;
10
10
  /**
@@ -35,7 +35,7 @@ export function allowedMaxDays(days) {
35
35
  }
36
36
 
37
37
  /**
38
- Only allowed days are specified, other dates are disabled.
38
+ * Only allowed days are specified, other dates are disabled.
39
39
  */
40
40
  export function allowedDays(days) {
41
41
  return function (date, selectValue, selectedDone, target) {
@@ -1,3 +1,7 @@
1
1
  'use client';
2
2
  import DateRangePicker from './DateRangePicker';
3
+ import * as utils from './disabledDateUtils';
4
+ Object.keys(utils).forEach(function (key) {
5
+ DateRangePicker[key] = utils[key];
6
+ });
3
7
  export default DateRangePicker;