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
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [5.59.2](https://github.com/rsuite/rsuite/compare/v5.59.1...v5.59.2) (2024-04-19)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **DatePicker:** fix disabled date and month can be selected ([#3747](https://github.com/rsuite/rsuite/issues/3747)) ([c3d8765](https://github.com/rsuite/rsuite/commit/c3d87651ba6ad5f62ec620fb842a4fdc0315fb3e))
7
+ * **DateRangePicker:** fix `oneTap` not working when there is a default value ([#3745](https://github.com/rsuite/rsuite/issues/3745)) ([478894e](https://github.com/rsuite/rsuite/commit/478894e8a48716f9f143e8ed10ef20bbcbff7bc1))
8
+ * **DateRangePicker:** fix the end time cannot be changed when only one calendar is displayed ([#3743](https://github.com/rsuite/rsuite/issues/3743)) ([a5affd9](https://github.com/rsuite/rsuite/commit/a5affd90dd85e881874097ff1a67f66ce8693fbb))
9
+ * **Form:** fix `nestedField` will auto trigger validation for other sibling fields ([#3741](https://github.com/rsuite/rsuite/issues/3741)) ([dbe1ae2](https://github.com/rsuite/rsuite/commit/dbe1ae240f04bbbcdade501f236055ae755d5bbb))
10
+
11
+
12
+
1
13
  ## [5.59.1](https://github.com/rsuite/rsuite/compare/v5.59.0...v5.59.1) (2024-04-12)
2
14
 
3
15
 
@@ -4035,6 +4035,33 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
4035
4035
  border-bottom: 1px solid #e5e5ea;
4036
4036
  border-bottom: 1px solid var(--rs-border-primary);
4037
4037
  }
4038
+ .rs-picker-daterange-header .rs-picker-header-date:focus {
4039
+ background-color: transparent;
4040
+ }
4041
+ .rs-picker-daterange-header.rs-picker-tab-active-end,
4042
+ .rs-picker-daterange-header.rs-picker-tab-active-start {
4043
+ position: relative;
4044
+ display: -webkit-box;
4045
+ display: -ms-flexbox;
4046
+ display: flex;
4047
+ -webkit-box-align: center;
4048
+ -ms-flex-align: center;
4049
+ align-items: center;
4050
+ -ms-flex-pack: distribute;
4051
+ justify-content: space-around;
4052
+ }
4053
+ .rs-picker-daterange-header.rs-picker-tab-active-end::after,
4054
+ .rs-picker-daterange-header.rs-picker-tab-active-start::after {
4055
+ content: ' ';
4056
+ position: absolute;
4057
+ width: 50%;
4058
+ bottom: -1px;
4059
+ border-bottom: 2px solid #3498ff;
4060
+ left: 0;
4061
+ }
4062
+ .rs-picker-daterange-header.rs-picker-tab-active-end::after {
4063
+ left: 50%;
4064
+ }
4038
4065
  .rs-picker-daterange-calendar-group {
4039
4066
  height: 274px;
4040
4067
  min-width: 492px;
@@ -86,6 +86,33 @@
86
86
  font-size: @date-range-picker-header-font-size;
87
87
  line-height: @date-range-picker-header-line-height;
88
88
  border-bottom: 1px solid var(--rs-border-primary);
89
+
90
+ .rs-picker-header-date:focus {
91
+ background-color: transparent;
92
+ }
93
+
94
+ &.rs-picker-tab-active-end,
95
+ &.rs-picker-tab-active-start {
96
+ position: relative;
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: space-around;
100
+
101
+ &::after {
102
+ content: ' ';
103
+ position: absolute;
104
+ width: 50%;
105
+ bottom: -1px;
106
+ border-bottom: 2px solid #3498ff;
107
+ left: 0;
108
+ }
109
+ }
110
+
111
+ &.rs-picker-tab-active-end {
112
+ &::after {
113
+ left: 50%;
114
+ }
115
+ }
89
116
  }
90
117
 
91
118
  // Calendar group
@@ -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;
@@ -69,12 +69,12 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
69
69
  var calendarDate = (0, _react.useMemo)(function () {
70
70
  return (0, _dateUtils.isValid)(calendarDateProp) ? calendarDateProp : new Date();
71
71
  }, [calendarDateProp]);
72
- var isDisabledDate = (0, _utils.useEventCallback)(function (date) {
72
+ var isDateDisabled = (0, _utils.useEventCallback)(function (date) {
73
73
  var _disabledDate;
74
74
  return (_disabledDate = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date)) !== null && _disabledDate !== void 0 ? _disabledDate : false;
75
75
  });
76
76
  var isTimeDisabled = function isTimeDisabled(date) {
77
- return (0, _dateUtils.disabledTime)(props, date);
77
+ return (0, _dateUtils.disableTime)(props, date);
78
78
  };
79
79
  var handleMoveForward = (0, _utils.useEventCallback)(function () {
80
80
  onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward((0, _dateUtils.addMonths)(calendarDate, 1));
@@ -128,7 +128,7 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
128
128
  var contextValue = {
129
129
  date: calendarDate,
130
130
  dateRange: dateRange,
131
- disabledDate: isDisabledDate,
131
+ disabledDate: isDateDisabled,
132
132
  format: format,
133
133
  hoverRangeValue: hoverRangeValue,
134
134
  inSameMonth: inSameThisMonthDate,
@@ -171,7 +171,7 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
171
171
  show: showMonth,
172
172
  limitEndYear: limitEndYear,
173
173
  limitStartYear: limitStartYear,
174
- disabledMonth: isDisabledDate
174
+ disabledMonth: isDateDisabled
175
175
  }), renderTime && /*#__PURE__*/_react.default.createElement(_TimeDropdown.default, (0, _extends2.default)({}, timeDropdownProps, {
176
176
  show: showTime,
177
177
  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
  *
@@ -12,8 +12,6 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
14
14
  var _pick = _interopRequireDefault(require("lodash/pick"));
15
- var _delay = _interopRequireDefault(require("lodash/delay"));
16
- var _omit = _interopRequireDefault(require("lodash/omit"));
17
15
  var _Calendar = _interopRequireDefault(require("@rsuite/icons/legacy/Calendar"));
18
16
  var _ClockO = _interopRequireDefault(require("@rsuite/icons/legacy/ClockO"));
19
17
  var _CalendarContainer = _interopRequireDefault(require("../Calendar/CalendarContainer"));
@@ -28,9 +26,9 @@ var _Picker = require("../internals/Picker");
28
26
  var _OverlayTrigger = require("../internals/Overlay/OverlayTrigger");
29
27
  var _DateInput = _interopRequireDefault(require("../DateInput"));
30
28
  var _InputGroup = _interopRequireDefault(require("../InputGroup"));
31
- var _propTypes2 = require("../internals/propTypes");
32
- var _utils2 = require("../Calendar/utils");
33
- var _utils3 = require("./utils");
29
+ var _utils2 = require("./utils");
30
+ var _useMonthView2 = _interopRequireDefault(require("./hooks/useMonthView"));
31
+ var _useFocus2 = _interopRequireDefault(require("./hooks/useFocus"));
34
32
  var _templateObject;
35
33
  /**
36
34
  * A date picker allows users to select a date from a calendar.
@@ -79,10 +77,6 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
79
77
  style = props.style,
80
78
  size = props.size,
81
79
  caretAsProp = props.caretAs,
82
- DEPRECATED_disabledDate = props.disabledDate,
83
- DEPRECATED_disabledHours = props.disabledHours,
84
- DEPRECATED_disabledMinutes = props.disabledMinutes,
85
- DEPRECATED_disabledSeconds = props.disabledSeconds,
86
80
  shouldDisableDate = props.shouldDisableDate,
87
81
  shouldDisableHour = props.shouldDisableHour,
88
82
  shouldDisableMinute = props.shouldDisableMinute,
@@ -100,7 +94,11 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
100
94
  onToggleTimeDropdown = props.onToggleTimeDropdown,
101
95
  onShortcutClick = props.onShortcutClick,
102
96
  renderCell = props.renderCell,
103
- restProps = (0, _objectWithoutPropertiesLoose2.default)(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"]);
97
+ DEPRECATED_disabledDate = props.disabledDate,
98
+ DEPRECATED_disabledHours = props.disabledHours,
99
+ DEPRECATED_disabledMinutes = props.disabledMinutes,
100
+ DEPRECATED_disabledSeconds = props.disabledSeconds,
101
+ restProps = (0, _objectWithoutPropertiesLoose2.default)(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"]);
104
102
  var id = (0, _utils.useUniqueId)('rs-', idProp);
105
103
  var _usePickerRef = (0, _Picker.usePickerRef)(ref),
106
104
  trigger = _usePickerRef.trigger,
@@ -108,8 +106,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
108
106
  target = _usePickerRef.target,
109
107
  overlay = _usePickerRef.overlay;
110
108
  var _useCustom = (0, _utils.useCustom)('DatePicker', overrideLocale),
111
- locale = _useCustom.locale,
112
- formatDate = _useCustom.formatDate;
109
+ locale = _useCustom.locale;
113
110
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
114
111
  merge = _useClassNames.merge,
115
112
  prefix = _useClassNames.prefix;
@@ -120,11 +117,26 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
120
117
  calendarDate = _useCalendarDate.calendarDate,
121
118
  setCalendarDate = _useCalendarDate.setCalendarDate,
122
119
  resetCalendarDate = _useCalendarDate.resetCalendarDate;
123
- var _useState = (0, _react.useState)(false),
124
- showMonthDropdown = _useState[0],
125
- setShowMonthDropdown = _useState[1]; // Show only the calendar month panel. formatStr = 'yyyy-MM'
120
+ var _useMonthView = (0, _useMonthView2.default)({
121
+ onToggleMonthDropdown: onToggleMonthDropdown
122
+ }),
123
+ setMonthView = _useMonthView.setMonthView,
124
+ monthView = _useMonthView.monthView,
125
+ toggleMonthView = _useMonthView.toggleMonthView; // Show only the calendar month panel. formatStr = 'yyyy-MM'
126
126
  var onlyShowMonth = (0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr);
127
- var showMonth = onlyShowMonth || showMonthDropdown;
127
+ var showMonth = onlyShowMonth || monthView;
128
+ var _useFocus = (0, _useFocus2.default)({
129
+ target: target,
130
+ showMonth: showMonth,
131
+ id: id,
132
+ locale: locale
133
+ }),
134
+ focusInput = _useFocus.focusInput,
135
+ focusSelectedDate = _useFocus.focusSelectedDate,
136
+ onKeyFocusEvent = _useFocus.onKeyFocusEvent;
137
+ /**
138
+ * Check whether the date is disabled.
139
+ */
128
140
  var isDateDisabled = function isDateDisabled(date) {
129
141
  if (typeof shouldDisableDate === 'function') {
130
142
  return shouldDisableDate(date);
@@ -134,6 +146,34 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
134
146
  }
135
147
  return false;
136
148
  };
149
+
150
+ /**
151
+ * Check whether the time is within the time range of the shortcut option in the toolbar.
152
+ */
153
+ var isDatetimeDisabled = function isDatetimeDisabled(date) {
154
+ return (isDateDisabled === null || isDateDisabled === void 0 ? void 0 : isDateDisabled(date)) || (0, _dateUtils.disableTime)(props, date);
155
+ };
156
+
157
+ /**
158
+ * Check whether the month is disabled.
159
+ * If any day in the month is disabled, the entire month is disabled
160
+ */
161
+ var isMonthDisabled = function isMonthDisabled(date) {
162
+ return (0, _MonthDropdown.isEveryDateInMonth)(date.getFullYear(), date.getMonth(), isDateDisabled);
163
+ };
164
+
165
+ /**
166
+ * Whether "OK" button is disabled
167
+ *
168
+ * - If format is date, disable ok button if selected date is disabled
169
+ * - If format is month, disable ok button if all dates in the month of selected date are disabled
170
+ */
171
+ var isOkButtonDisabled = function isOkButtonDisabled(selectedDate) {
172
+ if ((0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr)) {
173
+ return isMonthDisabled(selectedDate);
174
+ }
175
+ return isDatetimeDisabled(selectedDate);
176
+ };
137
177
  var isErrorValue = function isErrorValue(value) {
138
178
  if (!(0, _dateUtils.isValid)(value)) {
139
179
  return true;
@@ -176,6 +216,10 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
176
216
  setCalendarDate(nextPageTime);
177
217
  handleDateChange(nextPageTime);
178
218
  });
219
+
220
+ /**
221
+ * Close the calendar panel.
222
+ */
179
223
  var handleClose = (0, _utils.useEventCallback)(function () {
180
224
  var _trigger$current, _trigger$current$clos;
181
225
  (_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);
@@ -190,11 +234,11 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
190
234
  var nextDate = (0, _dateUtils.setHours)(calendarDate, nextHours);
191
235
  handleChangeTime(nextDate);
192
236
  });
193
- var updateValue = function updateValue(event, nextPageDate, closeOverlay) {
237
+ var updateValue = function updateValue(event, date, closeOverlay) {
194
238
  if (closeOverlay === void 0) {
195
239
  closeOverlay = true;
196
240
  }
197
- var nextValue = typeof nextPageDate !== 'undefined' ? nextPageDate : calendarDate;
241
+ var nextValue = typeof date !== 'undefined' ? date : calendarDate;
198
242
  setCalendarDate(nextValue || new Date());
199
243
  setValue(nextValue);
200
244
  if (nextValue !== value) {
@@ -217,55 +261,13 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
217
261
  onShortcutClick === null || onShortcutClick === void 0 ? void 0 : onShortcutClick(range, event);
218
262
  });
219
263
 
220
- /**
221
- * Get the corresponding container based on date selection and month selection
222
- */
223
- var getOverlayContainer = function getOverlayContainer() {
224
- return showMonth ? document.getElementById(id + "-calendar-month-dropdown") : document.getElementById(id + "-calendar-table");
225
- };
226
-
227
- /**
228
- * Check whether the date is focusable
229
- */
230
- var checkFocusable = function checkFocusable(date) {
231
- var formatStr = showMonth ? locale.formattedMonthPattern : locale.formattedDayPattern;
232
- var ariaLabel = (0, _utils2.getAriaLabel)(date, formatStr, formatDate);
233
- var container = getOverlayContainer();
234
- var dateElement = container === null || container === void 0 ? void 0 : container.querySelector("[aria-label=\"" + ariaLabel + "\"]");
235
- if ((dateElement === null || dateElement === void 0 ? void 0 : dateElement.getAttribute('aria-disabled')) === 'true') {
236
- return false;
237
- }
238
- return true;
239
- };
240
-
241
- /**
242
- * Focus on the currently selected date element
243
- */
244
- var focusSelectedDate = function focusSelectedDate() {
245
- (0, _delay.default)(function () {
246
- var container = getOverlayContainer();
247
- var selectedElement = container === null || container === void 0 ? void 0 : container.querySelector('[aria-selected="true"]');
248
- selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.focus();
249
- }, 1);
250
- };
251
-
252
- /**
253
- * Focus on the input element
254
- */
255
- var focusTargetInput = (0, _utils.useEventCallback)(function () {
256
- (0, _delay.default)(function () {
257
- var _target$current;
258
- return (_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
259
- }, 1);
260
- });
261
-
262
264
  /**
263
265
  * The callback triggered after clicking the OK button.
264
266
  */
265
267
  var handleOK = (0, _utils.useEventCallback)(function (event) {
266
268
  updateValue(event);
267
269
  onOk === null || onOk === void 0 ? void 0 : onOk(calendarDate, event);
268
- focusTargetInput();
270
+ focusInput();
269
271
  });
270
272
 
271
273
  /**
@@ -273,46 +275,20 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
273
275
  */
274
276
 
275
277
  var handleClean = (0, _utils.useEventCallback)(function (event) {
278
+ event === null || event === void 0 ? void 0 : event.stopPropagation();
276
279
  updateValue(event, null);
277
280
  resetCalendarDate(null);
278
281
  onClean === null || onClean === void 0 ? void 0 : onClean(event);
279
- event.stopPropagation();
280
282
  });
281
283
  var handlePickerPopupKeyDown = (0, _utils.useEventCallback)(function (event) {
282
- var delta = 0;
283
- var step = showMonth ? 6 : 7;
284
- var changeDateFunc = showMonth ? _dateUtils.addMonths : _dateUtils.addDays;
285
- (0, _Picker.onMenuKeyDown)(event, {
286
- down: function down() {
287
- delta = step;
288
- },
289
- up: function up() {
290
- delta = -step;
291
- },
292
- right: function right() {
293
- delta = 1;
294
- },
295
- left: function left() {
296
- delta = -1;
297
- },
298
- enter: function enter() {
299
- handleOK(event);
300
- }
284
+ onKeyFocusEvent(event, {
285
+ date: calendarDate,
286
+ callback: setCalendarDate
301
287
  });
302
- var nextDate = changeDateFunc(calendarDate, delta);
303
- if (checkFocusable(nextDate)) {
304
- setCalendarDate(nextDate);
305
- focusSelectedDate();
288
+ if (event.key === 'Enter') {
289
+ handleOK(event);
306
290
  }
307
291
  });
308
-
309
- /**
310
- * The callback triggered after the month selection box is opened or closed.
311
- */
312
- var handleToggleMonthDropdown = (0, _utils.useEventCallback)(function (toggle) {
313
- onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(toggle);
314
- setShowMonthDropdown(toggle);
315
- });
316
292
  var handleClick = (0, _utils.useEventCallback)(function () {
317
293
  if (editable) {
318
294
  return;
@@ -336,7 +312,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
336
312
  handleDateChange(nextValue);
337
313
  if (oneTap && updatableValue) {
338
314
  updateValue(event, nextValue);
339
- focusTargetInput();
315
+ focusInput();
340
316
  }
341
317
  });
342
318
 
@@ -349,7 +325,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
349
325
  focusSelectedDate();
350
326
  if (oneTap && onlyShowMonth) {
351
327
  updateValue(event, nextPageDate);
352
- focusTargetInput();
328
+ focusInput();
353
329
  }
354
330
  });
355
331
 
@@ -372,7 +348,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
372
348
  if (open) {
373
349
  if ((0, _dateUtils.isValid)(calendarDate) && !isDateDisabled(calendarDate)) {
374
350
  updateValue(event);
375
- focusTargetInput();
351
+ focusInput();
376
352
  }
377
353
  } else {
378
354
  var _trigger$current3;
@@ -381,36 +357,13 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
381
357
  }
382
358
  });
383
359
  });
384
-
385
- // Check whether the time is within the time range of the shortcut option in the toolbar.
386
- var disabledToolbarHandle = function disabledToolbarHandle(date) {
387
- var _DEPRECATED_disabledD;
388
- var allowDate = (_DEPRECATED_disabledD = DEPRECATED_disabledDate === null || DEPRECATED_disabledDate === void 0 ? void 0 : DEPRECATED_disabledDate(date)) !== null && _DEPRECATED_disabledD !== void 0 ? _DEPRECATED_disabledD : false;
389
- var allowTime = (0, _dateUtils.disabledTime)(props, date);
390
- return allowDate || allowTime;
391
- };
392
-
393
- /**
394
- * Whether "OK" button is disabled
395
- *
396
- * - If format is date, disable ok button if selected date is disabled
397
- * - If format is month, disable ok button if all dates in the month of selected date are disabled
398
- */
399
- var isOKButtonDisabled = function isOKButtonDisabled(selectedDate) {
400
- if ((0, _dateUtils.shouldRenderMonth)(formatStr) && !(0, _dateUtils.shouldRenderDate)(formatStr)) {
401
- return (0, _MonthDropdown.isEveryDateInMonth)(selectedDate.getFullYear(), selectedDate.getMonth(), disabledToolbarHandle);
402
- }
403
- return disabledToolbarHandle(selectedDate);
404
- };
405
- var calendarProps = (0, _react.useMemo)(function () {
406
- return (0, _mapValues.default)((0, _pick.default)(props, _dateUtils.calendarOnlyProps), function (disabledOrHiddenTimeFunc) {
407
- return function (next, date) {
408
- var _disabledOrHiddenTime;
409
- return (_disabledOrHiddenTime = disabledOrHiddenTimeFunc === null || disabledOrHiddenTimeFunc === void 0 ? void 0 : disabledOrHiddenTimeFunc(next, date)) !== null && _disabledOrHiddenTime !== void 0 ? _disabledOrHiddenTime : false;
410
- };
411
- });
412
- }, [props]);
413
- var _splitRanges = (0, _utils3.splitRanges)(ranges),
360
+ var calendarProps = (0, _mapValues.default)((0, _pick.default)(props, _dateUtils.calendarOnlyProps), function (func) {
361
+ return function (next, date) {
362
+ var _func;
363
+ return (_func = func === null || func === void 0 ? void 0 : func(next, date)) !== null && _func !== void 0 ? _func : false;
364
+ };
365
+ });
366
+ var _splitRanges = (0, _utils2.splitRanges)(ranges),
414
367
  sideRanges = _splitRanges.sideRanges,
415
368
  bottomRanges = _splitRanges.bottomRanges;
416
369
  var renderCalendarOverlay = function renderCalendarOverlay(positionProps, speakerRef) {
@@ -440,7 +393,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
440
393
  ranges: sideRanges,
441
394
  calendarDate: calendarDate,
442
395
  locale: locale,
443
- disabledShortcut: disabledToolbarHandle,
396
+ disableShortcut: isDatetimeDisabled,
444
397
  onShortcutClick: handleShortcutPageDate
445
398
  }), /*#__PURE__*/_react.default.createElement(_Stack.default.Item, null, /*#__PURE__*/_react.default.createElement(_CalendarContainer.default, (0, _extends2.default)({}, calendarProps, {
446
399
  targetId: id,
@@ -460,7 +413,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
460
413
  onMoveForward: handleMoveForward,
461
414
  onMoveBackward: handleMoveBackward,
462
415
  onSelect: handleSelect,
463
- onToggleMonthDropdown: handleToggleMonthDropdown,
416
+ onToggleMonthDropdown: toggleMonthView,
464
417
  onToggleTimeDropdown: onToggleTimeDropdown,
465
418
  onChangeMonth: handleChangeMonth,
466
419
  onChangeTime: handleChangeTime,
@@ -469,8 +422,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
469
422
  locale: locale,
470
423
  ranges: bottomRanges,
471
424
  calendarDate: calendarDate,
472
- disabledOkBtn: isOKButtonDisabled,
473
- disabledShortcut: disabledToolbarHandle,
425
+ disableOkBtn: isOkButtonDisabled,
426
+ disableShortcut: isDatetimeDisabled,
474
427
  onShortcutClick: handleShortcutPageDate,
475
428
  onOk: handleOK,
476
429
  hideOkBtn: oneTap
@@ -499,7 +452,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
499
452
  if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
500
453
  resetCalendarDate();
501
454
  }
502
- setShowMonthDropdown(false);
455
+ setMonthView(false);
503
456
  (_props$onClose = props.onClose) === null || _props$onClose === void 0 ? void 0 : _props$onClose.call(props);
504
457
  });
505
458
  var showCleanButton = cleanable && hasValue && !readOnly;
@@ -527,7 +480,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
527
480
  value: value,
528
481
  format: formatStr,
529
482
  plaintext: plaintext
530
- }) : /*#__PURE__*/_react.default.createElement(_InputGroup.default, (0, _extends2.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys, _dateUtils.calendarOnlyProps)), {
483
+ }) : /*#__PURE__*/_react.default.createElement(_InputGroup.default, (0, _extends2.default)({}, (0, _utils2.getRestProps)(rest, usedClassNamePropKeys), {
531
484
  inside: true,
532
485
  size: size,
533
486
  onClick: handleClick
@@ -557,13 +510,9 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
557
510
  }))));
558
511
  });
559
512
  DatePicker.displayName = 'DatePicker';
560
- DatePicker.propTypes = (0, _extends2.default)({}, _Picker.pickerPropTypes, {
513
+ DatePicker.propTypes = (0, _extends2.default)({}, _Picker.pickerPropTypes, _utils2.deprecatedPropTypes, {
561
514
  calendarDefaultDate: _propTypes.default.instanceOf(Date),
562
515
  defaultValue: _propTypes.default.instanceOf(Date),
563
- disabledDate: (0, _propTypes2.deprecatePropTypeNew)(_propTypes.default.func, 'Use "shouldDisableDate" property instead.'),
564
- disabledHours: (0, _propTypes2.deprecatePropTypeNew)(_propTypes.default.func, 'Use "shouldDisableHour" property instead.'),
565
- disabledMinutes: (0, _propTypes2.deprecatePropTypeNew)(_propTypes.default.func, 'Use "shouldDisableMinute" property instead.'),
566
- disabledSeconds: (0, _propTypes2.deprecatePropTypeNew)(_propTypes.default.func, 'Use "shouldDisableSecond" property instead.'),
567
516
  shouldDisableDate: _propTypes.default.func,
568
517
  shouldDisableHour: _propTypes.default.func,
569
518
  shouldDisableMinute: _propTypes.default.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>>;
@@ -14,12 +14,12 @@ var _utils = require("../utils");
14
14
  var _utils2 = require("./utils");
15
15
  var PredefinedRanges = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
16
16
  var className = props.className,
17
- disabledShortcut = props.disabledShortcut,
17
+ disableShortcut = props.disableShortcut,
18
18
  onShortcutClick = props.onShortcutClick,
19
19
  calendarDate = props.calendarDate,
20
20
  rangesProp = props.ranges,
21
21
  locale = props.locale,
22
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "disabledShortcut", "onShortcutClick", "calendarDate", "ranges", "locale"]);
22
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["className", "disableShortcut", "onShortcutClick", "calendarDate", "ranges", "locale"]);
23
23
  var _useState = (0, _react.useState)((0, _utils2.getRanges)(props)),
24
24
  ranges = _useState[0],
25
25
  setRanges = _useState[1];
@@ -47,7 +47,7 @@ var PredefinedRanges = /*#__PURE__*/_react.default.forwardRef(function (props, r
47
47
  closeOverlay = range.closeOverlay,
48
48
  label = range.label,
49
49
  rest = (0, _objectWithoutPropertiesLoose2.default)(range, ["value", "closeOverlay", "label"]);
50
- var disabled = disabledShortcut === null || disabledShortcut === void 0 ? void 0 : disabledShortcut(value);
50
+ var disabled = disableShortcut === null || disableShortcut === void 0 ? void 0 : disableShortcut(value);
51
51
  var handleClickShortcut = function handleClickShortcut(event) {
52
52
  if (disabled) {
53
53
  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> & {