rsuite 5.55.1 → 5.57.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 (223) hide show
  1. package/AutoComplete/styles/index.css +3 -3
  2. package/CHANGELOG.md +33 -0
  3. package/CascadeTree/package.json +7 -0
  4. package/CascadeTree/styles/index.css +273 -0
  5. package/CascadeTree/styles/index.less +77 -0
  6. package/CascadeTree/styles/search.less +45 -0
  7. package/Cascader/styles/index.css +190 -195
  8. package/Cascader/styles/index.less +1 -122
  9. package/CheckPicker/styles/index.css +142 -40
  10. package/CheckPicker/styles/index.less +1 -1
  11. package/CheckTree/styles/index.css +143 -41
  12. package/CheckTreePicker/styles/index.css +143 -41
  13. package/CheckTreePicker/styles/index.less +2 -2
  14. package/Checkbox/styles/index.css +159 -36
  15. package/Checkbox/styles/index.less +32 -13
  16. package/DatePicker/styles/index.css +3 -3
  17. package/DateRangePicker/styles/index.css +3 -3
  18. package/InputPicker/styles/index.css +3 -3
  19. package/MultiCascadeTree/package.json +7 -0
  20. package/MultiCascadeTree/styles/index.css +3701 -0
  21. package/MultiCascadeTree/styles/index.less +37 -0
  22. package/MultiCascader/styles/index.css +213 -108
  23. package/MultiCascader/styles/index.less +11 -31
  24. package/Pagination/styles/index.css +3 -3
  25. package/Radio/styles/index.css +133 -19
  26. package/Radio/styles/index.less +28 -12
  27. package/RadioGroup/styles/index.css +1 -1
  28. package/RadioGroup/styles/index.less +1 -1
  29. package/SelectPicker/styles/index.css +3 -3
  30. package/TagGroup/styles/index.css +1 -1
  31. package/TagGroup/styles/index.less +1 -1
  32. package/TagInput/styles/index.css +141 -39
  33. package/TagPicker/styles/index.css +141 -39
  34. package/cjs/@types/common.d.ts +12 -14
  35. package/cjs/CascadeTree/CascadeTree.d.ts +16 -0
  36. package/cjs/CascadeTree/CascadeTree.js +174 -0
  37. package/cjs/CascadeTree/SearchView.d.ts +17 -0
  38. package/cjs/CascadeTree/SearchView.js +106 -0
  39. package/cjs/CascadeTree/TreeView.d.ts +20 -0
  40. package/cjs/{Cascader → CascadeTree}/TreeView.js +42 -33
  41. package/cjs/CascadeTree/hooks/index.d.ts +3 -0
  42. package/cjs/CascadeTree/hooks/index.js +12 -0
  43. package/cjs/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  44. package/cjs/CascadeTree/hooks/usePaths.js +42 -0
  45. package/cjs/CascadeTree/hooks/useSearch.d.ts +17 -0
  46. package/cjs/CascadeTree/hooks/useSearch.js +59 -0
  47. package/cjs/CascadeTree/hooks/useSelect.d.ts +23 -0
  48. package/cjs/CascadeTree/hooks/useSelect.js +64 -0
  49. package/cjs/CascadeTree/index.d.ts +4 -0
  50. package/cjs/CascadeTree/index.js +9 -0
  51. package/cjs/CascadeTree/types.d.ts +66 -0
  52. package/cjs/CascadeTree/types.js +2 -0
  53. package/cjs/CascadeTree/utils.d.ts +32 -0
  54. package/cjs/CascadeTree/utils.js +66 -0
  55. package/cjs/Cascader/Cascader.d.ts +57 -26
  56. package/cjs/Cascader/Cascader.js +180 -247
  57. package/cjs/Cascader/useActive.d.ts +15 -0
  58. package/cjs/Cascader/useActive.js +43 -0
  59. package/cjs/Checkbox/Checkbox.d.ts +67 -25
  60. package/cjs/Checkbox/Checkbox.js +36 -26
  61. package/cjs/InlineEdit/InlineEdit.d.ts +1 -1
  62. package/cjs/InputPicker/InputPicker.js +2 -2
  63. package/cjs/InputPicker/InputPickerContext.d.ts +1 -1
  64. package/cjs/Loader/Loader.js +5 -4
  65. package/cjs/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  66. package/cjs/MultiCascadeTree/MultiCascadeTree.js +131 -0
  67. package/cjs/MultiCascadeTree/SearchView.d.ts +17 -0
  68. package/cjs/MultiCascadeTree/SearchView.js +117 -0
  69. package/cjs/MultiCascadeTree/TreeView.d.ts +22 -0
  70. package/cjs/{MultiCascader → MultiCascadeTree}/TreeView.js +22 -21
  71. package/cjs/MultiCascadeTree/hooks/index.d.ts +5 -0
  72. package/cjs/MultiCascadeTree/hooks/index.js +16 -0
  73. package/cjs/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  74. package/cjs/MultiCascadeTree/hooks/useCascadeValue.js +202 -0
  75. package/cjs/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  76. package/cjs/MultiCascadeTree/hooks/useColumnData.js +52 -0
  77. package/cjs/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  78. package/cjs/MultiCascadeTree/hooks/useFlattenData.js +33 -0
  79. package/cjs/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  80. package/cjs/MultiCascadeTree/hooks/useSearch.js +52 -0
  81. package/cjs/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  82. package/cjs/MultiCascadeTree/hooks/useSelect.js +83 -0
  83. package/cjs/MultiCascadeTree/index.d.ts +4 -0
  84. package/cjs/MultiCascadeTree/index.js +9 -0
  85. package/cjs/MultiCascadeTree/types.d.ts +26 -0
  86. package/cjs/MultiCascadeTree/types.js +2 -0
  87. package/cjs/MultiCascadeTree/utils.d.ts +37 -0
  88. package/cjs/MultiCascadeTree/utils.js +140 -0
  89. package/cjs/MultiCascader/MultiCascader.d.ts +57 -29
  90. package/cjs/MultiCascader/MultiCascader.js +175 -287
  91. package/cjs/Radio/Radio.d.ts +42 -16
  92. package/cjs/Radio/Radio.js +42 -37
  93. package/cjs/RadioGroup/RadioGroup.d.ts +1 -1
  94. package/cjs/RadioGroup/RadioGroup.js +3 -3
  95. package/cjs/TagPicker/index.js +1 -1
  96. package/cjs/Tree/Tree.d.ts +4 -4
  97. package/cjs/index.d.ts +6 -1
  98. package/cjs/index.js +8 -3
  99. package/cjs/internals/Picker/ListCheckItem.d.ts +2 -11
  100. package/cjs/internals/Picker/ListCheckItem.js +8 -6
  101. package/cjs/internals/Picker/PickerToggle.d.ts +4 -5
  102. package/cjs/toaster/ToastContainer.d.ts +9 -2
  103. package/cjs/toaster/index.d.ts +0 -1
  104. package/cjs/toaster/index.js +1 -3
  105. package/cjs/useToaster/index.d.ts +2 -0
  106. package/cjs/useToaster/index.js +9 -0
  107. package/cjs/{toaster → useToaster}/useToaster.d.ts +4 -4
  108. package/cjs/{toaster → useToaster}/useToaster.js +4 -4
  109. package/cjs/utils/index.d.ts +1 -0
  110. package/cjs/utils/index.js +5 -2
  111. package/dist/rsuite-no-reset-rtl.css +322 -124
  112. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  113. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  114. package/dist/rsuite-no-reset.css +322 -124
  115. package/dist/rsuite-no-reset.min.css +1 -1
  116. package/dist/rsuite-no-reset.min.css.map +1 -1
  117. package/dist/rsuite-rtl.css +322 -124
  118. package/dist/rsuite-rtl.min.css +1 -1
  119. package/dist/rsuite-rtl.min.css.map +1 -1
  120. package/dist/rsuite.css +322 -124
  121. package/dist/rsuite.js +248 -50
  122. package/dist/rsuite.js.map +1 -1
  123. package/dist/rsuite.min.css +1 -1
  124. package/dist/rsuite.min.css.map +1 -1
  125. package/dist/rsuite.min.js +1 -1
  126. package/dist/rsuite.min.js.map +1 -1
  127. package/esm/@types/common.d.ts +12 -14
  128. package/esm/CascadeTree/CascadeTree.d.ts +16 -0
  129. package/esm/CascadeTree/CascadeTree.js +167 -0
  130. package/esm/CascadeTree/SearchView.d.ts +17 -0
  131. package/esm/CascadeTree/SearchView.js +100 -0
  132. package/esm/CascadeTree/TreeView.d.ts +20 -0
  133. package/esm/{Cascader → CascadeTree}/TreeView.js +42 -33
  134. package/esm/CascadeTree/hooks/index.d.ts +3 -0
  135. package/esm/CascadeTree/hooks/index.js +4 -0
  136. package/esm/{Cascader/utils.d.ts → CascadeTree/hooks/usePaths.d.ts} +3 -25
  137. package/esm/CascadeTree/hooks/usePaths.js +36 -0
  138. package/esm/CascadeTree/hooks/useSearch.d.ts +17 -0
  139. package/esm/CascadeTree/hooks/useSearch.js +54 -0
  140. package/esm/CascadeTree/hooks/useSelect.d.ts +23 -0
  141. package/esm/CascadeTree/hooks/useSelect.js +59 -0
  142. package/esm/CascadeTree/index.d.ts +4 -0
  143. package/esm/CascadeTree/index.js +3 -0
  144. package/esm/CascadeTree/types.d.ts +66 -0
  145. package/esm/CascadeTree/types.js +1 -0
  146. package/esm/CascadeTree/utils.d.ts +32 -0
  147. package/esm/CascadeTree/utils.js +61 -0
  148. package/esm/Cascader/Cascader.d.ts +57 -26
  149. package/esm/Cascader/Cascader.js +167 -233
  150. package/esm/Cascader/useActive.d.ts +15 -0
  151. package/esm/Cascader/useActive.js +37 -0
  152. package/esm/Checkbox/Checkbox.d.ts +67 -25
  153. package/esm/Checkbox/Checkbox.js +38 -28
  154. package/esm/InlineEdit/InlineEdit.d.ts +1 -1
  155. package/esm/InputPicker/InputPicker.js +2 -2
  156. package/esm/InputPicker/InputPickerContext.d.ts +1 -1
  157. package/esm/Loader/Loader.js +6 -5
  158. package/esm/MultiCascadeTree/MultiCascadeTree.d.ts +9 -0
  159. package/esm/MultiCascadeTree/MultiCascadeTree.js +125 -0
  160. package/esm/MultiCascadeTree/SearchView.d.ts +17 -0
  161. package/esm/MultiCascadeTree/SearchView.js +111 -0
  162. package/esm/MultiCascadeTree/TreeView.d.ts +22 -0
  163. package/esm/{MultiCascader → MultiCascadeTree}/TreeView.js +22 -21
  164. package/esm/MultiCascadeTree/hooks/index.d.ts +5 -0
  165. package/esm/MultiCascadeTree/hooks/index.js +6 -0
  166. package/esm/MultiCascadeTree/hooks/useCascadeValue.d.ts +18 -0
  167. package/esm/MultiCascadeTree/hooks/useCascadeValue.js +197 -0
  168. package/esm/MultiCascadeTree/hooks/useColumnData.d.ts +16 -0
  169. package/esm/MultiCascadeTree/hooks/useColumnData.js +46 -0
  170. package/esm/MultiCascadeTree/hooks/useFlattenData.d.ts +9 -0
  171. package/esm/MultiCascadeTree/hooks/useFlattenData.js +28 -0
  172. package/esm/MultiCascadeTree/hooks/useSearch.d.ts +17 -0
  173. package/esm/MultiCascadeTree/hooks/useSearch.js +47 -0
  174. package/esm/MultiCascadeTree/hooks/useSelect.d.ts +19 -0
  175. package/esm/MultiCascadeTree/hooks/useSelect.js +77 -0
  176. package/esm/MultiCascadeTree/index.d.ts +4 -0
  177. package/esm/MultiCascadeTree/index.js +3 -0
  178. package/esm/MultiCascadeTree/types.d.ts +26 -0
  179. package/esm/MultiCascadeTree/types.js +1 -0
  180. package/esm/MultiCascadeTree/utils.d.ts +37 -0
  181. package/esm/MultiCascadeTree/utils.js +130 -0
  182. package/esm/MultiCascader/MultiCascader.d.ts +57 -29
  183. package/esm/MultiCascader/MultiCascader.js +168 -279
  184. package/esm/Radio/Radio.d.ts +42 -16
  185. package/esm/Radio/Radio.js +43 -38
  186. package/esm/RadioGroup/RadioGroup.d.ts +1 -1
  187. package/esm/RadioGroup/RadioGroup.js +5 -5
  188. package/esm/TagPicker/index.js +1 -1
  189. package/esm/Tree/Tree.d.ts +4 -4
  190. package/esm/index.d.ts +6 -1
  191. package/esm/index.js +5 -1
  192. package/esm/internals/Picker/ListCheckItem.d.ts +2 -11
  193. package/esm/internals/Picker/ListCheckItem.js +8 -6
  194. package/esm/internals/Picker/PickerToggle.d.ts +4 -5
  195. package/esm/toaster/ToastContainer.d.ts +9 -2
  196. package/esm/toaster/index.d.ts +0 -1
  197. package/esm/toaster/index.js +0 -1
  198. package/esm/useToaster/index.d.ts +2 -0
  199. package/esm/useToaster/index.js +3 -0
  200. package/esm/{toaster → useToaster}/useToaster.d.ts +4 -4
  201. package/esm/{toaster → useToaster}/useToaster.js +4 -4
  202. package/esm/utils/index.d.ts +1 -0
  203. package/esm/utils/index.js +2 -1
  204. package/internals/Picker/styles/index.less +1 -1
  205. package/package.json +1 -1
  206. package/styles/index.less +2 -0
  207. package/useToaster/package.json +7 -0
  208. package/useToaster/styles/index.css +239 -0
  209. package/useToaster/styles/index.less +1 -0
  210. package/cjs/Cascader/DropdownMenu.d.ts +0 -24
  211. package/cjs/Cascader/DropdownMenu.js +0 -175
  212. package/cjs/Cascader/TreeView.d.ts +0 -24
  213. package/cjs/Cascader/utils.js +0 -79
  214. package/cjs/MultiCascader/TreeView.d.ts +0 -25
  215. package/cjs/MultiCascader/utils.d.ts +0 -71
  216. package/cjs/MultiCascader/utils.js +0 -382
  217. package/esm/Cascader/DropdownMenu.d.ts +0 -24
  218. package/esm/Cascader/DropdownMenu.js +0 -168
  219. package/esm/Cascader/TreeView.d.ts +0 -24
  220. package/esm/Cascader/utils.js +0 -74
  221. package/esm/MultiCascader/TreeView.d.ts +0 -25
  222. package/esm/MultiCascader/utils.d.ts +0 -71
  223. package/esm/MultiCascader/utils.js +0 -369
