rsuite 5.59.1 → 5.59.2

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
@@ -134,7 +134,7 @@ export declare namespace TypeAttributes {
134
134
  type Placement8 = 'bottomStart' | 'bottomEnd' | 'topStart' | 'topEnd' | 'leftStart' | 'rightStart' | 'leftEnd' | 'rightEnd';
135
135
  type PlacementAuto = 'auto' | 'autoVertical' | 'autoVerticalStart' | 'autoVerticalEnd' | 'autoHorizontal' | 'autoHorizontalStart' | 'autoHorizontalEnd';
136
136
  type Placement = Placement4 | Placement8 | PlacementAuto;
137
- type CheckTrigger = 'change' | 'blur' | 'none';
137
+ type CheckTrigger = 'change' | 'blur' | 'none' | null;
138
138
  }
139
139
  export interface SVGIcon {
140
140
  viewBox: string;
@@ -9,7 +9,7 @@ import TimeDropdown from './TimeDropdown';
9
9
  import CalendarBody from './CalendarBody';
10
10
  import CalendarHeader from './CalendarHeader';
11
11
  import { useClassNames, useEventCallback } from '../utils';
12
- import { disabledTime, addMonths, shouldRenderDate, shouldRenderTime, shouldRenderMonth, isSameMonth, calendarOnlyProps, omitHideDisabledProps, isValid } from '../utils/dateUtils';
12
+ import { disableTime, addMonths, shouldRenderDate, shouldRenderTime, shouldRenderMonth, isSameMonth, calendarOnlyProps, omitHideDisabledProps, isValid } from '../utils/dateUtils';
13
13
  import { CalendarProvider } from './CalendarContext';
14
14
  import useCalendarState, { CalendarState } from './useCalendarState';
15
15
  import AngleUpIcon from '@rsuite/icons/legacy/AngleUp';
@@ -63,12 +63,12 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
63
63
  var calendarDate = useMemo(function () {
64
64
  return isValid(calendarDateProp) ? calendarDateProp : new Date();
65
65
  }, [calendarDateProp]);
66
- var isDisabledDate = useEventCallback(function (date) {
66
+ var isDateDisabled = useEventCallback(function (date) {
67
67
  var _disabledDate;
68
68
  return (_disabledDate = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date)) !== null && _disabledDate !== void 0 ? _disabledDate : false;
69
69
  });
70
70
  var isTimeDisabled = function isTimeDisabled(date) {
71
- return disabledTime(props, date);
71
+ return disableTime(props, date);
72
72
  };
73
73
  var handleMoveForward = useEventCallback(function () {
74
74
  onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward(addMonths(calendarDate, 1));
@@ -122,7 +122,7 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
122
122
  var contextValue = {
123
123
  date: calendarDate,
124
124
  dateRange: dateRange,
125
- disabledDate: isDisabledDate,
125
+ disabledDate: isDateDisabled,
126
126
  format: format,
127
127
  hoverRangeValue: hoverRangeValue,
128
128
  inSameMonth: inSameThisMonthDate,
@@ -165,7 +165,7 @@ var CalendarContainer = /*#__PURE__*/React.forwardRef(function (props, ref) {
165
165
  show: showMonth,
166
166
  limitEndYear: limitEndYear,
167
167
  limitStartYear: limitStartYear,
168
- disabledMonth: isDisabledDate
168
+ disabledMonth: isDateDisabled
169
169
  }), renderTime && /*#__PURE__*/React.createElement(TimeDropdown, _extends({}, timeDropdownProps, {
170
170
  show: showTime,
171
171
  showMeridian: showMeridian
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { RangeType } from './Toolbar';
3
3
  import { DatePickerLocale } from '../locales';
4
- import { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
5
- export type { RangeType } from './Toolbar';
6
- export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null> {
4
+ import type { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
5
+ import type { DeprecatedProps } from './types';
6
+ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null>, DeprecatedProps {
7
7
  /** Custom caret component */
8
8
  caretAs?: React.ElementType | null;
9
9
  /** Calendar panel default presentation date and time */
@@ -14,12 +14,6 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
14
14
  editable?: boolean;
15
15
  /** Format date */
16
16
  format?: string;
17
- /**
18
- * Display date panel when component initial
19
- *
20
- * @deprecated use <Calendar> instead
21
- **/
22
- inline?: boolean;
23
17
  /**
24
18
  * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
25
19
  *
@@ -46,31 +40,6 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
46
40
  showWeekNumbers?: boolean;
47
41
  /** Meridian format */
48
42
  showMeridian?: boolean;
49
- /**
50
- * Whether to disable a date on the calendar view
51
- *
52
- * @returns date should be disabled (not selectable)
53
- * @deprecated Use {@link shouldDisableDate} instead
54
- */
55
- disabledDate?: (date?: Date) => boolean;
56
- /**
57
- * Disabled hours
58
- *
59
- * @deprecated Use {@link shouldDisableHour} instead
60
- */
61
- disabledHours?: (hour: number, date: Date) => boolean;
62
- /**
63
- * Disabled minutes
64
- *
65
- * @deprecated Use {@link shouldDisableMinute} instead
66
- */
67
- disabledMinutes?: (minute: number, date: Date) => boolean;
68
- /**
69
- * Disabled seconds
70
- *
71
- * @deprecated Use {@link shouldDisableSecond} instead
72
- */
73
- disabledSeconds?: (second: number, date: Date) => boolean;
74
43
  /**
75
44
  * Whether a date on the calendar view should be disabled
76
45
  *
@@ -113,10 +82,6 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
113
82
  onShortcutClick?: (range: RangeType<Date>, event: React.MouseEvent) => void;
114
83
  /** Called when clean */
115
84
  onClean?: (event: React.MouseEvent) => void;
116
- /**
117
- * @deprecated
118
- */
119
- renderValue?: (value: Date, format: string) => string;
120
85
  /**
121
86
  * Custom rendering calendar cell content.
122
87
  *
@@ -3,12 +3,10 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
5
  var _templateObject;
6
- import React, { useMemo, useState } from 'react';
6
+ import React, { useMemo } from 'react';
7
7
  import PropTypes from 'prop-types';
8
8
  import mapValues from 'lodash/mapValues';
9
9
  import pick from 'lodash/pick';
10
- import delay from 'lodash/delay';
11
- import omit from 'lodash/omit';
12
10
  import IconCalendar from '@rsuite/icons/legacy/Calendar';
13
11
  import IconClockO from '@rsuite/icons/legacy/ClockO';
14
12
  import CalendarContainer from '../Calendar/CalendarContainer';
@@ -18,14 +16,14 @@ import Toolbar from './Toolbar';
18
16
  import Stack from '../Stack';
19
17
  import PredefinedRanges from './PredefinedRanges';
20
18
  import { mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEventCallback, partitionHTMLProps } from '../utils';
21
- import { shouldRenderMonth, shouldRenderDate, shouldRenderTime, shouldOnlyRenderTime, setHours, getHours, addMonths, addDays, isValid, disabledTime, copyTime, calendarOnlyProps } from '../utils/dateUtils';
22
- import { PickerPopup, PickerLabel, PickerIndicator, PickerToggleTrigger, pickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../internals/Picker';
19
+ import { shouldRenderMonth, shouldRenderDate, shouldRenderTime, shouldOnlyRenderTime, setHours, getHours, isValid, disableTime, copyTime, calendarOnlyProps } from '../utils/dateUtils';
20
+ import { PickerPopup, PickerLabel, PickerIndicator, PickerToggleTrigger, pickerPropTypes, pickTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../internals/Picker';
23
21
  import { OverlayCloseCause } from '../internals/Overlay/OverlayTrigger';
24
22
  import DateInput from '../DateInput';
25
23
  import InputGroup from '../InputGroup';
26
- import { deprecatePropTypeNew } from '../internals/propTypes';
27
- import { getAriaLabel } from '../Calendar/utils';
28
- import { splitRanges } from './utils';
24
+ import { splitRanges, deprecatedPropTypes, getRestProps } from './utils';
25
+ import useMonthView from './hooks/useMonthView';
26
+ import useFocus from './hooks/useFocus';
29
27
  /**
30
28
  * A date picker allows users to select a date from a calendar.
31
29
  *
@@ -73,10 +71,6 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
73
71
  style = props.style,
74
72
  size = props.size,
75
73
  caretAsProp = props.caretAs,
76
- DEPRECATED_disabledDate = props.disabledDate,
77
- DEPRECATED_disabledHours = props.disabledHours,
78
- DEPRECATED_disabledMinutes = props.disabledMinutes,
79
- DEPRECATED_disabledSeconds = props.disabledSeconds,
80
74
  shouldDisableDate = props.shouldDisableDate,
81
75
  shouldDisableHour = props.shouldDisableHour,
82
76
  shouldDisableMinute = props.shouldDisableMinute,
@@ -94,7 +88,11 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
94
88
  onToggleTimeDropdown = props.onToggleTimeDropdown,
95
89
  onShortcutClick = props.onShortcutClick,
96
90
  renderCell = props.renderCell,
97
- restProps = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEntered", "onExited", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell"]);
91
+ DEPRECATED_disabledDate = props.disabledDate,
92
+ DEPRECATED_disabledHours = props.disabledHours,
93
+ DEPRECATED_disabledMinutes = props.disabledMinutes,
94
+ DEPRECATED_disabledSeconds = props.disabledSeconds,
95
+ restProps = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onEntered", "onExited", "onNextMonth", "onOk", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick", "renderCell", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds"]);
98
96
  var id = useUniqueId('rs-', idProp);
99
97
  var _usePickerRef = usePickerRef(ref),
100
98
  trigger = _usePickerRef.trigger,
@@ -102,8 +100,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
102
100
  target = _usePickerRef.target,
103
101
  overlay = _usePickerRef.overlay;
104
102
  var _useCustom = useCustom('DatePicker', overrideLocale),
105
- locale = _useCustom.locale,
106
- formatDate = _useCustom.formatDate;
103
+ locale = _useCustom.locale;
107
104
  var _useClassNames = useClassNames(classPrefix),
108
105
  merge = _useClassNames.merge,
109
106
  prefix = _useClassNames.prefix;
@@ -114,11 +111,26 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
114
111
  calendarDate = _useCalendarDate.calendarDate,
115
112
  setCalendarDate = _useCalendarDate.setCalendarDate,
116
113
  resetCalendarDate = _useCalendarDate.resetCalendarDate;
117
- var _useState = useState(false),
118
- showMonthDropdown = _useState[0],
119
- setShowMonthDropdown = _useState[1]; // Show only the calendar month panel. formatStr = 'yyyy-MM'
114
+ var _useMonthView = useMonthView({
115
+ onToggleMonthDropdown: onToggleMonthDropdown
116
+ }),
117
+ setMonthView = _useMonthView.setMonthView,
118
+ monthView = _useMonthView.monthView,
119
+ toggleMonthView = _useMonthView.toggleMonthView; // Show only the calendar month panel. formatStr = 'yyyy-MM'
120
120
  var onlyShowMonth = shouldRenderMonth(formatStr) && !shouldRenderDate(formatStr);
121
- var showMonth = onlyShowMonth || showMonthDropdown;
121
+ var showMonth = onlyShowMonth || monthView;
122
+ var _useFocus = useFocus({
123
+ target: target,
124
+ showMonth: showMonth,
125
+ id: id,
126
+ locale: locale
127
+ }),
128
+ focusInput = _useFocus.focusInput,
129
+ focusSelectedDate = _useFocus.focusSelectedDate,
130
+ onKeyFocusEvent = _useFocus.onKeyFocusEvent;
131
+ /**
132
+ * Check whether the date is disabled.
133
+ */
122
134
  var isDateDisabled = function isDateDisabled(date) {
123
135
  if (typeof shouldDisableDate === 'function') {
124
136
  return shouldDisableDate(date);
@@ -128,6 +140,34 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
128
140
  }
129
141
  return false;
130
142
  };
143
+
144
+ /**
145
+ * Check whether the time is within the time range of the shortcut option in the toolbar.
146
+ */
147
+ var isDatetimeDisabled = function isDatetimeDisabled(date) {
148
+ return (isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(date)) || disableTime(props, date);
149
+ };
150
+
151
+ /**
152
+ * Check whether the month is disabled.
153
+ * If any day in the month is disabled, the entire month is disabled
154
+ */
155
+ var isMonthDisabled = function isMonthDisabled(date) {
156
+ return isEveryDateInMonth(date.getFullYear(), date.getMonth(), isDateDisabled);
157
+ };
158
+
159
+ /**
160
+ * Whether "OK" button is disabled
161
+ *
162
+ * - If format is date, disable ok button if selected date is disabled
163
+ * - If format is month, disable ok button if all dates in the month of selected date are disabled
164
+ */
165
+ var isOkButtonDisabled = function isOkButtonDisabled(selectedDate) {
166
+ if (shouldRenderMonth(formatStr) && !shouldRenderDate(formatStr)) {
167
+ return isMonthDisabled(selectedDate);
168
+ }
169
+ return isDatetimeDisabled(selectedDate);
170
+ };
131
171
  var isErrorValue = function isErrorValue(value) {
132
172
  if (!isValid(value)) {
133
173
  return true;
@@ -170,6 +210,10 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
170
210
  setCalendarDate(nextPageTime);
171
211
  handleDateChange(nextPageTime);
172
212
  });
213
+
214
+ /**
215
+ * Close the calendar panel.
216
+ */
173
217
  var handleClose = useEventCallback(function () {
174
218
  var _trigger$current, _trigger$current$clos;
175
219
  (_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);
@@ -184,11 +228,11 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
184
228
  var nextDate = setHours(calendarDate, nextHours);
185
229
  handleChangeTime(nextDate);
186
230
  });
187
- var updateValue = function updateValue(event, nextPageDate, closeOverlay) {
231
+ var updateValue = function updateValue(event, date, closeOverlay) {
188
232
  if (closeOverlay === void 0) {
189
233
  closeOverlay = true;
190
234
  }
191
- var nextValue = typeof nextPageDate !== 'undefined' ? nextPageDate : calendarDate;
235
+ var nextValue = typeof date !== 'undefined' ? date : calendarDate;
192
236
  setCalendarDate(nextValue || new Date());
193
237
  setValue(nextValue);
194
238
  if (nextValue !== value) {
@@ -211,55 +255,13 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
211
255
  onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, event);
212
256
  });
213
257
 
214
- /**
215
- * Get the corresponding container based on date selection and month selection
216
- */
217
- var getOverlayContainer = function getOverlayContainer() {
218
- return showMonth ? document.getElementById(id + "-calendar-month-dropdown") : document.getElementById(id + "-calendar-table");
219
- };
220
-
221
- /**
222
- * Check whether the date is focusable
223
- */
224
- var checkFocusable = function checkFocusable(date) {
225
- var formatStr = showMonth ? locale.formattedMonthPattern : locale.formattedDayPattern;
226
- var ariaLabel = getAriaLabel(date, formatStr, formatDate);
227
- var container = getOverlayContainer();
228
- var dateElement = container === null || container === void 0 ? void 0 : container.querySelector("[aria-label=\"" + ariaLabel + "\"]");
229
- if ((dateElement === null || dateElement === void 0 ? void 0 : dateElement.getAttribute('aria-disabled')) === 'true') {
230
- return false;
231
- }
232
- return true;
233
- };
234
-
235
- /**
236
- * Focus on the currently selected date element
237
- */
238
- var focusSelectedDate = function focusSelectedDate() {
239
- delay(function () {
240
- var container = getOverlayContainer();
241
- var selectedElement = container === null || container === void 0 ? void 0 : container.querySelector('[aria-selected="true"]');
242
- selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.focus();
243
- }, 1);
244
- };
245
-
246
- /**
247
- * Focus on the input element
248
- */
249
- var focusTargetInput = useEventCallback(function () {
250
- delay(function () {
251
- var _target$current;
252
- return (_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
253
- }, 1);
254
- });
255
-
256
258
  /**
257
259
  * The callback triggered after clicking the OK button.
258
260
  */
259
261
  var handleOK = useEventCallback(function (event) {
260
262
  updateValue(event);
261
263
  onOk === null || onOk === void 0 ? void 0 : onOk(calendarDate, event);
262
- focusTargetInput();
264
+ focusInput();
263
265
  });
264
266
 
265
267
  /**
@@ -267,46 +269,20 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
267
269
  */
268
270
 
269
271
  var handleClean = useEventCallback(function (event) {
272
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
270
273
  updateValue(event, null);
271
274
  resetCalendarDate(null);
272
275
  onClean === null || onClean === void 0 ? void 0 : onClean(event);
273
- event.stopPropagation();
274
276
  });
275
277
  var handlePickerPopupKeyDown = useEventCallback(function (event) {
276
- var delta = 0;
277
- var step = showMonth ? 6 : 7;
278
- var changeDateFunc = showMonth ? addMonths : addDays;
279
- onMenuKeyDown(event, {
280
- down: function down() {
281
- delta = step;
282
- },
283
- up: function up() {
284
- delta = -step;
285
- },
286
- right: function right() {
287
- delta = 1;
288
- },
289
- left: function left() {
290
- delta = -1;
291
- },
292
- enter: function enter() {
293
- handleOK(event);
294
- }
278
+ onKeyFocusEvent(event, {
279
+ date: calendarDate,
280
+ callback: setCalendarDate
295
281
  });
296
- var nextDate = changeDateFunc(calendarDate, delta);
297
- if (checkFocusable(nextDate)) {
298
- setCalendarDate(nextDate);
299
- focusSelectedDate();
282
+ if (event.key === 'Enter') {
283
+ handleOK(event);
300
284
  }
301
285
  });
302
-
303
- /**
304
- * The callback triggered after the month selection box is opened or closed.
305
- */
306
- var handleToggleMonthDropdown = useEventCallback(function (toggle) {
307
- onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(toggle);
308
- setShowMonthDropdown(toggle);
309
- });
310
286
  var handleClick = useEventCallback(function () {
311
287
  if (editable) {
312
288
  return;
@@ -330,7 +306,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
330
306
  handleDateChange(nextValue);
331
307
  if (oneTap && updatableValue) {
332
308
  updateValue(event, nextValue);
333
- focusTargetInput();
309
+ focusInput();
334
310
  }
335
311
  });
336
312
 
@@ -343,7 +319,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
343
319
  focusSelectedDate();
344
320
  if (oneTap && onlyShowMonth) {
345
321
  updateValue(event, nextPageDate);
346
- focusTargetInput();
322
+ focusInput();
347
323
  }
348
324
  });
349
325
 
@@ -366,7 +342,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
366
342
  if (open) {
367
343
  if (isValid(calendarDate) && !isDateDisabled(calendarDate)) {
368
344
  updateValue(event);
369
- focusTargetInput();
345
+ focusInput();
370
346
  }
371
347
  } else {
372
348
  var _trigger$current3;
@@ -375,35 +351,12 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
375
351
  }
376
352
  });
377
353
  });
378
-
379
- // Check whether the time is within the time range of the shortcut option in the toolbar.
380
- var disabledToolbarHandle = function disabledToolbarHandle(date) {
381
- var _DEPRECATED_disabledD;
382
- var allowDate = (_DEPRECATED_disabledD = DEPRECATED_disabledDate === null || DEPRECATED_disabledDate === void 0 ? void 0 : DEPRECATED_disabledDate(date)) !== null && _DEPRECATED_disabledD !== void 0 ? _DEPRECATED_disabledD : false;
383
- var allowTime = disabledTime(props, date);
384
- return allowDate || allowTime;
385
- };
386
-
387
- /**
388
- * Whether "OK" button is disabled
389
- *
390
- * - If format is date, disable ok button if selected date is disabled
391
- * - If format is month, disable ok button if all dates in the month of selected date are disabled
392
- */
393
- var isOKButtonDisabled = function isOKButtonDisabled(selectedDate) {
394
- if (shouldRenderMonth(formatStr) && !shouldRenderDate(formatStr)) {
395
- return isEveryDateInMonth(selectedDate.getFullYear(), selectedDate.getMonth(), disabledToolbarHandle);
396
- }
397
- return disabledToolbarHandle(selectedDate);
398
- };
399
- var calendarProps = useMemo(function () {
400
- return mapValues(pick(props, calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
401
- return function (next, date) {
402
- var _disabledOrHiddenTime;
403
- return (_disabledOrHiddenTime = disabledOrHiddenTimeFunc === null || disabledOrHiddenTimeFunc === void 0 ? void 0 : disabledOrHiddenTimeFunc(next, date)) !== null && _disabledOrHiddenTime !== void 0 ? _disabledOrHiddenTime : false;
404
- };
405
- });
406
- }, [props]);
354
+ var calendarProps = mapValues(pick(props, calendarOnlyProps), function (func) {
355
+ return function (next, date) {
356
+ var _func;
357
+ return (_func = func === null || func === void 0 ? void 0 : func(next, date)) !== null && _func !== void 0 ? _func : false;
358
+ };
359
+ });
407
360
  var _splitRanges = splitRanges(ranges),
408
361
  sideRanges = _splitRanges.sideRanges,
409
362
  bottomRanges = _splitRanges.bottomRanges;
@@ -434,7 +387,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
434
387
  ranges: sideRanges,
435
388
  calendarDate: calendarDate,
436
389
  locale: locale,
437
- disabledShortcut: disabledToolbarHandle,
390
+ disableShortcut: isDatetimeDisabled,
438
391
  onShortcutClick: handleShortcutPageDate
439
392
  }), /*#__PURE__*/React.createElement(Stack.Item, null, /*#__PURE__*/React.createElement(CalendarContainer, _extends({}, calendarProps, {
440
393
  targetId: id,
@@ -454,7 +407,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
454
407
  onMoveForward: handleMoveForward,
455
408
  onMoveBackward: handleMoveBackward,
456
409
  onSelect: handleSelect,
457
- onToggleMonthDropdown: handleToggleMonthDropdown,
410
+ onToggleMonthDropdown: toggleMonthView,
458
411
  onToggleTimeDropdown: onToggleTimeDropdown,
459
412
  onChangeMonth: handleChangeMonth,
460
413
  onChangeTime: handleChangeTime,
@@ -463,8 +416,8 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
463
416
  locale: locale,
464
417
  ranges: bottomRanges,
465
418
  calendarDate: calendarDate,
466
- disabledOkBtn: isOKButtonDisabled,
467
- disabledShortcut: disabledToolbarHandle,
419
+ disableOkBtn: isOkButtonDisabled,
420
+ disableShortcut: isDatetimeDisabled,
468
421
  onShortcutClick: handleShortcutPageDate,
469
422
  onOk: handleOK,
470
423
  hideOkBtn: oneTap
@@ -493,7 +446,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
493
446
  if (cause !== OverlayCloseCause.ImperativeHandle) {
494
447
  resetCalendarDate();
495
448
  }
496
- setShowMonthDropdown(false);
449
+ setMonthView(false);
497
450
  (_props$onClose = props.onClose) === null || _props$onClose === void 0 ? void 0 : _props$onClose.call(props);
498
451
  });
499
452
  var showCleanButton = cleanable && hasValue && !readOnly;
@@ -521,7 +474,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
521
474
  value: value,
522
475
  format: formatStr,
523
476
  plaintext: plaintext
524
- }) : /*#__PURE__*/React.createElement(InputGroup, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys, calendarOnlyProps)), {
477
+ }) : /*#__PURE__*/React.createElement(InputGroup, _extends({}, getRestProps(rest, usedClassNamePropKeys), {
525
478
  inside: true,
526
479
  size: size,
527
480
  onClick: handleClick
@@ -551,13 +504,9 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
551
504
  }))));
552
505
  });
553
506
  DatePicker.displayName = 'DatePicker';
554
- DatePicker.propTypes = _extends({}, pickerPropTypes, {
507
+ DatePicker.propTypes = _extends({}, pickerPropTypes, deprecatedPropTypes, {
555
508
  calendarDefaultDate: PropTypes.instanceOf(Date),
556
509
  defaultValue: PropTypes.instanceOf(Date),
557
- disabledDate: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableDate" property instead.'),
558
- disabledHours: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableHour" property instead.'),
559
- disabledMinutes: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableMinute" property instead.'),
560
- disabledSeconds: deprecatePropTypeNew(PropTypes.func, 'Use "shouldDisableSecond" property instead.'),
561
510
  shouldDisableDate: PropTypes.func,
562
511
  shouldDisableHour: PropTypes.func,
563
512
  shouldDisableMinute: PropTypes.func,
@@ -6,7 +6,7 @@ export interface PredefinedRangesProps<T = any, Shortcut = T> extends StackProps
6
6
  ranges?: RangeType<Shortcut>[];
7
7
  calendarDate: T;
8
8
  locale: CalendarLocale;
9
- disabledShortcut?: (value: T) => boolean;
9
+ disableShortcut?: (value: T) => boolean;
10
10
  onShortcutClick?: (range: InnerRange<Shortcut>, closeOverlay: boolean, event: React.MouseEvent) => void;
11
11
  }
12
12
  declare const PredefinedRanges: React.ForwardRefExoticComponent<PredefinedRangesProps<any, any> & React.RefAttributes<HTMLDivElement>>;
@@ -8,12 +8,12 @@ import { useUpdateEffect } from '../utils';
8
8
  import { getDefaultRanges, getRanges } from './utils';
9
9
  var PredefinedRanges = /*#__PURE__*/React.forwardRef(function (props, ref) {
10
10
  var className = props.className,
11
- disabledShortcut = props.disabledShortcut,
11
+ disableShortcut = props.disableShortcut,
12
12
  onShortcutClick = props.onShortcutClick,
13
13
  calendarDate = props.calendarDate,
14
14
  rangesProp = props.ranges,
15
15
  locale = props.locale,
16
- rest = _objectWithoutPropertiesLoose(props, ["className", "disabledShortcut", "onShortcutClick", "calendarDate", "ranges", "locale"]);
16
+ rest = _objectWithoutPropertiesLoose(props, ["className", "disableShortcut", "onShortcutClick", "calendarDate", "ranges", "locale"]);
17
17
  var _useState = useState(getRanges(props)),
18
18
  ranges = _useState[0],
19
19
  setRanges = _useState[1];
@@ -41,7 +41,7 @@ var PredefinedRanges = /*#__PURE__*/React.forwardRef(function (props, ref) {
41
41
  closeOverlay = range.closeOverlay,
42
42
  label = range.label,
43
43
  rest = _objectWithoutPropertiesLoose(range, ["value", "closeOverlay", "label"]);
44
- var disabled = disabledShortcut === null || disabledShortcut === void 0 ? void 0 : disabledShortcut(value);
44
+ var disabled = disableShortcut === null || disableShortcut === void 0 ? void 0 : disableShortcut(value);
45
45
  var handleClickShortcut = function handleClickShortcut(event) {
46
46
  if (disabled) {
47
47
  return;
@@ -3,7 +3,7 @@ import { PredefinedRangesProps } from './PredefinedRanges';
3
3
  export type { RangeType } from './types';
4
4
  export interface ToolbarProps<T = any, Shortcut = T> extends PredefinedRangesProps<T, Shortcut> {
5
5
  hideOkBtn?: boolean;
6
- disabledOkBtn?: (value: T) => boolean;
6
+ disableOkBtn?: (value: T) => boolean;
7
7
  onOk?: (event: React.MouseEvent) => void;
8
8
  }
9
9
  declare type ToolbarComponent = React.ForwardRefExoticComponent<ToolbarProps> & {
@@ -6,12 +6,12 @@ import Button from '../Button';
6
6
  import { useClassNames } from '../utils';
7
7
  import PredefinedRanges from './PredefinedRanges';
8
8
  import Stack from '../Stack';
9
- var SubmitButton = function SubmitButton(_ref) {
10
- var disabledOkBtn = _ref.disabledOkBtn,
9
+ var OkButton = function OkButton(_ref) {
10
+ var disableOkBtn = _ref.disableOkBtn,
11
11
  calendarDate = _ref.calendarDate,
12
12
  onOk = _ref.onOk,
13
13
  children = _ref.children;
14
- var disabled = disabledOkBtn === null || disabledOkBtn === void 0 ? void 0 : disabledOkBtn(calendarDate);
14
+ var disabled = disableOkBtn === null || disableOkBtn === void 0 ? void 0 : disableOkBtn(calendarDate);
15
15
  return /*#__PURE__*/React.createElement(Button, {
16
16
  appearance: "primary",
17
17
  size: "sm",
@@ -27,15 +27,15 @@ var Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(props, ref) {
27
27
  var className = props.className,
28
28
  _props$classPrefix = props.classPrefix,
29
29
  classPrefix = _props$classPrefix === void 0 ? 'picker-toolbar' : _props$classPrefix,
30
- disabledOkBtn = props.disabledOkBtn,
31
- disabledShortcut = props.disabledShortcut,
32
- hideOkBtn = props.hideOkBtn,
33
- onOk = props.onOk,
34
- onShortcutClick = props.onShortcutClick,
35
30
  calendarDate = props.calendarDate,
36
31
  ranges = props.ranges,
37
32
  locale = props.locale,
38
- rest = _objectWithoutPropertiesLoose(props, ["className", "classPrefix", "disabledOkBtn", "disabledShortcut", "hideOkBtn", "onOk", "onShortcutClick", "calendarDate", "ranges", "locale"]);
33
+ hideOkBtn = props.hideOkBtn,
34
+ disableOkBtn = props.disableOkBtn,
35
+ disableShortcut = props.disableShortcut,
36
+ onOk = props.onOk,
37
+ onShortcutClick = props.onShortcutClick,
38
+ rest = _objectWithoutPropertiesLoose(props, ["className", "classPrefix", "calendarDate", "ranges", "locale", "hideOkBtn", "disableOkBtn", "disableShortcut", "onOk", "onShortcutClick"]);
39
39
  var _useClassNames = useClassNames(classPrefix),
40
40
  merge = _useClassNames.merge,
41
41
  prefix = _useClassNames.prefix,
@@ -55,15 +55,16 @@ var Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(props, ref) {
55
55
  ranges: ranges,
56
56
  calendarDate: calendarDate,
57
57
  locale: locale,
58
- disabledShortcut: disabledShortcut,
58
+ disableShortcut: disableShortcut,
59
59
  onShortcutClick: onShortcutClick,
60
60
  "data-testid": "daterange-predefined-bottom"
61
61
  }), /*#__PURE__*/React.createElement("div", {
62
62
  className: prefix('right')
63
- }, !hideOkBtn && /*#__PURE__*/React.createElement(SubmitButton, {
64
- disabledOkBtn: disabledOkBtn,
63
+ }, !hideOkBtn && /*#__PURE__*/React.createElement(OkButton, {
64
+ disableOkBtn: disableOkBtn,
65
65
  calendarDate: calendarDate,
66
66
  onOk: onOk
67
67
  }, locale === null || locale === void 0 ? void 0 : locale.ok)));
68
68
  });
69
+ Toolbar.displayName = 'Toolbar';
69
70
  export default Toolbar;
@@ -0,0 +1,13 @@
1
+ import { RefObject } from 'react';
2
+ interface UseFocusProps {
3
+ target: RefObject<HTMLElement>;
4
+ showMonth: boolean;
5
+ id: string;
6
+ locale: any;
7
+ }
8
+ declare function useFocus(props: UseFocusProps): {
9
+ focusInput: (...args: any[]) => any;
10
+ focusSelectedDate: () => void;
11
+ onKeyFocusEvent: (...args: any[]) => any;
12
+ };
13
+ export default useFocus;