rsuite 6.0.0 → 6.1.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 (299) hide show
  1. package/Accordion/styles/index.scss +3 -0
  2. package/Animation/styles/_animation.scss +95 -0
  3. package/Animation/styles/_bounce.scss +36 -0
  4. package/Animation/styles/_collapse.scss +23 -0
  5. package/Animation/styles/_fade.scss +10 -0
  6. package/Animation/styles/_mixin.scss +15 -0
  7. package/Animation/styles/_slide.scss +34 -0
  8. package/Animation/styles/_variables.scss +4 -0
  9. package/Animation/styles/index.scss +8 -0
  10. package/AutoComplete/styles/index.scss +43 -0
  11. package/Avatar/styles/index.scss +48 -0
  12. package/AvatarGroup/styles/index.scss +27 -0
  13. package/Badge/styles/_variables.scss +48 -0
  14. package/Badge/styles/index.scss +111 -0
  15. package/Box/styles/index.scss +1 -0
  16. package/Breadcrumb/styles/index.scss +50 -0
  17. package/Button/styles/_mixin.scss +83 -0
  18. package/Button/styles/_variables.scss +38 -0
  19. package/Button/styles/index.scss +374 -0
  20. package/ButtonGroup/styles/index.scss +96 -0
  21. package/ButtonToolbar/styles/index.scss +9 -0
  22. package/CHANGELOG.md +31 -0
  23. package/Calendar/styles/_variables.scss +16 -0
  24. package/Calendar/styles/index.scss +673 -0
  25. package/Card/styles/index.scss +63 -0
  26. package/CardGroup/styles/index.scss +10 -0
  27. package/Carousel/styles/index.scss +204 -0
  28. package/CascadeTree/styles/_search.scss +39 -0
  29. package/CascadeTree/styles/index.scss +83 -0
  30. package/Cascader/styles/index.scss +5 -0
  31. package/Center/styles/index.scss +11 -0
  32. package/CheckPicker/styles/index.scss +23 -0
  33. package/CheckTree/styles/_variables.scss +5 -0
  34. package/CheckTree/styles/index.scss +121 -0
  35. package/CheckTreePicker/styles/index.scss +20 -0
  36. package/Checkbox/styles/_mixin.scss +5 -0
  37. package/Checkbox/styles/_variables.scss +4 -0
  38. package/Checkbox/styles/index.scss +158 -0
  39. package/CheckboxGroup/styles/index.scss +14 -0
  40. package/Col/styles/index.scss +2 -0
  41. package/Container/stories/styles.scss +23 -0
  42. package/Container/styles/index.scss +16 -0
  43. package/Content/styles/index.scss +6 -0
  44. package/DateInput/styles/index.scss +1 -0
  45. package/DatePicker/styles/_mixin.scss +10 -0
  46. package/DatePicker/styles/index.scss +171 -0
  47. package/DateRangeInput/styles/index.scss +1 -0
  48. package/DateRangePicker/styles/index.scss +151 -0
  49. package/Divider/styles/index.scss +85 -0
  50. package/Drawer/styles/_mixin.scss +23 -0
  51. package/Drawer/styles/_variables.scss +18 -0
  52. package/Drawer/styles/index.scss +244 -0
  53. package/Dropdown/styles/_mixin.scss +4 -0
  54. package/Dropdown/styles/_variables.scss +12 -0
  55. package/Dropdown/styles/index.scss +334 -0
  56. package/FlexboxGrid/styles/index.scss +82 -0
  57. package/Footer/styles/index.scss +5 -0
  58. package/Form/styles/index.scss +3 -0
  59. package/FormControl/styles/_variables.scss +4 -0
  60. package/FormControl/styles/index.scss +82 -0
  61. package/FormControlLabel/styles/index.scss +7 -0
  62. package/FormErrorMessage/styles/_animation.scss +43 -0
  63. package/FormErrorMessage/styles/_variables.scss +7 -0
  64. package/FormErrorMessage/styles/index.scss +146 -0
  65. package/FormGroup/styles/index.scss +75 -0
  66. package/FormHelpText/styles/index.scss +21 -0
  67. package/FormStack/styles/index.scss +15 -0
  68. package/Grid/styles/_columns.scss +23 -0
  69. package/Grid/styles/_mixin.scss +110 -0
  70. package/Grid/styles/_row.scss +44 -0
  71. package/Grid/styles/_variables.scss +6 -0
  72. package/Grid/styles/index.scss +115 -0
  73. package/Header/styles/index.scss +5 -0
  74. package/Heading/styles/_variables.scss +19 -0
  75. package/Heading/styles/index.scss +42 -0
  76. package/HeadingGroup/styles/index.scss +5 -0
  77. package/Highlight/styles/index.scss +9 -0
  78. package/IconButton/styles/index.scss +90 -0
  79. package/Image/styles/index.scss +36 -0
  80. package/InlineEdit/styles/index.scss +51 -0
  81. package/Input/styles/_mixin.scss +39 -0
  82. package/Input/styles/_variables.scss +27 -0
  83. package/Input/styles/index.scss +23 -0
  84. package/InputGroup/styles/index.scss +264 -0
  85. package/InputNumber/styles/index.scss +1 -0
  86. package/InputPicker/styles/_mixin.scss +7 -0
  87. package/InputPicker/styles/index.scss +64 -0
  88. package/Kbd/styles/_mixin.scss +24 -0
  89. package/Kbd/styles/_variables.scss +13 -0
  90. package/Kbd/styles/index.scss +21 -0
  91. package/Link/styles/index.scss +41 -0
  92. package/List/styles/index.scss +111 -0
  93. package/Loader/styles/_mixin.scss +37 -0
  94. package/Loader/styles/_variables.scss +19 -0
  95. package/Loader/styles/index.scss +120 -0
  96. package/Menu/styles/index.scss +109 -0
  97. package/Message/styles/index.scss +189 -0
  98. package/Modal/styles/_animation.scss +15 -0
  99. package/Modal/styles/_variables.scss +16 -0
  100. package/Modal/styles/index.scss +186 -0
  101. package/MultiCascadeTree/styles/index.scss +35 -0
  102. package/MultiCascader/styles/index.scss +3 -0
  103. package/Nav/styles/index.scss +383 -0
  104. package/Navbar/styles/index.scss +253 -0
  105. package/Notification/styles/index.scss +116 -0
  106. package/NumberInput/styles/_mixin.scss +11 -0
  107. package/NumberInput/styles/index.scss +78 -0
  108. package/Pagination/styles/_pagination-group.scss +52 -0
  109. package/Pagination/styles/index.scss +77 -0
  110. package/Panel/styles/index.scss +122 -0
  111. package/PanelGroup/styles/index.scss +34 -0
  112. package/PasswordInput/styles/index.scss +3 -0
  113. package/PasswordStrengthMeter/styles/index.scss +41 -0
  114. package/PinInput/styles/index.scss +93 -0
  115. package/Placeholder/styles/_mixin.scss +9 -0
  116. package/Placeholder/styles/index.scss +155 -0
  117. package/Popover/styles/index.scss +224 -0
  118. package/Popover/styles/mixins.scss +54 -0
  119. package/Progress/styles/_animation.scss +69 -0
  120. package/Progress/styles/_mixins.scss +6 -0
  121. package/Progress/styles/_progress-line.scss +343 -0
  122. package/Progress/styles/index.scss +3 -0
  123. package/ProgressCircle/styles/index.scss +2 -0
  124. package/ProgressCircle/styles/progress-circle.scss +49 -0
  125. package/Radio/styles/_mixin.scss +5 -0
  126. package/Radio/styles/_variables.scss +5 -0
  127. package/Radio/styles/index.scss +147 -0
  128. package/RadioGroup/styles/_variables.scss +10 -0
  129. package/RadioGroup/styles/index.scss +83 -0
  130. package/RadioTile/styles/index.scss +80 -0
  131. package/RadioTileGroup/styles/index.scss +1 -0
  132. package/RangeSlider/styles/index.scss +4 -0
  133. package/Rate/styles/index.scss +141 -0
  134. package/Row/styles/index.scss +2 -0
  135. package/SegmentedControl/styles/_mixin.scss +7 -0
  136. package/SegmentedControl/styles/_variables.scss +43 -0
  137. package/SegmentedControl/styles/index.scss +147 -0
  138. package/SelectPicker/styles/index.scss +44 -0
  139. package/Sidebar/styles/index.scss +17 -0
  140. package/Sidenav/styles/index.scss +635 -0
  141. package/Sidenav/styles/mixin.scss +23 -0
  142. package/Slider/styles/index.scss +298 -0
  143. package/Stack/styles/_variables.scss +11 -0
  144. package/Stack/styles/index.scss +79 -0
  145. package/Stat/styles/index.scss +126 -0
  146. package/StatGroup/styles/index.scss +10 -0
  147. package/Steps/styles/index.scss +222 -0
  148. package/Table/styles/index.scss +473 -0
  149. package/Table/styles/mixin.scss +8 -0
  150. package/Tabs/styles/index.scss +24 -0
  151. package/Tag/styles/_variables.scss +13 -0
  152. package/Tag/styles/index.scss +62 -0
  153. package/TagGroup/styles/index.scss +14 -0
  154. package/TagInput/styles/index.scss +5 -0
  155. package/TagPicker/styles/index.scss +141 -0
  156. package/Text/styles/index.scss +142 -0
  157. package/Text/styles/variables.scss +9 -0
  158. package/Textarea/styles/index.scss +9 -0
  159. package/TimePicker/styles/index.scss +1 -0
  160. package/TimeRangePicker/styles/index.scss +1 -0
  161. package/Timeline/stories/styles.scss +29 -0
  162. package/Timeline/styles/_mixin.scss +13 -0
  163. package/Timeline/styles/index.scss +187 -0
  164. package/Toggle/styles/index.scss +284 -0
  165. package/Tooltip/styles/index.scss +160 -0
  166. package/Tooltip/styles/mixins.scss +56 -0
  167. package/Tree/styles/_indent-line.scss +8 -0
  168. package/Tree/styles/_toggle.scss +32 -0
  169. package/Tree/styles/_variables.scss +8 -0
  170. package/Tree/styles/index.scss +184 -0
  171. package/TreePicker/styles/index.scss +16 -0
  172. package/Uploader/styles/_mixin.scss +11 -0
  173. package/Uploader/styles/index.scss +491 -0
  174. package/VisuallyHidden/styles/index.scss +11 -0
  175. package/cjs/Breadcrumb/BreadcrumbItem.js +12 -7
  176. package/cjs/Cascader/Cascader.js +1 -1
  177. package/cjs/CheckPicker/CheckPicker.js +1 -1
  178. package/cjs/CheckTree/CheckTree.js +3 -0
  179. package/cjs/CheckTree/CheckTreeView.js +7 -3
  180. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +1 -0
  181. package/cjs/CheckTree/hooks/useTreeCheckState.js +54 -3
  182. package/cjs/CheckTree/utils.d.ts +9 -2
  183. package/cjs/CheckTree/utils.js +70 -11
  184. package/cjs/CheckTreePicker/CheckTreePicker.js +2 -1
  185. package/cjs/Checkbox/Checkbox.js +2 -1
  186. package/cjs/Checkbox/hooks/useIndeterminateCheckbox.d.ts +19 -0
  187. package/cjs/Checkbox/hooks/useIndeterminateCheckbox.js +32 -0
  188. package/cjs/DateInput/DateInput.js +24 -0
  189. package/cjs/DateInput/hooks/useKeyboardInputEvent.d.ts +2 -1
  190. package/cjs/DateInput/hooks/useKeyboardInputEvent.js +14 -0
  191. package/cjs/DatePicker/DatePicker.js +1 -1
  192. package/cjs/DateRangeInput/DateRangeInput.js +24 -0
  193. package/cjs/DateRangePicker/DateRangePicker.js +1 -1
  194. package/cjs/Form/Form.js +5 -1
  195. package/cjs/InputPicker/InputPicker.js +1 -1
  196. package/cjs/MultiCascader/MultiCascader.js +1 -1
  197. package/cjs/Panel/PanelHeader.d.ts +1 -1
  198. package/cjs/Panel/PanelHeader.js +4 -5
  199. package/cjs/Rate/Rate.d.ts +8 -0
  200. package/cjs/Rate/Rate.js +3 -1
  201. package/cjs/SelectPicker/SelectPicker.js +1 -1
  202. package/cjs/Tree/hooks/useFlattenTree.d.ts +4 -0
  203. package/cjs/Tree/hooks/useFlattenTree.js +22 -1
  204. package/cjs/Tree/hooks/useFocusTree.js +19 -1
  205. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +1 -0
  206. package/cjs/Tree/hooks/useVirtualizedTreeData.js +5 -2
  207. package/cjs/Tree/utils/focusableTree.d.ts +8 -0
  208. package/cjs/Tree/utils/focusableTree.js +40 -2
  209. package/cjs/Tree/utils/index.d.ts +1 -1
  210. package/cjs/Tree/utils/index.js +3 -1
  211. package/cjs/TreePicker/TreePicker.js +1 -1
  212. package/cjs/internals/Picker/PickerToggleTrigger.d.ts +2 -0
  213. package/cjs/internals/Picker/PickerToggleTrigger.js +3 -1
  214. package/cjs/internals/Picker/utils.d.ts +2 -0
  215. package/cjs/internals/Picker/utils.js +13 -1
  216. package/cjs/internals/StyledBox/StyledBox.d.ts +1 -1
  217. package/cjs/internals/StyledBox/StyledBox.js +2 -2
  218. package/dist/rsuite.js +40 -29
  219. package/dist/rsuite.js.map +1 -1
  220. package/dist/rsuite.min.js +1 -1
  221. package/dist/rsuite.min.js.map +1 -1
  222. package/esm/Breadcrumb/BreadcrumbItem.js +10 -5
  223. package/esm/Cascader/Cascader.js +1 -1
  224. package/esm/CheckPicker/CheckPicker.js +1 -1
  225. package/esm/CheckTree/CheckTree.js +3 -0
  226. package/esm/CheckTree/CheckTreeView.js +7 -3
  227. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +1 -0
  228. package/esm/CheckTree/hooks/useTreeCheckState.js +55 -4
  229. package/esm/CheckTree/utils.d.ts +9 -2
  230. package/esm/CheckTree/utils.js +71 -12
  231. package/esm/CheckTreePicker/CheckTreePicker.js +2 -1
  232. package/esm/Checkbox/Checkbox.js +3 -2
  233. package/esm/Checkbox/hooks/useIndeterminateCheckbox.d.ts +19 -0
  234. package/esm/Checkbox/hooks/useIndeterminateCheckbox.js +29 -0
  235. package/esm/DateInput/DateInput.js +24 -0
  236. package/esm/DateInput/hooks/useKeyboardInputEvent.d.ts +2 -1
  237. package/esm/DateInput/hooks/useKeyboardInputEvent.js +14 -0
  238. package/esm/DatePicker/DatePicker.js +1 -1
  239. package/esm/DateRangeInput/DateRangeInput.js +24 -0
  240. package/esm/DateRangePicker/DateRangePicker.js +1 -1
  241. package/esm/Form/Form.js +5 -1
  242. package/esm/InputPicker/InputPicker.js +1 -1
  243. package/esm/MultiCascader/MultiCascader.js +1 -1
  244. package/esm/Panel/PanelHeader.d.ts +1 -1
  245. package/esm/Panel/PanelHeader.js +4 -5
  246. package/esm/Rate/Rate.d.ts +8 -0
  247. package/esm/Rate/Rate.js +3 -1
  248. package/esm/SelectPicker/SelectPicker.js +1 -1
  249. package/esm/Tree/hooks/useFlattenTree.d.ts +4 -0
  250. package/esm/Tree/hooks/useFlattenTree.js +22 -1
  251. package/esm/Tree/hooks/useFocusTree.js +20 -2
  252. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +1 -0
  253. package/esm/Tree/hooks/useVirtualizedTreeData.js +5 -2
  254. package/esm/Tree/utils/focusableTree.d.ts +8 -0
  255. package/esm/Tree/utils/focusableTree.js +36 -0
  256. package/esm/Tree/utils/index.d.ts +1 -1
  257. package/esm/Tree/utils/index.js +1 -1
  258. package/esm/TreePicker/TreePicker.js +1 -1
  259. package/esm/internals/Picker/PickerToggleTrigger.d.ts +2 -0
  260. package/esm/internals/Picker/PickerToggleTrigger.js +3 -1
  261. package/esm/internals/Picker/utils.d.ts +2 -0
  262. package/esm/internals/Picker/utils.js +13 -1
  263. package/esm/internals/StyledBox/StyledBox.d.ts +1 -1
  264. package/esm/internals/StyledBox/StyledBox.js +2 -2
  265. package/internals/Box/styles/index.scss +31 -0
  266. package/internals/Burger/styles/index.scss +72 -0
  267. package/internals/CloseButton/styles/index.scss +14 -0
  268. package/internals/Picker/styles/_mixin.scss +219 -0
  269. package/internals/Picker/styles/_variables.scss +9 -0
  270. package/internals/Picker/styles/index.scss +476 -0
  271. package/internals/Ripple/styles/_mixins.scss +10 -0
  272. package/internals/Ripple/styles/index.scss +40 -0
  273. package/internals/ScrollView/styles/index.scss +77 -0
  274. package/internals/SearchBox/styles/index.scss +7 -0
  275. package/package.json +4 -4
  276. package/styles/_base.scss +37 -0
  277. package/styles/_css-reset.scss +345 -0
  278. package/styles/_themes.scss +132 -0
  279. package/styles/_variables.scss +48 -0
  280. package/styles/color-modes/_dark.scss +458 -0
  281. package/styles/color-modes/_high-contrast.scss +469 -0
  282. package/styles/color-modes/_light.scss +475 -0
  283. package/styles/colors/_colors-base.scss +39 -0
  284. package/styles/colors/_dark.scss +114 -0
  285. package/styles/colors/_high-contrast.scss +114 -0
  286. package/styles/colors/_light.scss +115 -0
  287. package/styles/colors/_palette.scss +413 -0
  288. package/styles/components.scss +114 -0
  289. package/styles/index.scss +2 -0
  290. package/styles/mixins/_color-modes.scss +20 -0
  291. package/styles/mixins/_combobox.scss +6 -0
  292. package/styles/mixins/_hacks.scss +33 -0
  293. package/styles/mixins/_input.scss +30 -0
  294. package/styles/mixins/_listbox.scss +70 -0
  295. package/styles/mixins/_menu.scss +12 -0
  296. package/styles/mixins/_utilities.scss +130 -0
  297. package/toaster/styles/animation.scss +54 -0
  298. package/toaster/styles/index.scss +109 -0
  299. package/useToaster/styles/index.scss +1 -0
package/cjs/Form/Form.js CHANGED
@@ -111,7 +111,11 @@ const Form = (0, _utils.forwardRef)((props, ref) => {
111
111
  });
112
112
  const reset = (0, _hooks.useEventCallback)(event => {
113
113
  resetErrors();
114
- onReset === null || onReset === void 0 || onReset(resetFormValue(), event);
114
+ const resetValue = resetFormValue();
115
+ if (resetValue) {
116
+ onChange === null || onChange === void 0 || onChange(resetValue);
117
+ }
118
+ onReset === null || onReset === void 0 || onReset(resetValue, event);
115
119
  });
116
120
  const handleSubmit = (0, _hooks.useEventCallback)(event => {
117
121
  var _event$preventDefault, _event$stopPropagatio;
@@ -596,7 +596,7 @@ const InputPicker = (0, _utils3.forwardRef)((props, ref) => {
596
596
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, (0, _extends2.default)({
597
597
  id: id,
598
598
  multiple: multi,
599
- name: multi ? 'tag' : 'input',
599
+ pickerType: multi ? 'tag' : 'input',
600
600
  block: block,
601
601
  disabled: disabled,
602
602
  appearance: appearance,
@@ -301,7 +301,7 @@ const MultiCascader = (0, _utils3.forwardRef)((props, ref) => {
301
301
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
302
302
  as: as,
303
303
  id: id,
304
- name: "multi-cascader",
304
+ pickerType: "multi-cascader",
305
305
  block: block,
306
306
  disabled: disabled,
307
307
  appearance: appearance,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { BoxProps } from '../internals/Box';
3
- export interface PanelHeaderProps extends BoxProps, Omit<React.HTMLAttributes<HTMLHeadingElement>, 'color'> {
3
+ export interface PanelHeaderProps extends BoxProps, Omit<React.HTMLAttributes<HTMLDivElement | HTMLHeadingElement>, 'color'> {
4
4
  caretAs?: React.ElementType;
5
5
  collapsible?: boolean;
6
6
  disabled?: boolean;
@@ -7,14 +7,14 @@ exports.default = void 0;
7
7
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
8
  var _react = _interopRequireWildcard(require("react"));
9
9
  var _get = _interopRequireDefault(require("lodash/get"));
10
- var _Heading = _interopRequireDefault(require("../Heading"));
11
10
  var _AccordionButton = _interopRequireDefault(require("./AccordionButton"));
12
11
  var _Box = _interopRequireDefault(require("../internals/Box"));
13
12
  var _hooks = require("../internals/hooks");
13
+ var _utils = require("../internals/utils");
14
14
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
15
  const PanelHeader = props => {
16
16
  const {
17
- as = _Heading.default,
17
+ as = 'div',
18
18
  classPrefix = 'panel',
19
19
  className,
20
20
  children,
@@ -33,8 +33,8 @@ const PanelHeader = props => {
33
33
  prefix
34
34
  } = (0, _hooks.useStyles)(classPrefix);
35
35
  let headerElement;
36
- if (! /*#__PURE__*/(0, _react.isValidElement)(children) || Array.isArray(children)) {
37
- headerElement = /*#__PURE__*/_react.default.createElement("span", {
36
+ if (! /*#__PURE__*/(0, _react.isValidElement)(children) || Array.isArray(children) || (0, _utils.isFragment)(children)) {
37
+ headerElement = /*#__PURE__*/_react.default.createElement("div", {
38
38
  className: prefix('title')
39
39
  }, children);
40
40
  } else {
@@ -45,7 +45,6 @@ const PanelHeader = props => {
45
45
  }
46
46
  return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
47
47
  as: as,
48
- level: 2,
49
48
  className: merge(className, prefix('header'))
50
49
  }, rest), collapsible ? /*#__PURE__*/_react.default.createElement(_AccordionButton.default, {
51
50
  id: buttonId,
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  import { StyledBoxProps } from '../internals/StyledBox';
3
3
  import type { Color, FormControlBaseProps, Size } from '../internals/types';
4
4
  export interface RateProps<T = number> extends Omit<StyledBoxProps, 'name'>, FormControlBaseProps<T> {
5
+ /** Element type to render as */
6
+ as?: React.ElementType;
5
7
  /** Whether to allow semi selection */
6
8
  allowHalf?: boolean;
7
9
  /** Custom character of rate */
@@ -16,6 +18,12 @@ export interface RateProps<T = number> extends Omit<StyledBoxProps, 'name'>, For
16
18
  color?: Color | React.CSSProperties['color'];
17
19
  /** Maximum rate */
18
20
  max?: number;
21
+ /**
22
+ * The name of the form control.
23
+ * Used for form integration and does not affect the internal component styling.
24
+ * @private Internal use only - extracted from props to prevent conflicts with StyledBox
25
+ */
26
+ name?: string;
19
27
  /** Vertical Rate half */
20
28
  vertical?: boolean;
21
29
  /** Render custom character */
package/cjs/Rate/Rate.js CHANGED
@@ -31,6 +31,7 @@ const Rate = (0, _utils.forwardRef)((props, ref) => {
31
31
  classPrefix = 'rate',
32
32
  disabled,
33
33
  max = 5,
34
+ name,
34
35
  readOnly,
35
36
  vertical,
36
37
  size,
@@ -133,7 +134,8 @@ const Rate = (0, _utils.forwardRef)((props, ref) => {
133
134
  style: mergedStyle,
134
135
  onMouseLeave: handleMouseLeave,
135
136
  "data-disabled": disabled,
136
- "data-readonly": readOnly
137
+ "data-readonly": readOnly,
138
+ "data-name": name
137
139
  }, rest), starStates.map((status, index) => /*#__PURE__*/_react.default.createElement(_Character.default, {
138
140
  role: "radio",
139
141
  "aria-posinset": index + 1,
@@ -250,7 +250,7 @@ const SelectPicker = (0, _utils.forwardRef)((props, ref) => {
250
250
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
251
251
  as: as,
252
252
  id: id,
253
- name: "select",
253
+ pickerType: "select",
254
254
  block: block,
255
255
  disabled: disabled,
256
256
  appearance: appearance,
@@ -28,6 +28,10 @@ interface UseFlattenTreeOptions {
28
28
  * An array of item values that should not be selectable.
29
29
  */
30
30
  uncheckableItemValues?: any[];
31
+ /**
32
+ * An array of item values that should be disabled.
33
+ */
34
+ disabledItemValues?: any[];
31
35
  /**
32
36
  * A callback function that will be called when the tree nodes change.
33
37
  * It receives a map of the tree nodes.
@@ -21,6 +21,7 @@ function useFlattenTree(data, options) {
21
21
  valueKey,
22
22
  childrenKey,
23
23
  uncheckableItemValues = [],
24
+ disabledItemValues = [],
24
25
  cascade,
25
26
  multiple,
26
27
  callback
@@ -32,6 +33,26 @@ function useFlattenTree(data, options) {
32
33
  // Reset values to false
33
34
  Object.keys(flattenedNodes.current).forEach(refKey => {
34
35
  const node = flattenedNodes.current[refKey];
36
+
37
+ // Check if this node or any of its parents is disabled
38
+ const isNodeDisabled = disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(node[valueKey], disabledValue));
39
+ let hasDisabledParent = false;
40
+ let currentNode = node;
41
+ while (currentNode.parent && !hasDisabledParent) {
42
+ const parentRefKey = currentNode.parent.refKey;
43
+ if (parentRefKey && flattenedNodes.current[parentRefKey]) {
44
+ const parentValue = flattenedNodes.current[parentRefKey][valueKey];
45
+ if (disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(parentValue, disabledValue))) {
46
+ hasDisabledParent = true;
47
+ }
48
+ }
49
+ currentNode = currentNode.parent;
50
+ }
51
+
52
+ // Skip disabled nodes - they should not be affected by cascade or value changes
53
+ if (isNodeDisabled || hasDisabledParent) {
54
+ return;
55
+ }
35
56
  if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {
36
57
  node.check = flattenedNodes.current[node.parent.refKey].check;
37
58
  } else {
@@ -43,7 +64,7 @@ function useFlattenTree(data, options) {
43
64
  }
44
65
  });
45
66
  });
46
- }, [cascade, uncheckableItemValues, valueKey]);
67
+ }, [cascade, uncheckableItemValues, disabledItemValues, valueKey]);
47
68
  const flattenTreeData = (0, _react.useCallback)((treeData, parent, layer = 1) => {
48
69
  if (!Array.isArray(treeData) || treeData.length === 0) {
49
70
  return [];
@@ -104,12 +104,30 @@ function useFocusTree(props) {
104
104
  onFocusItem
105
105
  });
106
106
  });
107
+ const handleHomeKey = (0, _hooks.useEventCallback)(() => {
108
+ const focusProps = getFocusProps();
109
+ const focusedValue = (0, _utils.focusFirstItem)(focusProps);
110
+ if (focusedValue) {
111
+ setFocusItemValue(focusedValue);
112
+ onFocused === null || onFocused === void 0 || onFocused(focusedValue);
113
+ }
114
+ });
115
+ const handleEndKey = (0, _hooks.useEventCallback)(() => {
116
+ const focusProps = getFocusProps();
117
+ const focusedValue = (0, _utils.focusLastItem)(focusProps);
118
+ if (focusedValue) {
119
+ setFocusItemValue(focusedValue);
120
+ onFocused === null || onFocused === void 0 || onFocused(focusedValue);
121
+ }
122
+ });
107
123
  const onTreeKeydown = (0, _hooks.useEventCallback)(event => {
108
124
  (0, _Picker.onMenuKeyDown)(event, {
109
125
  down: () => handleFocusItem(_constants.KEY_VALUES.DOWN),
110
126
  up: () => handleFocusItem(_constants.KEY_VALUES.UP),
111
127
  left: rtl ? handleRightArrowEvent : handleLeftArrowEvent,
112
- right: rtl ? handleLeftArrowEvent : handleRightArrowEvent
128
+ right: rtl ? handleLeftArrowEvent : handleRightArrowEvent,
129
+ home: handleHomeKey,
130
+ end: handleEndKey
113
131
  });
114
132
  });
115
133
  const focusTreeFirstNode = (0, _hooks.useEventCallback)(() => {
@@ -3,5 +3,6 @@ declare function useVirtualizedTreeData(nodes: TreeNodeMap, data: TreeNode[], op
3
3
  expandItemValues: (string | number)[];
4
4
  cascade?: boolean;
5
5
  searchKeyword?: string;
6
+ disabledItemValues?: (string | number)[];
6
7
  }): () => TreeNode[];
7
8
  export default useVirtualizedTreeData;
@@ -35,7 +35,8 @@ function useVirtualizedTreeData(nodes, data, options) {
35
35
  const {
36
36
  cascade,
37
37
  searchKeyword,
38
- expandItemValues
38
+ expandItemValues,
39
+ disabledItemValues = []
39
40
  } = options;
40
41
  return (0, _flattenTree.UNSAFE_flattenTree)(data, childrenKey, node => {
41
42
  let formatted = {};
@@ -59,7 +60,9 @@ function useVirtualizedTreeData(nodes, data, options) {
59
60
  const checkState = !(0, _isUndefined.default)(cascade) ? (0, _utils.getNodeCheckState)(curNode, {
60
61
  cascade,
61
62
  nodes,
62
- childrenKey
63
+ childrenKey,
64
+ disabledItemValues,
65
+ valueKey
63
66
  }) : undefined;
64
67
  formatted = {
65
68
  ...node,
@@ -35,6 +35,14 @@ export declare const focusNextItem: (props: FocusItemProps) => any;
35
35
  * Focuses on the previous item in a tree.
36
36
  */
37
37
  export declare const focusPreviousItem: (props: FocusItemProps) => any;
38
+ /**
39
+ * Focuses on the first item in a tree.
40
+ */
41
+ export declare const focusFirstItem: (props: FocusItemProps) => any;
42
+ /**
43
+ * Focuses on the last item in a tree.
44
+ */
45
+ export declare const focusLastItem: (props: FocusItemProps) => any;
38
46
  interface ScrollToActiveTreeNodeProps {
39
47
  value: any;
40
48
  valueKey: string;
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  exports.__esModule = true;
5
- exports.getFocusableItems = exports.getActiveItem = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusCurrentItem = void 0;
5
+ exports.getFocusableItems = exports.getActiveItem = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusLastItem = exports.focusFirstItem = exports.focusCurrentItem = void 0;
6
6
  exports.scrollToActiveTreeNode = scrollToActiveTreeNode;
7
7
  var _utils = require("../../internals/utils");
8
8
  // Active tree node selector
@@ -118,9 +118,47 @@ const focusPreviousItem = props => {
118
118
  };
119
119
 
120
120
  /**
121
- * Returns the index of the first visible node in the tree that matches the given value.
121
+ * Focuses on the first item in a tree.
122
122
  */
123
123
  exports.focusPreviousItem = focusPreviousItem;
124
+ const focusFirstItem = props => {
125
+ const {
126
+ focusableItems,
127
+ treeNodesRefs,
128
+ valueKey
129
+ } = props;
130
+ if (focusableItems.length === 0) {
131
+ return;
132
+ }
133
+ const firstItem = focusableItems[0];
134
+ const value = firstItem[valueKey];
135
+ focusTreeNode(firstItem.refKey, treeNodesRefs);
136
+ return value;
137
+ };
138
+
139
+ /**
140
+ * Focuses on the last item in a tree.
141
+ */
142
+ exports.focusFirstItem = focusFirstItem;
143
+ const focusLastItem = props => {
144
+ const {
145
+ focusableItems,
146
+ treeNodesRefs,
147
+ valueKey
148
+ } = props;
149
+ if (focusableItems.length === 0) {
150
+ return;
151
+ }
152
+ const lastItem = focusableItems[focusableItems.length - 1];
153
+ const value = lastItem[valueKey];
154
+ focusTreeNode(lastItem.refKey, treeNodesRefs);
155
+ return value;
156
+ };
157
+
158
+ /**
159
+ * Returns the index of the first visible node in the tree that matches the given value.
160
+ */
161
+ exports.focusLastItem = focusLastItem;
124
162
  const getScrollToIndex = (nodes, value, valueKey) => {
125
163
  return nodes.filter(n => n.visible).findIndex(item => item[valueKey] === value);
126
164
  };
@@ -7,5 +7,5 @@ export { formatNodeRefKey } from './formatNodeRefKey';
7
7
  export { indentTreeNode } from './indentTreeNode';
8
8
  export { isSearching } from './isSearching';
9
9
  export { isExpand } from './isExpand';
10
- export { getFocusableItems, getActiveItem, focusNextItem, focusPreviousItem, focusTreeNode, focusCurrentItem } from './focusableTree';
10
+ export { getFocusableItems, getActiveItem, focusNextItem, focusPreviousItem, focusFirstItem, focusLastItem, focusTreeNode, focusCurrentItem } from './focusableTree';
11
11
  export { handleLeftArrow, handleRightArrow } from './treeKeyboardInteractions';
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  exports.__esModule = true;
5
- exports.isSearching = exports.isExpand = exports.indentTreeNode = exports.hasVisibleChildren = exports.handleRightArrow = exports.handleLeftArrow = exports.getTreeActiveNode = exports.getNodeParentKeys = exports.getFocusableItems = exports.getExpandItemValues = exports.getActiveItem = exports.formatNodeRefKey = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusCurrentItem = exports.flattenTree = exports.WalkTreeStrategy = exports.UNSAFE_flattenTree = void 0;
5
+ exports.isSearching = exports.isExpand = exports.indentTreeNode = exports.hasVisibleChildren = exports.handleRightArrow = exports.handleLeftArrow = exports.getTreeActiveNode = exports.getNodeParentKeys = exports.getFocusableItems = exports.getExpandItemValues = exports.getActiveItem = exports.formatNodeRefKey = exports.focusTreeNode = exports.focusPreviousItem = exports.focusNextItem = exports.focusLastItem = exports.focusFirstItem = exports.focusCurrentItem = exports.flattenTree = exports.WalkTreeStrategy = exports.UNSAFE_flattenTree = void 0;
6
6
  var _getNodeParentKeys = require("./getNodeParentKeys");
7
7
  exports.getNodeParentKeys = _getNodeParentKeys.getNodeParentKeys;
8
8
  var _flattenTree = require("./flattenTree");
@@ -28,6 +28,8 @@ exports.getFocusableItems = _focusableTree.getFocusableItems;
28
28
  exports.getActiveItem = _focusableTree.getActiveItem;
29
29
  exports.focusNextItem = _focusableTree.focusNextItem;
30
30
  exports.focusPreviousItem = _focusableTree.focusPreviousItem;
31
+ exports.focusFirstItem = _focusableTree.focusFirstItem;
32
+ exports.focusLastItem = _focusableTree.focusLastItem;
31
33
  exports.focusTreeNode = _focusableTree.focusTreeNode;
32
34
  exports.focusCurrentItem = _focusableTree.focusCurrentItem;
33
35
  var _treeKeyboardInteractions = require("./treeKeyboardInteractions");
@@ -261,7 +261,7 @@ const TreePicker = (0, _utils.forwardRef)((props, ref) => {
261
261
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
262
262
  as: as,
263
263
  id: id,
264
- name: "tree",
264
+ pickerType: "tree",
265
265
  block: block,
266
266
  disabled: disabled,
267
267
  appearance: appearance,
@@ -29,6 +29,8 @@ export interface PickerToggleTriggerProps
29
29
  name?: string;
30
30
  /** Controls the open state of the picker */
31
31
  open?: boolean;
32
+ /** Picker type identifier for data-picker attribute */
33
+ pickerType?: string;
32
34
  /** Additional properties for the picker */
33
35
  triggerProps: any;
34
36
  /** Placement of the component */
@@ -32,6 +32,7 @@ const PickerToggleTrigger = exports.PickerToggleTrigger = /*#__PURE__*/_react.de
32
32
  id,
33
33
  multiple,
34
34
  name,
35
+ pickerType,
35
36
  triggerProps,
36
37
  placement,
37
38
  popupType = 'listbox',
@@ -81,7 +82,8 @@ const PickerToggleTrigger = exports.PickerToggleTrigger = /*#__PURE__*/_react.de
81
82
  className: classes,
82
83
  style: style,
83
84
  ref: rootRef,
84
- "data-picker": name,
85
+ name: name,
86
+ "data-picker": pickerType,
85
87
  "data-appearance": appearance,
86
88
  "data-size": size,
87
89
  "data-disabled": disabled || undefined,
@@ -13,6 +13,8 @@ export interface KeyboardEvents {
13
13
  esc?: React.KeyboardEventHandler;
14
14
  right?: React.KeyboardEventHandler;
15
15
  left?: React.KeyboardEventHandler;
16
+ home?: React.KeyboardEventHandler;
17
+ end?: React.KeyboardEventHandler;
16
18
  }
17
19
  /**
18
20
  * Handling keyboard events...
@@ -54,7 +54,9 @@ function onMenuKeyDown(event, events) {
54
54
  del,
55
55
  esc,
56
56
  right,
57
- left
57
+ left,
58
+ home,
59
+ end
58
60
  } = events;
59
61
  switch (event.key) {
60
62
  // down
@@ -89,6 +91,16 @@ function onMenuKeyDown(event, events) {
89
91
  case _constants.KEY_VALUES.RIGHT:
90
92
  right === null || right === void 0 || right(event);
91
93
  break;
94
+ // home
95
+ case _constants.KEY_VALUES.HOME:
96
+ home === null || home === void 0 || home(event);
97
+ event.preventDefault();
98
+ break;
99
+ // end
100
+ case _constants.KEY_VALUES.END:
101
+ end === null || end === void 0 || end(event);
102
+ event.preventDefault();
103
+ break;
92
104
  default:
93
105
  }
94
106
  }
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { BoxProps } from '../Box';
3
3
  import type { Size, Color } from '../types';
4
4
  export interface StyledBoxProps extends BoxProps {
5
- /** Name of the Box */
5
+ /** Component identifier for CSS variable generation */
6
6
  name: string;
7
7
  /** Size of the Box */
8
8
  size?: Size | number | string;
@@ -12,12 +12,12 @@ const StyledBox = (0, _utils.forwardRef)((props, ref) => {
12
12
  const {
13
13
  as,
14
14
  color,
15
- name,
15
+ name: componentName,
16
16
  style,
17
17
  size,
18
18
  ...rest
19
19
  } = props;
20
- const boxStyle = (0, _utils.mergeStyles)(style, (0, _utils.getSizeStyle)(size, name), (0, _utils.getColorStyle)(color, name));
20
+ const boxStyle = (0, _utils.mergeStyles)(style, (0, _utils.getSizeStyle)(size, componentName), (0, _utils.getColorStyle)(color, componentName));
21
21
  return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({
22
22
  as: as,
23
23
  ref: ref,