@@ -0,0 +1,43 @@
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 _react = require("react");
8
+ var _useEventCallback = _interopRequireDefault(require("../utils/useEventCallback"));
9
+ var useActive = function useActive(props) {
10
+ var onOpen = props.onOpen,
11
+ onClose = props.onClose,
12
+ onEntered = props.onEntered,
13
+ onExited = props.onExited,
14
+ target = props.target,
15
+ setSearchKeyword = props.setSearchKeyword; // Use component active state to support keyboard events.
16
+ var _useState = (0, _react.useState)(false),
17
+ active = _useState[0],
18
+ setActive = _useState[1];
19
+ var handleEntered = (0, _useEventCallback.default)(function (node) {
20
+ onEntered === null || onEntered === void 0 ? void 0 : onEntered(node);
21
+ if (!target.current) {
22
+ return;
23
+ }
24
+ onOpen === null || onOpen === void 0 ? void 0 : onOpen();
25
+ setActive(true);
26
+ });
27
+ var handleExited = (0, _useEventCallback.default)(function (node) {
28
+ onExited === null || onExited === void 0 ? void 0 : onExited(node);
29
+ if (!target.current) {
30
+ return;
31
+ }
32
+ onClose === null || onClose === void 0 ? void 0 : onClose();
33
+ setActive(false);
34
+ setSearchKeyword('');
35
+ });
36
+ return {
37
+ active: active,
38
+ handleEntered: handleEntered,
39
+ handleExited: handleExited
40
+ };
41
+ };
42
+ var _default = useActive;
43
+ exports.default = _default;
@@ -1,43 +1,85 @@
1
1
  import React from 'react';
