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
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = void 0;
7
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _Picker = require("../Picker");
11
+ var _Input = _interopRequireDefault(require("../Input"));
12
+ var Combobox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
13
+ var _useCombobox = (0, _Picker.useCombobox)(),
14
+ id = _useCombobox.id,
15
+ popupType = _useCombobox.popupType;
16
+ var expanded = props.expanded,
17
+ focusItemValue = props.focusItemValue,
18
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["expanded", "focusItemValue"]);
19
+ return /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({
20
+ role: "combobox",
21
+ "aria-autocomplete": "list",
22
+ "aria-haspopup": popupType,
23
+ "aria-expanded": expanded,
24
+ "aria-activedescendant": focusItemValue ? id + "-opt-" + focusItemValue : undefined,
25
+ autoComplete: "off",
26
+ id: id,
27
+ ref: ref
28
+ }, rest));
29
+ });
30
+ var _default = Combobox;
31
+ exports.default = _default;
@@ -7,7 +7,11 @@ export interface CalendarProps extends WithAsProps {
7
7
  value?: Date;
8
8
  /** Default value */
9
9
  defaultValue?: Date;
10
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
10
+ /**
11
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
12
+ *
13
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
14
+ */
11
15
  isoWeek?: boolean;
12
16
  /** Display a compact calendar */
13
17
  compact?: boolean;
@@ -32,7 +32,11 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
32
32
  hideSeconds?: (second: number, date: Date) => boolean;
33
33
  /** The value that mouse hover on in range selection */
34
34
  hoverRangeValue?: [Date, Date];
35
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
35
+ /**
36
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
37
+ *
38
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
39
+ */
36
40
  isoWeek?: boolean;
37
41
  /** Limit showing how many years in the future */
38
42
  limitEndYear?: number;
@@ -68,42 +68,42 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
68
68
  var calendarDate = (0, _react.useMemo)(function () {
69
69
  return (0, _dateUtils.isValid)(calendarDateProp) ? calendarDateProp : new Date();
70
70
  }, [calendarDateProp]);
71
- var isDisabledDate = (0, _react.useCallback)(function (date) {
71
+ var isDisabledDate = (0, _utils.useEventCallback)(function (date) {
72
72
  var _disabledDate;
73
73
  return (_disabledDate = disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date)) !== null && _disabledDate !== void 0 ? _disabledDate : false;
74
- }, [disabledDate]);
74
+ });
75
75
  var isTimeDisabled = function isTimeDisabled(date) {
76
76
  return (0, _dateUtils.disabledTime)(props, date);
77
77
  };
78
- var handleMoveForward = (0, _react.useCallback)(function () {
78
+ var handleMoveForward = (0, _utils.useEventCallback)(function () {
79
79
  onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward((0, _dateUtils.addMonths)(calendarDate, 1));
80
- }, [onMoveForward, calendarDate]);
81
- var handleMoveBackward = (0, _react.useCallback)(function () {
80
+ });
81
+ var handleMoveBackward = (0, _utils.useEventCallback)(function () {
82
82
  onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward((0, _dateUtils.addMonths)(calendarDate, -1));
83
- }, [onMoveBackward, calendarDate]);
83
+ });
84
84
 
85
85
  // It is displayed as the month to be selected.
86
- var toggleMonthView = (0, _react.useCallback)(function () {
86
+ var toggleMonthView = (0, _utils.useEventCallback)(function () {
87
87
  if (calendarState === _useCalendarState2.CalendarState.MONTH) {
88
88
  reset();
89
89
  } else {
90
90
  openMonth();
91
91
  }
92
92
  onToggleMonthDropdown === null || onToggleMonthDropdown === void 0 ? void 0 : onToggleMonthDropdown(calendarState !== _useCalendarState2.CalendarState.MONTH);
93
- }, [calendarState, onToggleMonthDropdown, openMonth, reset]);
93
+ });
94
94
 
95
95
  // It is displayed as a time to be selected.
