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
@@ -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.
@@ -2,10 +2,10 @@
2
2
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- var _templateObject, _templateObject2, _templateObject3;
6
- import React, { useContext, useCallback, useMemo } from 'react';
5
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
6
+ import React, { useContext, useMemo, useRef } from 'react';
7
7
  import PropTypes from 'prop-types';
8
- import { useControlled, partitionHTMLProps, useClassNames } from '../utils';
8
+ import { useControlled, partitionHTMLProps, useClassNames, useEventCallback, useUniqueId, mergeRefs } from '../utils';
9
9
  import { CheckboxGroupContext } from '../CheckboxGroup';
10
10
  import { refType } from '../internals/propTypes';
11
11
  /**
@@ -30,12 +30,15 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
30
30
  classPrefix = _props$classPrefix === void 0 ? 'checkbox' : _props$classPrefix,
31
31
  _props$checkable = props.checkable,
32
32
  checkable = _props$checkable === void 0 ? true : _props$checkable,
33
+ color = props.color,
33
34
  _props$defaultChecked = props.defaultChecked,
34
35
  defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,
35
36
  title = props.title,
36
37
  inputRef = props.inputRef,
37
38
  inputProps = props.inputProps,
38
39
  indeterminate = props.indeterminate,
40
+ _props$labelClickable = props.labelClickable,
41
+ labelClickable = _props$labelClickable === void 0 ? true : _props$labelClickable,
39
42
  _props$tabIndex = props.tabIndex,
40
43
  tabIndex = _props$tabIndex === void 0 ? 0 : _props$tabIndex,
41
44
  _props$disabled = props.disabled,
@@ -52,7 +55,7 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
52
55
  onClick = props.onClick,
53
56
  onCheckboxClick = props.onCheckboxClick,
54
57
  onChange = props.onChange,
55
- rest = _objectWithoutPropertiesLoose(props, ["as", "checked", "className", "children", "classPrefix", "checkable", "defaultChecked", "title", "inputRef", "inputProps", "indeterminate", "tabIndex", "disabled", "readOnly", "plaintext", "inline", "name", "value", "onClick", "onCheckboxClick", "onChange"]);
58
+ rest = _objectWithoutPropertiesLoose(props, ["as", "checked", "className", "children", "classPrefix", "checkable", "color", "defaultChecked", "title", "inputRef", "inputProps", "indeterminate", "labelClickable", "tabIndex", "disabled", "readOnly", "plaintext", "inline", "name", "value", "onClick", "onCheckboxClick", "onChange"]);
56
59
  var _useControlled = useControlled(controlledChecked, defaultChecked),
57
60
  selfChecked = _useControlled[0],
58
61
  setSelfChecked = _useControlled[1],
@@ -72,7 +75,7 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
72
75
  merge = _useClassNames.merge,
73
76
  prefix = _useClassNames.prefix,
74
77
  withClassPrefix = _useClassNames.withClassPrefix;
75
- var classes = merge(className, withClassPrefix({
78
+ var classes = merge(className, withClassPrefix(color, {
76
79
  inline: inline,
77
80
  indeterminate: indeterminate,
78
81
  disabled: disabled,
@@ -87,7 +90,8 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
87
90
  // In uncontrolled situations, use defaultChecked instead of checked
88
91
  htmlInputProps[controlled ? 'checked' : 'defaultChecked'] = checked;
89
92
  }
90
- var handleChange = useCallback(function (event) {
93
+ var checkboxRef = useRef(null);
94
+ var handleChange = useEventCallback(function (event) {
91
95
  var nextChecked = event.target.checked;
92
96
  if (disabled || readOnly) {
93
97
  return;
@@ -95,30 +99,34 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
95
99
  setSelfChecked(nextChecked);
96
100
  onChange === null || onChange === void 0 ? void 0 : onChange(value, nextChecked, event);
97
101
  onGroupChange === null || onGroupChange === void 0 ? void 0 : onGroupChange(value, nextChecked, event);
98
- }, [disabled, readOnly, setSelfChecked, onChange, value, onGroupChange]);
102
+ });
103
+ var handleLabelClick = useEventCallback(function (event) {
104
+ // Prevent check when label is not clickable
105
+ if (!labelClickable && event.target !== checkboxRef.current) {
106
+ event.preventDefault();
107
+ }
108
+ });
109
+ var labelId = useUniqueId('label-');
99
110
  if (plaintext) {
100
111
  return checked ? /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {
101
112
  ref: ref,
102
113
  className: classes
103
114
  }), children) : null;
104
115
  }
105
- var input = /*#__PURE__*/React.createElement("span", {
106
- className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["wrapper"]))),
107
- onClick: onCheckboxClick,
108
- "aria-disabled": disabled
116
+ var control = /*#__PURE__*/React.createElement("span", {
117
+ className: prefix(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["control"])))
109
118
  }, /*#__PURE__*/React.createElement("input", _extends({}, htmlInputProps, inputProps, {
119
+ "aria-disabled": disabled,
120
+ "aria-checked": indeterminate ? 'mixed' : checked,
121
+ "aria-labelledby": labelId,
110
122
  name: name,
111
123
  value: value,
112
124
  type: "checkbox",
113
- ref: inputRef,
125
+ ref: mergeRefs(checkboxRef, inputRef),
114
126
  tabIndex: tabIndex,
115
127
  readOnly: readOnly,
116
128
  disabled: disabled,
117
- "aria-disabled": disabled,
118
- "aria-checked": indeterminate ? 'mixed' : checked,
119
- onClick: function onClick(event) {
120
- return event.stopPropagation();
121
- },
129
+ onClick: onCheckboxClick,
122
130
  onChange: handleChange
123
131
  })), /*#__PURE__*/React.createElement("span", {
124
132
  className: prefix(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["inner"]))),