2
- import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import { WithAsProps, RsRefForwardingComponent, TypeAttributes } from '../@types/common';
3
3
  export declare type ValueType = string | number;
4
- export interface CheckboxProps<V = ValueType> extends WithAsProps {
5
- /** HTML title */
6
- title?: string;
7
- /** Inline layout */
8
- inline?: boolean;
9
- /** A checkbox can appear disabled and be unable to change states */
4
+ export interface CheckboxProps<V = ValueType> extends WithAsProps, Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
5
+ /**
6
+ * The color of the checkbox when checked or indeterminate
7
+ *
8
+ * @version 5.56.0
9
+ */
10
+ color?: TypeAttributes.Color;
11
+ /**
12
+ * Whether to show checkbox
13
+ *
14
+ * @private Used in MultiCascader
15
+ */
16
+ checkable?: boolean;
17
+ /**
18
+ * A checkbox can appear disabled and be unable to change states
19
+ */
10
20
  disabled?: boolean;
11
- /** Make the control readonly */
21
+ /**
22
+ * Make the control readonly
23
+ */
12
24
  readOnly?: boolean;
13
- /** Render the control as plain text */
25
+ /**
26
+ * Render the control as plain text
27
+ */
14
28
  plaintext?: boolean;
15
- /** Whether or not checkbox is checked. */
29
+ /**
30
+ * Whether or not checkbox is checked.
31
+ */
16
32
  checked?: boolean;
17
- /** The initial value of checked. */
33
+ /**
34
+ * The initial value of checked.
35
+ */
18
36
  defaultChecked?: boolean;
19
- /** Whether or not checkbox is indeterminate. */
37
+ /**
38
+ * Whether or not checkbox is indeterminate.
39
+ */
20
40
  indeterminate?: boolean;
21
- /** Attributes applied to the input element. */
41
+ /**
42
+ * Attributes applied to the input element.
43
+ */
22
44
  inputProps?: React.HTMLAttributes<HTMLInputElement>;
23
- /** Pass a ref to the input element. */
45
+ /**
46
+ * Pass a ref to the input element.
47
+ */
24
48
  inputRef?: React.Ref<any>;
25
- /** The HTML input value. */
49
+ /**
50
+ * Inline layout
51
+ *
52
+ * @private Used in CheckboxGroup
53
+ */
54
+ inline?: boolean;
55
+ /**
56
+ * The HTML input value.
57
+ */
26
58
  value?: V;
27
- /** A checkbox can receive focus. */
28
- tabIndex?: number;
29
- /** Whether to show checkbox */
30
- checkable?: boolean;
31
- /** Used for the name of the form */
59
+ /**
60
+ * Used for the name of the form
61
+ */
32
62
  name?: string;
33
- /** Called when the user attempts to change the checked state. */
63
+ /**
64
+ * Whether the label is clickable
65
+ *
66
+ * @private Used in MultiCascader
67
+ */
68
+ labelClickable?: boolean;
69
+ /**
70
+ * Called when the user attempts to change the checked state.
71
+ */
34
72
  onChange?: (value: V | undefined, checked: boolean, event: React.ChangeEvent<HTMLInputElement>) => void;
35
- /** Called when the checkbox or label is clicked. */
73
+ /**
74
+ * Called when the checkbox or label is clicked.
75
+ */
36
76
  onClick?: (event: React.SyntheticEvent) => void;
37
- /** Called when the checkbox is clicked. */
77
+ /**
78
+ * Called when the checkbox is clicked.
79
+ *
80
+ * @private Used in MultiCascader
81
+ */
38
82
  onCheckboxClick?: (event: React.SyntheticEvent) => void;
39
- /** Called when the user presses down a key. */
40
- onKeyDown?: (event: React.KeyboardEvent) => void;
41
83
  }