96
- var toggleTimeView = (0, _react.useCallback)(function () {
96
+ var toggleTimeView = (0, _utils.useEventCallback)(function () {
97
97
  if (calendarState === _useCalendarState2.CalendarState.TIME) {
98
98
  reset();
99
99
  } else {
100
100
  openTime();
101
101
  }
102
102
  onToggleTimeDropdown === null || onToggleTimeDropdown === void 0 ? void 0 : onToggleTimeDropdown(calendarState !== _useCalendarState2.CalendarState.TIME);
103
- }, [calendarState, onToggleTimeDropdown, openTime, reset]);
104
- var handleCloseDropdown = (0, _react.useCallback)(function () {
103
+ });
104
+ var handleCloseDropdown = (0, _utils.useEventCallback)(function () {
105
105
  return reset();
106
- }, [reset]);
106
+ });
107
107
  var renderDate = (0, _dateUtils.shouldRenderDate)(format);
108
108
  var renderTime = (0, _dateUtils.shouldRenderTime)(format);
109
109
  var renderMonth = (0, _dateUtils.shouldRenderMonth)(format);
@@ -111,40 +111,38 @@ var CalendarContainer = /*#__PURE__*/_react.default.forwardRef(function (props,
111
111
  var onlyShowMonth = renderMonth && !renderDate && !renderTime;
112
112
  var showTime = calendarState === _useCalendarState2.CalendarState.TIME || onlyShowTime;
113
113
  var showMonth = calendarState === _useCalendarState2.CalendarState.MONTH || onlyShowMonth;
114
- var inSameThisMonthDate = (0, _react.useCallback)(function (date) {
114
+ var inSameThisMonthDate = (0, _utils.useEventCallback)(function (date) {
115
115
  return (0, _dateUtils.isSameMonth)(calendarDate, date);
116
- }, [calendarDate]);
116
+ });
117
117
  var calendarClasses = merge(className, withClassPrefix({
118
118
  'time-view': showTime,
119
119
  'month-view': showMonth,
120
120
  'show-week-numbers': showWeekNumbers
121
121
  }));
122
122
  var timeDropdownProps = (0, _pick.default)(rest, _dateUtils.calendarOnlyProps);
123
- var handleChangeMonth = (0, _react.useCallback)(function (date, event) {
123
+ var handleChangeMonth = (0, _utils.useEventCallback)(function (date, event) {
124
124
  reset();
125
125
  onChangeMonth === null || onChangeMonth === void 0 ? void 0 : onChangeMonth(date, event);
126
- }, [onChangeMonth, reset]);
127
- var contextValue = (0, _react.useMemo)(function () {
128
- return {
129
- date: calendarDate,
130
- dateRange: dateRange,
131
- disabledDate: isDisabledDate,
132
- format: format,
133
- hoverRangeValue: hoverRangeValue,
134
- inSameMonth: inSameThisMonthDate,
135
- isoWeek: isoWeek,
136
- targetId: targetId,
137
- locale: locale,
138
- onChangeMonth: handleChangeMonth,
139
- onChangeTime: onChangeTime,
140
- onMouseMove: onMouseMove,
141
- onSelect: onSelect,
142
- cellClassName: cellClassName,
143
- renderCell: renderCell,
144
- showWeekNumbers: showWeekNumbers,
145
- inline: inline
146
- };
147
- }, [calendarDate, dateRange, format, handleChangeMonth, hoverRangeValue, inSameThisMonthDate, inline, isDisabledDate, isoWeek, targetId, locale, onChangeTime, onMouseMove, onSelect, cellClassName, renderCell, showWeekNumbers]);
126
+ });
127
+ var contextValue = {
128
+ date: calendarDate,
129
+ dateRange: dateRange,
130
+ disabledDate: isDisabledDate,
131
+ format: format,
132
+ hoverRangeValue: hoverRangeValue,
133
+ inSameMonth: inSameThisMonthDate,
134
+ isoWeek: isoWeek,
135
+ targetId: targetId,
136
+ locale: locale,
137
+ onChangeMonth: handleChangeMonth,
138
+ onChangeTime: onChangeTime,
139
+ onMouseMove: onMouseMove,
140
+ onSelect: onSelect,
141
+ cellClassName: cellClassName,
142
+ renderCell: renderCell,
143
+ showWeekNumbers: showWeekNumbers,
144
+ inline: inline
145
+ };
148
146
  return /*#__PURE__*/_react.default.createElement(_CalendarContext.CalendarProvider, {
149
147
  value: contextValue
150
148
  }, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
@@ -15,7 +15,7 @@ var _pick = _interopRequireDefault(require("lodash/pick"));
15
15
  var _isNil = _interopRequireDefault(require("lodash/isNil"));
16
16
  var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
17
17
  var _shallowEqual = _interopRequireDefault(require("../utils/shallowEqual"));
18
- var _DropdownMenu = _interopRequireDefault(require("./DropdownMenu"));
18
+ var _TreeView = _interopRequireDefault(require("./TreeView"));
19
19
  var _treeUtils = require("../utils/treeUtils");
20
20
  var _utils = require("./utils");
21
21
  var _utils2 = require("../utils");
@@ -82,10 +82,12 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
82
82
  var _useState = (0, _react.useState)(false),
83
83
  active = _useState[0],
84
84
  setActive = _useState[1];
85
- var triggerRef = (0, _react.useRef)(null);
86
- var overlayRef = (0, _react.useRef)(null);
87
- var targetRef = (0, _react.useRef)(null);
88
- var searchInputRef = (0, _react.useRef)(null);
85
+ var _usePickerRef = (0, _Picker.usePickerRef)(ref),
86
+ trigger = _usePickerRef.trigger,
87
+ root = _usePickerRef.root,
88
+ target = _usePickerRef.target,
89
+ overlay = _usePickerRef.overlay,
90
+ searchInput = _usePickerRef.searchInput;
89
91
  var _ref = (0, _utils2.useControlled)(valueProp, defaultValue),
90
92
  value = _ref[0],
91
93
  setValue = _ref[1];
@@ -126,11 +128,6 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
126
128
  columnsToDisplay = _usePaths.columnsToDisplay,
127
129
  pathTowardsActiveItem = _usePaths.pathTowardsActiveItem,
128
130
  pathTowardsSelectedItem = _usePaths.pathTowardsSelectedItem;
129
- (0, _Picker.usePublicMethods)(ref, {
130
- triggerRef: triggerRef,
131
- overlayRef: overlayRef,
132
- targetRef: targetRef
133
- });
134
131
  var _useCustom = (0, _utils2.useCustom)('Picker', overrideLocale),
135
132
  locale = _useCustom.locale,
136
133
  rtl = _useCustom.rtl;
@@ -145,7 +142,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
145
142
  var _useState3 = (0, _react.useState)(''),
146
143
  searchKeyword = _useState3[0],
147
144
  setSearchKeyword = _useState3[1];
148
- var someKeyword = (0, _react.useCallback)(function (item, keyword) {
145
+ var someKeyword = function someKeyword(item, keyword) {
149
146
  if (item[labelKey].match(new RegExp((0, _utils2.getSafeRegExpString)(keyword || searchKeyword), 'i'))) {
150
147
  return true;
151
148
  }
@@ -154,8 +151,8 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
154
151
  return true;
155
152
  }
156
153
  return false;
157
- }, [labelKey, parentMap, searchKeyword]);
158
- var getSearchResult = (0, _react.useCallback)(function (keyword) {
154
+ };
155
+ var getSearchResult = function getSearchResult(keyword) {
159
156
  var items = [];
160
157
  var result = flattenedData.filter(function (item) {
161
158
  if (!parentSelectable && item[childrenKey]) {
@@ -172,7 +169,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
172
169
  }
173
170
  }
174
171
  return items;
175
- }, [childrenKey, flattenedData, someKeyword, parentSelectable]);
172
+ };
176
173
 
177
174
  // Used to hover the focuse item when trigger `onKeydown`
178
175
  var _useFocusItemValue = (0, _Picker.useFocusItemValue)(value, {
@@ -181,7 +178,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
181
178
  valueKey: valueKey,
182
179
  defaultLayer: pathTowardsSelectedItem !== null && pathTowardsSelectedItem !== void 0 && pathTowardsSelectedItem.length ? pathTowardsSelectedItem.length - 1 : 0,
183
180
  target: function target() {
184
- return overlayRef.current;
181
+ return overlay.current;
185
182
  },
186
183
  getParent: function getParent(item) {
187
184
  return parentMap.get(item);
@@ -197,7 +194,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
197
194
  setLayer = _useFocusItemValue.setLayer,
198
195
  setKeys = _useFocusItemValue.setKeys,
199
196
  onFocusItem = _useFocusItemValue.onKeyDown;
200
- var handleSearch = (0, _react.useCallback)(function (value, event) {
197
+ var handleSearch = (0, _utils2.useEventCallback)(function (value, event) {
201
198
  var items = getSearchResult(value);
202
199
  setSearchKeyword(value);
203
200
  onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
@@ -210,37 +207,37 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
210
207
  setLayer(0);
211
208
  setKeys([]);
212
209
  }
213
- }, [getSearchResult, onSearch, setFocusItemValue, setKeys, setLayer, valueKey]);
214
- var handleEntered = (0, _react.useCallback)(function () {
215
- if (!targetRef.current) {
210
+ });
211
+ var handleEntered = (0, _utils2.useEventCallback)(function () {
212
+ if (!target.current) {
216
213
  return;
217
214
  }
218
215
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
219
216
  setActive(true);
220
- }, [onOpen]);
221
- var handleExited = (0, _react.useCallback)(function () {
222
- if (!targetRef.current) {
217
+ });
218
+ var handleExited = (0, _utils2.useEventCallback)(function () {
219
+ if (!target.current) {
223
220
  return;
224
221
  }
225
222
  onClose === null || onClose === void 0 ? void 0 : onClose();
226
223
  setActive(false);
227
224
  setSearchKeyword('');
228
- }, [onClose]);
229
- var handleClose = (0, _react.useCallback)(function () {
230
- var _triggerRef$current, _targetRef$current, _targetRef$current$fo;
231
- (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
225
+ });
226
+ var handleClose = (0, _utils2.useEventCallback)(function () {
227
+ var _trigger$current, _target$current, _target$current$focus;
228
+ (_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.close();
232
229
 
233
230
  // The focus is on the trigger button after closing
234
- (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$fo = _targetRef$current.focus) === null || _targetRef$current$fo === void 0 ? void 0 : _targetRef$current$fo.call(_targetRef$current);
235
- }, []);
236
- var handleClean = (0, _react.useCallback)(function (event) {
237
- if (disabled || !targetRef.current) {
231
+ (_target$current = target.current) === null || _target$current === void 0 ? void 0 : (_target$current$focus = _target$current.focus) === null || _target$current$focus === void 0 ? void 0 : _target$current$focus.call(_target$current);
232
+ });
233
+ var handleClean = (0, _utils2.useEventCallback)(function (event) {
234
+ if (disabled || !target.current) {
238
235
  return;
239
236
  }
240
237
  setValue(null);
241
238
  onChange === null || onChange === void 0 ? void 0 : onChange(null, event);
242
- }, [disabled, onChange, setValue]);
243
- var handleMenuPressEnter = (0, _react.useCallback)(function (event) {
239
+ });
240
+ var handleMenuPressEnter = (0, _utils2.useEventCallback)(function (event) {
244
241
  var focusItem = (0, _treeUtils.findNodeOfTree)(data, function (item) {
245
242
  return item[valueKey] === focusItemValue;
246
243
  });
@@ -256,20 +253,20 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
256
253
  }
257
254
  handleClose();
258
255
  }
259
- }, [childrenKey, data, focusItemValue, handleClose, onChange, pathTowardsActiveItem, setLayer, setValue, value, valueKey, onSelect]);
256
+ });
260
257
  var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends3.default)({
261
258
  toggle: !focusItemValue || !active,
262
- triggerRef: triggerRef,
263
- targetRef: targetRef,
264
- overlayRef: overlayRef,
265
- searchInputRef: searchInputRef,
259
+ trigger: trigger,
260
+ target: target,
261
+ overlay: overlay,
262
+ searchInput: searchInput,
266
263
  active: active,
267
264
  onExit: handleClean,
268
265
  onMenuKeyDown: onFocusItem,
269
266
  onMenuPressEnter: handleMenuPressEnter
270
267
  }, rest));
271
- var handleSelect = function handleSelect(node, cascadePaths, isLeafNode, event) {
272
- var _node$childrenKey, _triggerRef$current2;
268
+ var handleSelect = (0, _utils2.useEventCallback)(function (node, cascadePaths, isLeafNode, event) {
269
+ var _node$childrenKey, _trigger$current2;
273
270
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
274
271
  setActiveItem(node);
275
272
  var nextValue = node[valueKey];
@@ -307,20 +304,20 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
307
304
  }
308
305
 
309
306
  // Update menu position
310
- (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.updatePosition();
311
- };
307
+ (_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.updatePosition();
308
+ });
312
309
 
313
310
  /**
314
311
  * The search structure option is processed after being selected.
315
312
  */
316
- var handleSearchRowSelect = function handleSearchRowSelect(node, nodes, event) {
313
+ var handleSearchRowSelect = (0, _utils2.useEventCallback)(function (node, nodes, event) {
317
314
  var nextValue = node[valueKey];
318
315
  handleClose();
319
316
  setSearchKeyword('');
320
317
  setValue(nextValue);
321
318
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, nodes, event);
322
319
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
323
- };
320
+ });
324
321
  var renderSearchRow = function renderSearchRow(item, key) {
325
322
  var regx = new RegExp((0, _utils2.getSafeRegExpString)(searchKeyword), 'ig');
326
323
  var nodes = (0, _treeUtils.getPathTowardsItem)(item, function (item) {
@@ -358,12 +355,12 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
358
355
  }, node[labelKey]);
359
356
  });
360
357
  return /*#__PURE__*/_react.default.createElement("div", {
358
+ role: "treeitem",
361
359
  key: key,
362
360
  "aria-disabled": disabled,
363
361
  "data-key": item[valueKey],
364
362
  className: itemClasses,
365
363
  tabIndex: -1,
366
- role: "option",
367
364
  onClick: function onClick(event) {
368
365
  if (!disabled) {
369
366
  handleSearchRowSelect(item, nodes, event);
@@ -379,12 +376,12 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
379
376
  return /*#__PURE__*/_react.default.createElement("div", {
380
377
  className: prefix('cascader-search-panel'),
381
378
  "data-layer": 0,
382
- role: "listbox"
379
+ role: "tree"
383
380
  }, items.length ? items.map(renderSearchRow) : /*#__PURE__*/_react.default.createElement("div", {
384
381
  className: prefix('none')
385
382
  }, locale.noResultsText));
386
383
  };
387
- var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
384
+ var renderTreeView = function renderTreeView(positionProps, speakerRef) {
388
385
  var _ref2 = positionProps || {},
389
386
  left = _ref2.left,
390
387
  top = _ref2.top,
@@ -396,19 +393,18 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
396
393
  var classes = merge(className, menuClassName, prefix('cascader-menu', {
397
394
  inline: inline
398
395
  }));
399
- return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
400
- ref: (0, _utils2.mergeRefs)(overlayRef, speakerRef),
396
+ return /*#__PURE__*/_react.default.createElement(_Picker.PickerPopup, {
397
+ ref: (0, _utils2.mergeRefs)(overlay, speakerRef),
401
398
  className: classes,
402
399
  style: styles,
403
- target: triggerRef,
400
+ target: trigger,
404
401
  onKeyDown: onPickerKeyDown
405
402
  }, searchable && /*#__PURE__*/_react.default.createElement(_Picker.SearchBar, {
406
403
  placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
407
404
  onChange: handleSearch,
408
405
  value: searchKeyword,
409
- inputRef: searchInputRef
410
- }), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/_react.default.createElement(_DropdownMenu.default, {
411
- id: id ? id + "-listbox" : undefined,
406
+ inputRef: searchInput
407
+ }), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/_react.default.createElement(_TreeView.default, {
412
408
  menuWidth: menuWidth,
413
409
  menuHeight: menuHeight,
414
410
  disabledItemValues: disabledItemValues,
@@ -461,21 +457,23 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
461
457
  usedClassNamePropKeys = _usePickerClassName[1]; // TODO: bad api design
462
458
  // consider an isolated Menu component
463
459
  if (inline) {
464
- return renderDropdownMenu();
460
+ return renderTreeView();
465
461
  }
466
462
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
463
+ id: id,
464
+ popupType: "tree",
467
465
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
468
- ref: triggerRef,
466
+ ref: trigger,
469
467
  placement: placement,
470
468
  onEntered: (0, _utils2.createChainedFunction)(handleEntered, onEnter),
471
469
  onExited: (0, _utils2.createChainedFunction)(handleExited, onExited),
472
- speaker: renderDropdownMenu
470
+ speaker: renderTreeView
473
471
  }, /*#__PURE__*/_react.default.createElement(Component, {
474
472
  className: classes,
475
- style: style
473
+ style: style,
474
+ ref: root
476
475
  }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends3.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys)), {
477
- id: id,
478
- ref: targetRef,
476
+ ref: target,
479
477
  as: toggleAs,
480
478
  appearance: appearance,
481
479
  disabled: disabled,
@@ -485,7 +483,8 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
485
483
  hasValue: hasValue,
486
484
  active: active,
487
485
  placement: placement,
488
- inputValue: value !== null && value !== void 0 ? value : ''
486
+ inputValue: value !== null && value !== void 0 ? value : '',
487
+ focusItemValue: focusItemValue
489
488
  }), selectedElement || (locale === null || locale === void 0 ? void 0 : locale.placeholder))));
490
489
  });
491
490
  Cascader.displayName = 'Cascader';
@@ -1,11 +1,10 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
4
3
  import { ValueType } from './Cascader';
5
4
  declare type SetLike<T = unknown> = {
6
5
  has(value: T): boolean;
7
6
  };
8
- export interface DropdownMenuProps extends Omit<WithAsProps, 'classPrefix'> {
7
+ export interface TreeViewProps extends Omit<WithAsProps, 'classPrefix'> {
9
8
  classPrefix: string;
10
9
  disabledItemValues: ValueType[];
11
10
  activeItemValue?: ValueType | null;
@@ -21,21 +20,5 @@ export interface DropdownMenuProps extends Omit<WithAsProps, 'classPrefix'> {
21
20
  renderMenu?: (items: readonly ItemDataType[], menu: React.ReactNode, parentNode?: ItemDataType, layer?: number) => React.ReactNode;
22
21
  onSelect?: (node: ItemDataType, cascadePaths: ItemDataType[], isLeafNode: boolean, event: React.MouseEvent) => void;
23
22
  }
24
- declare const DropdownMenu: RsRefForwardingComponent<'div', DropdownMenuProps>;
25
- export declare const dropdownMenuPropTypes: {
26
- classPrefix: PropTypes.Requireable<string>;
27
- disabledItemValues: PropTypes.Requireable<any[]>;
28
- activeItemValue: PropTypes.Requireable<any>;
29
- childrenKey: PropTypes.Requireable<string>;
30
- valueKey: PropTypes.Requireable<string>;
31
- labelKey: PropTypes.Requireable<string>;
32
- menuWidth: PropTypes.Requireable<number>;
33
- menuHeight: PropTypes.Requireable<string | number>;
34
- className: PropTypes.Requireable<string>;
35
- renderMenuItem: PropTypes.Requireable<(...args: any[]) => any>;
36
- renderMenu: PropTypes.Requireable<(...args: any[]) => any>;
37
- onSelect: PropTypes.Requireable<(...args: any[]) => any>;
38
- cascadeData: PropTypes.Requireable<any[]>;
39
- cascadePaths: PropTypes.Requireable<any[]>;
40
- };
41
- export default DropdownMenu;
23
+ declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
24
+ export default TreeView;