@mui/x-tree-view 7.0.0 → 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 (95) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/RichTreeView/RichTreeView.js +4 -4
  3. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +1 -1
  4. package/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  5. package/TreeItem/TreeItem.js +4 -4
  6. package/TreeItem/treeItemClasses.d.ts +1 -1
  7. package/TreeItem/useTreeItemState.js +9 -9
  8. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +4 -4
  9. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +8 -8
  10. package/hooks/useTreeViewApiRef.d.ts +1 -1
  11. package/index.js +1 -1
  12. package/internals/TreeViewProvider/DescendantProvider.d.ts +1 -1
  13. package/internals/TreeViewProvider/DescendantProvider.js +1 -1
  14. package/internals/index.d.ts +2 -2
  15. package/internals/plugins/defaultPlugins.d.ts +3 -3
  16. package/internals/plugins/defaultPlugins.js +2 -2
  17. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +9 -9
  18. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +5 -5
  19. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +35 -33
  20. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +6 -6
  21. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +6 -6
  22. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +1 -1
  23. package/internals/plugins/useTreeViewItems/index.d.ts +2 -0
  24. package/internals/plugins/useTreeViewItems/index.js +1 -0
  25. package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +3 -0
  26. package/internals/plugins/{useTreeViewNodes/useTreeViewNodes.js → useTreeViewItems/useTreeViewItems.js} +42 -32
  27. package/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.d.ts → useTreeViewItems/useTreeViewItems.types.d.ts} +32 -21
  28. package/internals/plugins/useTreeViewJSXItems/index.d.ts +2 -0
  29. package/internals/plugins/useTreeViewJSXItems/index.js +1 -0
  30. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +3 -0
  31. package/{modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js → internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js} +26 -25
  32. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts +18 -0
  33. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +40 -44
  34. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -2
  35. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  36. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +6 -6
  37. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +7 -7
  38. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  39. package/internals/useTreeView/useTreeView.utils.d.ts +5 -5
  40. package/internals/useTreeView/useTreeView.utils.js +15 -15
  41. package/modern/RichTreeView/RichTreeView.js +4 -4
  42. package/modern/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  43. package/modern/TreeItem/TreeItem.js +4 -4
  44. package/modern/TreeItem/useTreeItemState.js +9 -9
  45. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +8 -8
  46. package/modern/index.js +1 -1
  47. package/modern/internals/TreeViewProvider/DescendantProvider.js +1 -1
  48. package/modern/internals/plugins/defaultPlugins.js +2 -2
  49. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +9 -9
  50. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +35 -33
  51. package/modern/internals/plugins/useTreeViewItems/index.js +1 -0
  52. package/modern/internals/plugins/{useTreeViewNodes/useTreeViewNodes.js → useTreeViewItems/useTreeViewItems.js} +42 -32
  53. package/modern/internals/plugins/useTreeViewJSXItems/index.js +1 -0
  54. package/{internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js → modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js} +26 -25
  55. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +40 -44
  56. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  57. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  58. package/modern/internals/useTreeView/useTreeView.utils.js +15 -15
  59. package/node/RichTreeView/RichTreeView.js +4 -4
  60. package/node/SimpleTreeView/SimpleTreeView.plugins.js +2 -2
  61. package/node/TreeItem/TreeItem.js +4 -4
  62. package/node/TreeItem/useTreeItemState.js +9 -9
  63. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +8 -8
  64. package/node/index.js +1 -1
  65. package/node/internals/TreeViewProvider/DescendantProvider.js +1 -1
  66. package/node/internals/plugins/defaultPlugins.js +2 -2
  67. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +9 -9
  68. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +35 -33
  69. package/node/internals/plugins/useTreeViewItems/index.js +12 -0
  70. package/node/internals/plugins/{useTreeViewNodes/useTreeViewNodes.js → useTreeViewItems/useTreeViewItems.js} +44 -34
  71. package/node/internals/plugins/useTreeViewJSXItems/index.js +12 -0
  72. package/node/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.js → useTreeViewJSXItems/useTreeViewJSXItems.js} +28 -27
  73. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +39 -43
  74. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +33 -33
  75. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -5
  76. package/node/internals/useTreeView/useTreeView.utils.js +20 -20
  77. package/package.json +1 -1
  78. package/useTreeItem2/useTreeItem2.d.ts +1 -1
  79. package/internals/plugins/useTreeViewJSXNodes/index.d.ts +0 -2
  80. package/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  81. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.d.ts +0 -3
  82. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +0 -18
  83. package/internals/plugins/useTreeViewNodes/index.d.ts +0 -2
  84. package/internals/plugins/useTreeViewNodes/index.js +0 -1
  85. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.d.ts +0 -3
  86. package/modern/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  87. package/modern/internals/plugins/useTreeViewNodes/index.js +0 -1
  88. package/node/internals/plugins/useTreeViewJSXNodes/index.js +0 -12
  89. package/node/internals/plugins/useTreeViewNodes/index.js +0 -12
  90. /package/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  91. /package/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
  92. /package/modern/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  93. /package/modern/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
  94. /package/node/internals/plugins/{useTreeViewJSXNodes/useTreeViewJSXNodes.types.js → useTreeViewItems/useTreeViewItems.types.js} +0 -0
  95. /package/node/internals/plugins/{useTreeViewNodes/useTreeViewNodes.types.js → useTreeViewJSXItems/useTreeViewJSXItems.types.js} +0 -0
