rsuite 5.4.0 → 5.4.4

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 (139) hide show
  1. package/Button/styles/index.less +1 -5
  2. package/CHANGELOG.md +38 -0
  3. package/CheckTreePicker/styles/index.less +1 -1
  4. package/Drawer/styles/index.less +3 -0
  5. package/Dropdown/styles/index.less +6 -22
  6. package/Dropdown/styles/mixin.less +0 -2
  7. package/Modal/styles/index.less +23 -22
  8. package/Navbar/styles/index.less +20 -8
  9. package/README.md +1 -1
  10. package/Sidenav/styles/index.less +8 -2
  11. package/cjs/Affix/Affix.js +3 -1
  12. package/cjs/AvatarGroup/AvatarGroup.js +9 -4
  13. package/cjs/ButtonGroup/ButtonGroup.js +9 -4
  14. package/cjs/Calendar/Calendar.js +21 -20
  15. package/cjs/Calendar/Header.js +1 -3
  16. package/cjs/Calendar/Table.js +1 -1
  17. package/cjs/Calendar/TableRow.js +12 -7
  18. package/cjs/Calendar/View.js +9 -5
  19. package/cjs/Calendar/useCalendarDate.d.ts +1 -1
  20. package/cjs/Calendar/useCalendarDate.js +1 -1
  21. package/cjs/Carousel/Carousel.js +7 -1
  22. package/cjs/Cascader/Cascader.js +13 -2
  23. package/cjs/CheckPicker/CheckPicker.d.ts +5 -2
  24. package/cjs/CheckPicker/test/CheckPicker.test.js +8 -0
  25. package/cjs/CheckTree/index.js +9 -4
  26. package/cjs/CheckTreePicker/CheckTreePicker.js +1 -1
  27. package/cjs/CheckTreePicker/utils.js +1 -1
  28. package/cjs/Container/Container.js +6 -3
  29. package/cjs/CustomProvider/CustomProvider.d.ts +14 -14
  30. package/cjs/CustomProvider/CustomProvider.js +4 -3
  31. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  32. package/cjs/DatePicker/DatePicker.js +5 -5
  33. package/cjs/DateRangePicker/DateRangePicker.js +3 -3
  34. package/cjs/Disclosure/Disclosure.d.ts +8 -5
  35. package/cjs/Disclosure/Disclosure.js +51 -11
  36. package/cjs/Disclosure/DisclosureButton.d.ts +2 -2
  37. package/cjs/Disclosure/DisclosureContext.d.ts +6 -1
  38. package/cjs/Dropdown/Dropdown.js +1 -1
  39. package/cjs/Dropdown/DropdownItem.js +9 -10
  40. package/cjs/Dropdown/DropdownMenu.js +78 -26
  41. package/cjs/FormGroup/FormGroup.js +9 -4
  42. package/cjs/Menu/MenuItem.js +1 -1
  43. package/cjs/Modal/Modal.js +34 -22
  44. package/cjs/Modal/utils.js +16 -8
  45. package/cjs/MultiCascader/MultiCascader.js +6 -3
  46. package/cjs/Nav/Nav.js +10 -15
  47. package/cjs/Nav/NavItem.js +3 -1
  48. package/cjs/Navbar/index.d.ts +1 -0
  49. package/cjs/Navbar/index.js +4 -3
  50. package/cjs/Overlay/Modal.js +18 -32
  51. package/cjs/PanelGroup/PanelGroup.js +8 -5
  52. package/cjs/Picker/DropdownMenu.js +5 -0
  53. package/cjs/Picker/PickerToggle.js +2 -4
  54. package/cjs/SelectPicker/SelectPicker.d.ts +5 -2
  55. package/cjs/SelectPicker/test/SelectPicker.test.js +8 -0
  56. package/cjs/Toggle/Toggle.js +2 -1
  57. package/cjs/Tree/Tree.js +9 -4
  58. package/cjs/Uploader/UploadFileItem.d.ts +1 -1
  59. package/cjs/Uploader/UploadFileItem.js +1 -1
  60. package/cjs/Uploader/Uploader.js +3 -0
  61. package/cjs/utils/index.d.ts +1 -0
  62. package/cjs/utils/index.js +7 -2
  63. package/cjs/utils/propTypeChecker.d.ts +2 -6
  64. package/cjs/utils/propTypeChecker.js +7 -59
  65. package/cjs/utils/useClickOutside.js +6 -2
  66. package/cjs/utils/useMount.d.ts +2 -0
  67. package/cjs/utils/useMount.js +19 -0
  68. package/dist/rsuite-rtl.css +336 -180
  69. package/dist/rsuite-rtl.min.css +1 -1
  70. package/dist/rsuite-rtl.min.css.map +1 -1
  71. package/dist/rsuite.css +336 -180
  72. package/dist/rsuite.js +67 -45
  73. package/dist/rsuite.js.map +1 -1
  74. package/dist/rsuite.min.css +1 -1
  75. package/dist/rsuite.min.css.map +1 -1
  76. package/dist/rsuite.min.js +1 -1
  77. package/dist/rsuite.min.js.map +1 -1
  78. package/esm/Affix/Affix.js +4 -2
  79. package/esm/AvatarGroup/AvatarGroup.js +7 -4
  80. package/esm/ButtonGroup/ButtonGroup.js +7 -4
  81. package/esm/Calendar/Calendar.js +22 -21
  82. package/esm/Calendar/Header.js +1 -3
  83. package/esm/Calendar/Table.js +1 -1
  84. package/esm/Calendar/TableRow.js +13 -8
  85. package/esm/Calendar/View.js +10 -6
  86. package/esm/Calendar/useCalendarDate.d.ts +1 -1
  87. package/esm/Calendar/useCalendarDate.js +1 -1
  88. package/esm/Carousel/Carousel.js +9 -3
  89. package/esm/Cascader/Cascader.js +13 -2
  90. package/esm/CheckPicker/CheckPicker.d.ts +5 -2
  91. package/esm/CheckPicker/test/CheckPicker.test.js +7 -0
  92. package/esm/CheckTree/index.js +7 -4
  93. package/esm/CheckTreePicker/CheckTreePicker.js +1 -1
  94. package/esm/CheckTreePicker/utils.js +1 -1
  95. package/esm/Container/Container.js +7 -4
  96. package/esm/CustomProvider/CustomProvider.d.ts +14 -14
  97. package/esm/CustomProvider/CustomProvider.js +2 -2
  98. package/esm/DatePicker/DatePicker.d.ts +1 -1
  99. package/esm/DatePicker/DatePicker.js +5 -4
  100. package/esm/DateRangePicker/DateRangePicker.js +3 -3
  101. package/esm/Disclosure/Disclosure.d.ts +8 -5
  102. package/esm/Disclosure/Disclosure.js +52 -13
  103. package/esm/Disclosure/DisclosureButton.d.ts +2 -2
  104. package/esm/Disclosure/DisclosureContext.d.ts +6 -1
  105. package/esm/Dropdown/Dropdown.js +1 -1
  106. package/esm/Dropdown/DropdownItem.js +9 -9
  107. package/esm/Dropdown/DropdownMenu.js +79 -27
  108. package/esm/FormGroup/FormGroup.js +7 -4
  109. package/esm/Menu/MenuItem.js +1 -1
  110. package/esm/Modal/Modal.js +36 -24
  111. package/esm/Modal/utils.js +16 -8
  112. package/esm/MultiCascader/MultiCascader.js +6 -3
  113. package/esm/Nav/Nav.js +11 -16
  114. package/esm/Nav/NavItem.js +3 -1
  115. package/esm/Navbar/index.d.ts +1 -0
  116. package/esm/Navbar/index.js +1 -0
  117. package/esm/Overlay/Modal.js +19 -33
  118. package/esm/PanelGroup/PanelGroup.js +9 -6
  119. package/esm/Picker/DropdownMenu.js +5 -0
  120. package/esm/Picker/PickerToggle.js +2 -4
  121. package/esm/SelectPicker/SelectPicker.d.ts +5 -2
  122. package/esm/SelectPicker/test/SelectPicker.test.js +7 -0
  123. package/esm/Toggle/Toggle.js +2 -1
  124. package/esm/Tree/Tree.js +7 -4
  125. package/esm/Uploader/UploadFileItem.d.ts +1 -1
  126. package/esm/Uploader/UploadFileItem.js +1 -1
  127. package/esm/Uploader/Uploader.js +4 -1
  128. package/esm/utils/index.d.ts +1 -0
  129. package/esm/utils/index.js +2 -1
  130. package/esm/utils/propTypeChecker.d.ts +2 -6
  131. package/esm/utils/propTypeChecker.js +7 -59
  132. package/esm/utils/useClickOutside.js +6 -2
  133. package/esm/utils/useMount.d.ts +2 -0
  134. package/esm/utils/useMount.js +13 -0
  135. package/package.json +2 -2
  136. package/styles/color-modes/dark.less +1 -0
  137. package/styles/color-modes/high-contrast.less +1 -0
  138. package/styles/color-modes/light.less +1 -0
  139. package/styles/mixins/utilities.less +17 -5