@@ -132,28 +140,30 @@ var Checkbox = /*#__PURE__*/React.forwardRef(function (props, ref) {
132
140
  }), /*#__PURE__*/React.createElement("div", {
133
141
  className: prefix(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["checker"])))
134
142
  }, /*#__PURE__*/React.createElement("label", {
135
- title: title
136
- }, checkable ? input : null, children)));
143
+ title: title,
144
+ onClick: handleLabelClick
145
+ }, checkable ? control : null, /*#__PURE__*/React.createElement("span", {
146
+ className: prefix(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["label"]))),
147
+ id: labelId
148
+ }, children))));
137
149
  });
138
150
  Checkbox.displayName = 'Checkbox';
139
151
  Checkbox.propTypes = {
140
152
  as: PropTypes.elementType,
141
- title: PropTypes.string,
153
+ checked: PropTypes.bool,
154
+ checkable: PropTypes.bool,
142
155
  className: PropTypes.string,
143
- inline: PropTypes.bool,
156
+ children: PropTypes.node,
157
+ classPrefix: PropTypes.string,
144
158
  disabled: PropTypes.bool,
145
- checked: PropTypes.bool,
146
159
  defaultChecked: PropTypes.bool,
160
+ inline: PropTypes.bool,
147
161
  indeterminate: PropTypes.bool,
148
- onChange: PropTypes.func,
149
- onClick: PropTypes.func,
150
162
  inputProps: PropTypes.any,
151
163
  inputRef: refType,
152
164
  value: PropTypes.any,
153
- children: PropTypes.node,
154
- classPrefix: PropTypes.string,
155
- tabIndex: PropTypes.number,
156
- checkable: PropTypes.bool,
165
+ onChange: PropTypes.func,
166
+ onClick: PropTypes.func,
157
167
  onCheckboxClick: PropTypes.func
158
168
  };
159
169
  export 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
  */
@@ -118,7 +118,7 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
118
118
  trigger = _useContext.trigger,
119
119
  disabledOptions = _useContext.disabledOptions,
120
120
  onTagRemove = _useContext.onTagRemove,
121
- renderMenuItemCheckbox = _useContext.renderMenuItemCheckbox;
121
+ renderCheckbox = _useContext.renderCheckbox;
122
122
  if (groupBy === valueKey || groupBy === labelKey) {
123
123
  throw Error('`groupBy` can not be equal to `valueKey` and `labelKey`');
124
124
  }
@@ -573,7 +573,7 @@ var InputPicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
573
573
  listItemClassPrefix: multi ? undefined : menuClassPrefix + "-item",
574
574
  listItemAs: multi ? ListCheckItem : ListItem,
575
575
  listItemProps: {
576
- renderMenuItemCheckbox: renderMenuItemCheckbox
576
+ renderCheckbox: renderCheckbox
577
577
  },
578
578
  activeItemValues: multi ? value : [value],
579
579
  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;
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
4
  import React from 'react';
5
5
  import PropTypes from 'prop-types';
