@mui/x-tree-view 7.8.0 → 7.10.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.
- package/CHANGELOG.md +140 -0
- package/RichTreeView/RichTreeView.js +9 -5
- package/SimpleTreeView/SimpleTreeView.js +9 -5
- package/TreeItem/useTreeItemState.js +16 -3
- package/TreeView/TreeView.js +9 -5
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +16 -3
- package/index.js +1 -1
- package/internals/corePlugins/corePlugins.d.ts +1 -1
- package/internals/corePlugins/corePlugins.js +2 -1
- package/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +2 -0
- package/internals/corePlugins/useTreeViewOptionalPlugins/index.js +1 -0
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +3 -0
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +12 -0
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +8 -0
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js +1 -0
- package/internals/models/plugin.d.ts +1 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -7
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -2
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -2
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +28 -3
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +20 -9
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +15 -5
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +12 -4
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +25 -16
- package/internals/useTreeView/useTreeView.js +2 -1
- package/internals/utils/plugins.d.ts +2 -0
- package/internals/utils/plugins.js +4 -0
- package/modern/RichTreeView/RichTreeView.js +9 -5
- package/modern/SimpleTreeView/SimpleTreeView.js +9 -5
- package/modern/TreeItem/useTreeItemState.js +16 -3
- package/modern/TreeView/TreeView.js +9 -5
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +16 -3
- package/modern/index.js +1 -1
- package/modern/internals/corePlugins/corePlugins.js +2 -1
- package/modern/internals/corePlugins/useTreeViewOptionalPlugins/index.js +1 -0
- package/modern/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +12 -0
- package/modern/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js +1 -0
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -2
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +28 -3
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +15 -5
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +12 -4
- package/modern/internals/useTreeView/useTreeView.js +2 -1
- package/modern/internals/utils/plugins.js +4 -0
- package/node/RichTreeView/RichTreeView.js +9 -5
- package/node/SimpleTreeView/SimpleTreeView.js +9 -5
- package/node/TreeItem/useTreeItemState.js +16 -3
- package/node/TreeView/TreeView.js +9 -5
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +16 -3
- package/node/index.js +1 -1
- package/node/internals/corePlugins/corePlugins.js +2 -1
- package/node/internals/corePlugins/useTreeViewOptionalPlugins/index.js +12 -0
- package/node/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +19 -0
- package/node/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js +5 -0
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -2
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +28 -3
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +15 -5
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +12 -4
- package/node/internals/useTreeView/useTreeView.js +2 -1
- package/node/internals/utils/plugins.js +11 -0
- package/package.json +3 -3
|
@@ -146,6 +146,10 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
146
146
|
current: _propTypes.default.shape({
|
|
147
147
|
focusItem: _propTypes.default.func.isRequired,
|
|
148
148
|
getItem: _propTypes.default.func.isRequired,
|
|
149
|
+
getItemDOMElement: _propTypes.default.func.isRequired,
|
|
150
|
+
getItemOrderedChildrenIds: _propTypes.default.func.isRequired,
|
|
151
|
+
getItemTree: _propTypes.default.func.isRequired,
|
|
152
|
+
selectItem: _propTypes.default.func.isRequired,
|
|
149
153
|
setItemExpansion: _propTypes.default.func.isRequired
|
|
150
154
|
})
|
|
151
155
|
}),
|
|
@@ -243,34 +247,34 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
243
247
|
multiSelect: _propTypes.default.bool,
|
|
244
248
|
/**
|
|
245
249
|
* Callback fired when tree items are expanded/collapsed.
|
|
246
|
-
* @param {React.SyntheticEvent} event The event
|
|
250
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
247
251
|
* @param {array} itemIds The ids of the expanded items.
|
|
248
252
|
*/
|
|
249
253
|
onExpandedItemsChange: _propTypes.default.func,
|
|
250
254
|
/**
|
|
251
255
|
* Callback fired when a tree item is expanded or collapsed.
|
|
252
|
-
* @param {React.SyntheticEvent} event The event
|
|
256
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
253
257
|
* @param {array} itemId The itemId of the modified item.
|
|
254
258
|
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
255
259
|
*/
|
|
256
260
|
onItemExpansionToggle: _propTypes.default.func,
|
|
257
261
|
/**
|
|
258
262
|
* Callback fired when tree items are focused.
|
|
259
|
-
* @param {React.SyntheticEvent} event The event
|
|
263
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
260
264
|
* @param {string} itemId The id of the focused item.
|
|
261
265
|
* @param {string} value of the focused item.
|
|
262
266
|
*/
|
|
263
267
|
onItemFocus: _propTypes.default.func,
|
|
264
268
|
/**
|
|
265
269
|
* Callback fired when a tree item is selected or deselected.
|
|
266
|
-
* @param {React.SyntheticEvent} event The event
|
|
270
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
267
271
|
* @param {array} itemId The itemId of the modified item.
|
|
268
272
|
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
269
273
|
*/
|
|
270
274
|
onItemSelectionToggle: _propTypes.default.func,
|
|
271
275
|
/**
|
|
272
276
|
* Callback fired when tree items are selected/deselected.
|
|
273
|
-
* @param {React.SyntheticEvent} event The event
|
|
277
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
274
278
|
* @param {string[] | string} itemIds The ids of the selected items.
|
|
275
279
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
276
280
|
*/
|
|
@@ -104,6 +104,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
104
104
|
current: _propTypes.default.shape({
|
|
105
105
|
focusItem: _propTypes.default.func.isRequired,
|
|
106
106
|
getItem: _propTypes.default.func.isRequired,
|
|
107
|
+
getItemDOMElement: _propTypes.default.func.isRequired,
|
|
108
|
+
getItemOrderedChildrenIds: _propTypes.default.func.isRequired,
|
|
109
|
+
getItemTree: _propTypes.default.func.isRequired,
|
|
110
|
+
selectItem: _propTypes.default.func.isRequired,
|
|
107
111
|
setItemExpansion: _propTypes.default.func.isRequired
|
|
108
112
|
})
|
|
109
113
|
}),
|
|
@@ -179,34 +183,34 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
179
183
|
multiSelect: _propTypes.default.bool,
|
|
180
184
|
/**
|
|
181
185
|
* Callback fired when tree items are expanded/collapsed.
|
|
182
|
-
* @param {React.SyntheticEvent} event The event
|
|
186
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
183
187
|
* @param {array} itemIds The ids of the expanded items.
|
|
184
188
|
*/
|
|
185
189
|
onExpandedItemsChange: _propTypes.default.func,
|
|
186
190
|
/**
|
|
187
191
|
* Callback fired when a tree item is expanded or collapsed.
|
|
188
|
-
* @param {React.SyntheticEvent} event The event
|
|
192
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
189
193
|
* @param {array} itemId The itemId of the modified item.
|
|
190
194
|
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
191
195
|
*/
|
|
192
196
|
onItemExpansionToggle: _propTypes.default.func,
|
|
193
197
|
/**
|
|
194
198
|
* Callback fired when tree items are focused.
|
|
195
|
-
* @param {React.SyntheticEvent} event The event
|
|
199
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
196
200
|
* @param {string} itemId The id of the focused item.
|
|
197
201
|
* @param {string} value of the focused item.
|
|
198
202
|
*/
|
|
199
203
|
onItemFocus: _propTypes.default.func,
|
|
200
204
|
/**
|
|
201
205
|
* Callback fired when a tree item is selected or deselected.
|
|
202
|
-
* @param {React.SyntheticEvent} event The event
|
|
206
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
203
207
|
* @param {array} itemId The itemId of the modified item.
|
|
204
208
|
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
205
209
|
*/
|
|
206
210
|
onItemSelectionToggle: _propTypes.default.func,
|
|
207
211
|
/**
|
|
208
212
|
* Callback fired when tree items are selected/deselected.
|
|
209
|
-
* @param {React.SyntheticEvent} event The event
|
|
213
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
210
214
|
* @param {string[] | string} itemIds The ids of the selected items.
|
|
211
215
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
212
216
|
*/
|
|
@@ -45,10 +45,18 @@ function useTreeItemState(itemId) {
|
|
|
45
45
|
if (event.shiftKey) {
|
|
46
46
|
instance.expandSelectionRange(event, itemId);
|
|
47
47
|
} else {
|
|
48
|
-
instance.selectItem(
|
|
48
|
+
instance.selectItem({
|
|
49
|
+
event,
|
|
50
|
+
itemId,
|
|
51
|
+
keepExistingSelection: true
|
|
52
|
+
});
|
|
49
53
|
}
|
|
50
54
|
} else {
|
|
51
|
-
instance.selectItem(
|
|
55
|
+
instance.selectItem({
|
|
56
|
+
event,
|
|
57
|
+
itemId,
|
|
58
|
+
shouldBeSelected: true
|
|
59
|
+
});
|
|
52
60
|
}
|
|
53
61
|
}
|
|
54
62
|
};
|
|
@@ -60,7 +68,12 @@ function useTreeItemState(itemId) {
|
|
|
60
68
|
if (multiSelect && hasShift) {
|
|
61
69
|
instance.expandSelectionRange(event, itemId);
|
|
62
70
|
} else {
|
|
63
|
-
instance.selectItem(
|
|
71
|
+
instance.selectItem({
|
|
72
|
+
event,
|
|
73
|
+
itemId,
|
|
74
|
+
keepExistingSelection: multiSelect,
|
|
75
|
+
shouldBeSelected: event.target.checked
|
|
76
|
+
});
|
|
64
77
|
}
|
|
65
78
|
};
|
|
66
79
|
const preventSelection = event => {
|
|
@@ -81,6 +81,10 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
|
|
|
81
81
|
current: _propTypes.default.shape({
|
|
82
82
|
focusItem: _propTypes.default.func.isRequired,
|
|
83
83
|
getItem: _propTypes.default.func.isRequired,
|
|
84
|
+
getItemDOMElement: _propTypes.default.func.isRequired,
|
|
85
|
+
getItemOrderedChildrenIds: _propTypes.default.func.isRequired,
|
|
86
|
+
getItemTree: _propTypes.default.func.isRequired,
|
|
87
|
+
selectItem: _propTypes.default.func.isRequired,
|
|
84
88
|
setItemExpansion: _propTypes.default.func.isRequired
|
|
85
89
|
})
|
|
86
90
|
}),
|
|
@@ -156,34 +160,34 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
|
|
|
156
160
|
multiSelect: _propTypes.default.bool,
|
|
157
161
|
/**
|
|
158
162
|
* Callback fired when tree items are expanded/collapsed.
|
|
159
|
-
* @param {React.SyntheticEvent} event The event
|
|
163
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
160
164
|
* @param {array} itemIds The ids of the expanded items.
|
|
161
165
|
*/
|
|
162
166
|
onExpandedItemsChange: _propTypes.default.func,
|
|
163
167
|
/**
|
|
164
168
|
* Callback fired when a tree item is expanded or collapsed.
|
|
165
|
-
* @param {React.SyntheticEvent} event The event
|
|
169
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
166
170
|
* @param {array} itemId The itemId of the modified item.
|
|
167
171
|
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
168
172
|
*/
|
|
169
173
|
onItemExpansionToggle: _propTypes.default.func,
|
|
170
174
|
/**
|
|
171
175
|
* Callback fired when tree items are focused.
|
|
172
|
-
* @param {React.SyntheticEvent} event The event
|
|
176
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
173
177
|
* @param {string} itemId The id of the focused item.
|
|
174
178
|
* @param {string} value of the focused item.
|
|
175
179
|
*/
|
|
176
180
|
onItemFocus: _propTypes.default.func,
|
|
177
181
|
/**
|
|
178
182
|
* Callback fired when a tree item is selected or deselected.
|
|
179
|
-
* @param {React.SyntheticEvent} event The event
|
|
183
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
180
184
|
* @param {array} itemId The itemId of the modified item.
|
|
181
185
|
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
182
186
|
*/
|
|
183
187
|
onItemSelectionToggle: _propTypes.default.func,
|
|
184
188
|
/**
|
|
185
189
|
* Callback fired when tree items are selected/deselected.
|
|
186
|
-
* @param {React.SyntheticEvent} event The event
|
|
190
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
187
191
|
* @param {string[] | string} itemIds The ids of the selected items.
|
|
188
192
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
189
193
|
*/
|
|
@@ -63,10 +63,18 @@ const useTreeItem2Utils = ({
|
|
|
63
63
|
if (event.shiftKey) {
|
|
64
64
|
instance.expandSelectionRange(event, itemId);
|
|
65
65
|
} else {
|
|
66
|
-
instance.selectItem(
|
|
66
|
+
instance.selectItem({
|
|
67
|
+
event,
|
|
68
|
+
itemId,
|
|
69
|
+
keepExistingSelection: true
|
|
70
|
+
});
|
|
67
71
|
}
|
|
68
72
|
} else {
|
|
69
|
-
instance.selectItem(
|
|
73
|
+
instance.selectItem({
|
|
74
|
+
event,
|
|
75
|
+
itemId,
|
|
76
|
+
shouldBeSelected: true
|
|
77
|
+
});
|
|
70
78
|
}
|
|
71
79
|
};
|
|
72
80
|
const handleCheckboxSelection = event => {
|
|
@@ -74,7 +82,12 @@ const useTreeItem2Utils = ({
|
|
|
74
82
|
if (multiSelect && hasShift) {
|
|
75
83
|
instance.expandSelectionRange(event, itemId);
|
|
76
84
|
} else {
|
|
77
|
-
instance.selectItem(
|
|
85
|
+
instance.selectItem({
|
|
86
|
+
event,
|
|
87
|
+
itemId,
|
|
88
|
+
keepExistingSelection: multiSelect,
|
|
89
|
+
shouldBeSelected: event.target.checked
|
|
90
|
+
});
|
|
78
91
|
}
|
|
79
92
|
};
|
|
80
93
|
const interactions = {
|
package/node/index.js
CHANGED
|
@@ -5,9 +5,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.TREE_VIEW_CORE_PLUGINS = void 0;
|
|
7
7
|
var _useTreeViewInstanceEvents = require("./useTreeViewInstanceEvents");
|
|
8
|
+
var _useTreeViewOptionalPlugins = require("./useTreeViewOptionalPlugins");
|
|
8
9
|
var _useTreeViewId = require("./useTreeViewId");
|
|
9
10
|
/**
|
|
10
11
|
* Internal plugins that create the tools used by the other plugins.
|
|
11
12
|
* These plugins are used by the tree view components.
|
|
12
13
|
*/
|
|
13
|
-
const TREE_VIEW_CORE_PLUGINS = exports.TREE_VIEW_CORE_PLUGINS = [_useTreeViewInstanceEvents.useTreeViewInstanceEvents, _useTreeViewId.useTreeViewId];
|
|
14
|
+
const TREE_VIEW_CORE_PLUGINS = exports.TREE_VIEW_CORE_PLUGINS = [_useTreeViewInstanceEvents.useTreeViewInstanceEvents, _useTreeViewOptionalPlugins.useTreeViewOptionalPlugins, _useTreeViewId.useTreeViewId];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useTreeViewOptionalPlugins", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useTreeViewOptionalPlugins.useTreeViewOptionalPlugins;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useTreeViewOptionalPlugins = require("./useTreeViewOptionalPlugins");
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTreeViewOptionalPlugins = void 0;
|
|
7
|
+
const useTreeViewOptionalPlugins = ({
|
|
8
|
+
plugins
|
|
9
|
+
}) => {
|
|
10
|
+
const pluginSet = new Set(plugins);
|
|
11
|
+
const getAvailablePlugins = () => pluginSet;
|
|
12
|
+
return {
|
|
13
|
+
instance: {
|
|
14
|
+
getAvailablePlugins
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
exports.useTreeViewOptionalPlugins = useTreeViewOptionalPlugins;
|
|
19
|
+
useTreeViewOptionalPlugins.params = {};
|
|
@@ -52,8 +52,7 @@ const useTreeViewFocus = ({
|
|
|
52
52
|
return itemMeta && (itemMeta.parentId == null || instance.isItemExpanded(itemMeta.parentId));
|
|
53
53
|
};
|
|
54
54
|
const innerFocusItem = (event, itemId) => {
|
|
55
|
-
const
|
|
56
|
-
const itemElement = document.getElementById(instance.getTreeItemIdAttribute(itemId, itemMeta.idAttribute));
|
|
55
|
+
const itemElement = instance.getItemDOMElement(itemId);
|
|
57
56
|
if (itemElement) {
|
|
58
57
|
itemElement.focus();
|
|
59
58
|
}
|
|
@@ -6,11 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.useTreeViewItems = void 0;
|
|
8
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
9
10
|
var React = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _publishTreeViewEvent = require("../../utils/publishTreeViewEvent");
|
|
11
12
|
var _useTreeViewItems = require("./useTreeViewItems.utils");
|
|
12
13
|
var _TreeViewItemDepthContext = require("../../TreeViewItemDepthContext");
|
|
13
14
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
const _excluded = ["children"];
|
|
14
16
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
17
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
18
|
const updateItemsState = ({
|
|
@@ -46,7 +48,6 @@ const updateItemsState = ({
|
|
|
46
48
|
depth
|
|
47
49
|
};
|
|
48
50
|
itemMap[id] = item;
|
|
49
|
-
itemOrderedChildrenIds[id] = [];
|
|
50
51
|
const parentIdWithDefault = parentId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID;
|
|
51
52
|
if (!itemOrderedChildrenIds[parentIdWithDefault]) {
|
|
52
53
|
itemOrderedChildrenIds[parentIdWithDefault] = [];
|
|
@@ -75,6 +76,18 @@ const useTreeViewItems = ({
|
|
|
75
76
|
}) => {
|
|
76
77
|
const getItemMeta = React.useCallback(itemId => state.items.itemMetaMap[itemId], [state.items.itemMetaMap]);
|
|
77
78
|
const getItem = React.useCallback(itemId => state.items.itemMap[itemId], [state.items.itemMap]);
|
|
79
|
+
const getItemTree = React.useCallback(() => {
|
|
80
|
+
const getItemFromItemId = id => {
|
|
81
|
+
const _state$items$itemMap$ = state.items.itemMap[id],
|
|
82
|
+
item = (0, _objectWithoutPropertiesLoose2.default)(_state$items$itemMap$, _excluded);
|
|
83
|
+
const newChildren = state.items.itemOrderedChildrenIds[id];
|
|
84
|
+
if (newChildren) {
|
|
85
|
+
item.children = newChildren.map(getItemFromItemId);
|
|
86
|
+
}
|
|
87
|
+
return item;
|
|
88
|
+
};
|
|
89
|
+
return state.items.itemOrderedChildrenIds[_useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID].map(getItemFromItemId);
|
|
90
|
+
}, [state.items.itemMap, state.items.itemOrderedChildrenIds]);
|
|
78
91
|
const isItemDisabled = React.useCallback(itemId => {
|
|
79
92
|
if (itemId == null) {
|
|
80
93
|
return false;
|
|
@@ -101,6 +114,13 @@ const useTreeViewItems = ({
|
|
|
101
114
|
return state.items.itemChildrenIndexes[parentId][itemId];
|
|
102
115
|
}, [instance, state.items.itemChildrenIndexes]);
|
|
103
116
|
const getItemOrderedChildrenIds = React.useCallback(itemId => state.items.itemOrderedChildrenIds[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID] ?? [], [state.items.itemOrderedChildrenIds]);
|
|
117
|
+
const getItemDOMElement = itemId => {
|
|
118
|
+
const itemMeta = instance.getItemMeta(itemId);
|
|
119
|
+
if (itemMeta == null) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return document.getElementById(instance.getTreeItemIdAttribute(itemId, itemMeta.idAttribute));
|
|
123
|
+
};
|
|
104
124
|
const isItemNavigable = itemId => {
|
|
105
125
|
if (params.disabledItemsFocusable) {
|
|
106
126
|
return true;
|
|
@@ -142,7 +162,7 @@ const useTreeViewItems = ({
|
|
|
142
162
|
label: item.label,
|
|
143
163
|
itemId: item.id,
|
|
144
164
|
id: item.idAttribute,
|
|
145
|
-
children: state.items.itemOrderedChildrenIds[id]
|
|
165
|
+
children: state.items.itemOrderedChildrenIds[id]?.map(getPropsFromItemId)
|
|
146
166
|
};
|
|
147
167
|
};
|
|
148
168
|
return state.items.itemOrderedChildrenIds[_useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID].map(getPropsFromItemId);
|
|
@@ -154,13 +174,18 @@ const useTreeViewItems = ({
|
|
|
154
174
|
}
|
|
155
175
|
}),
|
|
156
176
|
publicAPI: {
|
|
157
|
-
getItem
|
|
177
|
+
getItem,
|
|
178
|
+
getItemDOMElement,
|
|
179
|
+
getItemTree,
|
|
180
|
+
getItemOrderedChildrenIds
|
|
158
181
|
},
|
|
159
182
|
instance: {
|
|
160
183
|
getItemMeta,
|
|
161
184
|
getItem,
|
|
185
|
+
getItemTree,
|
|
162
186
|
getItemsToRender,
|
|
163
187
|
getItemIndex,
|
|
188
|
+
getItemDOMElement,
|
|
164
189
|
getItemOrderedChildrenIds,
|
|
165
190
|
isItemDisabled,
|
|
166
191
|
isItemNavigable,
|
package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js
CHANGED
|
@@ -83,10 +83,13 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
83
83
|
event.preventDefault();
|
|
84
84
|
if (params.multiSelect && event.shiftKey) {
|
|
85
85
|
instance.expandSelectionRange(event, itemId);
|
|
86
|
-
} else if (params.multiSelect) {
|
|
87
|
-
instance.selectItem(event, itemId, true);
|
|
88
86
|
} else {
|
|
89
|
-
instance.selectItem(
|
|
87
|
+
instance.selectItem({
|
|
88
|
+
event,
|
|
89
|
+
itemId,
|
|
90
|
+
keepExistingSelection: params.multiSelect,
|
|
91
|
+
shouldBeSelected: params.multiSelect ? undefined : true
|
|
92
|
+
});
|
|
90
93
|
}
|
|
91
94
|
break;
|
|
92
95
|
}
|
|
@@ -101,9 +104,16 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
101
104
|
} else if (canToggleItemSelection(itemId)) {
|
|
102
105
|
if (params.multiSelect) {
|
|
103
106
|
event.preventDefault();
|
|
104
|
-
instance.selectItem(
|
|
107
|
+
instance.selectItem({
|
|
108
|
+
event,
|
|
109
|
+
itemId,
|
|
110
|
+
keepExistingSelection: true
|
|
111
|
+
});
|
|
105
112
|
} else if (!instance.isItemSelected(itemId)) {
|
|
106
|
-
instance.selectItem(
|
|
113
|
+
instance.selectItem({
|
|
114
|
+
event,
|
|
115
|
+
itemId
|
|
116
|
+
});
|
|
107
117
|
event.preventDefault();
|
|
108
118
|
}
|
|
109
119
|
}
|
|
@@ -55,7 +55,12 @@ const useTreeViewSelection = ({
|
|
|
55
55
|
models.selectedItems.setControlledValue(newSelectedItems);
|
|
56
56
|
};
|
|
57
57
|
const isItemSelected = itemId => selectedItemsMap.has(itemId);
|
|
58
|
-
const selectItem = (
|
|
58
|
+
const selectItem = ({
|
|
59
|
+
event,
|
|
60
|
+
itemId,
|
|
61
|
+
keepExistingSelection = false,
|
|
62
|
+
shouldBeSelected
|
|
63
|
+
}) => {
|
|
59
64
|
if (params.disableSelection) {
|
|
60
65
|
return;
|
|
61
66
|
}
|
|
@@ -63,16 +68,16 @@ const useTreeViewSelection = ({
|
|
|
63
68
|
if (keepExistingSelection) {
|
|
64
69
|
const cleanSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value);
|
|
65
70
|
const isSelectedBefore = instance.isItemSelected(itemId);
|
|
66
|
-
if (isSelectedBefore && (
|
|
71
|
+
if (isSelectedBefore && (shouldBeSelected === false || shouldBeSelected == null)) {
|
|
67
72
|
newSelected = cleanSelectedItems.filter(id => id !== itemId);
|
|
68
|
-
} else if (!isSelectedBefore && (
|
|
73
|
+
} else if (!isSelectedBefore && (shouldBeSelected === true || shouldBeSelected == null)) {
|
|
69
74
|
newSelected = [itemId].concat(cleanSelectedItems);
|
|
70
75
|
} else {
|
|
71
76
|
newSelected = cleanSelectedItems;
|
|
72
77
|
}
|
|
73
78
|
} else {
|
|
74
79
|
// eslint-disable-next-line no-lonely-if
|
|
75
|
-
if (
|
|
80
|
+
if (shouldBeSelected === false || shouldBeSelected == null && instance.isItemSelected(itemId)) {
|
|
76
81
|
newSelected = params.multiSelect ? [] : null;
|
|
77
82
|
} else {
|
|
78
83
|
newSelected = params.multiSelect ? [itemId] : itemId;
|
|
@@ -151,6 +156,9 @@ const useTreeViewSelection = ({
|
|
|
151
156
|
getRootProps: () => ({
|
|
152
157
|
'aria-multiselectable': params.multiSelect
|
|
153
158
|
}),
|
|
159
|
+
publicAPI: {
|
|
160
|
+
selectItem
|
|
161
|
+
},
|
|
154
162
|
instance: {
|
|
155
163
|
isItemSelected,
|
|
156
164
|
selectItem,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.hasPlugin = void 0;
|
|
7
|
+
const hasPlugin = (instance, plugin) => {
|
|
8
|
+
const plugins = instance.getAvailablePlugins();
|
|
9
|
+
return plugins.has(plugin);
|
|
10
|
+
};
|
|
11
|
+
exports.hasPlugin = hasPlugin;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.10.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",
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@babel/runtime": "^7.24.7",
|
|
37
37
|
"@mui/base": "^5.0.0-beta.40",
|
|
38
|
-
"@mui/system": "^5.
|
|
39
|
-
"@mui/utils": "^5.
|
|
38
|
+
"@mui/system": "^5.16.0",
|
|
39
|
+
"@mui/utils": "^5.16.0",
|
|
40
40
|
"@types/react-transition-group": "^4.4.10",
|
|
41
41
|
"clsx": "^2.1.1",
|
|
42
42
|
"prop-types": "^15.8.1",
|