@@ -1,19 +1,19 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import { populateInstance, getNextNode, getFirstNode, getLastNode } from '../../useTreeView/useTreeView.utils';
3
+ import { populateInstance, getNextItem, getFirstItem, getLastItem } from '../../useTreeView/useTreeView.utils';
4
4
  import { findOrderInTremauxTree } from './useTreeViewSelection.utils';
5
5
  export const useTreeViewSelection = ({
6
6
  instance,
7
7
  params,
8
8
  models
9
9
  }) => {
10
- const lastSelectedNode = React.useRef(null);
10
+ const lastSelectedItem = React.useRef(null);
11
11
  const lastSelectionWasRange = React.useRef(false);
12
12
  const currentRangeSelection = React.useRef([]);
13
13
  const setSelectedItems = (event, newSelectedItems) => {
14
14
  if (params.onItemSelectionToggle) {
15
15
  if (params.multiSelect) {
16
- const addedItems = newSelectedItems.filter(itemId => !instance.isNodeSelected(itemId));
16
+ const addedItems = newSelectedItems.filter(itemId => !instance.isItemSelected(itemId));
17
17
  const removedItems = models.selectedItems.value.filter(itemId => !newSelectedItems.includes(itemId));
18
18
  addedItems.forEach(itemId => {
19
19
  params.onItemSelectionToggle(event, itemId, true);
@@ -35,8 +35,8 @@ export const useTreeViewSelection = ({
35
35
  }
36
36
  models.selectedItems.setControlledValue(newSelectedItems);
37
37
  };
38
- const isNodeSelected = itemId => Array.isArray(models.selectedItems.value) ? models.selectedItems.value.indexOf(itemId) !== -1 : models.selectedItems.value === itemId;
39
- const selectNode = (event, itemId, multiple = false) => {
38
+ const isItemSelected = itemId => Array.isArray(models.selectedItems.value) ? models.selectedItems.value.indexOf(itemId) !== -1 : models.selectedItems.value === itemId;
39
+ const selectItem = (event, itemId, multiple = false) => {
40
40
  if (params.disableSelection) {
41
41
  return;
42
42
  }
@@ -54,27 +54,27 @@ export const useTreeViewSelection = ({
54
54
  const newSelected = params.multiSelect ? [itemId] : itemId;
55
55
  setSelectedItems(event, newSelected);
56
56
  }
57
- lastSelectedNode.current = itemId;
57
+ lastSelectedItem.current = itemId;
58
58
  lastSelectionWasRange.current = false;
59
59
  currentRangeSelection.current = [];
60
60
  };
61
- const getNodesInRange = (nodeAId, nodeBId) => {
62
- const [first, last] = findOrderInTremauxTree(instance, nodeAId, nodeBId);
63
- const nodes = [first];
61
+ const getItemsInRange = (itemAId, itemBId) => {
62
+ const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId);
63
+ const items = [first];
64
64
  let current = first;
65
65
  while (current !== last) {
66
- current = getNextNode(instance, current);
67
- nodes.push(current);
66
+ current = getNextItem(instance, current);
67
+ items.push(current);
68
68
  }
69
- return nodes;
69
+ return items;
70
70
  };
71
- const handleRangeArrowSelect = (event, nodes) => {
71
+ const handleRangeArrowSelect = (event, items) => {
72
72
  let base = models.selectedItems.value.slice();
73
73
  const {
74
74
  start,
75
75
  next,
76
76
  current
77
- } = nodes;
77
+ } = items;
78
78
  if (!next || !current) {
79
79
  return;
80
80
  }
@@ -95,32 +95,32 @@ export const useTreeViewSelection = ({
95
95
  }
96
96
  setSelectedItems(event, base);
97
97
  };
98
- const handleRangeSelect = (event, nodes) => {
98
+ const handleRangeSelect = (event, items) => {
99
99
  let base = models.selectedItems.value.slice();
100
100
  const {
101
101
  start,
102
102
  end
103
- } = nodes;
104
- // If last selection was a range selection ignore nodes that were selected.
103
+ } = items;
104
+ // If last selection was a range selection ignore items that were selected.
105
105
  if (lastSelectionWasRange.current) {
106
106
  base = base.filter(id => currentRangeSelection.current.indexOf(id) === -1);
107
107
  }
108
- let range = getNodesInRange(start, end);
109
- range = range.filter(node => !instance.isNodeDisabled(node));
108
+ let range = getItemsInRange(start, end);
109
+ range = range.filter(item => !instance.isItemDisabled(item));
110
110
  currentRangeSelection.current = range;
111
111
  let newSelected = base.concat(range);
112
112
  newSelected = newSelected.filter((id, i) => newSelected.indexOf(id) === i);
113
113
  setSelectedItems(event, newSelected);
114
114
  };
115
- const selectRange = (event, nodes, stacked = false) => {
115
+ const selectRange = (event, items, stacked = false) => {
116
116
  if (params.disableSelection) {
117
117
  return;
118
118
  }
119
119
  const {
120
- start = lastSelectedNode.current,
120
+ start = lastSelectedItem.current,
121
121
  end,
122
122
  current
123
- } = nodes;
123
+ } = items;
124
124
  if (stacked) {
125
125
  handleRangeArrowSelect(event, {
126
126
  start,
@@ -136,28 +136,28 @@ export const useTreeViewSelection = ({
136
136
  lastSelectionWasRange.current = true;
137
137
  };
138
138
  const rangeSelectToFirst = (event, itemId) => {
139
- if (!lastSelectedNode.current) {
140
- lastSelectedNode.current = itemId;
139
+ if (!lastSelectedItem.current) {
140
+ lastSelectedItem.current = itemId;
141
141
  }
142
- const start = lastSelectionWasRange.current ? lastSelectedNode.current : itemId;
142
+ const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId;
143
143
  instance.selectRange(event, {
144
144
  start,
145
- end: getFirstNode(instance)
145
+ end: getFirstItem(instance)
146
146
  });
147
147
  };
148
148
  const rangeSelectToLast = (event, itemId) => {
149
- if (!lastSelectedNode.current) {
150
- lastSelectedNode.current = itemId;
149
+ if (!lastSelectedItem.current) {
150
+ lastSelectedItem.current = itemId;
151
151
  }
152
- const start = lastSelectionWasRange.current ? lastSelectedNode.current : itemId;
152
+ const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId;
153
153
  instance.selectRange(event, {
154
154
  start,
155
- end: getLastNode(instance)
155
+ end: getLastItem(instance)
156
156
  });
157
157
  };
158
158
  populateInstance(instance, {
159
- isNodeSelected,
160
- selectNode,
159
+ isItemSelected,
160
+ selectItem,
161
161
  selectRange,
162
162
  rangeSelectToLast,
163
163
  rangeSelectToFirst
@@ -178,11 +178,11 @@ useTreeViewSelection.models = {
178
178
  getDefaultValue: params => params.defaultSelectedItems
179
179
  }
180
180
  };
181
- const DEFAULT_SELECTED_NODES = [];
181
+ const DEFAULT_SELECTED_ITEMS = [];
182
182
  useTreeViewSelection.getDefaultizedParams = params => _extends({}, params, {
183
183
  disableSelection: params.disableSelection ?? false,
184
184
  multiSelect: params.multiSelect ?? false,
185
- defaultSelectedItems: params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_NODES : null)
185
+ defaultSelectedItems: params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_ITEMS : null)
186
186
  });
187
187
  useTreeViewSelection.params = {
188
188
  disableSelection: true,
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * This is used to determine the start and end of a selection range so
3
- * we can get the nodes between the two border nodes.
3
+ * we can get the items between the two border items.
4
4
  *
5
- * It finds the nodes' common ancestor using
5
+ * It finds the items' common ancestor using
6
6
  * a naive implementation of a lowest common ancestor algorithm
7
7
  * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).
8
- * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB
9
- * so we can compare their indexes to work out which node comes first in a depth first search.
8
+ * Then compares the ancestor's 2 children that are ancestors of itemA and ItemB
9
+ * so we can compare their indexes to work out which item comes first in a depth first search.
10
10
  * (https://en.wikipedia.org/wiki/Depth-first_search)
11
11
  *
12
- * Another way to put it is which node is shallower in a trémaux tree
12
+ * Another way to put it is which item is shallower in a trémaux tree
13
13
  * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree
14
14
  */
15
15
  export const findOrderInTremauxTree = (instance, nodeAId, nodeBId) => {
@@ -1,43 +1,43 @@
1
- export const getPreviousNode = (instance, itemId) => {
2
- const item = instance.getNode(itemId);
3
- const siblings = instance.getNavigableChildrenIds(item.parentId);
1
+ export const getPreviousItem = (instance, itemId) => {
2
+ const node = instance.getNode(itemId);
3
+ const siblings = instance.getNavigableChildrenIds(node.parentId);
4
4
  const itemIndex = siblings.indexOf(itemId);
5
5
  if (itemIndex === 0) {
6
- return item.parentId;
6
+ return node.parentId;
7
7
  }
8
8
  let currentItem = siblings[itemIndex - 1];
9
- while (instance.isNodeExpanded(currentItem) && instance.getNavigableChildrenIds(currentItem).length > 0) {
9
+ while (instance.isItemExpanded(currentItem) && instance.getNavigableChildrenIds(currentItem).length > 0) {
10
10
  currentItem = instance.getNavigableChildrenIds(currentItem).pop();
11
11
  }
12
12
  return currentItem;
13
13
  };
14
- export const getNextNode = (instance, itemId) => {
14
+ export const getNextItem = (instance, itemId) => {
15
15
  // If expanded get first child
16
- if (instance.isNodeExpanded(itemId) && instance.getNavigableChildrenIds(itemId).length > 0) {
16
+ if (instance.isItemExpanded(itemId) && instance.getNavigableChildrenIds(itemId).length > 0) {
17
17
  return instance.getNavigableChildrenIds(itemId)[0];
18
18
  }
19
- let item = instance.getNode(itemId);
20
- while (item != null) {
19
+ let node = instance.getNode(itemId);
20
+ while (node != null) {
21
21
  // Try to get next sibling
22
- const siblings = instance.getNavigableChildrenIds(item.parentId);
23
- const nextSibling = siblings[siblings.indexOf(item.id) + 1];
22
+ const siblings = instance.getNavigableChildrenIds(node.parentId);
23
+ const nextSibling = siblings[siblings.indexOf(node.id) + 1];
24
24
  if (nextSibling) {
25
25
  return nextSibling;
26
26
  }
27
27
 
28
28
  // If the sibling does not exist, go up a level to the parent and try again.
29
- item = instance.getNode(item.parentId);
29
+ node = instance.getNode(node.parentId);
30
30
  }
31
31
  return null;
32
32
  };
33
- export const getLastNode = instance => {
33
+ export const getLastItem = instance => {
34
34
  let lastItem = instance.getNavigableChildrenIds(null).pop();
35
- while (instance.isNodeExpanded(lastItem)) {
35
+ while (instance.isItemExpanded(lastItem)) {
36
36
  lastItem = instance.getNavigableChildrenIds(lastItem).pop();
37
37
  }
38
38
  return lastItem;
39
39
  };
40
- export const getFirstNode = instance => instance.getNavigableChildrenIds(null)[0];
40
+ export const getFirstItem = instance => instance.getNavigableChildrenIds(null)[0];
41
41
  export const populateInstance = (instance, methods) => {
42
42
  Object.assign(instance, methods);
43
43
  };
@@ -113,8 +113,8 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
113
113
  getSlotProps: getRootProps,
114
114
  ownerState: props
115
115
  });
116
- const nodesToRender = instance.getNodesToRender();
117
- const renderNode = ({
116
+ const itemsToRender = instance.getItemsToRender();
117
+ const renderItem = ({
118
118
  label,
119
119
  itemId,
120
120
  id,
@@ -126,13 +126,13 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
126
126
  label: label,
127
127
  id: id,
128
128
  itemId: itemId,
129
- children: children?.map(renderNode)
129
+ children: children?.map(renderItem)
130
130
  }, itemId);
131
131
  };
132
132
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, {
133
133
  value: contextValue,
134
134
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, (0, _extends2.default)({}, rootProps, {
135
- children: nodesToRender.map(renderNode)
135
+ children: itemsToRender.map(renderItem)
136
136
  }))
137
137
  });
138
138
  });
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.SIMPLE_TREE_VIEW_PLUGINS = void 0;
7
7
  var _defaultPlugins = require("../internals/plugins/defaultPlugins");
8
- var _useTreeViewJSXNodes = require("../internals/plugins/useTreeViewJSXNodes");
9
- const SIMPLE_TREE_VIEW_PLUGINS = exports.SIMPLE_TREE_VIEW_PLUGINS = [..._defaultPlugins.DEFAULT_TREE_VIEW_PLUGINS, _useTreeViewJSXNodes.useTreeViewJSXNodes];
8
+ var _useTreeViewJSXItems = require("../internals/plugins/useTreeViewJSXItems");
9
+ const SIMPLE_TREE_VIEW_PLUGINS = exports.SIMPLE_TREE_VIEW_PLUGINS = [..._defaultPlugins.DEFAULT_TREE_VIEW_PLUGINS, _useTreeViewJSXItems.useTreeViewJSXItems];
10
10
 
11
11
  // We can't infer this type from the plugin, otherwise we would lose the generics.
@@ -194,10 +194,10 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
194
194
  return Boolean(reactChildren);
195
195
  };
196
196
  const expandable = isExpandable(children);
197
- const expanded = instance.isNodeExpanded(itemId);
198
- const focused = instance.isNodeFocused(itemId);
199
- const selected = instance.isNodeSelected(itemId);
200
- const disabled = instance.isNodeDisabled(itemId);
197
+ const expanded = instance.isItemExpanded(itemId);
198
+ const focused = instance.isItemFocused(itemId);
199
+ const selected = instance.isItemSelected(itemId);
200
+ const disabled = instance.isItemDisabled(itemId);
201
201
  const ownerState = (0, _extends2.default)({}, props, {
202
202
  expanded,
203
203
  focused,
@@ -12,11 +12,11 @@ function useTreeItemState(itemId) {
12
12
  multiSelect
13
13
  }
14
14
  } = (0, _useTreeViewContext.useTreeViewContext)();
15
- const expandable = instance.isNodeExpandable(itemId);
16
- const expanded = instance.isNodeExpanded(itemId);
17
- const focused = instance.isNodeFocused(itemId);
18
- const selected = instance.isNodeSelected(itemId);
19
- const disabled = instance.isNodeDisabled(itemId);
15
+ const expandable = instance.isItemExpandable(itemId);
16
+ const expanded = instance.isItemExpanded(itemId);
17
+ const focused = instance.isItemFocused(itemId);
18
+ const selected = instance.isItemSelected(itemId);
19
+ const disabled = instance.isItemDisabled(itemId);
20
20
  const handleExpansion = event => {
21
21
  if (!disabled) {
22
22
  if (!focused) {
@@ -25,8 +25,8 @@ function useTreeItemState(itemId) {
25
25
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
26
26
 
27
27
  // If already expanded and trying to toggle selection don't close
28
- if (expandable && !(multiple && instance.isNodeExpanded(itemId))) {
29
- instance.toggleNodeExpansion(event, itemId);
28
+ if (expandable && !(multiple && instance.isItemExpanded(itemId))) {
29
+ instance.toggleItemExpansion(event, itemId);
30
30
  }
31
31
  }
32
32
  };
@@ -42,10 +42,10 @@ function useTreeItemState(itemId) {
42
42
  end: itemId
43
43
  });
44
44
  } else {
45
- instance.selectNode(event, itemId, true);
45
+ instance.selectItem(event, itemId, true);
46
46
  }
47
47
  } else {
48
- instance.selectNode(event, itemId);
48
+ instance.selectItem(event, itemId);
49
49
  }
50
50
  }
51
51
  };
@@ -17,10 +17,10 @@ const useTreeItem2Utils = ({
17
17
  } = (0, _useTreeViewContext.useTreeViewContext)();
18
18
  const status = {
19
19
  expandable: Boolean(Array.isArray(children) ? children.length : children),
20
- expanded: instance.isNodeExpanded(itemId),
21
- focused: instance.isNodeFocused(itemId),
22
- selected: instance.isNodeSelected(itemId),
23
- disabled: instance.isNodeDisabled(itemId)
20
+ expanded: instance.isItemExpanded(itemId),
21
+ focused: instance.isItemFocused(itemId),
22
+ selected: instance.isItemSelected(itemId),
23
+ disabled: instance.isItemDisabled(itemId)
24
24
  };
25
25
  const handleExpansion = event => {
26
26
  if (status.disabled) {
@@ -32,8 +32,8 @@ const useTreeItem2Utils = ({
32
32
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
33
33
 
34
34
  // If already expanded and trying to toggle selection don't close
35
- if (status.expandable && !(multiple && instance.isNodeExpanded(itemId))) {
36
- instance.toggleNodeExpansion(event, itemId);
35
+ if (status.expandable && !(multiple && instance.isItemExpanded(itemId))) {
36
+ instance.toggleItemExpansion(event, itemId);
37
37
  }
38
38
  };
39
39
  const handleSelection = event => {
@@ -50,10 +50,10 @@ const useTreeItem2Utils = ({
50
50
  end: itemId
51
51
  });
52
52
  } else {
53
- instance.selectNode(event, itemId, true);
53
+ instance.selectItem(event, itemId, true);
54
54
  }
55
55
  } else {
56
- instance.selectNode(event, itemId);
56
+ instance.selectItem(event, itemId);
57
57
  }
58
58
  };
59
59
  const interactions = {
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-tree-view v7.0.0
2
+ * @mui/x-tree-view v7.1.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -55,7 +55,7 @@ const noop = () => {};
55
55
  * We use this for focus management, keyboard navigation, and typeahead
56
56
  * functionality for some components.
57
57
  *
58
- * The hook accepts the element node
58
+ * The hook accepts the element item
59
59
  *
60
60
  * Our main goals with this are:
61
61
  * 1) maximum composability,
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.DEFAULT_TREE_VIEW_PLUGINS = void 0;
7
7
  var _useTreeViewId = require("./useTreeViewId");
8
- var _useTreeViewNodes = require("./useTreeViewNodes");
8
+ var _useTreeViewItems = require("./useTreeViewItems");
9
9
  var _useTreeViewExpansion = require("./useTreeViewExpansion");
10
10
  var _useTreeViewSelection = require("./useTreeViewSelection");
11
11
  var _useTreeViewFocus = require("./useTreeViewFocus");
12
12
  var _useTreeViewKeyboardNavigation = require("./useTreeViewKeyboardNavigation");
13
13
  var _useTreeViewIcons = require("./useTreeViewIcons");
14
- const DEFAULT_TREE_VIEW_PLUGINS = exports.DEFAULT_TREE_VIEW_PLUGINS = [_useTreeViewId.useTreeViewId, _useTreeViewNodes.useTreeViewNodes, _useTreeViewExpansion.useTreeViewExpansion, _useTreeViewSelection.useTreeViewSelection, _useTreeViewFocus.useTreeViewFocus, _useTreeViewKeyboardNavigation.useTreeViewKeyboardNavigation, _useTreeViewIcons.useTreeViewIcons];
14
+ const DEFAULT_TREE_VIEW_PLUGINS = exports.DEFAULT_TREE_VIEW_PLUGINS = [_useTreeViewId.useTreeViewId, _useTreeViewItems.useTreeViewItems, _useTreeViewExpansion.useTreeViewExpansion, _useTreeViewSelection.useTreeViewSelection, _useTreeViewFocus.useTreeViewFocus, _useTreeViewKeyboardNavigation.useTreeViewKeyboardNavigation, _useTreeViewIcons.useTreeViewIcons];
15
15
 
16
16
  // We can't infer this type from the plugin, otherwise we would lose the generics.
@@ -20,11 +20,11 @@ const useTreeViewExpansion = ({
20
20
  params.onExpandedItemsChange?.(event, value);
21
21
  models.expandedItems.setControlledValue(value);
22
22
  };
23
- const isNodeExpanded = React.useCallback(itemId => {
23
+ const isItemExpanded = React.useCallback(itemId => {
24
24
  return Array.isArray(models.expandedItems.value) ? models.expandedItems.value.indexOf(itemId) !== -1 : false;
25
25
  }, [models.expandedItems.value]);
26
- const isNodeExpandable = React.useCallback(itemId => !!instance.getNode(itemId)?.expandable, [instance]);
27
- const toggleNodeExpansion = (0, _useEventCallback.default)((event, itemId) => {
26
+ const isItemExpandable = React.useCallback(itemId => !!instance.getNode(itemId)?.expandable, [instance]);
27
+ const toggleItemExpansion = (0, _useEventCallback.default)((event, itemId) => {
28
28
  if (itemId == null) {
29
29
  return;
30
30
  }
@@ -43,7 +43,7 @@ const useTreeViewExpansion = ({
43
43
  const expandAllSiblings = (event, itemId) => {
44
44
  const node = instance.getNode(itemId);
45
45
  const siblings = instance.getChildrenIds(node.parentId);
46
- const diff = siblings.filter(child => instance.isNodeExpandable(child) && !instance.isNodeExpanded(child));
46
+ const diff = siblings.filter(child => instance.isItemExpandable(child) && !instance.isItemExpanded(child));
47
47
  const newExpanded = models.expandedItems.value.concat(diff);
48
48
  if (diff.length > 0) {
49
49
  if (params.onItemExpansionToggle) {
@@ -55,9 +55,9 @@ const useTreeViewExpansion = ({
55
55
  }
56
56
  };
57
57
  (0, _useTreeView.populateInstance)(instance, {
58
- isNodeExpanded,
59
- isNodeExpandable,
60
- toggleNodeExpansion,
58
+ isItemExpanded,
59
+ isItemExpandable,
60
+ toggleItemExpansion,
61
61
  expandAllSiblings
62
62
  });
63
63
  };
@@ -67,9 +67,9 @@ useTreeViewExpansion.models = {
67
67
  getDefaultValue: params => params.defaultExpandedItems
68
68
  }
69
69
  };
70
- const DEFAULT_EXPANDED_NODES = [];
70
+ const DEFAULT_EXPANDED_ITEMS = [];
71
71
  useTreeViewExpansion.getDefaultizedParams = params => (0, _extends2.default)({}, params, {
72
- defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_NODES
72
+ defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_ITEMS
73
73
  });
74
74
  useTreeViewExpansion.params = {
75
75
  expandedItems: true,
@@ -17,7 +17,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
17
17
  const useTabbableItemId = (instance, selectedItems) => {
18
18
  const isItemVisible = itemId => {
19
19
  const node = instance.getNode(itemId);
20
- return node && (node.parentId == null || instance.isNodeExpanded(node.parentId));
20
+ return node && (node.parentId == null || instance.isItemExpanded(node.parentId));
21
21
  };
22
22
  let tabbableItemId;
23
23
  if (Array.isArray(selectedItems)) {
@@ -41,18 +41,18 @@ const useTreeViewFocus = ({
41
41
  }) => {
42
42
  const tabbableItemId = useTabbableItemId(instance, models.selectedItems.value);
43
43
  const setFocusedItemId = (0, _useEventCallback.default)(itemId => {
44
- const cleanItemId = typeof itemId === 'function' ? itemId(state.focusedNodeId) : itemId;
45
- if (state.focusedNodeId !== cleanItemId) {
44
+ const cleanItemId = typeof itemId === 'function' ? itemId(state.focusedItemId) : itemId;
45
+ if (state.focusedItemId !== cleanItemId) {
46
46
  setState(prevState => (0, _extends2.default)({}, prevState, {
47
- focusedNodeId: cleanItemId
47
+ focusedItemId: cleanItemId
48
48
  }));
49
49
  }
50
50
  });
51
51
  const isTreeViewFocused = React.useCallback(() => !!rootRef.current && rootRef.current.contains((0, _utils.getActiveElement)((0, _ownerDocument.default)(rootRef.current))), [rootRef]);
52
- const isNodeFocused = React.useCallback(itemId => state.focusedNodeId === itemId && isTreeViewFocused(), [state.focusedNodeId, isTreeViewFocused]);
53
- const isNodeVisible = itemId => {
52
+ const isItemFocused = React.useCallback(itemId => state.focusedItemId === itemId && isTreeViewFocused(), [state.focusedItemId, isTreeViewFocused]);
53
+ const isItemVisible = itemId => {
54
54
  const node = instance.getNode(itemId);
55
- return node && (node.parentId == null || instance.isNodeExpanded(node.parentId));
55
+ return node && (node.parentId == null || instance.isItemExpanded(node.parentId));
56
56
  };
57
57
  const innerFocusItem = (event, itemId) => {
58
58
  const node = instance.getNode(itemId);
@@ -65,62 +65,64 @@ const useTreeViewFocus = ({
65
65
  params.onItemFocus(event, itemId);
66
66
  }
67
67
  };
68
- const focusItem = (0, _useEventCallback.default)((event, nodeId) => {
69
- // If we receive a nodeId, and it is visible, the focus will be set to it
70
- if (isNodeVisible(nodeId)) {
71
- innerFocusItem(event, nodeId);
68
+ const focusItem = (0, _useEventCallback.default)((event, itemId) => {
69
+ // If we receive an itemId, and it is visible, the focus will be set to it
70
+ if (isItemVisible(itemId)) {
71
+ innerFocusItem(event, itemId);
72
72
  }
73
73
  });
74
- const focusDefaultNode = (0, _useEventCallback.default)(event => {
75
- let nodeToFocusId;
74
+ const focusDefaultItem = (0, _useEventCallback.default)(event => {
75
+ let itemToFocusId;
76
76
  if (Array.isArray(models.selectedItems.value)) {
77
- nodeToFocusId = models.selectedItems.value.find(isNodeVisible);
78
- } else if (models.selectedItems.value != null && isNodeVisible(models.selectedItems.value)) {
79
- nodeToFocusId = models.selectedItems.value;
77
+ itemToFocusId = models.selectedItems.value.find(isItemVisible);
78
+ } else if (models.selectedItems.value != null && isItemVisible(models.selectedItems.value)) {
79
+ itemToFocusId = models.selectedItems.value;
80
80
  }
81
- if (nodeToFocusId == null) {
82
- nodeToFocusId = instance.getNavigableChildrenIds(null)[0];
81
+ if (itemToFocusId == null) {
82
+ itemToFocusId = instance.getNavigableChildrenIds(null)[0];
83
83
  }
84
- innerFocusItem(event, nodeToFocusId);
84
+ innerFocusItem(event, itemToFocusId);
85
85
  });
86
86
  const removeFocusedItem = (0, _useEventCallback.default)(() => {
87
- if (state.focusedNodeId == null) {
87
+ if (state.focusedItemId == null) {
88
88
  return;
89
89
  }
90
- const node = instance.getNode(state.focusedNodeId);
91
- const itemElement = document.getElementById(instance.getTreeItemId(state.focusedNodeId, node.idAttribute));
92
- if (itemElement) {
93
- itemElement.blur();
90
+ const node = instance.getNode(state.focusedItemId);
91
+ if (node) {
92
+ const itemElement = document.getElementById(instance.getTreeItemId(state.focusedItemId, node.idAttribute));
93
+ if (itemElement) {
94
+ itemElement.blur();
95
+ }
94
96
  }
95
97
  setFocusedItemId(null);
96
98
  });
97
99
  const canItemBeTabbed = itemId => itemId === tabbableItemId;
98
100
  (0, _useTreeView.populateInstance)(instance, {
99
- isNodeFocused,
101
+ isItemFocused,
100
102
  canItemBeTabbed,
101
103
  focusItem,
102
- focusDefaultNode,
104
+ focusDefaultItem,
103
105
  removeFocusedItem
104
106
  });
105
107
  (0, _useTreeView.populatePublicAPI)(publicAPI, {
106
108
  focusItem
107
109
  });
108
- (0, _useInstanceEventHandler.useInstanceEventHandler)(instance, 'removeNode', ({
110
+ (0, _useInstanceEventHandler.useInstanceEventHandler)(instance, 'removeItem', ({
109
111
  id
110
112
  }) => {
111
- if (state.focusedNodeId === id) {
112
- instance.focusDefaultNode(null);
113
+ if (state.focusedItemId === id) {
114
+ instance.focusDefaultItem(null);
113
115
  }
114
116
  });
115
117
  const createHandleFocus = otherHandlers => event => {
116
118
  otherHandlers.onFocus?.(event);
117
119
  // if the event bubbled (which is React specific) we don't want to steal focus
118
120
  if (event.target === event.currentTarget) {
119
- instance.focusDefaultNode(event);
121
+ instance.focusDefaultItem(event);
120
122
  }
121
123
  };
122
- const focusedNode = instance.getNode(state.focusedNodeId);
123
- const activeDescendant = focusedNode ? instance.getTreeItemId(focusedNode.id, focusedNode.idAttribute) : null;
124
+ const focusedItem = instance.getNode(state.focusedItemId);
125
+ const activeDescendant = focusedItem ? instance.getTreeItemId(focusedItem.id, focusedItem.idAttribute) : null;
124
126
  return {
125
127
  getRootProps: otherHandlers => ({
126
128
  onFocus: createHandleFocus(otherHandlers),
@@ -130,7 +132,7 @@ const useTreeViewFocus = ({
130
132
  };
131
133
  exports.useTreeViewFocus = useTreeViewFocus;
132
134
  useTreeViewFocus.getInitialState = () => ({
133
- focusedNodeId: null
135
+ focusedItemId: null
134
136
  });
135
137
  useTreeViewFocus.params = {
136
138
  onItemFocus: true
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useTreeViewItems", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useTreeViewItems.useTreeViewItems;
10
+ }
11
+ });
12
+ var _useTreeViewItems = require("./useTreeViewItems");