42
84
  /**
43
85
  * The Checkbox component is used for selecting multiple options from a set.
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _utils = require("../utils");
14
14
  var _CheckboxGroup = require("../CheckboxGroup");
15
15
  var _propTypes2 = require("../internals/propTypes");
16
- var _templateObject, _templateObject2, _templateObject3;
16
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
17
17
  /**
18
18
  * The Checkbox component is used for selecting multiple options from a set.
19
19
  * @see https://rsuitejs.com/components/checkbox
@@ -36,12 +36,15 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
36
  classPrefix = _props$classPrefix === void 0 ? 'checkbox' : _props$classPrefix,
37
37
  _props$checkable = props.checkable,
38
38
  checkable = _props$checkable === void 0 ? true : _props$checkable,
39
+ color = props.color,
39
40
  _props$defaultChecked = props.defaultChecked,
40
41
  defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,
41
42
  title = props.title,
42
43
  inputRef = props.inputRef,
43
44
  inputProps = props.inputProps,
44
45
  indeterminate = props.indeterminate,
46
+ _props$labelClickable = props.labelClickable,
47
+ labelClickable = _props$labelClickable === void 0 ? true : _props$labelClickable,
45
48
  _props$tabIndex = props.tabIndex,
46
49
  tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,
47
50
  _props$disabled = props.disabled,
@@ -58,7 +61,7 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
58
61
  onClick = props.onClick,
59
62
  onCheckboxClick = props.onCheckboxClick,
60
63
  onChange = props.onChange,
61
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "checked", "className", "children", "classPrefix", "checkable", "defaultChecked", "title", "inputRef", "inputProps", "indeterminate", "tabIndex", "disabled", "readOnly", "plaintext", "inline", "name", "value", "onClick", "onCheckboxClick", "onChange"]);
64
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "checked", "className", "children", "classPrefix", "checkable", "color", "defaultChecked", "title", "inputRef", "inputProps", "indeterminate", "labelClickable", "tabIndex", "disabled", "readOnly", "plaintext", "inline", "name", "value", "onClick", "onCheckboxClick", "onChange"]);
62
65
  var _useControlled = (0, _utils.useControlled)(controlledChecked, defaultChecked),
63
66
  selfChecked = _useControlled[0],
64
67
  setSelfChecked = _useControlled[1],
@@ -78,7 +81,7 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
78
81
  merge = _useClassNames.merge,
79
82
  prefix = _useClassNames.prefix,
80
83
  withClassPrefix = _useClassNames.withClassPrefix;
81
- var classes = merge(className, withClassPrefix({
84
+ var classes = merge(className, withClassPrefix(color, {
82
85
  inline: inline,
83
86
  indeterminate: indeterminate,
84
87
  disabled: disabled,
@@ -93,7 +96,8 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
93
96
  // In uncontrolled situations, use defaultChecked instead of checked
94
97
  htmlInputProps[controlled ? 'checked' : 'defaultChecked'] = checked;
95
98
  }
96
- var handleChange = (0, _react.useCallback)(function (event) {
99
+ var checkboxRef = (0, _react.useRef)(null);
100
+ var handleChange = (0, _utils.useEventCallback)(function (event) {
97
101
  var nextChecked = event.target.checked;
98
102
  if (disabled || readOnly) {
99
103
  return;
@@ -101,30 +105,34 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
101
105
  setSelfChecked(nextChecked);
102
106
  onChange === null || onChange === void 0 ? void 0 : onChange(value, nextChecked, event);
103
107
  onGroupChange === null || onGroupChange === void 0 ? void 0 : onGroupChange(value, nextChecked, event);
104
- }, [disabled, readOnly, setSelfChecked, onChange, value, onGroupChange]);
108
+ });
109
+ var handleLabelClick = (0, _utils.useEventCallback)(function (event) {
110
+ // Prevent check when label is not clickable
111
+ if (!labelClickable && event.target !== checkboxRef.current) {
112
+ event.preventDefault();
113
+ }
114
+ });
115
+ var labelId = (0, _utils.useUniqueId)('label-');
105
116
  if (plaintext) {
106
117
  return checked ? /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, restProps, {
107
118
  ref: ref,
108
119
  className: classes
109
120
  }), children) : null;
110
121
  }
111
- var input = /*#__PURE__*/_react.default.createElement("span", {
112
- className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["wrapper"]))),
113
- onClick: onCheckboxClick,
114
- "aria-disabled": disabled
122
+ var control = /*#__PURE__*/_react.default.createElement("span", {
123
+ className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["control"])))
115
124
  }, /*#__PURE__*/_react.default.createElement("input", (0, _extends2.default)({}, htmlInputProps, inputProps, {
125
+ "aria-disabled": disabled,
126
+ "aria-checked": indeterminate ? 'mixed' : checked,
127
+ "aria-labelledby": labelId,
116
128
  name: name,
117
129
  value: value,
118
130
  type: "checkbox",
119
- ref: inputRef,
131
+ ref: (0, _utils.mergeRefs)(checkboxRef, inputRef),
120
132
  tabIndex: tabIndex,
121
133
  readOnly: readOnly,
122
134
  disabled: disabled,
123
- "aria-disabled": disabled,
124
- "aria-checked": indeterminate ? 'mixed' : checked,
125
- onClick: function onClick(event) {
126
- return event.stopPropagation();
127
- },
135
+ onClick: onCheckboxClick,
128
136
  onChange: handleChange
129
137
  })), /*#__PURE__*/_react.default.createElement("span", {
130
138
  className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["inner"]))),
@@ -138,28 +146,30 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
138
146
  }), /*#__PURE__*/_react.default.createElement("div", {
139
147
  className: prefix(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["checker"])))
140
148
  }, /*#__PURE__*/_react.default.createElement("label", {
141
- title: title
142
- }, checkable ? input : null, children)));
149
+ title: title,
150
+ onClick: handleLabelClick
151
+ }, checkable ? control : null, /*#__PURE__*/_react.default.createElement("span", {
152
+ className: prefix(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["label"]))),
153
+ id: labelId
154
+ }, children))));
143
155
  });
144
156
  Checkbox.displayName = 'Checkbox';
145
157
  Checkbox.propTypes = {
146
158
  as: _propTypes.default.elementType,
147
- title: _propTypes.default.string,
159
+ checked: _propTypes.default.bool,
160
+ checkable: _propTypes.default.bool,
148
161
  className: _propTypes.default.string,
149
- inline: _propTypes.default.bool,
162
+ children: _propTypes.default.node,
163
+ classPrefix: _propTypes.default.string,
150
164
  disabled: _propTypes.default.bool,
151
- checked: _propTypes.default.bool,
152
165
  defaultChecked: _propTypes.default.bool,
166
+ inline: _propTypes.default.bool,
153
167
  indeterminate: _propTypes.default.bool,
154
- onChange: _propTypes.default.func,
155
- onClick: _propTypes.default.func,
156
168
  inputProps: _propTypes.default.any,
157
169
  inputRef: _propTypes2.refType,
158
170
  value: _propTypes.default.any,
159
- children: _propTypes.default.node,
160
- classPrefix: _propTypes.default.string,
161
- tabIndex: _propTypes.default.number,
162
- checkable: _propTypes.default.bool,
171
+ onChange: _propTypes.default.func,
172
+ onClick: _propTypes.default.func,
163
173
  onCheckboxClick: _propTypes.default.func
164
174
  };
165
175
  var _default = Checkbox;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
3
  import { type ChildrenProps } from './renderChildren';