@@ -211,10 +211,18 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
211
211
  }
212
212
  }, [getSearchResult, onSearch, setFocusItemValue, setKeys, setLayer, valueKey]);
213
213
  var handleEntered = (0, _react.useCallback)(function () {
214
+ if (!targetRef.current) {
215
+ return;
216
+ }
217
+
214
218
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
215
219
  setActive(true);
216
220
  }, [onOpen]);
217
221
  var handleExited = (0, _react.useCallback)(function () {
222
+ if (!targetRef.current) {
223
+ return;
224
+ }
225
+
218
226
  onClose === null || onClose === void 0 ? void 0 : onClose();
219
227
  setActive(false);
220
228
  setSearchKeyword('');
@@ -225,7 +233,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
225
233
  (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
226
234
  }, [triggerRef]);
227
235
  var handleClean = (0, _react.useCallback)(function (event) {
228
- if (disabled) {
236
+ if (disabled || !targetRef.current) {
229
237
  return;
230
238
  }
231
239
 
@@ -283,7 +291,10 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
283
291
  children.then(function (data) {
284
292
  node.loading = false;
285
293
  node[childrenKey] = data;
286
- addColumn(data, cascadePaths.length);
294
+
295
+ if (targetRef.current) {
296
+ addColumn(data, cascadePaths.length);
297
+ }
287
298
  });
288
299
  } else {
289
300
  node.loading = false;
@@ -1,5 +1,6 @@
1
- import React from 'react';
1
+ import React, { Ref } from 'react';
2
2
  import { PickerLocale } from '../locales';
3
+ import { PickerInstance } from '../Picker';
3
4
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
4
5
  import type { MultipleSelectProps } from '../SelectPicker';
5
6
  export declare type ValueType = (number | string)[];
@@ -10,7 +11,9 @@ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerL
10
11
  countable?: boolean;
11
12
  }
12
13
  export interface CheckPickerComponent {
13
- <T>(props: CheckPickerProps<T>): JSX.Element | null;
14
+ <T>(props: CheckPickerProps<T> & {
15
+ ref?: Ref<PickerInstance>;
16
+ }): JSX.Element | null;
14
17
  displayName?: string;
15
18
  propTypes?: React.WeakValidationMap<CheckPickerProps<any>>;
16
19
  }
@@ -73,4 +73,12 @@ _react.default.createElement(_CheckPicker.default, {
73
73
  onChange: function onChange(newValue) {
74
74
  (0, _tsExpect.expectType)(newValue);
75
75
  }
76
+ });
77
+
78
+ var pickerRef = /*#__PURE__*/_react.default.createRef();
79
+
80
+ /*#__PURE__*/
81
+ _react.default.createElement(_CheckPicker.default, {
82
+ ref: pickerRef,
83
+ data: []
76
84
  });
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
3
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
6
 
5
7
  exports.__esModule = true;
@@ -7,17 +9,20 @@ exports.default = void 0;
7
9
 
8
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
11
 
10
- var _react = _interopRequireDefault(require("react"));
12
+ var _react = _interopRequireWildcard(require("react"));
11
13
 
12
14
  var _CheckTreePicker = _interopRequireDefault(require("../CheckTreePicker"));
13
15
 
14
16
  var _TreeContext = _interopRequireDefault(require("../Tree/TreeContext"));
15
17
 
16
18
  var CheckTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
17
- return /*#__PURE__*/_react.default.createElement(_TreeContext.default.Provider, {
18
- value: {
19
+ var contextValue = (0, _react.useMemo)(function () {
20
+ return {
19
21
  inline: true
20
- }
22
+ };
23
+ }, []);
24
+ return /*#__PURE__*/_react.default.createElement(_TreeContext.default.Provider, {
25
+ value: contextValue
21
26
  }, /*#__PURE__*/_react.default.createElement(_CheckTreePicker.default, (0, _extends2.default)({
22
27
  ref: ref
23
28
  }, props)));
@@ -645,7 +645,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
645
645
  var renderCheckTree = function renderCheckTree() {
646
646
  var _withCheckTreeClassPr, _merge2;
647
647
 
648
- var classes = withCheckTreeClassPrefix((_withCheckTreeClassPr = {}, _withCheckTreeClassPr[className !== null && className !== void 0 ? className : ''] = inline, _withCheckTreeClassPr['without-children'] = !_utils2.isSomeNodeHasChildren, _withCheckTreeClassPr.virtualized = virtualized, _withCheckTreeClassPr));
648
+ var classes = withCheckTreeClassPrefix((_withCheckTreeClassPr = {}, _withCheckTreeClassPr[className !== null && className !== void 0 ? className : ''] = inline, _withCheckTreeClassPr['without-children'] = !(0, _utils2.isSomeNodeHasChildren)(data, childrenKey), _withCheckTreeClassPr.virtualized = virtualized, _withCheckTreeClassPr));
649
649
  var formattedNodes = getFormattedNodes(renderNode);
650
650
 
651
651
  if (!formattedNodes.some(function (v) {
@@ -62,7 +62,7 @@ function isSomeChildChecked(nodes, parent, childrenKey) {
62
62
 
63
63
  function isSomeNodeHasChildren(data, childrenKey) {
64
64
  return data.some(function (node) {
65
- return node[childrenKey];
65
+ return Array.isArray(node[childrenKey]);
66
66
  });
67
67
  }
68
68
  /**
@@ -41,10 +41,13 @@ var Container = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
41
41
  var classes = merge(className, withClassPrefix({
42
42
  'has-sidebar': hasSidebar
43
43
  }));
44
- return /*#__PURE__*/_react.default.createElement(ContainerContext.Provider, {
45
- value: {
44
+ var contextValue = (0, _react.useMemo)(function () {
45
+ return {
46
46
  setHasSidebar: setHasSidebar
47
- }
47
+ };
48
+ }, [setHasSidebar]);
49
+ return /*#__PURE__*/_react.default.createElement(ContainerContext.Provider, {
50
+ value: contextValue
48
51
  }, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
49
52
  ref: ref,
50
53
  className: classes
@@ -72,10 +72,10 @@ declare const CustomContext: React.Context<CustomProviderProps<{
72
72
  saturday: string;
73
73
  ok: string;
74
74
  today: string;
75
- yesterday: string; /** Language configuration */
75
+ yesterday: string;
76
76
  hours: string;
77
77
  minutes: string;
78
- seconds: string;
78
+ seconds: string; /** Support right-to-left */
79
79
  formattedMonthPattern: string;
80
80
  formattedDayPattern: string;
81
81
  dateLocale: any;
@@ -90,10 +90,10 @@ declare const CustomContext: React.Context<CustomProviderProps<{
90
90
  saturday: string;
91
91
  ok: string;
92
92
  today: string;
93
- yesterday: string; /** Language configuration */
93
+ yesterday: string;
94
94
  hours: string;
95
95
  minutes: string;
96
- seconds: string;
96
+ seconds: string; /** Support right-to-left */
97
97
  formattedMonthPattern: string;
98
98
  formattedDayPattern: string;
99
99
  dateLocale: any;
@@ -109,10 +109,10 @@ declare const CustomContext: React.Context<CustomProviderProps<{
109
109
  saturday: string;
110
110
  ok: string;
111
111
  today: string;
112
- yesterday: string; /** Language configuration */
112
+ yesterday: string;
113
113
  hours: string;
114
114
  minutes: string;
115
- seconds: string;
115
+ seconds: string; /** Support right-to-left */
116
116
  formattedMonthPattern: string;
117
117
  formattedDayPattern: string;
118
118
  dateLocale: any;
@@ -120,7 +120,7 @@ declare const CustomContext: React.Context<CustomProviderProps<{
120
120
  Picker?: {
121
121
  noResultsText: string;
122
122
  placeholder: string;
123
- searchPlaceholder: string; /** Supported themes */
123
+ searchPlaceholder: string;
124
124
  checkAll: string;
125
125
  } | undefined;
126
126
  InputPicker?: {
@@ -176,10 +176,10 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
176
176
  saturday: string;
177
177
  ok: string;
178
178
  today: string;
179
- yesterday: string; /** Language configuration */
179
+ yesterday: string;
180
180
  hours: string;
181
181
  minutes: string;
182
- seconds: string;
182
+ seconds: string; /** Support right-to-left */
183
183
  formattedMonthPattern: string;
184
184
  formattedDayPattern: string;
185
185
  dateLocale: any;
@@ -194,10 +194,10 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
194
194
  saturday: string;
195
195
  ok: string;
196
196
  today: string;
197
- yesterday: string; /** Language configuration */
197
+ yesterday: string;
198
198
  hours: string;
199
199
  minutes: string;
200
- seconds: string;
200
+ seconds: string; /** Support right-to-left */
201
201
  formattedMonthPattern: string;
202
202
  formattedDayPattern: string;
203
203
  dateLocale: any;
@@ -213,10 +213,10 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
213
213
  saturday: string;
214
214
  ok: string;
215
215
  today: string;
216
- yesterday: string; /** Language configuration */
216
+ yesterday: string;
217
217
  hours: string;
218
218
  minutes: string;
219
- seconds: string;
219
+ seconds: string; /** Support right-to-left */
220
220
  formattedMonthPattern: string;
221
221
  formattedDayPattern: string;
222
222
  dateLocale: any;
@@ -224,7 +224,7 @@ declare const Consumer: React.Consumer<CustomProviderProps<{
224
224
  Picker?: {
225
225
  noResultsText: string;
226
226
  placeholder: string;
227
- searchPlaceholder: string; /** Supported themes */
227
+ searchPlaceholder: string;
228
228
  checkAll: string;
229
229
  } | undefined;
230
230
  InputPicker?: {
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
3
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
6
 
5
7
  exports.__esModule = true;
@@ -9,7 +11,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
11
 
10
12
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
13
 
12
- var _react = _interopRequireDefault(require("react"));
14
+ var _react = _interopRequireWildcard(require("react"));
13
15
 
14
16
  var _prefix = require("../utils/prefix");
15
17
 
@@ -37,7 +39,7 @@ var CustomProvider = function CustomProvider(props) {
37
39
  }, rest);
38
40
  }, [classPrefix, theme, rest]);
39
41
 
40
- _react.default.useEffect(function () {
42
+ (0, _react.useEffect)(function () {
41
43
  if (_DOMHelper.canUseDOM && theme) {
42
44
  (0, _DOMHelper.addClass)(document.body, (0, _prefix.prefix)(classPrefix, "theme-" + theme)); // Remove the className that will cause style conflicts
43
45
 
@@ -48,7 +50,6 @@ var CustomProvider = function CustomProvider(props) {
48
50
  });
49
51
  }
50
52
  }, [classPrefix, theme]);
51
-
52
53
  return /*#__PURE__*/_react.default.createElement(Provider, {
53
54
  value: value
54
55
  }, children);
@@ -3,7 +3,7 @@ import { RangeType } from './Toolbar';
3
3
  import { DatePickerLocale } from '../locales';
4
4
  import { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
5
5
  export type { RangeType } from './Toolbar';
6
- export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date> {
6
+ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null> {
7
7
  /** Configure shortcut options */
8
8
  ranges?: RangeType<Date>[];
9
9
  /** Calendar panel default presentation date and time */
@@ -15,8 +15,6 @@ var _react = _interopRequireWildcard(require("react"));
15
15
 
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
- var _isNil = _interopRequireDefault(require("lodash/isNil"));
19
-
20
18
  var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
21
19
 
22
20
  var _pick = _interopRequireDefault(require("lodash/pick"));
@@ -194,11 +192,11 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
194
192
  closeOverlay = true;
195
193
  }
196
194
 
197
- var nextValue = !(0, _isNil.default)(nextPageDate) ? nextPageDate : calendarDate;
195
+ var nextValue = typeof nextPageDate !== 'undefined' ? nextPageDate : calendarDate;
198
196
  setCalendarDate(nextValue || new Date());
199
197
  setValue(nextValue);
200
198
 
201
- if (nextValue !== value || !_utils.DateUtils.isSameDay(nextValue, value)) {
199
+ if (nextValue !== value) {
202
200
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
203
201
  } // `closeOverlay` default value is `true`
204
202
 
@@ -402,6 +400,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
402
400
  top: top
403
401
  };
404
402
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
403
+ role: "dialog",
405
404
  className: classes,
406
405
  ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
407
406
  style: styles,
@@ -475,7 +474,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
475
474
  active: active,
476
475
  placement: placement,
477
476
  disabled: disabled,
478
- caretAs: caretAs
477
+ caretAs: caretAs,
478
+ "aria-haspopup": "dialog"
479
479
  }), renderDate())));
480
480
  });
481
481
 
@@ -211,7 +211,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
211
211
  }
212
212
 
213
213
  return isPlaintext ? '' : placeholder || rangeFormatStr;
214
- }, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue, value]);
214
+ }, [character, formatDate, formatStr, placeholder, rangeFormatStr, renderValue]);
215
215
  /**
216
216
  * preset hover range
217
217
  */
@@ -263,7 +263,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
263
263
  if (closeOverlay !== false) {
264
264
  handleCloseDropdown();
265
265
  }
266
- }, [formatStr, handleCloseDropdown, onChange, selectedDates, setValue, value]);
266
+ }, [formatStr, handleCloseDropdown, onChange, setValue, value]);
267
267
  /**
268
268
  * Select the date range. If oneTap is not set, you need to click twice to select the start time and end time.
269
269
  * The MouseMove event is called between the first click and the second click to update the selection state.
@@ -293,7 +293,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
293
293
  } else if (!(0, _isNil.default)(nextHoverDateRange)) {
294
294
  setHoverDateRange(nextHoverDateRange);
295
295
  }
296
- }, [getHoverRangeValue, hoverRange]);
296
+ }, [getHoverRangeValue]);
297
297
  /**
298
298
  * Callback for selecting a date cell in the calendar grid
299
299
  */
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import DisclosureButton from './DisclosureButton';
3
3
  import DisclosureContent from './DisclosureContent';
4
- export interface DisclosureRenderProps {
4
+ export declare type DisclosureTrigger = 'click' | 'mouseover';
5
+ export interface DisclosureRenderProps extends Pick<React.HTMLAttributes<HTMLElement>, 'onMouseOver' | 'onMouseOut'> {
5
6
  open: boolean;
6
7
  }
7
8
  export interface DisclosureProps {
@@ -13,10 +14,12 @@ export interface DisclosureProps {
13
14
  hideOnClickOutside?: boolean;
14
15
  /** Callback when disclosure button is being activated to update the open state */
15
16
  onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
17
+ /** What mouse events should disclosure reacts to */
18
+ trigger?: DisclosureTrigger[];
16
19
  }
17
- declare function Disclosure(props: DisclosureProps): JSX.Element;
18
- declare namespace Disclosure {
19
- var Button: typeof DisclosureButton;
20
- var Content: typeof DisclosureContent;
20
+ export interface DisclosureComponent extends React.FC<DisclosureProps> {
21
+ Button: typeof DisclosureButton;
22
+ Content: typeof DisclosureContent;
21
23
  }
24
+ declare const Disclosure: DisclosureComponent;
22
25
  export default Disclosure;
@@ -41,14 +41,17 @@ function disclosureReducer(state, action) {
41
41
  return state;
42
42
  }
43
43
 
44
- function Disclosure(props) {
44
+ var Disclosure = /*#__PURE__*/_react.default.memo(function (props) {
45
45
  var children = props.children,
46
46
  openProp = props.open,
47
47
  _props$defaultOpen = props.defaultOpen,
48
48
  defaultOpen = _props$defaultOpen === void 0 ? false : _props$defaultOpen,
49
49
  _props$hideOnClickOut = props.hideOnClickOutside,
50
50
  hideOnClickOutside = _props$hideOnClickOut === void 0 ? false : _props$hideOnClickOut,
51
- onToggle = props.onToggle;
51
+ onToggle = props.onToggle,
52
+ _props$trigger = props.trigger,
53
+ trigger = _props$trigger === void 0 ? ['click'] : _props$trigger;
54
+ var parentDisclosure = (0, _react.useContext)(_DisclosureContext.default);
52
55
 
53
56
  var _useReducer = (0, _react.useReducer)(disclosureReducer, (0, _extends2.default)({}, initialDisclosureState, {
54
57
  open: defaultOpen
@@ -71,19 +74,56 @@ function Disclosure(props) {
71
74
  });
72
75
  }
73
76
  });
74
- var context = (0, _react.useMemo)(function () {
77
+ var onMouseOver = (0, _react.useCallback)(function (event) {
78
+ if (!open) {
79
+ dispatch({
80
+ type: _DisclosureContext.DisclosureActionTypes.Show
81
+ });
82
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle(true, event);
83
+ }
84
+ }, [open, dispatch, onToggle]);
85
+ var onMouseOut = (0, _react.useCallback)(function (event) {
86
+ if (open) {
87
+ dispatch({
88
+ type: _DisclosureContext.DisclosureActionTypes.Hide
89
+ });
90
+ onToggle === null || onToggle === void 0 ? void 0 : onToggle(false, event);
91
+ }
92
+ }, [open, dispatch, onToggle]);
93
+ var contextValue = (0, _react.useMemo)(function () {
94
+ var cascadeDispatch = function cascadeDispatch(action) {
95
+ var result = dispatch(action);
96
+
97
+ if ('cascade' in action) {
98
+ parentDisclosure === null || parentDisclosure === void 0 ? void 0 : parentDisclosure[1](action);
99
+ }
100
+
101
+ return result;
102
+ };
103
+
75
104
  return [{
76
105
  open: open
77
- }, dispatch, {
78
- onToggle: onToggle
106
+ }, cascadeDispatch, {
107
+ onToggle: onToggle,
108
+ trigger: trigger
79
109
  }];
80
- }, [open, dispatch, onToggle]);
110
+ }, [parentDisclosure, open, dispatch, onToggle, trigger]);
111
+ var renderProps = (0, _react.useMemo)(function () {
112
+ var renderProps = {
113
+ open: open
114
+ };
115
+
116
+ if (trigger.includes('mouseover')) {
117
+ renderProps.onMouseOver = onMouseOver;
118
+ renderProps.onMouseOut = onMouseOut;
119
+ }
120
+
121
+ return renderProps;
122
+ }, [open, trigger, onMouseOver, onMouseOut]);
81
123
  return /*#__PURE__*/_react.default.createElement(_DisclosureContext.default.Provider, {
82
- value: context
83
- }, children({
84
- open: open
85
- }, containerElementRef));
86
- }
124
+ value: contextValue
125
+ }, children(renderProps, containerElementRef));
126
+ });
87
127
 
88
128
  Disclosure.Button = _DisclosureButton.default;
89
129
  Disclosure.Content = _DisclosureContent.default;
@@ -3,9 +3,9 @@ export interface DisclosureButtonRenderProps {
3
3
  open: boolean;
4
4
  }
5
5
  export interface DisclosureButtonProps {
6
- children: (props: React.ButtonHTMLAttributes<HTMLButtonElement> & DisclosureButtonRenderProps, ref: React.Ref<HTMLButtonElement>) => React.ReactElement<React.HTMLAttributes<HTMLButtonElement>>;
6
+ children: (props: React.HTMLAttributes<HTMLElement> & DisclosureButtonRenderProps, ref: React.Ref<HTMLElement>) => React.ReactElement<React.HTMLAttributes<HTMLElement>>;
7
7
  }
8
- declare function DisclosureButton(props: DisclosureButtonProps): React.ReactElement<React.HTMLAttributes<HTMLButtonElement>, string | React.JSXElementConstructor<any>>;
8
+ declare function DisclosureButton(props: DisclosureButtonProps): React.ReactElement<React.HTMLAttributes<HTMLElement>, string | React.JSXElementConstructor<any>>;
9
9
  declare namespace DisclosureButton {
10
10
  var displayName: string;
11
11
  }
@@ -1,4 +1,5 @@
1
1
  import React, { Dispatch } from 'react';
2
+ import type { DisclosureTrigger } from './Disclosure';
2
3
  export interface DisclosureState {
3
4
  open: boolean;
4
5
  }
@@ -7,12 +8,16 @@ export declare enum DisclosureActionTypes {
7
8
  Hide = 1
8
9
  }
9
10
  export declare type DisclosureAction = {
10
- type: DisclosureActionTypes;
11
+ type: DisclosureActionTypes.Show;
12
+ } | {
13
+ type: DisclosureActionTypes.Hide;
14
+ cascade?: boolean;
11
15
  };
12
16
  export declare type DisclosureContextProps = [
13
17
  DisclosureState,
14
18
  Dispatch<DisclosureAction>,
15
19
  {
20
+ trigger: DisclosureTrigger[];
16
21
  onToggle?: (open: boolean, event: React.SyntheticEvent) => void;
17
22
  }
18
23
  ];
@@ -41,7 +41,7 @@ var _MenuItem = _interopRequireDefault(require("../Menu/MenuItem"));
41
41
 
42
42
  var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
43
43
 
44
- var _Navbar = require("../Navbar/Navbar");
44
+ var _Navbar = require("../Navbar");
45
45
 
46
46
  var _Disclosure = _interopRequireDefault(require("../Disclosure/Disclosure"));
47
47
 
@@ -33,8 +33,6 @@ var _SidenavDropdownItem = _interopRequireDefault(require("../Sidenav/SidenavDro
33
33
 
34
34
  var _DisclosureContext = _interopRequireWildcard(require("../Disclosure/DisclosureContext"));
35
35
 
36
- var _SafeAnchor = _interopRequireDefault(require("../SafeAnchor"));
37
-
38
36
  var _NavContext = _interopRequireDefault(require("../Nav/NavContext"));
39
37
 
40
38
  var _useInternalId = _interopRequireDefault(require("../utils/useInternalId"));
@@ -87,7 +85,8 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
87
85
 
88
86
  var handleClickNavbarDropdownItem = (0, _react.useCallback)(function (event) {
89
87
  dispatchDisclosure === null || dispatchDisclosure === void 0 ? void 0 : dispatchDisclosure({
90
- type: _DisclosureContext.DisclosureActionTypes.Hide
88
+ type: _DisclosureContext.DisclosureActionTypes.Hide,
89
+ cascade: true
91
90
  });
92
91
  handleSelectItem === null || handleSelectItem === void 0 ? void 0 : handleSelectItem(event);
93
92
  }, [dispatchDisclosure, handleSelectItem]);
@@ -154,16 +153,16 @@ var DropdownItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
154
153
  dataAttributes['data-event-key-type'] = typeof eventKey;
155
154
  }
156
155
 
157
- return /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement(_SafeAnchor.default, (0, _extends2.default)({
156
+ return renderDropdownItem((0, _extends2.default)({
158
157
  ref: ref,
159
158
  className: classes,
160
- "aria-current": selected || undefined
159
+ 'aria-current': selected || undefined
161
160
  }, dataAttributes, restProps, {
162
- as: Component,
163
- onClick: (0, _utils.createChainedFunction)(handleClickNavbarDropdownItem, restProps.onClick)
164
- }), icon && /*#__PURE__*/_react.default.cloneElement(icon, {
165
- className: prefix('menu-icon')
166
- }), children));
161
+ onClick: (0, _utils.createChainedFunction)(handleClickNavbarDropdownItem, restProps.onClick),
162
+ children: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, icon && /*#__PURE__*/_react.default.cloneElement(icon, {
163
+ className: prefix('menu-icon')
164
+ }), children)
165
+ }));
167
166
  }
168
167
 
169
168
  return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {