rsuite 6.0.1 → 6.1.1

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 (278) 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/CheckTree/CheckTree.js +3 -0
  177. package/cjs/CheckTree/CheckTreeView.js +7 -3
  178. package/cjs/CheckTree/hooks/useTreeCheckState.d.ts +1 -0
  179. package/cjs/CheckTree/hooks/useTreeCheckState.js +54 -3
  180. package/cjs/CheckTree/utils.d.ts +9 -2
  181. package/cjs/CheckTree/utils.js +70 -11
  182. package/cjs/CheckTreePicker/CheckTreePicker.js +1 -0
  183. package/cjs/Checkbox/Checkbox.js +2 -1
  184. package/cjs/Checkbox/hooks/useIndeterminateCheckbox.d.ts +19 -0
  185. package/cjs/Checkbox/hooks/useIndeterminateCheckbox.js +32 -0
  186. package/cjs/DateInput/DateInput.js +24 -0
  187. package/cjs/DateInput/hooks/useKeyboardInputEvent.d.ts +2 -1
  188. package/cjs/DateInput/hooks/useKeyboardInputEvent.js +14 -0
  189. package/cjs/DateRangeInput/DateRangeInput.js +24 -0
  190. package/cjs/DateRangePicker/DateRangePicker.js +6 -0
  191. package/cjs/Form/Form.js +5 -1
  192. package/cjs/Rate/Rate.d.ts +8 -0
  193. package/cjs/Rate/Rate.js +3 -1
  194. package/cjs/Tree/hooks/useFlattenTree.d.ts +4 -0
  195. package/cjs/Tree/hooks/useFlattenTree.js +22 -1
  196. package/cjs/Tree/hooks/useFocusTree.js +19 -1
  197. package/cjs/Tree/hooks/useVirtualizedTreeData.d.ts +1 -0
  198. package/cjs/Tree/hooks/useVirtualizedTreeData.js +5 -2
  199. package/cjs/Tree/utils/focusableTree.d.ts +8 -0
  200. package/cjs/Tree/utils/focusableTree.js +40 -2
  201. package/cjs/Tree/utils/index.d.ts +1 -1
  202. package/cjs/Tree/utils/index.js +3 -1
  203. package/cjs/internals/Picker/utils.d.ts +2 -0
  204. package/cjs/internals/Picker/utils.js +13 -1
  205. package/cjs/internals/StyledBox/StyledBox.d.ts +1 -1
  206. package/cjs/internals/StyledBox/StyledBox.js +2 -2
  207. package/dist/rsuite.js +52 -74
  208. package/dist/rsuite.js.map +1 -1
  209. package/dist/rsuite.min.js +1 -1
  210. package/dist/rsuite.min.js.LICENSE.txt +0 -20
  211. package/dist/rsuite.min.js.map +1 -1
  212. package/esm/Breadcrumb/BreadcrumbItem.js +10 -5
  213. package/esm/CheckTree/CheckTree.js +3 -0
  214. package/esm/CheckTree/CheckTreeView.js +7 -3
  215. package/esm/CheckTree/hooks/useTreeCheckState.d.ts +1 -0
  216. package/esm/CheckTree/hooks/useTreeCheckState.js +55 -4
  217. package/esm/CheckTree/utils.d.ts +9 -2
  218. package/esm/CheckTree/utils.js +71 -12
  219. package/esm/CheckTreePicker/CheckTreePicker.js +1 -0
  220. package/esm/Checkbox/Checkbox.js +3 -2
  221. package/esm/Checkbox/hooks/useIndeterminateCheckbox.d.ts +19 -0
  222. package/esm/Checkbox/hooks/useIndeterminateCheckbox.js +29 -0
  223. package/esm/DateInput/DateInput.js +24 -0
  224. package/esm/DateInput/hooks/useKeyboardInputEvent.d.ts +2 -1
  225. package/esm/DateInput/hooks/useKeyboardInputEvent.js +14 -0
  226. package/esm/DateRangeInput/DateRangeInput.js +24 -0
  227. package/esm/DateRangePicker/DateRangePicker.js +6 -0
  228. package/esm/Form/Form.js +5 -1
  229. package/esm/Rate/Rate.d.ts +8 -0
  230. package/esm/Rate/Rate.js +3 -1
  231. package/esm/Tree/hooks/useFlattenTree.d.ts +4 -0
  232. package/esm/Tree/hooks/useFlattenTree.js +22 -1
  233. package/esm/Tree/hooks/useFocusTree.js +20 -2
  234. package/esm/Tree/hooks/useVirtualizedTreeData.d.ts +1 -0
  235. package/esm/Tree/hooks/useVirtualizedTreeData.js +5 -2
  236. package/esm/Tree/utils/focusableTree.d.ts +8 -0
  237. package/esm/Tree/utils/focusableTree.js +36 -0
  238. package/esm/Tree/utils/index.d.ts +1 -1
  239. package/esm/Tree/utils/index.js +1 -1
  240. package/esm/internals/Picker/utils.d.ts +2 -0
  241. package/esm/internals/Picker/utils.js +13 -1
  242. package/esm/internals/StyledBox/StyledBox.d.ts +1 -1
  243. package/esm/internals/StyledBox/StyledBox.js +2 -2
  244. package/internals/Box/styles/index.scss +31 -0
  245. package/internals/Burger/styles/index.scss +72 -0
  246. package/internals/CloseButton/styles/index.scss +14 -0
  247. package/internals/Picker/styles/_mixin.scss +219 -0
  248. package/internals/Picker/styles/_variables.scss +9 -0
  249. package/internals/Picker/styles/index.scss +476 -0
  250. package/internals/Ripple/styles/_mixins.scss +10 -0
  251. package/internals/Ripple/styles/index.scss +40 -0
  252. package/internals/ScrollView/styles/index.scss +77 -0
  253. package/internals/SearchBox/styles/index.scss +7 -0
  254. package/package.json +4 -4
  255. package/styles/_base.scss +37 -0
  256. package/styles/_css-reset.scss +345 -0
  257. package/styles/_themes.scss +132 -0
  258. package/styles/_variables.scss +48 -0
  259. package/styles/color-modes/_dark.scss +458 -0
  260. package/styles/color-modes/_high-contrast.scss +469 -0
  261. package/styles/color-modes/_light.scss +475 -0
  262. package/styles/colors/_colors-base.scss +39 -0
  263. package/styles/colors/_dark.scss +114 -0
  264. package/styles/colors/_high-contrast.scss +114 -0
  265. package/styles/colors/_light.scss +115 -0
  266. package/styles/colors/_palette.scss +413 -0
  267. package/styles/components.scss +114 -0
  268. package/styles/index.scss +2 -0
  269. package/styles/mixins/_color-modes.scss +20 -0
  270. package/styles/mixins/_combobox.scss +6 -0
  271. package/styles/mixins/_hacks.scss +33 -0
  272. package/styles/mixins/_input.scss +30 -0
  273. package/styles/mixins/_listbox.scss +70 -0
  274. package/styles/mixins/_menu.scss +12 -0
  275. package/styles/mixins/_utilities.scss +130 -0
  276. package/toaster/styles/animation.scss +54 -0
  277. package/toaster/styles/index.scss +109 -0
  278. package/useToaster/styles/index.scss +1 -0
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,
@@ -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");
@@ -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,