6
- import { useClassNames } from '../utils';
6
+ import { useClassNames, useUniqueId } from '../utils';
7
7
  import { oneOf } from '../internals/propTypes';
8
8
  /**
9
9
  * The `Loader` component is used to indicate the loading state of a page or a section.
@@ -24,20 +24,20 @@ var Loader = /*#__PURE__*/React.forwardRef(function (props, ref) {
24
24
  content = props.content,
25
25
  size = props.size,
26
26
  rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "inverse", "backdrop", "speed", "center", "vertical", "content", "size"]);
27
- var hasContent = !!content;
28
27
  var _useClassNames = useClassNames(classPrefix),
29
28
  merge = _useClassNames.merge,
30
29
  withClassPrefix = _useClassNames.withClassPrefix,
31
30
  prefix = _useClassNames.prefix;
31
+ var labelId = useUniqueId('loader-label-');
32
32
  var classes = merge(className, prefix('wrapper', "speed-" + speed, size, {
33
33
  'backdrop-wrapper': backdrop,
34
- 'has-content': hasContent,
35
34
  vertical: vertical,
36
35
  inverse: inverse,
37
36
  center: center
38
37
  }));
39
38
  return /*#__PURE__*/React.createElement(Component, _extends({
40
- role: "progressbar"
39
+ role: "status",
40
+ "aria-labelledby": content ? labelId : undefined
41
41
  }, rest, {
42
42
  ref: ref,
43
43
  className: classes
@@ -47,7 +47,8 @@ var Loader = /*#__PURE__*/React.forwardRef(function (props, ref) {
47
47
  className: withClassPrefix()
48
48
  }, /*#__PURE__*/React.createElement("span", {
49
49
  className: prefix('spin')
50
- }), hasContent && /*#__PURE__*/React.createElement("span", {
50
+ }), content && /*#__PURE__*/React.createElement("span", {
51
+ id: labelId,
51
52
  className: prefix('content')
52
53
  }, content)));
53
54
  });
