@mui/x-tree-view 8.0.0-beta.0 → 8.0.0-beta.2

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 (168) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/RichTreeView/RichTreeView.js +17 -5
  3. package/RichTreeView/richTreeViewClasses.d.ts +2 -4
  4. package/RichTreeView/richTreeViewClasses.js +1 -1
  5. package/SimpleTreeView/SimpleTreeView.js +17 -5
  6. package/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  7. package/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  8. package/TreeItem/TreeItem.d.ts +1 -1
  9. package/TreeItem/TreeItem.js +45 -49
  10. package/TreeItem/index.d.ts +2 -1
  11. package/TreeItem/index.js +13 -21
  12. package/TreeItem/treeItemClasses.d.ts +40 -18
  13. package/TreeItem/treeItemClasses.js +3 -1
  14. package/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  15. package/esm/RichTreeView/RichTreeView.js +17 -5
  16. package/esm/RichTreeView/richTreeViewClasses.d.ts +2 -4
  17. package/esm/RichTreeView/richTreeViewClasses.js +1 -1
  18. package/esm/SimpleTreeView/SimpleTreeView.js +17 -5
  19. package/esm/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  20. package/esm/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  21. package/esm/TreeItem/TreeItem.d.ts +1 -1
  22. package/esm/TreeItem/TreeItem.js +45 -49
  23. package/esm/TreeItem/index.d.ts +2 -1
  24. package/esm/TreeItem/index.js +1 -1
  25. package/esm/TreeItem/treeItemClasses.d.ts +40 -18
  26. package/esm/TreeItem/treeItemClasses.js +3 -1
  27. package/esm/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  28. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
  29. package/esm/index.js +1 -1
  30. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  31. package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  32. package/esm/internals/TreeViewProvider/TreeViewContext.js +8 -1
  33. package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  34. package/esm/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  35. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  36. package/esm/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  37. package/esm/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
  38. package/esm/internals/TreeViewProvider/index.d.ts +1 -1
  39. package/esm/internals/TreeViewProvider/index.js +1 -1
  40. package/esm/internals/index.d.ts +2 -1
  41. package/esm/internals/models/itemPlugin.d.ts +3 -3
  42. package/esm/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  43. package/esm/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
  44. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  45. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
  46. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  47. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
  48. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
  49. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
  50. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
  51. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +13 -15
  52. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
  53. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
  54. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -11
  55. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
  56. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
  57. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
  58. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
  59. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  60. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +16 -21
  61. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -38
  62. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
  63. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +38 -1
  64. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
  65. package/esm/internals/utils/selectors.d.ts +1 -1
  66. package/esm/useTreeItem/useTreeItem.js +16 -17
  67. package/esm/useTreeItem/useTreeItem.types.d.ts +9 -4
  68. package/hooks/useTreeItemUtils/useTreeItemUtils.js +7 -13
  69. package/index.js +1 -1
  70. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
  71. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  72. package/internals/TreeViewProvider/TreeViewContext.js +10 -2
  73. package/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  74. package/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  75. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  76. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  77. package/internals/TreeViewProvider/TreeViewStyleContext.js +21 -0
  78. package/internals/TreeViewProvider/index.d.ts +1 -1
  79. package/internals/TreeViewProvider/index.js +2 -2
  80. package/internals/index.d.ts +2 -1
  81. package/internals/models/itemPlugin.d.ts +3 -3
  82. package/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  83. package/internals/plugins/useTreeViewItemCustomization/index.js +12 -0
  84. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  85. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +32 -0
  86. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  87. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +5 -0
  88. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
  89. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
  90. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
  91. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +12 -14
  92. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
  93. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
  94. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -12
  95. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
  96. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
  97. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
  98. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
  99. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  100. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +15 -20
  101. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -37
  102. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
  103. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +39 -2
  104. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
  105. package/internals/utils/selectors.d.ts +1 -1
  106. package/modern/RichTreeView/RichTreeView.js +17 -5
  107. package/modern/RichTreeView/richTreeViewClasses.d.ts +2 -4
  108. package/modern/RichTreeView/richTreeViewClasses.js +1 -1
  109. package/modern/SimpleTreeView/SimpleTreeView.js +17 -5
  110. package/modern/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  111. package/modern/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  112. package/modern/TreeItem/TreeItem.d.ts +1 -1
  113. package/modern/TreeItem/TreeItem.js +45 -49
  114. package/modern/TreeItem/index.d.ts +2 -1
  115. package/modern/TreeItem/index.js +1 -1
  116. package/modern/TreeItem/treeItemClasses.d.ts +40 -18
  117. package/modern/TreeItem/treeItemClasses.js +3 -1
  118. package/modern/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  119. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
  120. package/modern/index.js +1 -1
  121. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  122. package/modern/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  123. package/modern/internals/TreeViewProvider/TreeViewContext.js +8 -1
  124. package/modern/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  125. package/modern/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  126. package/modern/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  127. package/modern/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  128. package/modern/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
  129. package/modern/internals/TreeViewProvider/index.d.ts +1 -1
  130. package/modern/internals/TreeViewProvider/index.js +1 -1
  131. package/modern/internals/index.d.ts +2 -1
  132. package/modern/internals/models/itemPlugin.d.ts +3 -3
  133. package/modern/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  134. package/modern/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
  135. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  136. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
  137. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  138. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
  139. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
  140. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
  141. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
  142. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +13 -15
  143. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
  144. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
  145. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -11
  146. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
  147. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
  148. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
  149. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
  150. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  151. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +16 -21
  152. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -38
  153. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
  154. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +38 -1
  155. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
  156. package/modern/internals/utils/selectors.d.ts +1 -1
  157. package/modern/useTreeItem/useTreeItem.js +16 -17
  158. package/modern/useTreeItem/useTreeItem.types.d.ts +9 -4
  159. package/package.json +2 -2
  160. package/tsconfig.build.tsbuildinfo +1 -1
  161. package/useTreeItem/useTreeItem.js +16 -17
  162. package/useTreeItem/useTreeItem.types.d.ts +9 -4
  163. package/esm/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  164. package/esm/internals/TreeViewProvider/useTreeViewContext.js +0 -9
  165. package/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  166. package/internals/TreeViewProvider/useTreeViewContext.js +0 -17
  167. package/modern/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  168. package/modern/internals/TreeViewProvider/useTreeViewContext.js +0 -9
