@mui/x-tree-view 7.0.0-beta.7 → 7.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 (136) hide show
  1. package/CHANGELOG.md +266 -12
  2. package/README.md +1 -1
  3. package/RichTreeView/RichTreeView.js +15 -17
  4. package/RichTreeView/RichTreeView.types.d.ts +1 -1
  5. package/SimpleTreeView/SimpleTreeView.js +3 -4
  6. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +1 -1
  7. package/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  8. package/TreeItem/TreeItem.js +43 -35
  9. package/TreeItem/TreeItem.types.d.ts +3 -3
  10. package/TreeItem/TreeItemContent.d.ts +7 -7
  11. package/TreeItem/TreeItemContent.js +10 -10
  12. package/TreeItem/treeItemClasses.d.ts +1 -1
  13. package/TreeItem/useTreeItemState.d.ts +1 -1
  14. package/TreeItem/useTreeItemState.js +13 -13
  15. package/TreeItem2/TreeItem2.js +16 -17
  16. package/TreeItem2Icon/TreeItem2Icon.js +5 -6
  17. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +4 -4
  18. package/TreeItem2Provider/TreeItem2Provider.js +3 -3
  19. package/TreeItem2Provider/TreeItem2Provider.types.d.ts +1 -1
  20. package/TreeView/TreeView.d.ts +1 -1
  21. package/TreeView/TreeView.js +1 -1
  22. package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +2 -2
  23. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +12 -12
  24. package/hooks/useTreeViewApiRef.d.ts +1 -1
  25. package/index.js +1 -1
  26. package/internals/TreeViewProvider/DescendantProvider.d.ts +1 -1
  27. package/internals/TreeViewProvider/DescendantProvider.js +1 -1
  28. package/internals/hooks/useInstanceEventHandler.js +5 -10
  29. package/internals/index.d.ts +2 -2
  30. package/internals/models/plugin.d.ts +1 -1
  31. package/internals/plugins/defaultPlugins.d.ts +3 -3
  32. package/internals/plugins/defaultPlugins.js +2 -2
  33. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +17 -24
  34. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +6 -6
  35. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +76 -58
  36. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +9 -8
  37. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +6 -6
  38. package/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  39. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +2 -2
  40. package/internals/plugins/useTreeViewItems/index.d.ts +2 -0
  41. package/internals/plugins/useTreeViewItems/index.js +1 -0
  42. package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +3 -0
  43. package/{modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js → internals/plugins/useTreeViewItems/useTreeViewItems.js} +42 -33
  44. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +99 -0
  45. package/internals/plugins/useTreeViewJSXItems/index.d.ts +2 -0
  46. package/internals/plugins/useTreeViewJSXItems/index.js +1 -0
  47. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +3 -0
  48. package/{modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js → internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js} +41 -40
  49. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts +18 -0
  50. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +85 -96
  51. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +6 -3
  52. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +44 -47
  53. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +8 -8
  54. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +7 -7
  55. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  56. package/internals/useTreeView/useTreeView.js +5 -6
  57. package/internals/useTreeView/useTreeView.utils.d.ts +5 -5
  58. package/internals/useTreeView/useTreeView.utils.js +18 -18
  59. package/internals/utils/extractPluginParamsFromProps.js +2 -2
  60. package/internals/utils/utils.js +1 -0
  61. package/modern/RichTreeView/RichTreeView.js +11 -11
  62. package/modern/SimpleTreeView/SimpleTreeView.js +1 -1
  63. package/modern/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  64. package/modern/TreeItem/TreeItem.js +31 -22
  65. package/modern/TreeItem/TreeItemContent.js +10 -10
  66. package/modern/TreeItem/useTreeItemState.js +13 -13
  67. package/modern/TreeItem2/TreeItem2.js +11 -11
  68. package/modern/TreeItem2Provider/TreeItem2Provider.js +3 -3
  69. package/modern/TreeView/TreeView.js +1 -1
  70. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +12 -12
  71. package/modern/index.js +1 -1
  72. package/modern/internals/TreeViewProvider/DescendantProvider.js +1 -1
  73. package/modern/internals/plugins/defaultPlugins.js +2 -2
  74. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -14
  75. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +74 -53
  76. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  77. package/modern/internals/plugins/useTreeViewItems/index.js +1 -0
  78. package/{internals/plugins/useTreeViewNodes/useTreeViewNodes.js → modern/internals/plugins/useTreeViewItems/useTreeViewItems.js} +46 -41
  79. package/modern/internals/plugins/useTreeViewJSXItems/index.js +1 -0
  80. package/{internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js → modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js} +41 -41
  81. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +85 -94
  82. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +40 -40
  83. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  84. package/modern/internals/useTreeView/useTreeView.js +3 -4
  85. package/modern/internals/useTreeView/useTreeView.utils.js +18 -18
  86. package/modern/internals/utils/utils.js +1 -0
  87. package/modern/useTreeItem2/useTreeItem2.js +23 -12
  88. package/node/RichTreeView/RichTreeView.js +11 -11
  89. package/node/SimpleTreeView/SimpleTreeView.js +1 -1
  90. package/node/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  91. package/node/TreeItem/TreeItem.js +31 -22
  92. package/node/TreeItem/TreeItemContent.js +10 -10
  93. package/node/TreeItem/useTreeItemState.js +13 -13
  94. package/node/TreeItem2/TreeItem2.js +11 -11
  95. package/node/TreeItem2Provider/TreeItem2Provider.js +3 -3
  96. package/node/TreeView/TreeView.js +1 -1
  97. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +12 -12
  98. package/node/index.js +1 -1
  99. package/node/internals/TreeViewProvider/DescendantProvider.js +1 -1
  100. package/node/internals/plugins/defaultPlugins.js +2 -2
  101. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -14
  102. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +74 -53
  103. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  104. package/node/internals/plugins/useTreeViewItems/index.js +12 -0
  105. package/node/internals/plugins/{useTreeViewNodes/useTreeViewNodes.js → useTreeViewItems/useTreeViewItems.js} +44 -35
  106. package/node/internals/plugins/useTreeViewJSXItems/index.js +12 -0
  107. package/node/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.js → useTreeViewJSXItems/useTreeViewJSXItems.js} +43 -42
  108. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +84 -93
  109. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +39 -39
  110. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  111. package/node/internals/useTreeView/useTreeView.js +3 -4
  112. package/node/internals/useTreeView/useTreeView.utils.js +23 -23
  113. package/node/internals/utils/utils.js +1 -0
  114. package/node/useTreeItem2/useTreeItem2.js +23 -12
  115. package/package.json +5 -5
  116. package/useTreeItem2/useTreeItem2.d.ts +1 -1
  117. package/useTreeItem2/useTreeItem2.js +26 -18
  118. package/useTreeItem2/useTreeItem2.types.d.ts +9 -7
  119. package/internals/plugins/useTreeViewJSXNodes/index.d.ts +0 -2
  120. package/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  121. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.d.ts +0 -3
  122. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +0 -18
  123. package/internals/plugins/useTreeViewNodes/index.d.ts +0 -2
  124. package/internals/plugins/useTreeViewNodes/index.js +0 -1
  125. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.d.ts +0 -3
  126. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +0 -88
  127. package/modern/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  128. package/modern/internals/plugins/useTreeViewNodes/index.js +0 -1
  129. package/node/internals/plugins/useTreeViewJSXNodes/index.js +0 -12
  130. package/node/internals/plugins/useTreeViewNodes/index.js +0 -12
  131. /package/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  132. /package/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
  133. /package/modern/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  134. /package/modern/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
  135. /package/node/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  136. /package/node/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