4
- export interface InlineEditProps extends WithAsProps {
4
+ export interface InlineEditProps extends Omit<WithAsProps, 'children'> {
5
5
  /**
6
6
  * If true, the InlineEdit will be disabled.
7
7
  */
@@ -124,7 +124,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
124
124
  trigger = _useContext.trigger,
125
125
  disabledOptions = _useContext.disabledOptions,
126
126
  onTagRemove = _useContext.onTagRemove,
127
- renderMenuItemCheckbox = _useContext.renderMenuItemCheckbox;
127
+ renderCheckbox = _useContext.renderCheckbox;
128
128
  if (groupBy === valueKey || groupBy === labelKey) {
129
129
  throw Error('`groupBy` can not be equal to `valueKey` and `labelKey`');
130
130
  }
@@ -579,7 +579,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
579
579
  listItemClassPrefix: multi ? undefined : menuClassPrefix + "-item",
580
580
  listItemAs: multi ? _Picker.ListCheckItem : _Picker.ListItem,
581
581
  listItemProps: {
582
- renderMenuItemCheckbox: renderMenuItemCheckbox
582
+ renderCheckbox: renderCheckbox
583
583
  },
584
584
  activeItemValues: multi ? value : [value],
585
585
  focusItemValue: focusItemValue,
@@ -20,7 +20,7 @@ export interface InputPickerContextProps extends TagOnlyProps {
20
20
  */
21
21
  disabledOptions?: boolean;
22
22
  /** Custom render checkbox on menu item */
23
- renderMenuItemCheckbox?: (checkboxProps: CheckboxProps) => React.ReactNode;
23
+ renderCheckbox?: (checkboxProps: CheckboxProps) => React.ReactNode;
24
24
  }
25
25
  declare const InputPickerContext: React.Context<InputPickerContextProps>;
26
26
  export default InputPickerContext;
@@ -29,20 +29,20 @@ var Loader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
29
29
  content = props.content,
30
30
  size = props.size,
31
31
  rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "inverse", "backdrop", "speed", "center", "vertical", "content", "size"]);
32
- var hasContent = !!content;
33
32
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
34
33
  merge = _useClassNames.merge,
35
34
  withClassPrefix = _useClassNames.withClassPrefix,
36
35
  prefix = _useClassNames.prefix;
36
+ var labelId = (0, _utils.useUniqueId)('loader-label-');
37
37
  var classes = merge(className, prefix('wrapper', "speed-" + speed, size, {
38
38
  'backdrop-wrapper': backdrop,
39
- 'has-content': hasContent,
40
39
  vertical: vertical,
41
40
  inverse: inverse,
42
41
  center: center
43
42
  }));
44
43
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
45
- role: "progressbar"
44
+ role: "status",
45
+ "aria-labelledby": content ? labelId : undefined
46
46
  }, rest, {
47
47
  ref: ref,
48
48
  className: classes
@@ -52,7 +52,8 @@ var Loader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
52
52
  className: withClassPrefix()
53
53
  }, /*#__PURE__*/_react.default.createElement("span", {
54
54
  className: prefix('spin')
55
- }), hasContent && /*#__PURE__*/_react.default.createElement("span", {
55
+ }), content && /*#__PURE__*/_react.default.createElement("span", {
56
+ id: labelId,
56
57
  className: prefix('content')
57
58
  }, content)));