@@ -14,17 +14,10 @@ import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeVie
14
14
  import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
15
15
  import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
16
16
  import { selectorItemExpansionTrigger } from "../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
17
+ import { selectorIsCheckboxSelectionEnabled, selectorIsItemSelectionEnabled } from "../internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js";
17
18
  export const useTreeItem = parameters => {
18
19
  const {
19
20
  runItemPlugins,
20
- items: {
21
- onItemClick
22
- },
23
- selection: {
24
- disableSelection,
25
- checkboxSelection
26
- },
27
- label: labelContext,
28
21
  instance,
29
22
  publicAPI,
30
23
  store
@@ -61,6 +54,8 @@ export const useTreeItem = parameters => {
61
54
  const handleContentRef = useForkRef(contentRef, contentRefObject);
62
55
  const checkboxRef = React.useRef(null);
63
56
  const treeId = useSelector(store, selectorTreeViewId);
57
+ const isSelectionEnabledForItem = useSelector(store, selectorIsItemSelectionEnabled, itemId);
58
+ const isCheckboxSelectionEnabled = useSelector(store, selectorIsCheckboxSelectionEnabled);
64
59
  const idAttribute = generateTreeItemIdAttribute({
65
60
  itemId,
66
61
  treeId,
@@ -70,8 +65,7 @@ export const useTreeItem = parameters => {
70
65
  const sharedPropsEnhancerParams = {
71
66
  rootRefObject,
72
67
  contentRefObject,
73
- interactions,
74
- status
68
+ interactions
75
69
  };
76
70
  const createRootHandleFocus = otherHandlers => event => {
77
71
  otherHandlers.onFocus?.(event);
@@ -116,14 +110,14 @@ export const useTreeItem = parameters => {
116
110
  };
117
111
  const createContentHandleClick = otherHandlers => event => {
118
112
  otherHandlers.onClick?.(event);
119
- onItemClick(event, itemId);
113
+ instance.handleItemClick(event, itemId);
120
114
  if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
121
115
  return;
122
116
  }
123
117
  if (selectorItemExpansionTrigger(store.value) === 'content') {
124
118
  interactions.handleExpansion(event);
125
119
  }
126
- if (!checkboxSelection) {
120
+ if (!isCheckboxSelectionEnabled) {
127
121
  interactions.handleSelection(event);
128
122
  }
129
123
  };
@@ -159,7 +153,7 @@ export const useTreeItem = parameters => {
159
153
  if (status.selected) {
160
154
  // - each selected node has aria-selected set to true.
161
155
  ariaSelected = true;
162
- } else if (disableSelection || status.disabled) {
156
+ } else if (!isSelectionEnabledForItem) {
163
157
  // - if the tree contains nodes that are not selectable, aria-selected is not present on those nodes.
164
158
  ariaSelected = undefined;
165
159
  } else {
@@ -195,6 +189,11 @@ export const useTreeItem = parameters => {
195
189
  onMouseDown: createContentHandleMouseDown(externalEventHandlers),
196
190
  status
197
191
  });
192
+ ['expanded', 'selected', 'focused', 'disabled', 'editing', 'editable'].forEach(key => {
193
+ if (status[key]) {
194
+ props[`data-${key}`] = '';
195
+ }
196
+ });
198
197
  const enhancedContentProps = propsEnhancers.content?.(_extends({}, sharedPropsEnhancerParams, {
199
198
  externalEventHandlers
200
199
  })) ?? {};
@@ -217,10 +216,10 @@ export const useTreeItem = parameters => {
217
216
  }, externalProps, {
218
217
  onDoubleClick: createLabelHandleDoubleClick(externalEventHandlers)
219
218
  });
220
- if (labelContext?.isItemEditable) {
221
- props.editable = status.editable;
222
- }
223
- return props;
219
+ const enhancedLabelProps = propsEnhancers.label?.(_extends({}, sharedPropsEnhancerParams, {
220
+ externalEventHandlers
221
+ })) ?? {};
222
+ return _extends({}, enhancedLabelProps, props);
224
223
  };
225
224
  const getLabelInputProps = (externalProps = {}) => {
226
225
  const externalEventHandlers = extractEventHandlers(externalProps);
@@ -55,7 +55,16 @@ export interface UseTreeItemContentSlotPropsFromUseTreeItem {
55
55
  onClick: TreeViewCancellableEventHandler<React.MouseEvent>;
56
56
  onMouseDown: TreeViewCancellableEventHandler<React.MouseEvent>;
57
57
  ref: React.RefCallback<HTMLDivElement> | null;
58
+ /**
59
+ * @deprecated Will be removed in the next major version. Please use the data-attrs instead.
60
+ */
58
61
  status: UseTreeItemStatus;
62
+ 'data-expanded'?: '';
63
+ 'data-selected'?: '';
64
+ 'data-focused'?: '';
65
+ 'data-disabled'?: '';
66
+ 'data-editing'?: '';
67
+ 'data-editable'?: '';
59
68
  }
60
69
  export interface UseTreeItemContentSlotOwnProps extends UseTreeItemContentSlotPropsFromUseTreeItem {}
61
70
  export type UseTreeItemContentSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemContentSlotOwnProps;
@@ -66,10 +75,6 @@ export type UseTreeItemIconContainerSlotProps<ExternalProps = {}> = ExternalProp
66
75
  export interface UseTreeItemLabelSlotOwnProps {
67
76
  children: React.ReactNode;
68
77
  onDoubleClick: TreeViewCancellableEventHandler<React.MouseEvent>;
69
- /**
70
- * Only defined when the `isItemEditable` experimental feature is enabled.
71
- */
72
- editable?: boolean;
73
78
  }
74
79
  export type UseTreeItemLabelSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemLabelSlotOwnProps;
75
80
  export interface UseTreeItemLabelInputSlotOwnProps {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "8.0.0-beta.0",
3
+ "version": "8.0.0-beta.2",
4
4
  "description": "The community edition of the Tree View components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",
@@ -41,7 +41,7 @@
41
41
  "react-transition-group": "^4.4.5",
42
42
  "reselect": "^5.1.1",
43
43
  "use-sync-external-store": "^1.4.0",
44
- "@mui/x-internals": "8.0.0-beta.0"
44
+ "@mui/x-internals": "8.0.0-beta.2"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",