rsuite 5.49.0 → 5.51.0

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