58
59
  });
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import type { DataItemValue } from '../@types/common';
3
+ import type { MultiCascadeTreeProps } from './types';
4
+ /**
5
+ * The `MultiCascadeTree` component is used to select multiple values from cascading options.
6
+ * @see https://rsuitejs.com/components/multi-cascade-tree/
7
+ */
8
+ declare const MultiCascadeTree: React.ForwardRefExoticComponent<MultiCascadeTreeProps<DataItemValue, DataItemValue[]> & React.RefAttributes<unknown>>;
9
+ export default MultiCascadeTree;
@@ -0,0 +1,131 @@
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 _TreeView = _interopRequireDefault(require("./TreeView"));
11
+ var _hooks = require("./hooks");
12
+ var _utils = require("../utils");
13
+ var _SearchView = _interopRequireDefault(require("./SearchView"));
14
+ var emptyArray = [];
15
+
16
+ /**
17
+ * The `MultiCascadeTree` component is used to select multiple values from cascading options.
18
+ * @see https://rsuitejs.com/components/multi-cascade-tree/
19
+ */
20
+ var MultiCascadeTree = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
21
+ var _props$as = props.as,
22
+ Component = _props$as === void 0 ? 'div' : _props$as,
23
+ _props$data = props.data,
24
+ data = _props$data === void 0 ? emptyArray : _props$data,
25
+ defaultValue = props.defaultValue,
26
+ className = props.className,
27
+ _props$classPrefix = props.classPrefix,
28
+ classPrefix = _props$classPrefix === void 0 ? 'cascade-tree' : _props$classPrefix,
29
+ valueProp = props.value,
30
+ _props$valueKey = props.valueKey,
31
+ valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
32
+ _props$labelKey = props.labelKey,
33
+ labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
34
+ _props$childrenKey = props.childrenKey,
35
+ childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
36
+ _props$disabledItemVa = props.disabledItemValues,
37
+ disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
38
+ _props$cascade = props.cascade,
39
+ cascade = _props$cascade === void 0 ? true : _props$cascade,
40
+ columnWidth = props.columnWidth,
41
+ columnHeight = props.columnHeight,
42
+ searchable = props.searchable,
43
+ _props$uncheckableIte = props.uncheckableItemValues,
44
+ uncheckableItemValues = _props$uncheckableIte === void 0 ? emptyArray : _props$uncheckableIte,
45
+ getChildren = props.getChildren,
46
+ renderColumn = props.renderColumn,
47
+ renderTreeNode = props.renderTreeNode,
48
+ onSelect = props.onSelect,
49
+ onCheck = props.onCheck,
50
+ onChange = props.onChange,
51
+ onSearch = props.onSearch,
52
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "defaultValue", "className", "classPrefix", "value", "valueKey", "labelKey", "childrenKey", "disabledItemValues", "cascade", "columnWidth", "columnHeight", "searchable", "uncheckableItemValues", "getChildren", "renderColumn", "renderTreeNode", "onSelect", "onCheck", "onChange", "onSearch"]);
53
+ var itemKeys = {
54
+ childrenKey: childrenKey,
55
+ labelKey: labelKey,
56
+ valueKey: valueKey
57
+ };
58
+ var _useSelect = (0, _hooks.useSelect)({
59
+ data: data,
60
+ childrenKey: childrenKey,
61
+ labelKey: labelKey,
62
+ valueKey: valueKey,
63
+ onSelect: onSelect,
64
+ getChildren: getChildren
65
+ }),
66
+ selectedPaths = _useSelect.selectedPaths,
67
+ flattenData = _useSelect.flattenData,
68
+ columnData = _useSelect.columnData,
69
+ handleSelect = _useSelect.handleSelect;
70
+ var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
71
+ controlledValue = _useControlled[0];
72
+ var cascadeValueProps = (0, _extends2.default)({}, itemKeys, {
73
+ uncheckableItemValues: uncheckableItemValues,
74
+ cascade: cascade,
75
+ value: controlledValue,
76
+ onCheck: onCheck,
77
+ onChange: onChange
78
+ });
79
+ var _useCascadeValue = (0, _hooks.useCascadeValue)(cascadeValueProps, flattenData),
80
+ value = _useCascadeValue.value,
81
+ handleCheck = _useCascadeValue.handleCheck;
82
+ var _useSearch = (0, _hooks.useSearch)({
83
+ labelKey: labelKey,
84
+ valueKey: valueKey,
85
+ childrenKey: childrenKey,
86
+ flattenedData: flattenData,
87
+ uncheckableItemValues: uncheckableItemValues,
88
+ onSearch: onSearch
89
+ }),
90
+ items = _useSearch.items,
91
+ searchKeyword = _useSearch.searchKeyword,
92
+ handleSearch = _useSearch.handleSearch;
93
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
94
+ withClassPrefix = _useClassNames.withClassPrefix,
95
+ merge = _useClassNames.merge;
96
+ var classes = merge(className, withClassPrefix('multi'));
97
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
98
+ ref: ref,
99
+ className: classes
100
+ }, rest), searchable && /*#__PURE__*/_react.default.createElement(_SearchView.default, {
101
+ data: items,
102
+ value: value,
103
+ searchKeyword: searchKeyword,
104
+ valueKey: valueKey,
105
+ labelKey: labelKey,
106
+ childrenKey: childrenKey,
107
+ disabledItemValues: disabledItemValues,
108
+ onCheck: handleCheck,
109
+ onSearch: handleSearch
110
+ }), !searchKeyword && /*#__PURE__*/_react.default.createElement(_TreeView.default, {
111
+ cascade: cascade,
112
+ columnWidth: columnWidth,
113
+ columnHeight: columnHeight,
114
+ uncheckableItemValues: uncheckableItemValues,
115
+ disabledItemValues: disabledItemValues,
116
+ valueKey: valueKey,
117
+ labelKey: labelKey,
118
+ childrenKey: childrenKey,
119
+ classPrefix: classPrefix,
120
+ cascadeData: columnData,
121
+ cascadePaths: selectedPaths,
122
+ value: value,
123
+ onSelect: handleSelect,
124
+ onCheck: handleCheck,
125
+ renderColumn: renderColumn,
126
+ renderTreeNode: renderTreeNode
127
+ }));
128
+ });
129
+ MultiCascadeTree.displayName = 'MultiCascadeTree';
130
+ var _default = MultiCascadeTree;
131
+ exports.default = _default;
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { ItemDataType, WithAsProps } from '../@types/common';
3
+ interface SearchViewProps<T> extends WithAsProps {
4
+ searchKeyword: string;
5
+ labelKey: string;
6
+ valueKey: string;
7
+ childrenKey: string;
8
+ value: T[];
9
+ data: ItemDataType<T>[];
10
+ disabledItemValues: any[];
11
+ cascade?: boolean;
12
+ onSearch: (value: string, event: React.ChangeEvent<HTMLInputElement>) => void;
13
+ onCheck: (item: ItemDataType<T>, event: React.SyntheticEvent, checked: boolean) => void;
14
+ inputRef?: React.RefObject<HTMLInputElement>;
15
+ }
16
+ declare function SearchView<T>(props: SearchViewProps<T>): JSX.Element;
17
+ export default SearchView;
@@ -0,0 +1,117 @@
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 _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _utils = require("../utils");
11
+ var _treeUtils = require("../utils/treeUtils");
12
+ var _SearchBox = _interopRequireDefault(require("../internals/SearchBox"));
13
+ var _Checkbox = _interopRequireDefault(require("../Checkbox"));
14
+ var _utils2 = require("./utils");
15
+ var _utils3 = require("../CascadeTree/utils");
16
+ function SearchView(props) {
17
+ var _props$as = props.as,
18
+ Component = _props$as === void 0 ? 'div' : _props$as,
19
+ _props$classPrefix = props.classPrefix,
20
+ classPrefix = _props$classPrefix === void 0 ? 'cascade-search-view' : _props$classPrefix,
21
+ className = props.className,
22
+ searchKeyword = props.searchKeyword,
23
+ childrenKey = props.childrenKey,
24
+ labelKey = props.labelKey,
25
+ valueKey = props.valueKey,
26
+ value = props.value,
27
+ data = props.data,
28
+ disabledItemValues = props.disabledItemValues,
29
+ inputRef = props.inputRef,
30
+ cascade = props.cascade,
31
+ onSearch = props.onSearch,
32
+ onCheck = props.onCheck,
33
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "searchKeyword", "childrenKey", "labelKey", "valueKey", "value", "data", "disabledItemValues", "inputRef", "cascade", "onSearch", "onCheck"]);
34
+ var _useClassNames = (0, _utils.useClassNames)(classPrefix),
35
+ merge = _useClassNames.merge,
36
+ prefix = _useClassNames.prefix,
37
+ withClassPrefix = _useClassNames.withClassPrefix,
38
+ rootPrefix = _useClassNames.rootPrefix;
39
+ var classes = merge(className, withClassPrefix());
40
+ var _useCustom = (0, _utils.useCustom)('Picker'),
41
+ locale = _useCustom.locale;
42
+ var renderSearchRow = function renderSearchRow(item, key) {
43
+ var _extends2;
44
+ var nodes = (0, _treeUtils.getNodeParents)(item);
45
+ var label = (0, _utils3.highlightLabel)({
46
+ item: item,
47
+ labelKey: labelKey,
48
+ searchKeyword: searchKeyword,
49
+ render: function render(patch, index) {
50
+ return /*#__PURE__*/_react.default.createElement("span", {
51
+ key: index,
52
+ className: prefix('match')
53
+ }, patch);
54
+ }
55
+ });
56
+ nodes.push((0, _extends3.default)({}, item, (_extends2 = {}, _extends2[labelKey] = label, _extends2)));
57
+ var active = value.some(function (value) {
58
+ if (cascade) {
59
+ return nodes.some(function (node) {
60
+ return node[valueKey] === value;
61
+ });
62
+ }
63
+ return item[valueKey] === value;
64
+ });
65
+ var disabled = disabledItemValues.some(function (value) {
66
+ return nodes.some(function (node) {
67
+ return node[valueKey] === value;
68
+ });
69
+ });
70
+ var rowClasses = prefix('row', {
71
+ 'row-disabled': disabled
72
+ });
73
+ var indeterminate = cascade && !active && (0, _utils2.isSomeChildChecked)(item, value, {
74
+ valueKey: valueKey,
75
+ childrenKey: childrenKey
76
+ });
77
+ var handleChange = function handleChange(_value, checked, event) {
78
+ onCheck === null || onCheck === void 0 ? void 0 : onCheck(item, event, checked);
79
+ };
80
+ return /*#__PURE__*/_react.default.createElement("div", {
81
+ role: "treeitem",
82
+ "aria-disabled": disabled,
83
+ key: key,
84
+ className: rowClasses,
85
+ "data-key": item[valueKey]
86
+ }, /*#__PURE__*/_react.default.createElement(_Checkbox.default, {
87
+ disabled: disabled,
88
+ checked: active,
89
+ value: item[valueKey],
90
+ indeterminate: indeterminate,
91
+ onChange: handleChange
92
+ }, /*#__PURE__*/_react.default.createElement("span", {
93
+ className: prefix('col-group')
94
+ }, nodes.map(function (node, index) {
95
+ return /*#__PURE__*/_react.default.createElement("span", {
96
+ key: "col-" + index,
97
+ className: prefix('col')
98
+ }, node[labelKey]);
99
+ }))));
100
+ };
101
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends3.default)({
102
+ className: classes
103
+ }, rest), /*#__PURE__*/_react.default.createElement(_SearchBox.default, {
104
+ placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
105
+ onChange: onSearch,
106
+ value: searchKeyword,
107
+ inputRef: inputRef
108
+ }), searchKeyword !== '' && /*#__PURE__*/_react.default.createElement("div", {
109
+ className: prefix('panel'),
110
+ "data-layer": 0,
111
+ role: "tree"
112
+ }, data.length ? data.map(renderSearchRow) : /*#__PURE__*/_react.default.createElement("div", {
113
+ className: merge(prefix('none'), rootPrefix('picker-none'))
114
+ }, locale.noResultsText)));
115
+ }
116
+ var _default = SearchView;
117
+ exports.default = _default;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { ItemDataType, WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
+ import type { CascadeColumn } from '../CascadeTree/types';
4
+ export interface TreeViewProps<T = any> extends WithAsProps {
5
+ disabledItemValues?: T[];
6
+ value: T[];
7
+ childrenKey: string;
8
+ valueKey: string;
9
+ labelKey: string;
10
+ columnWidth?: number;
11
+ columnHeight?: number | string;
12
+ cascade?: boolean;
13
+ cascadeData: (readonly ItemDataType<T>[])[];
14
+ cascadePaths?: ItemDataType<T>[];
15
+ uncheckableItemValues: T[];
16
+ renderTreeNode?: (node: React.ReactNode, item: ItemDataType<T>) => React.ReactNode;
17
+ renderColumn?: (childNodes: React.ReactNode, column: CascadeColumn<T>) => React.ReactNode;
18
+ onCheck?: (node: ItemDataType<T>, event: React.SyntheticEvent, checked: boolean) => void;
19
+ onSelect?: (node: ItemDataType<T>, cascadePaths: ItemDataType<T>[], event: React.SyntheticEvent) => void;
20
+ }
21
+ declare const TreeView: RsRefForwardingComponent<'div', TreeViewProps>;
22
+ export default TreeView;