@@ -22,7 +22,7 @@ const useTreeItem2 = parameters => {
22
22
  } = (0, _useTreeViewContext.useTreeViewContext)();
23
23
  const {
24
24
  id,
25
- nodeId,
25
+ itemId,
26
26
  label,
27
27
  children,
28
28
  rootRef
@@ -35,25 +35,34 @@ const useTreeItem2 = parameters => {
35
35
  interactions,
36
36
  status
37
37
  } = (0, _useTreeItem2Utils.useTreeItem2Utils)({
38
- nodeId,
38
+ itemId,
39
39
  children
40
40
  });
41
- const idAttribute = instance.getTreeItemId(nodeId, id);
41
+ const idAttribute = instance.getTreeItemId(itemId, id);
42
42
  const handleRootRef = (0, _useForkRef.default)(rootRef, pluginRootRef);
43
43
  const createRootHandleFocus = otherHandlers => event => {
44
44
  otherHandlers.onFocus?.(event);
45
45
  if (event.defaultMuiPrevented) {
46
46
  return;
47
47
  }
48
-
49
- // DOM focus stays on the tree which manages focus with aria-activedescendant
50
- if (event.target === event.currentTarget) {
51
- instance.focusRoot();
52
- }
53
48
  const canBeFocused = !status.disabled || disabledItemsFocusable;
54
49
  if (!status.focused && canBeFocused && event.currentTarget === event.target) {
55
- instance.focusItem(event, nodeId);
50
+ instance.focusItem(event, itemId);
51
+ }
52
+ };
53
+ const createRootHandleBlur = otherHandlers => event => {
54
+ otherHandlers.onBlur?.(event);
55
+ if (event.defaultMuiPrevented) {
56
+ return;
57
+ }
58
+ instance.removeFocusedItem();
59
+ };
60
+ const createRootHandleKeyDown = otherHandlers => event => {
61
+ otherHandlers.onKeyDown?.(event);
62
+ if (event.defaultMuiPrevented) {
63
+ return;
56
64
  }
65
+ instance.handleItemKeyDown(event, itemId);
57
66
  };
58
67
  const createContentHandleClick = otherHandlers => event => {
59
68
  otherHandlers.onClick?.(event);
@@ -83,7 +92,7 @@ const useTreeItem2 = parameters => {
83
92
  /* single-selection trees unset aria-selected on un-selected items.
84
93
  *
85
94
  * If the tree does not support multiple selection, aria-selected
86
- * is set to true for the selected node and it is not present on any other node in the tree.
95
+ * is set to true for the selected item and it is not present on any other item in the tree.
87
96
  * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
88
97
  */
89
98
  ariaSelected = true;
@@ -91,13 +100,15 @@ const useTreeItem2 = parameters => {
91
100
  return (0, _extends2.default)({}, externalEventHandlers, {
92
101
  ref: handleRootRef,
93
102
  role: 'treeitem',
94
- tabIndex: -1,
103
+ tabIndex: instance.canItemBeTabbed(itemId) ? 0 : -1,
95
104
  id: idAttribute,
96
105
  'aria-expanded': status.expandable ? status.expanded : undefined,
97
106
  'aria-selected': ariaSelected,
98
107
  'aria-disabled': status.disabled || undefined
99
108
  }, externalProps, {
100
- onFocus: createRootHandleFocus(externalEventHandlers)
109
+ onFocus: createRootHandleFocus(externalEventHandlers),
110
+ onBlur: createRootHandleBlur(externalEventHandlers),
111
+ onKeyDown: createRootHandleKeyDown(externalEventHandlers)
101
112
  });
102
113
  };
103
114
  const getContentProps = (externalProps = {}) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "7.0.0-beta.7",
3
+ "version": "7.1.0",
4
4
  "description": "The community edition of the tree view components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -33,9 +33,9 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@babel/runtime": "^7.24.0",
36
- "@mui/base": "^5.0.0-beta.36",
37
- "@mui/system": "^5.15.9",
38
- "@mui/utils": "^5.15.9",
36
+ "@mui/base": "^5.0.0-beta.40",
37
+ "@mui/system": "^5.15.14",
38
+ "@mui/utils": "^5.15.14",
39
39
  "@types/react-transition-group": "^4.4.10",
40
40
  "clsx": "^2.1.0",
41
41
  "prop-types": "^15.8.1",
@@ -44,7 +44,7 @@
44
44
  "peerDependencies": {
45
45
  "@emotion/react": "^11.9.0",
46
46
  "@emotion/styled": "^11.8.1",
47
- "@mui/material": "^5.15.0",
47
+ "@mui/material": "^5.15.14",
48
48
  "react": "^17.0.0 || ^18.0.0",
49
49
  "react-dom": "^17.0.0 || ^18.0.0"
50
50
  },
@@ -1,2 +1,2 @@
1
1
  import { UseTreeItem2Parameters, UseTreeItem2ReturnValue } from './useTreeItem2.types';
2
- export declare const useTreeItem2: <TPlugins extends [import("../internals").UseTreeViewIdSignature, import("../internals").UseTreeViewNodesSignature, import("../internals").UseTreeViewExpansionSignature, import("../internals").UseTreeViewSelectionSignature, import("../internals").UseTreeViewFocusSignature, import("../internals").UseTreeViewKeyboardNavigationSignature, import("../internals").UseTreeViewIconsSignature] = [import("../internals").UseTreeViewIdSignature, import("../internals").UseTreeViewNodesSignature, import("../internals").UseTreeViewExpansionSignature, import("../internals").UseTreeViewSelectionSignature, import("../internals").UseTreeViewFocusSignature, import("../internals").UseTreeViewKeyboardNavigationSignature, import("../internals").UseTreeViewIconsSignature]>(parameters: UseTreeItem2Parameters) => UseTreeItem2ReturnValue<TPlugins>;
2
+ export declare const useTreeItem2: <TPlugins extends [import("../internals").UseTreeViewIdSignature, import("../internals").UseTreeViewItemsSignature, import("../internals").UseTreeViewExpansionSignature, import("../internals").UseTreeViewSelectionSignature, import("../internals").UseTreeViewFocusSignature, import("../internals").UseTreeViewKeyboardNavigationSignature, import("../internals").UseTreeViewIconsSignature] = [import("../internals").UseTreeViewIdSignature, import("../internals").UseTreeViewItemsSignature, import("../internals").UseTreeViewExpansionSignature, import("../internals").UseTreeViewSelectionSignature, import("../internals").UseTreeViewFocusSignature, import("../internals").UseTreeViewKeyboardNavigationSignature, import("../internals").UseTreeViewIconsSignature]>(parameters: UseTreeItem2Parameters) => UseTreeItem2ReturnValue<TPlugins>;
@@ -15,7 +15,7 @@ export const useTreeItem2 = parameters => {
15
15
  } = useTreeViewContext();
16
16
  const {
17
17
  id,
18
- nodeId,
18
+ itemId,
19
19
  label,
20
20
  children,
21
21
  rootRef
@@ -28,30 +28,37 @@ export const useTreeItem2 = parameters => {
28
28
  interactions,
29
29
  status
30
30
  } = useTreeItem2Utils({
31
- nodeId,
31
+ itemId,
32
32
  children
33
33
  });
34
- const idAttribute = instance.getTreeItemId(nodeId, id);
34
+ const idAttribute = instance.getTreeItemId(itemId, id);
35
35
  const handleRootRef = useForkRef(rootRef, pluginRootRef);
36
36
  const createRootHandleFocus = otherHandlers => event => {
37
- var _otherHandlers$onFocu;
38
- (_otherHandlers$onFocu = otherHandlers.onFocus) == null || _otherHandlers$onFocu.call(otherHandlers, event);
37
+ otherHandlers.onFocus?.(event);
39
38
  if (event.defaultMuiPrevented) {
40
39
  return;
41
40
  }
42
-
43
- // DOM focus stays on the tree which manages focus with aria-activedescendant
44
- if (event.target === event.currentTarget) {
45
- instance.focusRoot();
46
- }
47
41
  const canBeFocused = !status.disabled || disabledItemsFocusable;
48
42
  if (!status.focused && canBeFocused && event.currentTarget === event.target) {
49
- instance.focusItem(event, nodeId);
43
+ instance.focusItem(event, itemId);
44
+ }
45
+ };
46
+ const createRootHandleBlur = otherHandlers => event => {
47
+ otherHandlers.onBlur?.(event);
48
+ if (event.defaultMuiPrevented) {
49
+ return;
50
+ }
51
+ instance.removeFocusedItem();
52
+ };
53
+ const createRootHandleKeyDown = otherHandlers => event => {
54
+ otherHandlers.onKeyDown?.(event);
55
+ if (event.defaultMuiPrevented) {
56
+ return;
50
57
  }
58
+ instance.handleItemKeyDown(event, itemId);
51
59
  };
52
60
  const createContentHandleClick = otherHandlers => event => {
53
- var _otherHandlers$onClic;
54
- (_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
61
+ otherHandlers.onClick?.(event);
55
62
  if (event.defaultMuiPrevented) {
56
63
  return;
57
64
  }
@@ -59,8 +66,7 @@ export const useTreeItem2 = parameters => {
59
66
  interactions.handleSelection(event);
60
67
  };
61
68
  const createContentHandleMouseDown = otherHandlers => event => {
62
- var _otherHandlers$onMous;
63
- (_otherHandlers$onMous = otherHandlers.onMouseDown) == null || _otherHandlers$onMous.call(otherHandlers, event);
69
+ otherHandlers.onMouseDown?.(event);
64
70
  if (event.defaultMuiPrevented) {
65
71
  return;
66
72
  }
@@ -79,7 +85,7 @@ export const useTreeItem2 = parameters => {
79
85
  /* single-selection trees unset aria-selected on un-selected items.
80
86
  *
81
87
  * If the tree does not support multiple selection, aria-selected
82
- * is set to true for the selected node and it is not present on any other node in the tree.
88
+ * is set to true for the selected item and it is not present on any other item in the tree.
83
89
  * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
84
90
  */
85
91
  ariaSelected = true;
@@ -87,13 +93,15 @@ export const useTreeItem2 = parameters => {
87
93
  return _extends({}, externalEventHandlers, {
88
94
  ref: handleRootRef,
89
95
  role: 'treeitem',
90
- tabIndex: -1,
96
+ tabIndex: instance.canItemBeTabbed(itemId) ? 0 : -1,
91
97
  id: idAttribute,
92
98
  'aria-expanded': status.expandable ? status.expanded : undefined,
93
99
  'aria-selected': ariaSelected,
94
100
  'aria-disabled': status.disabled || undefined
95
101
  }, externalProps, {
96
- onFocus: createRootHandleFocus(externalEventHandlers)
102
+ onFocus: createRootHandleFocus(externalEventHandlers),
103
+ onBlur: createRootHandleBlur(externalEventHandlers),
104
+ onKeyDown: createRootHandleKeyDown(externalEventHandlers)
97
105
  });
98
106
  };
99
107
  const getContentProps = (externalProps = {}) => {
@@ -4,21 +4,21 @@ import { MuiCancellableEventHandler } from '../internals/models/MuiCancellableEv
4
4
  import { TreeViewAnyPluginSignature, TreeViewPublicAPI } from '../internals/models';
5
5
  export interface UseTreeItem2Parameters {
6
6
  /**
7
- * The id attribute of the node. If not provided, it will be generated.
7
+ * The id attribute of the item. If not provided, it will be generated.
8
8
  */
9
9
  id?: string;
10
10
  /**
11
- * If `true`, the node is disabled.
11
+ * If `true`, the item is disabled.
12
12
  * @default false
13
13
  */
14
14
  disabled?: boolean;
15
15
  /**
16
- * The id of the node.
16
+ * The id of the item.
17
17
  * Must be unique.
18
18
  */
19
- nodeId: TreeViewItemId;
19
+ itemId: TreeViewItemId;
20
20
  /**
21
- * The label of the node.
21
+ * The label of the item.
22
22
  */
23
23
  label?: React.ReactNode;
24
24
  rootRef?: React.Ref<HTMLLIElement>;
@@ -29,12 +29,14 @@ export interface UseTreeItem2Parameters {
29
29
  }
30
30
  export interface UseTreeItem2RootSlotOwnProps {
31
31
  role: 'treeitem';
32
- tabIndex: -1;
32
+ tabIndex: 0 | -1;
33
33
  id: string;
34
34
  'aria-expanded': React.AriaAttributes['aria-expanded'];
35
35
  'aria-selected': React.AriaAttributes['aria-selected'];
36
36
  'aria-disabled': React.AriaAttributes['aria-disabled'];
37
- onFocus: MuiCancellableEventHandler<React.FocusEvent>;
37
+ onFocus: MuiCancellableEventHandler<React.FocusEvent<HTMLElement>>;
38
+ onBlur: MuiCancellableEventHandler<React.FocusEvent<HTMLElement>>;
39
+ onKeyDown: MuiCancellableEventHandler<React.KeyboardEvent<HTMLElement>>;
38
40
  ref: React.RefCallback<HTMLLIElement>;
39
41
  }
40
42
  export type UseTreeItem2RootSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItem2RootSlotOwnProps;
@@ -1,2 +0,0 @@
1
- export { useTreeViewJSXNodes } from './useTreeViewJSXNodes';
2
- export type { UseTreeViewJSXNodesSignature, UseTreeViewNodesParameters, UseTreeViewNodesDefaultizedParameters, } from './useTreeViewJSXNodes.types';
@@ -1 +0,0 @@
1
- export { useTreeViewJSXNodes } from './useTreeViewJSXNodes';
@@ -1,3 +0,0 @@
1
- import { TreeViewPlugin } from '../../models';
2
- import { UseTreeViewJSXNodesSignature } from './useTreeViewJSXNodes.types';
3
- export declare const useTreeViewJSXNodes: TreeViewPlugin<UseTreeViewJSXNodesSignature>;
@@ -1,18 +0,0 @@
1
- import { TreeViewNode, TreeViewPluginSignature } from '../../models';
2
- import { UseTreeViewNodesSignature } from '../useTreeViewNodes';
3
- import { UseTreeViewKeyboardNavigationSignature } from '../useTreeViewKeyboardNavigation';
4
- export interface UseTreeViewNodesInstance {
5
- insertJSXNode: (node: TreeViewNode) => void;
6
- removeJSXNode: (nodeId: string) => void;
7
- mapFirstCharFromJSX: (nodeId: string, firstChar: string) => () => void;
8
- }
9
- export interface UseTreeViewNodesParameters {
10
- }
11
- export interface UseTreeViewNodesDefaultizedParameters {
12
- }
13
- export type UseTreeViewJSXNodesSignature = TreeViewPluginSignature<{
14
- params: UseTreeViewNodesParameters;
15
- defaultizedParams: UseTreeViewNodesDefaultizedParameters;
16
- instance: UseTreeViewNodesInstance;
17
- dependantPlugins: [UseTreeViewNodesSignature, UseTreeViewKeyboardNavigationSignature];
18
- }>;
@@ -1,2 +0,0 @@
1
- export { useTreeViewNodes } from './useTreeViewNodes';
2
- export type { UseTreeViewNodesSignature, UseTreeViewNodesParameters, UseTreeViewNodesDefaultizedParameters, } from './useTreeViewNodes.types';
@@ -1 +0,0 @@
1
- export { useTreeViewNodes } from './useTreeViewNodes';
@@ -1,3 +0,0 @@
1
- import { TreeViewPlugin } from '../../models';
2
- import { UseTreeViewNodesSignature } from './useTreeViewNodes.types';
3
- export declare const useTreeViewNodes: TreeViewPlugin<UseTreeViewNodesSignature>;
@@ -1,88 +0,0 @@
1
- import { TreeViewNode, DefaultizedProps, TreeViewPluginSignature } from '../../models';
2
- import { TreeViewItemId } from '../../../models';
3
- interface TreeViewNodeProps {
4
- label: string;
5
- nodeId: string;
6
- id: string | undefined;
7
- children?: TreeViewNodeProps[];
8
- }
9
- export interface UseTreeViewNodesInstance<R extends {}> {
10
- getNode: (nodeId: string) => TreeViewNode;
11
- getItem: (nodeId: string) => R;
12
- getNodesToRender: () => TreeViewNodeProps[];
13
- getChildrenIds: (nodeId: string | null) => string[];
14
- getNavigableChildrenIds: (nodeId: string | null) => string[];
15
- isNodeDisabled: (nodeId: string | null) => nodeId is string;
16
- }
17
- export interface UseTreeViewNodesPublicAPI<R extends {}> extends Pick<UseTreeViewNodesInstance<R>, 'getItem'> {
18
- }
19
- export interface UseTreeViewNodesParameters<R extends {}> {
20
- /**
21
- * If `true`, will allow focus on disabled items.
22
- * @default false
23
- */
24
- disabledItemsFocusable?: boolean;
25
- items: readonly R[];
26
- /**
27
- * Used to determine if a given item should be disabled.
28
- * @template R
29
- * @param {R} item The item to check.
30
- * @returns {boolean} `true` if the item should be disabled.
31
- */
32
- isItemDisabled?: (item: R) => boolean;
33
- /**
34
- * Used to determine the string label for a given item.
35
- *
36
- * @template R
37
- * @param {R} item The item to check.
38
- * @returns {string} The label of the item.
39
- * @default `(item) => item.label`
40
- */
41
- getItemLabel?: (item: R) => string;
42
- /**
43
- * Used to determine the string label for a given item.
44
- *
45
- * @template R
46
- * @param {R} item The item to check.
47
- * @returns {string} The id of the item.
48
- * @default `(item) => item.id`
49
- */
50
- getItemId?: (item: R) => TreeViewItemId;
51
- }
52
- export type UseTreeViewNodesDefaultizedParameters<R extends {}> = DefaultizedProps<UseTreeViewNodesParameters<R>, 'disabledItemsFocusable'>;
53
- interface UseTreeViewNodesEventLookup {
54
- removeNode: {
55
- params: {
56
- id: string;
57
- };
58
- };
59
- }
60
- export interface TreeViewNodeIdAndChildren {
61
- id: TreeViewItemId;
62
- children?: TreeViewNodeIdAndChildren[];
63
- }
64
- export interface UseTreeViewNodesState<R extends {}> {
65
- nodes: {
66
- nodeTree: TreeViewNodeIdAndChildren[];
67
- nodeMap: TreeViewNodeMap;
68
- itemMap: TreeViewItemMap<R>;
69
- };
70
- }
71
- interface UseTreeViewNodesContextValue extends Pick<UseTreeViewNodesDefaultizedParameters<any>, 'disabledItemsFocusable'> {
72
- }
73
- export type UseTreeViewNodesSignature = TreeViewPluginSignature<{
74
- params: UseTreeViewNodesParameters<any>;
75
- defaultizedParams: UseTreeViewNodesDefaultizedParameters<any>;
76
- instance: UseTreeViewNodesInstance<any>;
77
- publicAPI: UseTreeViewNodesPublicAPI<any>;
78
- events: UseTreeViewNodesEventLookup;
79
- state: UseTreeViewNodesState<any>;
80
- contextValue: UseTreeViewNodesContextValue;
81
- }>;
82
- export type TreeViewNodeMap = {
83
- [nodeId: string]: TreeViewNode;
84
- };
85
- export type TreeViewItemMap<R extends {}> = {
86
- [nodeId: string]: R;
87
- };
88
- export {};
@@ -1 +0,0 @@
1
- export { useTreeViewJSXNodes } from './useTreeViewJSXNodes';
@@ -1 +0,0 @@
1
- export { useTreeViewNodes } from './useTreeViewNodes';
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "useTreeViewJSXNodes", {
7
- enumerable: true,
8
- get: function () {
9
- return _useTreeViewJSXNodes.useTreeViewJSXNodes;
10
- }
11
- });
12
- var _useTreeViewJSXNodes = require("./useTreeViewJSXNodes");
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "useTreeViewNodes", {
7
- enumerable: true,
8
- get: function () {
9
- return _useTreeViewNodes.useTreeViewNodes;
10
- }
11
- });
12
- var _useTreeViewNodes = require("./useTreeViewNodes");