@mui/x-tree-view 7.0.0-alpha.7 → 7.0.0-alpha.9
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 +554 -51
- package/README.md +1 -1
- package/RichTreeView/RichTreeView.js +14 -79
- package/RichTreeView/RichTreeView.types.d.ts +6 -9
- package/RichTreeView/index.d.ts +1 -1
- package/SimpleTreeView/SimpleTreeView.js +17 -75
- package/SimpleTreeView/SimpleTreeView.plugins.d.ts +4 -2
- package/SimpleTreeView/SimpleTreeView.types.d.ts +8 -7
- package/SimpleTreeView/index.d.ts +1 -1
- package/TreeItem/TreeItem.js +62 -39
- package/TreeItem/TreeItem.types.d.ts +33 -17
- package/TreeItem/TreeItemContent.d.ts +0 -3
- package/TreeItem/TreeItemContent.js +2 -5
- package/TreeItem/index.d.ts +2 -2
- package/TreeItem/index.js +1 -1
- package/TreeItem/{useTreeItem.d.ts → useTreeItemState.d.ts} +1 -1
- package/TreeItem/{useTreeItem.js → useTreeItemState.js} +4 -2
- package/TreeView/TreeView.js +1 -22
- package/TreeView/TreeView.types.d.ts +5 -1
- package/TreeView/index.d.ts +1 -1
- package/icons/icons.d.ts +6 -0
- package/icons/icons.js +9 -0
- package/icons/index.d.ts +1 -0
- package/icons/index.js +1 -0
- package/icons/package.json +6 -0
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/TreeViewProvider/TreeViewContext.d.ts +4 -2
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -11
- package/internals/TreeViewProvider/useTreeViewContext.js +1 -1
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +3 -2
- package/internals/index.d.ts +15 -0
- package/internals/index.js +4 -0
- package/internals/models/MuiCancellableEvent.d.ts +4 -0
- package/internals/models/helpers.d.ts +7 -1
- package/internals/models/plugin.d.ts +65 -20
- package/internals/models/treeView.d.ts +1 -2
- package/internals/package.json +6 -0
- package/internals/plugins/defaultPlugins.d.ts +6 -4
- package/internals/plugins/defaultPlugins.js +2 -2
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -10
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -3
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +2 -5
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +12 -6
- package/internals/plugins/useTreeViewIcons/index.d.ts +2 -0
- package/internals/plugins/useTreeViewIcons/index.js +1 -0
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.d.ts +3 -0
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +22 -0
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +43 -0
- package/internals/plugins/useTreeViewId/useTreeViewId.js +3 -0
- package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +6 -2
- package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
- package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +6 -4
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +155 -112
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +9 -6
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +21 -3
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +10 -2
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +17 -5
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +15 -5
- package/internals/useTreeView/useTreeView.js +7 -3
- package/internals/useTreeView/useTreeView.types.d.ts +6 -6
- package/internals/useTreeView/useTreeViewModels.js +12 -13
- package/internals/utils/extractPluginParamsFromProps.d.ts +16 -0
- package/internals/utils/extractPluginParamsFromProps.js +38 -0
- package/legacy/RichTreeView/RichTreeView.js +15 -77
- package/legacy/SimpleTreeView/SimpleTreeView.js +14 -70
- package/legacy/TreeItem/TreeItem.js +63 -39
- package/legacy/TreeItem/TreeItemContent.js +9 -12
- package/legacy/TreeItem/index.js +1 -1
- package/legacy/TreeItem/{useTreeItem.js → useTreeItemState.js} +2 -2
- package/legacy/TreeView/TreeView.js +1 -22
- package/legacy/icons/icons.js +9 -0
- package/legacy/icons/index.js +1 -0
- package/legacy/index.js +3 -2
- package/legacy/internals/TreeViewProvider/useTreeViewContext.js +1 -1
- package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
- package/legacy/internals/index.js +4 -0
- package/legacy/internals/plugins/defaultPlugins.js +2 -2
- package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +16 -10
- package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +2 -5
- package/legacy/internals/plugins/useTreeViewIcons/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +21 -0
- package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewId/useTreeViewId.js +3 -0
- package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
- package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +157 -110
- package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +20 -2
- package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +20 -6
- package/legacy/internals/useTreeView/useTreeView.js +6 -2
- package/legacy/internals/useTreeView/useTreeViewModels.js +12 -13
- package/legacy/internals/utils/extractPluginParamsFromProps.js +36 -0
- package/modern/RichTreeView/RichTreeView.js +14 -79
- package/modern/SimpleTreeView/SimpleTreeView.js +17 -75
- package/modern/TreeItem/TreeItem.js +61 -39
- package/modern/TreeItem/TreeItemContent.js +2 -5
- package/modern/TreeItem/index.js +1 -1
- package/modern/TreeItem/{useTreeItem.js → useTreeItemState.js} +4 -2
- package/modern/TreeView/TreeView.js +1 -22
- package/modern/icons/icons.js +9 -0
- package/modern/icons/index.js +1 -0
- package/modern/index.js +3 -2
- package/modern/internals/TreeViewProvider/useTreeViewContext.js +1 -1
- package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
- package/modern/internals/index.js +4 -0
- package/modern/internals/models/MuiCancellableEvent.js +1 -0
- package/modern/internals/plugins/defaultPlugins.js +2 -2
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -11
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +3 -3
- package/modern/internals/plugins/useTreeViewIcons/index.js +1 -0
- package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +22 -0
- package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +1 -0
- package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +3 -0
- package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +155 -112
- package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +18 -3
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
- package/modern/internals/useTreeView/useTreeView.js +7 -3
- package/modern/internals/useTreeView/useTreeViewModels.js +12 -13
- package/modern/internals/utils/extractPluginParamsFromProps.js +38 -0
- package/node/RichTreeView/RichTreeView.js +14 -79
- package/node/SimpleTreeView/SimpleTreeView.js +17 -75
- package/node/TreeItem/TreeItem.js +61 -39
- package/node/TreeItem/TreeItemContent.js +2 -5
- package/node/TreeItem/index.js +4 -4
- package/node/TreeItem/{useTreeItem.js → useTreeItemState.js} +5 -3
- package/node/TreeView/TreeView.js +1 -22
- package/node/icons/icons.js +17 -0
- package/node/icons/index.js +16 -0
- package/node/index.js +13 -1
- package/node/internals/TreeViewProvider/useTreeViewContext.js +1 -1
- package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
- package/node/internals/index.js +33 -0
- package/node/internals/plugins/defaultPlugins.js +2 -2
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -11
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +3 -3
- package/node/internals/plugins/useTreeViewIcons/index.js +12 -0
- package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +29 -0
- package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +5 -0
- package/node/internals/plugins/useTreeViewId/useTreeViewId.js +4 -1
- package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +155 -112
- package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +18 -3
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
- package/node/internals/useTreeView/useTreeView.js +7 -3
- package/node/internals/useTreeView/useTreeViewModels.js +12 -13
- package/node/internals/utils/extractPluginParamsFromProps.js +46 -0
- package/package.json +7 -7
- package/themeAugmentation/components.d.ts +4 -4
- package/internals/plugins/useTreeViewContextValueBuilder/index.d.ts +0 -2
- package/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -1
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.d.ts +0 -3
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -26
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.d.ts +0 -29
- package/legacy/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -1
- package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -28
- package/modern/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -1
- package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -26
- package/node/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -12
- package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -33
- /package/internals/{plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → models/MuiCancellableEvent.js} +0 -0
- /package/{legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js} +0 -0
- /package/{modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → legacy/internals/models/MuiCancellableEvent.js} +0 -0
- /package/node/internals/{plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → models/MuiCancellableEvent.js} +0 -0
|
@@ -10,9 +10,6 @@ export var useTreeViewSelection = function useTreeViewSelection(_ref) {
|
|
|
10
10
|
var lastSelectedNode = React.useRef(null);
|
|
11
11
|
var lastSelectionWasRange = React.useRef(false);
|
|
12
12
|
var currentRangeSelection = React.useRef([]);
|
|
13
|
-
var isNodeSelected = function isNodeSelected(nodeId) {
|
|
14
|
-
return Array.isArray(models.selectedNodes.value) ? models.selectedNodes.value.indexOf(nodeId) !== -1 : models.selectedNodes.value === nodeId;
|
|
15
|
-
};
|
|
16
13
|
var setSelectedNodes = function setSelectedNodes(event, newSelectedNodes) {
|
|
17
14
|
if (params.onNodeSelectionToggle) {
|
|
18
15
|
if (params.multiSelect) {
|
|
@@ -40,7 +37,10 @@ export var useTreeViewSelection = function useTreeViewSelection(_ref) {
|
|
|
40
37
|
if (params.onSelectedNodesChange) {
|
|
41
38
|
params.onSelectedNodesChange(event, newSelectedNodes);
|
|
42
39
|
}
|
|
43
|
-
models.selectedNodes.
|
|
40
|
+
models.selectedNodes.setControlledValue(newSelectedNodes);
|
|
41
|
+
};
|
|
42
|
+
var isNodeSelected = function isNodeSelected(nodeId) {
|
|
43
|
+
return Array.isArray(models.selectedNodes.value) ? models.selectedNodes.value.indexOf(nodeId) !== -1 : models.selectedNodes.value === nodeId;
|
|
44
44
|
};
|
|
45
45
|
var selectNode = function selectNode(event, nodeId) {
|
|
46
46
|
var multiple = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
@@ -185,13 +185,19 @@ export var useTreeViewSelection = function useTreeViewSelection(_ref) {
|
|
|
185
185
|
return {
|
|
186
186
|
'aria-multiselectable': params.multiSelect
|
|
187
187
|
};
|
|
188
|
+
},
|
|
189
|
+
contextValue: {
|
|
190
|
+
selection: {
|
|
191
|
+
multiSelect: params.multiSelect
|
|
192
|
+
}
|
|
188
193
|
}
|
|
189
194
|
};
|
|
190
195
|
};
|
|
191
196
|
useTreeViewSelection.models = {
|
|
192
197
|
selectedNodes: {
|
|
193
|
-
|
|
194
|
-
|
|
198
|
+
getDefaultValue: function getDefaultValue(params) {
|
|
199
|
+
return params.defaultSelectedNodes;
|
|
200
|
+
}
|
|
195
201
|
}
|
|
196
202
|
};
|
|
197
203
|
var DEFAULT_SELECTED_NODES = [];
|
|
@@ -202,4 +208,12 @@ useTreeViewSelection.getDefaultizedParams = function (params) {
|
|
|
202
208
|
multiSelect: (_params$multiSelect = params.multiSelect) != null ? _params$multiSelect : false,
|
|
203
209
|
defaultSelectedNodes: (_params$defaultSelect = params.defaultSelectedNodes) != null ? _params$defaultSelect : params.multiSelect ? DEFAULT_SELECTED_NODES : null
|
|
204
210
|
});
|
|
211
|
+
};
|
|
212
|
+
useTreeViewSelection.params = {
|
|
213
|
+
disableSelection: true,
|
|
214
|
+
multiSelect: true,
|
|
215
|
+
defaultSelectedNodes: true,
|
|
216
|
+
selectedNodes: true,
|
|
217
|
+
onSelectedNodesChange: true,
|
|
218
|
+
onNodeSelectionToggle: true
|
|
205
219
|
};
|
|
@@ -31,11 +31,15 @@ export var useTreeView = function useTreeView(inParams) {
|
|
|
31
31
|
state = _React$useState2[0],
|
|
32
32
|
setState = _React$useState2[1];
|
|
33
33
|
var rootPropsGetters = [];
|
|
34
|
-
var contextValue = {
|
|
34
|
+
var contextValue = {
|
|
35
|
+
instance: instance
|
|
36
|
+
};
|
|
35
37
|
var runPlugin = function runPlugin(plugin) {
|
|
36
38
|
var pluginResponse = plugin({
|
|
37
39
|
instance: instance,
|
|
38
40
|
params: params,
|
|
41
|
+
slots: params.slots,
|
|
42
|
+
slotProps: params.slotProps,
|
|
39
43
|
state: state,
|
|
40
44
|
setState: setState,
|
|
41
45
|
rootRef: innerRootRef,
|
|
@@ -45,7 +49,7 @@ export var useTreeView = function useTreeView(inParams) {
|
|
|
45
49
|
rootPropsGetters.push(pluginResponse.getRootProps);
|
|
46
50
|
}
|
|
47
51
|
if (pluginResponse.contextValue) {
|
|
48
|
-
contextValue
|
|
52
|
+
_extends(contextValue, pluginResponse.contextValue);
|
|
49
53
|
}
|
|
50
54
|
};
|
|
51
55
|
plugins.forEach(runPlugin);
|
|
@@ -15,13 +15,12 @@ export var useTreeViewModels = function useTreeViewModels(plugins, props) {
|
|
|
15
15
|
Object.entries(plugin.models).forEach(function (_ref) {
|
|
16
16
|
var _ref2 = _slicedToArray(_ref, 2),
|
|
17
17
|
modelName = _ref2[0],
|
|
18
|
-
|
|
18
|
+
modelInitializer = _ref2[1];
|
|
19
19
|
modelsRef.current[modelName] = {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
isControlled: props[model.controlledProp] !== undefined
|
|
20
|
+
isControlled: props[modelName] !== undefined,
|
|
21
|
+
getDefaultValue: modelInitializer.getDefaultValue
|
|
23
22
|
};
|
|
24
|
-
initialState[modelName] = props
|
|
23
|
+
initialState[modelName] = modelInitializer.getDefaultValue(props);
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
});
|
|
@@ -34,10 +33,10 @@ export var useTreeViewModels = function useTreeViewModels(plugins, props) {
|
|
|
34
33
|
var _ref4 = _slicedToArray(_ref3, 2),
|
|
35
34
|
modelName = _ref4[0],
|
|
36
35
|
model = _ref4[1];
|
|
37
|
-
var value = model.isControlled ? props[
|
|
36
|
+
var value = model.isControlled ? props[modelName] : modelsState[modelName];
|
|
38
37
|
return [modelName, {
|
|
39
38
|
value: value,
|
|
40
|
-
|
|
39
|
+
setControlledValue: function setControlledValue(newValue) {
|
|
41
40
|
if (!model.isControlled) {
|
|
42
41
|
setModelsState(function (prevState) {
|
|
43
42
|
return _extends({}, prevState, _defineProperty({}, modelName, newValue));
|
|
@@ -54,18 +53,18 @@ export var useTreeViewModels = function useTreeViewModels(plugins, props) {
|
|
|
54
53
|
var _ref6 = _slicedToArray(_ref5, 2),
|
|
55
54
|
modelName = _ref6[0],
|
|
56
55
|
model = _ref6[1];
|
|
57
|
-
var controlled = props[
|
|
58
|
-
var
|
|
56
|
+
var controlled = props[modelName];
|
|
57
|
+
var newDefaultValue = model.getDefaultValue(props);
|
|
59
58
|
React.useEffect(function () {
|
|
60
59
|
if (model.isControlled !== (controlled !== undefined)) {
|
|
61
|
-
console.error(["MUI: A component is changing the ".concat(model.isControlled ? '' : 'un', "controlled ").concat(modelName, " state of TreeView to be ").concat(model.isControlled ? 'un' : '', "controlled."), 'Elements should not switch from uncontrolled to controlled (or vice versa).', "Decide between using a controlled or uncontrolled ".concat(modelName, " ") + 'element for the lifetime of the component.', "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", 'More info: https://fb.me/react-controlled-components'].join('\n'));
|
|
60
|
+
console.error(["MUI X: A component is changing the ".concat(model.isControlled ? '' : 'un', "controlled ").concat(modelName, " state of TreeView to be ").concat(model.isControlled ? 'un' : '', "controlled."), 'Elements should not switch from uncontrolled to controlled (or vice versa).', "Decide between using a controlled or uncontrolled ".concat(modelName, " ") + 'element for the lifetime of the component.', "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", 'More info: https://fb.me/react-controlled-components'].join('\n'));
|
|
62
61
|
}
|
|
63
62
|
}, [controlled]);
|
|
64
|
-
var _React$useRef = React.useRef(
|
|
63
|
+
var _React$useRef = React.useRef(newDefaultValue),
|
|
65
64
|
defaultValue = _React$useRef.current;
|
|
66
65
|
React.useEffect(function () {
|
|
67
|
-
if (!model.isControlled && defaultValue !==
|
|
68
|
-
console.error(["MUI: A component is changing the default ".concat(modelName, " state of an uncontrolled TreeView after being initialized. ") + "To suppress this warning opt to use a controlled TreeView."].join('\n'));
|
|
66
|
+
if (!model.isControlled && defaultValue !== newDefaultValue) {
|
|
67
|
+
console.error(["MUI X: A component is changing the default ".concat(modelName, " state of an uncontrolled TreeView after being initialized. ") + "To suppress this warning opt to use a controlled TreeView."].join('\n'));
|
|
69
68
|
}
|
|
70
69
|
}, [JSON.stringify(defaultValue)]);
|
|
71
70
|
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["slots", "slotProps"];
|
|
4
|
+
export var extractPluginParamsFromProps = function extractPluginParamsFromProps(_ref) {
|
|
5
|
+
var _ref$props = _ref.props,
|
|
6
|
+
slots = _ref$props.slots,
|
|
7
|
+
slotProps = _ref$props.slotProps,
|
|
8
|
+
props = _objectWithoutProperties(_ref$props, _excluded),
|
|
9
|
+
plugins = _ref.plugins,
|
|
10
|
+
rootRef = _ref.rootRef;
|
|
11
|
+
var paramsLookup = {};
|
|
12
|
+
plugins.forEach(function (plugin) {
|
|
13
|
+
_extends(paramsLookup, plugin.params);
|
|
14
|
+
});
|
|
15
|
+
var pluginParams = {
|
|
16
|
+
plugins: plugins,
|
|
17
|
+
rootRef: rootRef,
|
|
18
|
+
slots: slots != null ? slots : {},
|
|
19
|
+
slotProps: slotProps != null ? slotProps : {}
|
|
20
|
+
};
|
|
21
|
+
var otherProps = {};
|
|
22
|
+
Object.keys(props).forEach(function (propName) {
|
|
23
|
+
var prop = props[propName];
|
|
24
|
+
if (paramsLookup[propName]) {
|
|
25
|
+
pluginParams[propName] = prop;
|
|
26
|
+
} else {
|
|
27
|
+
otherProps[propName] = prop;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
pluginParams: pluginParams,
|
|
32
|
+
slots: slots,
|
|
33
|
+
slotProps: slotProps,
|
|
34
|
+
otherProps: otherProps
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["disabledItemsFocusable", "expandedNodes", "defaultExpandedNodes", "onExpandedNodesChange", "onNodeExpansionToggle", "onNodeFocus", "disableSelection", "defaultSelectedNodes", "selectedNodes", "multiSelect", "onSelectedNodesChange", "onNodeSelectionToggle", "id", "defaultCollapseIcon", "defaultEndIcon", "defaultExpandIcon", "defaultParentIcon", "items", "getItemId", "getItemLabel", "isItemDisabled", "slots", "slotProps"];
|
|
4
2
|
import * as React from 'react';
|
|
5
3
|
import PropTypes from 'prop-types';
|
|
6
4
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
@@ -12,6 +10,7 @@ import { TreeViewProvider } from '../internals/TreeViewProvider';
|
|
|
12
10
|
import { DEFAULT_TREE_VIEW_PLUGINS } from '../internals/plugins';
|
|
13
11
|
import { TreeItem } from '../TreeItem';
|
|
14
12
|
import { buildWarning } from '../internals/utils/warning';
|
|
13
|
+
import { extractPluginParamsFromProps } from '../internals/utils/extractPluginParamsFromProps';
|
|
15
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
15
|
const useUtilityClasses = ownerState => {
|
|
17
16
|
const {
|
|
@@ -58,7 +57,7 @@ function WrappedTreeItem({
|
|
|
58
57
|
children: children
|
|
59
58
|
}));
|
|
60
59
|
}
|
|
61
|
-
const childrenWarning = buildWarning(['MUI: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop', 'Check the documentation for more details: https://next.mui.com/x/react-tree-view/rich-tree-view/items/']);
|
|
60
|
+
const childrenWarning = buildWarning(['MUI X: The `RichTreeView` component does not support JSX children.', 'If you want to add items, you need to use the `items` prop', 'Check the documentation for more details: https://next.mui.com/x/react-tree-view/rich-tree-view/items/']);
|
|
62
61
|
|
|
63
62
|
/**
|
|
64
63
|
*
|
|
@@ -75,75 +74,32 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
|
|
|
75
74
|
props: inProps,
|
|
76
75
|
name: 'MuiRichTreeView'
|
|
77
76
|
});
|
|
78
|
-
const _ref = props,
|
|
79
|
-
{
|
|
80
|
-
// Headless implementation
|
|
81
|
-
disabledItemsFocusable,
|
|
82
|
-
expandedNodes,
|
|
83
|
-
defaultExpandedNodes,
|
|
84
|
-
onExpandedNodesChange,
|
|
85
|
-
onNodeExpansionToggle,
|
|
86
|
-
onNodeFocus,
|
|
87
|
-
disableSelection,
|
|
88
|
-
defaultSelectedNodes,
|
|
89
|
-
selectedNodes,
|
|
90
|
-
multiSelect,
|
|
91
|
-
onSelectedNodesChange,
|
|
92
|
-
onNodeSelectionToggle,
|
|
93
|
-
id: treeId,
|
|
94
|
-
defaultCollapseIcon,
|
|
95
|
-
defaultEndIcon,
|
|
96
|
-
defaultExpandIcon,
|
|
97
|
-
defaultParentIcon,
|
|
98
|
-
items,
|
|
99
|
-
getItemId,
|
|
100
|
-
getItemLabel,
|
|
101
|
-
isItemDisabled,
|
|
102
|
-
// Component implementation
|
|
103
|
-
slots,
|
|
104
|
-
slotProps
|
|
105
|
-
} = _ref,
|
|
106
|
-
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
107
77
|
if (process.env.NODE_ENV !== 'production') {
|
|
108
78
|
if (props.children != null) {
|
|
109
79
|
childrenWarning();
|
|
110
80
|
}
|
|
111
81
|
}
|
|
112
82
|
const {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
defaultExpandedNodes,
|
|
120
|
-
onExpandedNodesChange,
|
|
121
|
-
onNodeExpansionToggle,
|
|
122
|
-
onNodeFocus,
|
|
123
|
-
disableSelection,
|
|
124
|
-
defaultSelectedNodes,
|
|
125
|
-
selectedNodes,
|
|
126
|
-
multiSelect,
|
|
127
|
-
onSelectedNodesChange,
|
|
128
|
-
onNodeSelectionToggle,
|
|
129
|
-
id: treeId,
|
|
130
|
-
defaultCollapseIcon,
|
|
131
|
-
defaultEndIcon,
|
|
132
|
-
defaultExpandIcon,
|
|
133
|
-
defaultParentIcon,
|
|
134
|
-
items,
|
|
135
|
-
getItemId,
|
|
136
|
-
getItemLabel,
|
|
137
|
-
isItemDisabled,
|
|
83
|
+
pluginParams,
|
|
84
|
+
slots,
|
|
85
|
+
slotProps,
|
|
86
|
+
otherProps
|
|
87
|
+
} = extractPluginParamsFromProps({
|
|
88
|
+
props,
|
|
138
89
|
plugins: DEFAULT_TREE_VIEW_PLUGINS,
|
|
139
90
|
rootRef: ref
|
|
140
91
|
});
|
|
92
|
+
const {
|
|
93
|
+
getRootProps,
|
|
94
|
+
contextValue,
|
|
95
|
+
instance
|
|
96
|
+
} = useTreeView(pluginParams);
|
|
141
97
|
const classes = useUtilityClasses(props);
|
|
142
98
|
const Root = slots?.root ?? RichTreeViewRoot;
|
|
143
99
|
const rootProps = useSlotProps({
|
|
144
100
|
elementType: Root,
|
|
145
101
|
externalSlotProps: slotProps?.root,
|
|
146
|
-
externalForwardedProps:
|
|
102
|
+
externalForwardedProps: otherProps,
|
|
147
103
|
className: classes.root,
|
|
148
104
|
getSlotProps: getRootProps,
|
|
149
105
|
ownerState: props
|
|
@@ -180,34 +136,13 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
180
136
|
* Override or extend the styles applied to the component.
|
|
181
137
|
*/
|
|
182
138
|
classes: PropTypes.object,
|
|
183
|
-
/**
|
|
184
|
-
* className applied to the root element.
|
|
185
|
-
*/
|
|
186
139
|
className: PropTypes.string,
|
|
187
|
-
/**
|
|
188
|
-
* The default icon used to collapse the node.
|
|
189
|
-
*/
|
|
190
|
-
defaultCollapseIcon: PropTypes.node,
|
|
191
|
-
/**
|
|
192
|
-
* The default icon displayed next to a end node. This is applied to all
|
|
193
|
-
* tree nodes and can be overridden by the TreeItem `icon` prop.
|
|
194
|
-
*/
|
|
195
|
-
defaultEndIcon: PropTypes.node,
|
|
196
140
|
/**
|
|
197
141
|
* Expanded node ids.
|
|
198
142
|
* Used when the item's expansion is not controlled.
|
|
199
143
|
* @default []
|
|
200
144
|
*/
|
|
201
145
|
defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
|
|
202
|
-
/**
|
|
203
|
-
* The default icon used to expand the node.
|
|
204
|
-
*/
|
|
205
|
-
defaultExpandIcon: PropTypes.node,
|
|
206
|
-
/**
|
|
207
|
-
* The default icon displayed next to a parent node. This is applied to all
|
|
208
|
-
* parent nodes and can be overridden by the TreeItem `icon` prop.
|
|
209
|
-
*/
|
|
210
|
-
defaultParentIcon: PropTypes.node,
|
|
211
146
|
/**
|
|
212
147
|
* Selected node ids. (Uncontrolled)
|
|
213
148
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["disabledItemsFocusable", "expandedNodes", "defaultExpandedNodes", "onExpandedNodesChange", "onNodeExpansionToggle", "onNodeFocus", "disableSelection", "defaultSelectedNodes", "selectedNodes", "multiSelect", "onSelectedNodesChange", "onNodeSelectionToggle", "id", "defaultCollapseIcon", "defaultEndIcon", "defaultExpandIcon", "defaultParentIcon", "children", "slots", "slotProps"];
|
|
4
2
|
import * as React from 'react';
|
|
5
3
|
import PropTypes from 'prop-types';
|
|
6
4
|
import { styled, useThemeProps } from '@mui/material/styles';
|
|
@@ -11,6 +9,7 @@ import { useTreeView } from '../internals/useTreeView';
|
|
|
11
9
|
import { TreeViewProvider } from '../internals/TreeViewProvider';
|
|
12
10
|
import { SIMPLE_TREE_VIEW_PLUGINS } from './SimpleTreeView.plugins';
|
|
13
11
|
import { buildWarning } from '../internals/utils/warning';
|
|
12
|
+
import { extractPluginParamsFromProps } from '../internals/utils/extractPluginParamsFromProps';
|
|
14
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
14
|
const useUtilityClasses = ownerState => {
|
|
16
15
|
const {
|
|
@@ -32,7 +31,7 @@ export const SimpleTreeViewRoot = styled('ul', {
|
|
|
32
31
|
outline: 0
|
|
33
32
|
});
|
|
34
33
|
const EMPTY_ITEMS = [];
|
|
35
|
-
const itemsPropWarning = buildWarning(['MUI: The `SimpleTreeView` component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://next.mui.com/x/react-tree-view/simple-tree-view/items/']);
|
|
34
|
+
const itemsPropWarning = buildWarning(['MUI X: The `SimpleTreeView` component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://next.mui.com/x/react-tree-view/simple-tree-view/items/']);
|
|
36
35
|
|
|
37
36
|
/**
|
|
38
37
|
*
|
|
@@ -50,76 +49,40 @@ const SimpleTreeView = /*#__PURE__*/React.forwardRef(function SimpleTreeView(inP
|
|
|
50
49
|
name: 'MuiSimpleTreeView'
|
|
51
50
|
});
|
|
52
51
|
const ownerState = props;
|
|
53
|
-
const _ref = props,
|
|
54
|
-
{
|
|
55
|
-
// Headless implementation
|
|
56
|
-
disabledItemsFocusable,
|
|
57
|
-
expandedNodes,
|
|
58
|
-
defaultExpandedNodes,
|
|
59
|
-
onExpandedNodesChange,
|
|
60
|
-
onNodeExpansionToggle,
|
|
61
|
-
onNodeFocus,
|
|
62
|
-
disableSelection,
|
|
63
|
-
defaultSelectedNodes,
|
|
64
|
-
selectedNodes,
|
|
65
|
-
multiSelect,
|
|
66
|
-
onSelectedNodesChange,
|
|
67
|
-
onNodeSelectionToggle,
|
|
68
|
-
id,
|
|
69
|
-
defaultCollapseIcon,
|
|
70
|
-
defaultEndIcon,
|
|
71
|
-
defaultExpandIcon,
|
|
72
|
-
defaultParentIcon,
|
|
73
|
-
// Component implementation
|
|
74
|
-
children,
|
|
75
|
-
slots
|
|
76
|
-
} = _ref,
|
|
77
|
-
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
78
52
|
if (process.env.NODE_ENV !== 'production') {
|
|
79
53
|
if (props.items != null) {
|
|
80
54
|
itemsPropWarning();
|
|
81
55
|
}
|
|
82
56
|
}
|
|
83
57
|
const {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
onNodeFocus,
|
|
93
|
-
disableSelection,
|
|
94
|
-
defaultSelectedNodes,
|
|
95
|
-
selectedNodes,
|
|
96
|
-
multiSelect,
|
|
97
|
-
onSelectedNodesChange,
|
|
98
|
-
onNodeSelectionToggle,
|
|
99
|
-
id,
|
|
100
|
-
defaultCollapseIcon,
|
|
101
|
-
defaultEndIcon,
|
|
102
|
-
defaultExpandIcon,
|
|
103
|
-
defaultParentIcon,
|
|
104
|
-
items: EMPTY_ITEMS,
|
|
58
|
+
pluginParams,
|
|
59
|
+
slots,
|
|
60
|
+
slotProps,
|
|
61
|
+
otherProps
|
|
62
|
+
} = extractPluginParamsFromProps({
|
|
63
|
+
props: _extends({}, props, {
|
|
64
|
+
items: EMPTY_ITEMS
|
|
65
|
+
}),
|
|
105
66
|
plugins: SIMPLE_TREE_VIEW_PLUGINS,
|
|
106
67
|
rootRef: ref
|
|
107
68
|
});
|
|
69
|
+
const {
|
|
70
|
+
getRootProps,
|
|
71
|
+
contextValue
|
|
72
|
+
} = useTreeView(pluginParams);
|
|
108
73
|
const classes = useUtilityClasses(props);
|
|
109
74
|
const Root = slots?.root ?? SimpleTreeViewRoot;
|
|
110
75
|
const rootProps = useSlotProps({
|
|
111
76
|
elementType: Root,
|
|
112
|
-
externalSlotProps:
|
|
113
|
-
externalForwardedProps:
|
|
77
|
+
externalSlotProps: slotProps?.root,
|
|
78
|
+
externalForwardedProps: otherProps,
|
|
114
79
|
className: classes.root,
|
|
115
80
|
getSlotProps: getRootProps,
|
|
116
81
|
ownerState
|
|
117
82
|
});
|
|
118
83
|
return /*#__PURE__*/_jsx(TreeViewProvider, {
|
|
119
84
|
value: contextValue,
|
|
120
|
-
children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps
|
|
121
|
-
children: children
|
|
122
|
-
}))
|
|
85
|
+
children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps))
|
|
123
86
|
});
|
|
124
87
|
});
|
|
125
88
|
process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
@@ -135,34 +98,13 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
135
98
|
* Override or extend the styles applied to the component.
|
|
136
99
|
*/
|
|
137
100
|
classes: PropTypes.object,
|
|
138
|
-
/**
|
|
139
|
-
* className applied to the root element.
|
|
140
|
-
*/
|
|
141
101
|
className: PropTypes.string,
|
|
142
|
-
/**
|
|
143
|
-
* The default icon used to collapse the node.
|
|
144
|
-
*/
|
|
145
|
-
defaultCollapseIcon: PropTypes.node,
|
|
146
|
-
/**
|
|
147
|
-
* The default icon displayed next to a end node. This is applied to all
|
|
148
|
-
* tree nodes and can be overridden by the TreeItem `icon` prop.
|
|
149
|
-
*/
|
|
150
|
-
defaultEndIcon: PropTypes.node,
|
|
151
102
|
/**
|
|
152
103
|
* Expanded node ids.
|
|
153
104
|
* Used when the item's expansion is not controlled.
|
|
154
105
|
* @default []
|
|
155
106
|
*/
|
|
156
107
|
defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
|
|
157
|
-
/**
|
|
158
|
-
* The default icon used to expand the node.
|
|
159
|
-
*/
|
|
160
|
-
defaultExpandIcon: PropTypes.node,
|
|
161
|
-
/**
|
|
162
|
-
* The default icon displayed next to a parent node. This is applied to all
|
|
163
|
-
* parent nodes and can be overridden by the TreeItem `icon` prop.
|
|
164
|
-
*/
|
|
165
|
-
defaultParentIcon: PropTypes.node,
|
|
166
108
|
/**
|
|
167
109
|
* Selected node ids. (Uncontrolled)
|
|
168
110
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
2
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
-
const _excluded = ["children", "className", "
|
|
3
|
+
const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown", "TransitionComponent", "TransitionProps"],
|
|
4
|
+
_excluded2 = ["ownerState"],
|
|
5
|
+
_excluded3 = ["ownerState"],
|
|
6
|
+
_excluded4 = ["ownerState"];
|
|
4
7
|
import * as React from 'react';
|
|
5
8
|
import PropTypes from 'prop-types';
|
|
6
9
|
import clsx from 'clsx';
|
|
7
10
|
import Collapse from '@mui/material/Collapse';
|
|
11
|
+
import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
|
|
8
12
|
import { alpha, styled, useThemeProps } from '@mui/material/styles';
|
|
9
13
|
import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
10
14
|
import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
|
|
@@ -12,6 +16,7 @@ import { unstable_composeClasses as composeClasses } from '@mui/base';
|
|
|
12
16
|
import { TreeItemContent } from './TreeItemContent';
|
|
13
17
|
import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';
|
|
14
18
|
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
19
|
+
import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
|
|
15
20
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
21
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
22
|
const useUtilityClasses = ownerState => {
|
|
@@ -133,7 +138,9 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
133
138
|
const {
|
|
134
139
|
icons: contextIcons,
|
|
135
140
|
runItemPlugins,
|
|
136
|
-
|
|
141
|
+
selection: {
|
|
142
|
+
multiSelect
|
|
143
|
+
},
|
|
137
144
|
disabledItemsFocusable,
|
|
138
145
|
instance
|
|
139
146
|
} = useTreeViewContext();
|
|
@@ -152,12 +159,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
152
159
|
const {
|
|
153
160
|
children,
|
|
154
161
|
className,
|
|
155
|
-
|
|
162
|
+
slots: inSlots,
|
|
163
|
+
slotProps: inSlotProps,
|
|
156
164
|
ContentComponent = TreeItemContent,
|
|
157
165
|
ContentProps,
|
|
158
|
-
endIcon,
|
|
159
|
-
expandIcon,
|
|
160
|
-
icon,
|
|
161
166
|
nodeId,
|
|
162
167
|
id,
|
|
163
168
|
label,
|
|
@@ -167,6 +172,12 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
167
172
|
TransitionProps
|
|
168
173
|
} = props,
|
|
169
174
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
175
|
+
const slots = {
|
|
176
|
+
expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon,
|
|
177
|
+
collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? TreeViewCollapseIcon,
|
|
178
|
+
endIcon: inSlots?.endIcon ?? contextIcons.slots.endIcon,
|
|
179
|
+
icon: inSlots?.icon
|
|
180
|
+
};
|
|
170
181
|
const expandable = Boolean(Array.isArray(children) ? children.length : children);
|
|
171
182
|
const expanded = instance.isNodeExpanded(nodeId);
|
|
172
183
|
const focused = instance.isNodeFocused(nodeId);
|
|
@@ -179,20 +190,40 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
179
190
|
disabled
|
|
180
191
|
});
|
|
181
192
|
const classes = useUtilityClasses(ownerState);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
193
|
+
const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
|
|
194
|
+
const _useSlotProps = useSlotProps({
|
|
195
|
+
elementType: ExpansionIcon,
|
|
196
|
+
ownerState: {},
|
|
197
|
+
externalSlotProps: tempOwnerState => {
|
|
198
|
+
if (expanded) {
|
|
199
|
+
return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps?.collapseIcon, tempOwnerState));
|
|
200
|
+
}
|
|
201
|
+
return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps?.expandIcon, tempOwnerState));
|
|
202
|
+
}
|
|
203
|
+
}),
|
|
204
|
+
expansionIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
|
|
205
|
+
const expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/_jsx(ExpansionIcon, _extends({}, expansionIconProps)) : null;
|
|
206
|
+
const DisplayIcon = expandable ? undefined : slots.endIcon;
|
|
207
|
+
const _useSlotProps2 = useSlotProps({
|
|
208
|
+
elementType: DisplayIcon,
|
|
209
|
+
ownerState: {},
|
|
210
|
+
externalSlotProps: tempOwnerState => {
|
|
211
|
+
if (expandable) {
|
|
212
|
+
return {};
|
|
213
|
+
}
|
|
214
|
+
return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps?.endIcon, tempOwnerState));
|
|
215
|
+
}
|
|
216
|
+
}),
|
|
217
|
+
displayIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
|
|
218
|
+
const displayIcon = DisplayIcon ? /*#__PURE__*/_jsx(DisplayIcon, _extends({}, displayIconProps)) : null;
|
|
219
|
+
const Icon = slots.icon;
|
|
220
|
+
const _useSlotProps3 = useSlotProps({
|
|
221
|
+
elementType: Icon,
|
|
222
|
+
ownerState: {},
|
|
223
|
+
externalSlotProps: inSlotProps?.icon
|
|
224
|
+
}),
|
|
225
|
+
iconProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded4);
|
|
226
|
+
const icon = Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, iconProps)) : null;
|
|
196
227
|
let ariaSelected;
|
|
197
228
|
if (multiSelect) {
|
|
198
229
|
ariaSelected = selected;
|
|
@@ -273,14 +304,7 @@ TreeItem.propTypes = {
|
|
|
273
304
|
* Override or extend the styles applied to the component.
|
|
274
305
|
*/
|
|
275
306
|
classes: PropTypes.object,
|
|
276
|
-
/**
|
|
277
|
-
* className applied to the root element.
|
|
278
|
-
*/
|
|
279
307
|
className: PropTypes.string,
|
|
280
|
-
/**
|
|
281
|
-
* The icon used to collapse the node.
|
|
282
|
-
*/
|
|
283
|
-
collapseIcon: PropTypes.node,
|
|
284
308
|
/**
|
|
285
309
|
* The component used for the content node.
|
|
286
310
|
* @default TreeItemContent
|
|
@@ -295,18 +319,6 @@ TreeItem.propTypes = {
|
|
|
295
319
|
* @default false
|
|
296
320
|
*/
|
|
297
321
|
disabled: PropTypes.bool,
|
|
298
|
-
/**
|
|
299
|
-
* The icon displayed next to an end node.
|
|
300
|
-
*/
|
|
301
|
-
endIcon: PropTypes.node,
|
|
302
|
-
/**
|
|
303
|
-
* The icon used to expand the node.
|
|
304
|
-
*/
|
|
305
|
-
expandIcon: PropTypes.node,
|
|
306
|
-
/**
|
|
307
|
-
* The icon to display next to the tree node's label.
|
|
308
|
-
*/
|
|
309
|
-
icon: PropTypes.node,
|
|
310
322
|
/**
|
|
311
323
|
* The tree node label.
|
|
312
324
|
*/
|
|
@@ -320,6 +332,16 @@ TreeItem.propTypes = {
|
|
|
320
332
|
* Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
|
|
321
333
|
*/
|
|
322
334
|
onFocus: unsupportedProp,
|
|
335
|
+
/**
|
|
336
|
+
* The props used for each component slot.
|
|
337
|
+
* @default {}
|
|
338
|
+
*/
|
|
339
|
+
slotProps: PropTypes.object,
|
|
340
|
+
/**
|
|
341
|
+
* Overridable component slots.
|
|
342
|
+
* @default {}
|
|
343
|
+
*/
|
|
344
|
+
slots: PropTypes.object,
|
|
323
345
|
/**
|
|
324
346
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
325
347
|
*/
|
|
@@ -4,7 +4,7 @@ const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import clsx from 'clsx';
|
|
7
|
-
import {
|
|
7
|
+
import { useTreeItemState } from './useTreeItemState';
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
9
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
10
|
/**
|
|
@@ -31,7 +31,7 @@ const TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(p
|
|
|
31
31
|
handleExpansion,
|
|
32
32
|
handleSelection,
|
|
33
33
|
preventSelection
|
|
34
|
-
} =
|
|
34
|
+
} = useTreeItemState(nodeId);
|
|
35
35
|
const icon = iconProp || expansionIcon || displayIcon;
|
|
36
36
|
const handleMouseDown = event => {
|
|
37
37
|
preventSelection(event);
|
|
@@ -73,9 +73,6 @@ process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
|
|
|
73
73
|
* Override or extend the styles applied to the component.
|
|
74
74
|
*/
|
|
75
75
|
classes: PropTypes.object.isRequired,
|
|
76
|
-
/**
|
|
77
|
-
* className applied to the root element.
|
|
78
|
-
*/
|
|
79
76
|
className: PropTypes.string,
|
|
80
77
|
/**
|
|
81
78
|
* The icon to display next to the tree node's label. Either a parent or end icon.
|
package/modern/TreeItem/index.js
CHANGED