@@ -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,125 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React from 'react';
5
+ import TreeView from './TreeView';
6
+ import { useCascadeValue, useSelect, useSearch } from './hooks';
7
+ import { useClassNames, useControlled } from '../utils';
8
+ import SearchView from './SearchView';
9
+ var emptyArray = [];
10
+
11
+ /**
12
+ * The `MultiCascadeTree` component is used to select multiple values from cascading options.
13
+ * @see https://rsuitejs.com/components/multi-cascade-tree/
14
+ */
15
+ var MultiCascadeTree = /*#__PURE__*/React.forwardRef(function (props, ref) {
16
+ var _props$as = props.as,
17
+ Component = _props$as === void 0 ? 'div' : _props$as,
18
+ _props$data = props.data,
19
+ data = _props$data === void 0 ? emptyArray : _props$data,
20
+ defaultValue = props.defaultValue,
21
+ className = props.className,
22
+ _props$classPrefix = props.classPrefix,
23
+ classPrefix = _props$classPrefix === void 0 ? 'cascade-tree' : _props$classPrefix,
24
+ valueProp = props.value,
25
+ _props$valueKey = props.valueKey,
26
+ valueKey = _props$valueKey === void 0 ? 'value' : _props$valueKey,
27
+ _props$labelKey = props.labelKey,
28
+ labelKey = _props$labelKey === void 0 ? 'label' : _props$labelKey,
29
+ _props$childrenKey = props.childrenKey,
30
+ childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
31
+ _props$disabledItemVa = props.disabledItemValues,
32
+ disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
33
+ _props$cascade = props.cascade,
34
+ cascade = _props$cascade === void 0 ? true : _props$cascade,
35
+ columnWidth = props.columnWidth,
36
+ columnHeight = props.columnHeight,
37
+ searchable = props.searchable,
38
+ _props$uncheckableIte = props.uncheckableItemValues,
39
+ uncheckableItemValues = _props$uncheckableIte === void 0 ? emptyArray : _props$uncheckableIte,
40
+ getChildren = props.getChildren,
41
+ renderColumn = props.renderColumn,
42
+ renderTreeNode = props.renderTreeNode,
43
+ onSelect = props.onSelect,
44
+ onCheck = props.onCheck,
45
+ onChange = props.onChange,
46
+ onSearch = props.onSearch,
47
+ rest = _objectWithoutPropertiesLoose(props, ["as", "data", "defaultValue", "className", "classPrefix", "value", "valueKey", "labelKey", "childrenKey", "disabledItemValues", "cascade", "columnWidth", "columnHeight", "searchable", "uncheckableItemValues", "getChildren", "renderColumn", "renderTreeNode", "onSelect", "onCheck", "onChange", "onSearch"]);
48
+ var itemKeys = {
49
+ childrenKey: childrenKey,
50
+ labelKey: labelKey,
51
+ valueKey: valueKey
52
+ };
53
+ var _useSelect = useSelect({
54
+ data: data,
55
+ childrenKey: childrenKey,
56
+ labelKey: labelKey,
57
+ valueKey: valueKey,
58
+ onSelect: onSelect,
59
+ getChildren: getChildren
60
+ }),
61
+ selectedPaths = _useSelect.selectedPaths,
62
+ flattenData = _useSelect.flattenData,
63
+ columnData = _useSelect.columnData,
64
+ handleSelect = _useSelect.handleSelect;
65
+ var _useControlled = useControlled(valueProp, defaultValue),
66
+ controlledValue = _useControlled[0];
67
+ var cascadeValueProps = _extends({}, itemKeys, {
68
+ uncheckableItemValues: uncheckableItemValues,
69
+ cascade: cascade,
70
+ value: controlledValue,
71
+ onCheck: onCheck,
72
+ onChange: onChange
73
+ });
74
+ var _useCascadeValue = useCascadeValue(cascadeValueProps, flattenData),
75
+ value = _useCascadeValue.value,
76
+ handleCheck = _useCascadeValue.handleCheck;
77
+ var _useSearch = useSearch({
78
+ labelKey: labelKey,
79
+ valueKey: valueKey,
80
+ childrenKey: childrenKey,
81
+ flattenedData: flattenData,
82
+ uncheckableItemValues: uncheckableItemValues,
83
+ onSearch: onSearch
84
+ }),
85
+ items = _useSearch.items,
86
+ searchKeyword = _useSearch.searchKeyword,
87
+ handleSearch = _useSearch.handleSearch;
88
+ var _useClassNames = useClassNames(classPrefix),
89
+ withClassPrefix = _useClassNames.withClassPrefix,
90
+ merge = _useClassNames.merge;
91
+ var classes = merge(className, withClassPrefix('multi'));
92
+ return /*#__PURE__*/React.createElement(Component, _extends({
93
+ ref: ref,
94
+ className: classes
95
+ }, rest), searchable && /*#__PURE__*/React.createElement(SearchView, {
96
+ data: items,
97
+ value: value,
98
+ searchKeyword: searchKeyword,
99
+ valueKey: valueKey,
100
+ labelKey: labelKey,
101
+ childrenKey: childrenKey,
102
+ disabledItemValues: disabledItemValues,
103
+ onCheck: handleCheck,
104
+ onSearch: handleSearch
105
+ }), !searchKeyword && /*#__PURE__*/React.createElement(TreeView, {
106
+ cascade: cascade,
107
+ columnWidth: columnWidth,
108
+ columnHeight: columnHeight,
109
+ uncheckableItemValues: uncheckableItemValues,
110
+ disabledItemValues: disabledItemValues,
111
+ valueKey: valueKey,
112
+ labelKey: labelKey,
113
+ childrenKey: childrenKey,
114
+ classPrefix: classPrefix,
115
+ cascadeData: columnData,
116
+ cascadePaths: selectedPaths,
117
+ value: value,
118
+ onSelect: handleSelect,
119
+ onCheck: handleCheck,
120
+ renderColumn: renderColumn,
121
+ renderTreeNode: renderTreeNode
122
+ }));
123
+ });
124
+ MultiCascadeTree.displayName = 'MultiCascadeTree';
125
+ export default MultiCascadeTree;
@@ -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,111 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React from 'react';
5
+ import { useClassNames, useCustom } from '../utils';
6
+ import { getNodeParents } from '../utils/treeUtils';
7
+ import SearchBox from '../internals/SearchBox';
8
+ import Checkbox from '../Checkbox';
9
+ import { isSomeChildChecked } from './utils';
10
+ import { highlightLabel } from '../CascadeTree/utils';
11
+ function SearchView(props) {
12
+ var _props$as = props.as,
13
+ Component = _props$as === void 0 ? 'div' : _props$as,
14
+ _props$classPrefix = props.classPrefix,
15
+ classPrefix = _props$classPrefix === void 0 ? 'cascade-search-view' : _props$classPrefix,
16
+ className = props.className,
17
+ searchKeyword = props.searchKeyword,
18
+ childrenKey = props.childrenKey,
19
+ labelKey = props.labelKey,
20
+ valueKey = props.valueKey,
21
+ value = props.value,
22
+ data = props.data,
23
+ disabledItemValues = props.disabledItemValues,
24
+ inputRef = props.inputRef,
25
+ cascade = props.cascade,
26
+ onSearch = props.onSearch,
27
+ onCheck = props.onCheck,
28
+ rest = _objectWithoutPropertiesLoose(props, ["as", "classPrefix", "className", "searchKeyword", "childrenKey", "labelKey", "valueKey", "value", "data", "disabledItemValues", "inputRef", "cascade", "onSearch", "onCheck"]);
29
+ var _useClassNames = useClassNames(classPrefix),
30
+ merge = _useClassNames.merge,
31
+ prefix = _useClassNames.prefix,
32
+ withClassPrefix = _useClassNames.withClassPrefix,
33
+ rootPrefix = _useClassNames.rootPrefix;
34
+ var classes = merge(className, withClassPrefix());
35
+ var _useCustom = useCustom('Picker'),
36
+ locale = _useCustom.locale;
37
+ var renderSearchRow = function renderSearchRow(item, key) {
38
+ var _extends2;
39
+ var nodes = getNodeParents(item);
40
+ var label = highlightLabel({
41
+ item: item,
42
+ labelKey: labelKey,
43
+ searchKeyword: searchKeyword,
44
+ render: function render(patch, index) {
45
+ return /*#__PURE__*/React.createElement("span", {
46
+ key: index,
47
+ className: prefix('match')
48
+ }, patch);
49
+ }
50
+ });
51
+ nodes.push(_extends({}, item, (_extends2 = {}, _extends2[labelKey] = label, _extends2)));
52
+ var active = value.some(function (value) {
53
+ if (cascade) {
54
+ return nodes.some(function (node) {
55
+ return node[valueKey] === value;
56
+ });
57
+ }
58
+ return item[valueKey] === value;
59
+ });
60
+ var disabled = disabledItemValues.some(function (value) {
61
+ return nodes.some(function (node) {
62
+ return node[valueKey] === value;
63
+ });
64
+ });
65
+ var rowClasses = prefix('row', {
66
+ 'row-disabled': disabled
67
+ });
68
+ var indeterminate = cascade && !active && isSomeChildChecked(item, value, {
69
+ valueKey: valueKey,
70
+ childrenKey: childrenKey
71
+ });
72
+ var handleChange = function handleChange(_value, checked, event) {
73
+ onCheck === null || onCheck === void 0 ? void 0 : onCheck(item, event, checked);
74
+ };
75
+ return /*#__PURE__*/React.createElement("div", {
76
+ role: "treeitem",
77
+ "aria-disabled": disabled,
78
+ key: key,
79
+ className: rowClasses,
80
+ "data-key": item[valueKey]
81
+ }, /*#__PURE__*/React.createElement(Checkbox, {
82
+ disabled: disabled,
83
+ checked: active,
84
+ value: item[valueKey],
85
+ indeterminate: indeterminate,
86
+ onChange: handleChange
87
+ }, /*#__PURE__*/React.createElement("span", {
88
+ className: prefix('col-group')
89
+ }, nodes.map(function (node, index) {
90
+ return /*#__PURE__*/React.createElement("span", {
91
+ key: "col-" + index,
92
+ className: prefix('col')
93
+ }, node[labelKey]);
94
+ }))));
95
+ };
96
+ return /*#__PURE__*/React.createElement(Component, _extends({
97
+ className: classes
98
+ }, rest), /*#__PURE__*/React.createElement(SearchBox, {
99
+ placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
100
+ onChange: onSearch,
101
+ value: searchKeyword,
102
+ inputRef: inputRef
103
+ }), searchKeyword !== '' && /*#__PURE__*/React.createElement("div", {
104
+ className: prefix('panel'),
105
+ "data-layer": 0,
106
+ role: "tree"
107
+ }, data.length ? data.map(renderSearchRow) : /*#__PURE__*/React.createElement("div", {
108
+ className: merge(prefix('none'), rootPrefix('picker-none'))
109
+ }, locale.noResultsText)));
110
+ }
111
+ export default SearchView;
@@ -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;