@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.
Files changed (164) hide show
  1. package/CHANGELOG.md +554 -51
  2. package/README.md +1 -1
  3. package/RichTreeView/RichTreeView.js +14 -79
  4. package/RichTreeView/RichTreeView.types.d.ts +6 -9
  5. package/RichTreeView/index.d.ts +1 -1
  6. package/SimpleTreeView/SimpleTreeView.js +17 -75
  7. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +4 -2
  8. package/SimpleTreeView/SimpleTreeView.types.d.ts +8 -7
  9. package/SimpleTreeView/index.d.ts +1 -1
  10. package/TreeItem/TreeItem.js +62 -39
  11. package/TreeItem/TreeItem.types.d.ts +33 -17
  12. package/TreeItem/TreeItemContent.d.ts +0 -3
  13. package/TreeItem/TreeItemContent.js +2 -5
  14. package/TreeItem/index.d.ts +2 -2
  15. package/TreeItem/index.js +1 -1
  16. package/TreeItem/{useTreeItem.d.ts → useTreeItemState.d.ts} +1 -1
  17. package/TreeItem/{useTreeItem.js → useTreeItemState.js} +4 -2
  18. package/TreeView/TreeView.js +1 -22
  19. package/TreeView/TreeView.types.d.ts +5 -1
  20. package/TreeView/index.d.ts +1 -1
  21. package/icons/icons.d.ts +6 -0
  22. package/icons/icons.js +9 -0
  23. package/icons/index.d.ts +1 -0
  24. package/icons/index.js +1 -0
  25. package/icons/package.json +6 -0
  26. package/index.d.ts +1 -0
  27. package/index.js +3 -2
  28. package/internals/TreeViewProvider/TreeViewContext.d.ts +4 -2
  29. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -11
  30. package/internals/TreeViewProvider/useTreeViewContext.js +1 -1
  31. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
  32. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +3 -2
  33. package/internals/index.d.ts +15 -0
  34. package/internals/index.js +4 -0
  35. package/internals/models/MuiCancellableEvent.d.ts +4 -0
  36. package/internals/models/helpers.d.ts +7 -1
  37. package/internals/models/plugin.d.ts +65 -20
  38. package/internals/models/treeView.d.ts +1 -2
  39. package/internals/package.json +6 -0
  40. package/internals/plugins/defaultPlugins.d.ts +6 -4
  41. package/internals/plugins/defaultPlugins.js +2 -2
  42. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -10
  43. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -3
  44. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +2 -5
  45. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +12 -6
  46. package/internals/plugins/useTreeViewIcons/index.d.ts +2 -0
  47. package/internals/plugins/useTreeViewIcons/index.js +1 -0
  48. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.d.ts +3 -0
  49. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +22 -0
  50. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +43 -0
  51. package/internals/plugins/useTreeViewId/useTreeViewId.js +3 -0
  52. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +6 -2
  53. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
  54. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +6 -4
  55. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +155 -112
  56. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +9 -6
  57. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +21 -3
  58. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +10 -2
  59. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +17 -5
  60. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +15 -5
  61. package/internals/useTreeView/useTreeView.js +7 -3
  62. package/internals/useTreeView/useTreeView.types.d.ts +6 -6
  63. package/internals/useTreeView/useTreeViewModels.js +12 -13
  64. package/internals/utils/extractPluginParamsFromProps.d.ts +16 -0
  65. package/internals/utils/extractPluginParamsFromProps.js +38 -0
  66. package/legacy/RichTreeView/RichTreeView.js +15 -77
  67. package/legacy/SimpleTreeView/SimpleTreeView.js +14 -70
  68. package/legacy/TreeItem/TreeItem.js +63 -39
  69. package/legacy/TreeItem/TreeItemContent.js +9 -12
  70. package/legacy/TreeItem/index.js +1 -1
  71. package/legacy/TreeItem/{useTreeItem.js → useTreeItemState.js} +2 -2
  72. package/legacy/TreeView/TreeView.js +1 -22
  73. package/legacy/icons/icons.js +9 -0
  74. package/legacy/icons/index.js +1 -0
  75. package/legacy/index.js +3 -2
  76. package/legacy/internals/TreeViewProvider/useTreeViewContext.js +1 -1
  77. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
  78. package/legacy/internals/index.js +4 -0
  79. package/legacy/internals/plugins/defaultPlugins.js +2 -2
  80. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +16 -10
  81. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +2 -5
  82. package/legacy/internals/plugins/useTreeViewIcons/index.js +1 -0
  83. package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +21 -0
  84. package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +1 -0
  85. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.js +3 -0
  86. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
  87. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +157 -110
  88. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +20 -2
  89. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +20 -6
  90. package/legacy/internals/useTreeView/useTreeView.js +6 -2
  91. package/legacy/internals/useTreeView/useTreeViewModels.js +12 -13
  92. package/legacy/internals/utils/extractPluginParamsFromProps.js +36 -0
  93. package/modern/RichTreeView/RichTreeView.js +14 -79
  94. package/modern/SimpleTreeView/SimpleTreeView.js +17 -75
  95. package/modern/TreeItem/TreeItem.js +61 -39
  96. package/modern/TreeItem/TreeItemContent.js +2 -5
  97. package/modern/TreeItem/index.js +1 -1
  98. package/modern/TreeItem/{useTreeItem.js → useTreeItemState.js} +4 -2
  99. package/modern/TreeView/TreeView.js +1 -22
  100. package/modern/icons/icons.js +9 -0
  101. package/modern/icons/index.js +1 -0
  102. package/modern/index.js +3 -2
  103. package/modern/internals/TreeViewProvider/useTreeViewContext.js +1 -1
  104. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
  105. package/modern/internals/index.js +4 -0
  106. package/modern/internals/models/MuiCancellableEvent.js +1 -0
  107. package/modern/internals/plugins/defaultPlugins.js +2 -2
  108. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -11
  109. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +3 -3
  110. package/modern/internals/plugins/useTreeViewIcons/index.js +1 -0
  111. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +22 -0
  112. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +1 -0
  113. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +3 -0
  114. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
  115. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +155 -112
  116. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +18 -3
  117. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
  118. package/modern/internals/useTreeView/useTreeView.js +7 -3
  119. package/modern/internals/useTreeView/useTreeViewModels.js +12 -13
  120. package/modern/internals/utils/extractPluginParamsFromProps.js +38 -0
  121. package/node/RichTreeView/RichTreeView.js +14 -79
  122. package/node/SimpleTreeView/SimpleTreeView.js +17 -75
  123. package/node/TreeItem/TreeItem.js +61 -39
  124. package/node/TreeItem/TreeItemContent.js +2 -5
  125. package/node/TreeItem/index.js +4 -4
  126. package/node/TreeItem/{useTreeItem.js → useTreeItemState.js} +5 -3
  127. package/node/TreeView/TreeView.js +1 -22
  128. package/node/icons/icons.js +17 -0
  129. package/node/icons/index.js +16 -0
  130. package/node/index.js +13 -1
  131. package/node/internals/TreeViewProvider/useTreeViewContext.js +1 -1
  132. package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -1
  133. package/node/internals/index.js +33 -0
  134. package/node/internals/plugins/defaultPlugins.js +2 -2
  135. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +14 -11
  136. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +3 -3
  137. package/node/internals/plugins/useTreeViewIcons/index.js +12 -0
  138. package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +29 -0
  139. package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +5 -0
  140. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +4 -1
  141. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +2 -1
  142. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +155 -112
  143. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +18 -3
  144. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +18 -6
  145. package/node/internals/useTreeView/useTreeView.js +7 -3
  146. package/node/internals/useTreeView/useTreeViewModels.js +12 -13
  147. package/node/internals/utils/extractPluginParamsFromProps.js +46 -0
  148. package/package.json +7 -7
  149. package/themeAugmentation/components.d.ts +4 -4
  150. package/internals/plugins/useTreeViewContextValueBuilder/index.d.ts +0 -2
  151. package/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -1
  152. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.d.ts +0 -3
  153. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -26
  154. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.d.ts +0 -29
  155. package/legacy/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -1
  156. package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -28
  157. package/modern/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -1
  158. package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -26
  159. package/node/internals/plugins/useTreeViewContextValueBuilder/index.js +0 -12
  160. package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +0 -33
  161. /package/internals/{plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → models/MuiCancellableEvent.js} +0 -0
  162. /package/{legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js} +0 -0
  163. /package/{modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → legacy/internals/models/MuiCancellableEvent.js} +0 -0
  164. /package/node/internals/{plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js → models/MuiCancellableEvent.js} +0 -0
@@ -10,7 +10,6 @@ export const useTreeViewSelection = ({
10
10
  const lastSelectedNode = React.useRef(null);
11
11
  const lastSelectionWasRange = React.useRef(false);
12
12
  const currentRangeSelection = React.useRef([]);
13
- const isNodeSelected = nodeId => Array.isArray(models.selectedNodes.value) ? models.selectedNodes.value.indexOf(nodeId) !== -1 : models.selectedNodes.value === nodeId;
14
13
  const setSelectedNodes = (event, newSelectedNodes) => {
15
14
  if (params.onNodeSelectionToggle) {
16
15
  if (params.multiSelect) {
@@ -34,8 +33,9 @@ export const useTreeViewSelection = ({
34
33
  if (params.onSelectedNodesChange) {
35
34
  params.onSelectedNodesChange(event, newSelectedNodes);
36
35
  }
37
- models.selectedNodes.setValue(newSelectedNodes);
36
+ models.selectedNodes.setControlledValue(newSelectedNodes);
38
37
  };
38
+ const isNodeSelected = nodeId => Array.isArray(models.selectedNodes.value) ? models.selectedNodes.value.indexOf(nodeId) !== -1 : models.selectedNodes.value === nodeId;
39
39
  const selectNode = (event, nodeId, multiple = false) => {
40
40
  if (params.disableSelection) {
41
41
  return;
@@ -165,13 +165,17 @@ export const useTreeViewSelection = ({
165
165
  return {
166
166
  getRootProps: () => ({
167
167
  'aria-multiselectable': params.multiSelect
168
- })
168
+ }),
169
+ contextValue: {
170
+ selection: {
171
+ multiSelect: params.multiSelect
172
+ }
173
+ }
169
174
  };
170
175
  };
171
176
  useTreeViewSelection.models = {
172
177
  selectedNodes: {
173
- controlledProp: 'selectedNodes',
174
- defaultProp: 'defaultSelectedNodes'
178
+ getDefaultValue: params => params.defaultSelectedNodes
175
179
  }
176
180
  };
177
181
  const DEFAULT_SELECTED_NODES = [];
@@ -179,4 +183,12 @@ useTreeViewSelection.getDefaultizedParams = params => _extends({}, params, {
179
183
  disableSelection: params.disableSelection ?? false,
180
184
  multiSelect: params.multiSelect ?? false,
181
185
  defaultSelectedNodes: params.defaultSelectedNodes ?? (params.multiSelect ? DEFAULT_SELECTED_NODES : null)
182
- });
186
+ });
187
+ useTreeViewSelection.params = {
188
+ disableSelection: true,
189
+ multiSelect: true,
190
+ defaultSelectedNodes: true,
191
+ selectedNodes: true,
192
+ onSelectedNodesChange: true,
193
+ onNodeSelectionToggle: true
194
+ };
@@ -26,11 +26,15 @@ export const useTreeView = inParams => {
26
26
  return temp;
27
27
  });
28
28
  const rootPropsGetters = [];
29
- let contextValue = {};
29
+ const contextValue = {
30
+ instance: instance
31
+ };
30
32
  const runPlugin = plugin => {
31
33
  const pluginResponse = plugin({
32
34
  instance,
33
35
  params,
36
+ slots: params.slots,
37
+ slotProps: params.slotProps,
34
38
  state,
35
39
  setState,
36
40
  rootRef: innerRootRef,
@@ -40,7 +44,7 @@ export const useTreeView = inParams => {
40
44
  rootPropsGetters.push(pluginResponse.getRootProps);
41
45
  }
42
46
  if (pluginResponse.contextValue) {
43
- contextValue = pluginResponse.contextValue;
47
+ Object.assign(contextValue, pluginResponse.contextValue);
44
48
  }
45
49
  };
46
50
  plugins.forEach(runPlugin);
@@ -96,7 +100,7 @@ export const useTreeView = inParams => {
96
100
  return {
97
101
  getRootProps,
98
102
  rootRef: handleRootRef,
99
- contextValue,
103
+ contextValue: contextValue,
100
104
  instance: instance
101
105
  };
102
106
  };
@@ -10,23 +10,22 @@ export const useTreeViewModels = (plugins, props) => {
10
10
  const initialState = {};
11
11
  plugins.forEach(plugin => {
12
12
  if (plugin.models) {
13
- Object.entries(plugin.models).forEach(([modelName, model]) => {
13
+ Object.entries(plugin.models).forEach(([modelName, modelInitializer]) => {
14
14
  modelsRef.current[modelName] = {
15
- controlledProp: model.controlledProp,
16
- defaultProp: model.defaultProp,
17
- isControlled: props[model.controlledProp] !== undefined
15
+ isControlled: props[modelName] !== undefined,
16
+ getDefaultValue: modelInitializer.getDefaultValue
18
17
  };
19
- initialState[modelName] = props[model.defaultProp];
18
+ initialState[modelName] = modelInitializer.getDefaultValue(props);
20
19
  });
21
20
  }
22
21
  });
23
22
  return initialState;
24
23
  });
25
24
  const models = Object.fromEntries(Object.entries(modelsRef.current).map(([modelName, model]) => {
26
- const value = model.isControlled ? props[model.controlledProp] : modelsState[modelName];
25
+ const value = model.isControlled ? props[modelName] : modelsState[modelName];
27
26
  return [modelName, {
28
27
  value,
29
- setValue: newValue => {
28
+ setControlledValue: newValue => {
30
29
  if (!model.isControlled) {
31
30
  setModelsState(prevState => _extends({}, prevState, {
32
31
  [modelName]: newValue
@@ -40,19 +39,19 @@ export const useTreeViewModels = (plugins, props) => {
40
39
  /* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */
41
40
  if (process.env.NODE_ENV !== 'production') {
42
41
  Object.entries(modelsRef.current).forEach(([modelName, model]) => {
43
- const controlled = props[model.controlledProp];
44
- const defaultProp = props[model.defaultProp];
42
+ const controlled = props[modelName];
43
+ const newDefaultValue = model.getDefaultValue(props);
45
44
  React.useEffect(() => {
46
45
  if (model.isControlled !== (controlled !== undefined)) {
47
- console.error([`MUI: A component is changing the ${model.isControlled ? '' : 'un'}controlled ${modelName} state of TreeView to be ${model.isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${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'));
46
+ console.error([`MUI X: A component is changing the ${model.isControlled ? '' : 'un'}controlled ${modelName} state of TreeView to be ${model.isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${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'));
48
47
  }
49
48
  }, [controlled]);
50
49
  const {
51
50
  current: defaultValue
52
- } = React.useRef(defaultProp);
51
+ } = React.useRef(newDefaultValue);
53
52
  React.useEffect(() => {
54
- if (!model.isControlled && defaultValue !== defaultProp) {
55
- console.error([`MUI: A component is changing the default ${modelName} state of an uncontrolled TreeView after being initialized. ` + `To suppress this warning opt to use a controlled TreeView.`].join('\n'));
53
+ if (!model.isControlled && defaultValue !== newDefaultValue) {
54
+ console.error([`MUI X: A component is changing the default ${modelName} state of an uncontrolled TreeView after being initialized. ` + `To suppress this warning opt to use a controlled TreeView.`].join('\n'));
56
55
  }
57
56
  }, [JSON.stringify(defaultValue)]);
58
57
  });
@@ -0,0 +1,38 @@
1
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
+ const _excluded = ["slots", "slotProps"];
3
+ export const extractPluginParamsFromProps = _ref => {
4
+ let {
5
+ props: {
6
+ slots,
7
+ slotProps
8
+ },
9
+ plugins,
10
+ rootRef
11
+ } = _ref,
12
+ props = _objectWithoutPropertiesLoose(_ref.props, _excluded);
13
+ const paramsLookup = {};
14
+ plugins.forEach(plugin => {
15
+ Object.assign(paramsLookup, plugin.params);
16
+ });
17
+ const pluginParams = {
18
+ plugins,
19
+ rootRef,
20
+ slots: slots ?? {},
21
+ slotProps: slotProps ?? {}
22
+ };
23
+ const otherProps = {};
24
+ Object.keys(props).forEach(propName => {
25
+ const prop = props[propName];
26
+ if (paramsLookup[propName]) {
27
+ pluginParams[propName] = prop;
28
+ } else {
29
+ otherProps[propName] = prop;
30
+ }
31
+ });
32
+ return {
33
+ pluginParams,
34
+ slots,
35
+ slotProps,
36
+ otherProps
37
+ };
38
+ };
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.RichTreeViewRoot = exports.RichTreeView = void 0;
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
9
  var React = _interopRequireWildcard(require("react"));
11
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -18,8 +17,8 @@ var _TreeViewProvider = require("../internals/TreeViewProvider");
18
17
  var _plugins = require("../internals/plugins");
19
18
  var _TreeItem = require("../TreeItem");
20
19
  var _warning = require("../internals/utils/warning");
20
+ var _extractPluginParamsFromProps = require("../internals/utils/extractPluginParamsFromProps");
21
21
  var _jsxRuntime = require("react/jsx-runtime");
22
- 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"];
23
22
  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); }
24
23
  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 && Object.prototype.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; }
25
24
  const useUtilityClasses = ownerState => {
@@ -67,7 +66,7 @@ function WrappedTreeItem({
67
66
  children: children
68
67
  }));
69
68
  }
70
- const childrenWarning = (0, _warning.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/']);
69
+ const childrenWarning = (0, _warning.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/']);
71
70
 
72
71
  /**
73
72
  *
@@ -84,75 +83,32 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
84
83
  props: inProps,
85
84
  name: 'MuiRichTreeView'
86
85
  });
87
- const _ref = props,
88
- {
89
- // Headless implementation
90
- disabledItemsFocusable,
91
- expandedNodes,
92
- defaultExpandedNodes,
93
- onExpandedNodesChange,
94
- onNodeExpansionToggle,
95
- onNodeFocus,
96
- disableSelection,
97
- defaultSelectedNodes,
98
- selectedNodes,
99
- multiSelect,
100
- onSelectedNodesChange,
101
- onNodeSelectionToggle,
102
- id: treeId,
103
- defaultCollapseIcon,
104
- defaultEndIcon,
105
- defaultExpandIcon,
106
- defaultParentIcon,
107
- items,
108
- getItemId,
109
- getItemLabel,
110
- isItemDisabled,
111
- // Component implementation
112
- slots,
113
- slotProps
114
- } = _ref,
115
- other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
116
86
  if (process.env.NODE_ENV !== 'production') {
117
87
  if (props.children != null) {
118
88
  childrenWarning();
119
89
  }
120
90
  }
121
91
  const {
122
- getRootProps,
123
- contextValue,
124
- instance
125
- } = (0, _useTreeView.useTreeView)({
126
- disabledItemsFocusable,
127
- expandedNodes,
128
- defaultExpandedNodes,
129
- onExpandedNodesChange,
130
- onNodeExpansionToggle,
131
- onNodeFocus,
132
- disableSelection,
133
- defaultSelectedNodes,
134
- selectedNodes,
135
- multiSelect,
136
- onSelectedNodesChange,
137
- onNodeSelectionToggle,
138
- id: treeId,
139
- defaultCollapseIcon,
140
- defaultEndIcon,
141
- defaultExpandIcon,
142
- defaultParentIcon,
143
- items,
144
- getItemId,
145
- getItemLabel,
146
- isItemDisabled,
92
+ pluginParams,
93
+ slots,
94
+ slotProps,
95
+ otherProps
96
+ } = (0, _extractPluginParamsFromProps.extractPluginParamsFromProps)({
97
+ props,
147
98
  plugins: _plugins.DEFAULT_TREE_VIEW_PLUGINS,
148
99
  rootRef: ref
149
100
  });
101
+ const {
102
+ getRootProps,
103
+ contextValue,
104
+ instance
105
+ } = (0, _useTreeView.useTreeView)(pluginParams);
150
106
  const classes = useUtilityClasses(props);
151
107
  const Root = slots?.root ?? RichTreeViewRoot;
152
108
  const rootProps = (0, _utils.useSlotProps)({
153
109
  elementType: Root,
154
110
  externalSlotProps: slotProps?.root,
155
- externalForwardedProps: other,
111
+ externalForwardedProps: otherProps,
156
112
  className: classes.root,
157
113
  getSlotProps: getRootProps,
158
114
  ownerState: props
@@ -189,34 +145,13 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
189
145
  * Override or extend the styles applied to the component.
190
146
  */
191
147
  classes: _propTypes.default.object,
192
- /**
193
- * className applied to the root element.
194
- */
195
148
  className: _propTypes.default.string,
196
- /**
197
- * The default icon used to collapse the node.
198
- */
199
- defaultCollapseIcon: _propTypes.default.node,
200
- /**
201
- * The default icon displayed next to a end node. This is applied to all
202
- * tree nodes and can be overridden by the TreeItem `icon` prop.
203
- */
204
- defaultEndIcon: _propTypes.default.node,
205
149
  /**
206
150
  * Expanded node ids.
207
151
  * Used when the item's expansion is not controlled.
208
152
  * @default []
209
153
  */
210
154
  defaultExpandedNodes: _propTypes.default.arrayOf(_propTypes.default.string),
211
- /**
212
- * The default icon used to expand the node.
213
- */
214
- defaultExpandIcon: _propTypes.default.node,
215
- /**
216
- * The default icon displayed next to a parent node. This is applied to all
217
- * parent nodes and can be overridden by the TreeItem `icon` prop.
218
- */
219
- defaultParentIcon: _propTypes.default.node,
220
155
  /**
221
156
  * Selected node ids. (Uncontrolled)
222
157
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.SimpleTreeViewRoot = exports.SimpleTreeView = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
9
  var React = _interopRequireWildcard(require("react"));
11
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
11
  var _styles = require("@mui/material/styles");
@@ -17,8 +16,8 @@ var _useTreeView = require("../internals/useTreeView");
17
16
  var _TreeViewProvider = require("../internals/TreeViewProvider");
18
17
  var _SimpleTreeView = require("./SimpleTreeView.plugins");
19
18
  var _warning = require("../internals/utils/warning");
19
+ var _extractPluginParamsFromProps = require("../internals/utils/extractPluginParamsFromProps");
20
20
  var _jsxRuntime = require("react/jsx-runtime");
21
- const _excluded = ["disabledItemsFocusable", "expandedNodes", "defaultExpandedNodes", "onExpandedNodesChange", "onNodeExpansionToggle", "onNodeFocus", "disableSelection", "defaultSelectedNodes", "selectedNodes", "multiSelect", "onSelectedNodesChange", "onNodeSelectionToggle", "id", "defaultCollapseIcon", "defaultEndIcon", "defaultExpandIcon", "defaultParentIcon", "children", "slots", "slotProps"];
22
21
  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); }
23
22
  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 && Object.prototype.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; }
24
23
  const useUtilityClasses = ownerState => {
@@ -41,7 +40,7 @@ const SimpleTreeViewRoot = exports.SimpleTreeViewRoot = (0, _styles.styled)('ul'
41
40
  outline: 0
42
41
  });
43
42
  const EMPTY_ITEMS = [];
44
- const itemsPropWarning = (0, _warning.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/']);
43
+ const itemsPropWarning = (0, _warning.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/']);
45
44
 
46
45
  /**
47
46
  *
@@ -59,76 +58,40 @@ const SimpleTreeView = exports.SimpleTreeView = /*#__PURE__*/React.forwardRef(fu
59
58
  name: 'MuiSimpleTreeView'
60
59
  });
61
60
  const ownerState = props;
62
- const _ref = props,
63
- {
64
- // Headless implementation
65
- disabledItemsFocusable,
66
- expandedNodes,
67
- defaultExpandedNodes,
68
- onExpandedNodesChange,
69
- onNodeExpansionToggle,
70
- onNodeFocus,
71
- disableSelection,
72
- defaultSelectedNodes,
73
- selectedNodes,
74
- multiSelect,
75
- onSelectedNodesChange,
76
- onNodeSelectionToggle,
77
- id,
78
- defaultCollapseIcon,
79
- defaultEndIcon,
80
- defaultExpandIcon,
81
- defaultParentIcon,
82
- // Component implementation
83
- children,
84
- slots
85
- } = _ref,
86
- other = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
87
61
  if (process.env.NODE_ENV !== 'production') {
88
62
  if (props.items != null) {
89
63
  itemsPropWarning();
90
64
  }
91
65
  }
92
66
  const {
93
- getRootProps,
94
- contextValue
95
- } = (0, _useTreeView.useTreeView)({
96
- disabledItemsFocusable,
97
- expandedNodes,
98
- defaultExpandedNodes,
99
- onExpandedNodesChange,
100
- onNodeExpansionToggle,
101
- onNodeFocus,
102
- disableSelection,
103
- defaultSelectedNodes,
104
- selectedNodes,
105
- multiSelect,
106
- onSelectedNodesChange,
107
- onNodeSelectionToggle,
108
- id,
109
- defaultCollapseIcon,
110
- defaultEndIcon,
111
- defaultExpandIcon,
112
- defaultParentIcon,
113
- items: EMPTY_ITEMS,
67
+ pluginParams,
68
+ slots,
69
+ slotProps,
70
+ otherProps
71
+ } = (0, _extractPluginParamsFromProps.extractPluginParamsFromProps)({
72
+ props: (0, _extends2.default)({}, props, {
73
+ items: EMPTY_ITEMS
74
+ }),
114
75
  plugins: _SimpleTreeView.SIMPLE_TREE_VIEW_PLUGINS,
115
76
  rootRef: ref
116
77
  });
78
+ const {
79
+ getRootProps,
80
+ contextValue
81
+ } = (0, _useTreeView.useTreeView)(pluginParams);
117
82
  const classes = useUtilityClasses(props);
118
83
  const Root = slots?.root ?? SimpleTreeViewRoot;
119
84
  const rootProps = (0, _utils.useSlotProps)({
120
85
  elementType: Root,
121
- externalSlotProps: {},
122
- externalForwardedProps: other,
86
+ externalSlotProps: slotProps?.root,
87
+ externalForwardedProps: otherProps,
123
88
  className: classes.root,
124
89
  getSlotProps: getRootProps,
125
90
  ownerState
126
91
  });
127
92
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, {
128
93
  value: contextValue,
129
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, (0, _extends2.default)({}, rootProps, {
130
- children: children
131
- }))
94
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, (0, _extends2.default)({}, rootProps))
132
95
  });
133
96
  });
134
97
  process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
@@ -144,34 +107,13 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
144
107
  * Override or extend the styles applied to the component.
145
108
  */
146
109
  classes: _propTypes.default.object,
147
- /**
148
- * className applied to the root element.
149
- */
150
110
  className: _propTypes.default.string,
151
- /**
152
- * The default icon used to collapse the node.
153
- */
154
- defaultCollapseIcon: _propTypes.default.node,
155
- /**
156
- * The default icon displayed next to a end node. This is applied to all
157
- * tree nodes and can be overridden by the TreeItem `icon` prop.
158
- */
159
- defaultEndIcon: _propTypes.default.node,
160
111
  /**
161
112
  * Expanded node ids.
162
113
  * Used when the item's expansion is not controlled.
163
114
  * @default []
164
115
  */
165
116
  defaultExpandedNodes: _propTypes.default.arrayOf(_propTypes.default.string),
166
- /**
167
- * The default icon used to expand the node.
168
- */
169
- defaultExpandIcon: _propTypes.default.node,
170
- /**
171
- * The default icon displayed next to a parent node. This is applied to all
172
- * parent nodes and can be overridden by the TreeItem `icon` prop.
173
- */
174
- defaultParentIcon: _propTypes.default.node,
175
117
  /**
176
118
  * Selected node ids. (Uncontrolled)
177
119
  * When `multiSelect` is true this takes an array of strings; when false (default) a string.
@@ -11,6 +11,7 @@ var React = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _clsx = _interopRequireDefault(require("clsx"));
13
13
  var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
14
+ var _utils = require("@mui/base/utils");
14
15
  var _styles = require("@mui/material/styles");
15
16
  var _unsupportedProp = _interopRequireDefault(require("@mui/utils/unsupportedProp"));
16
17
  var _elementTypeAcceptingRef = _interopRequireDefault(require("@mui/utils/elementTypeAcceptingRef"));
@@ -18,8 +19,12 @@ var _base = require("@mui/base");
18
19
  var _TreeItemContent = require("./TreeItemContent");
19
20
  var _treeItemClasses = require("./treeItemClasses");
20
21
  var _useTreeViewContext = require("../internals/TreeViewProvider/useTreeViewContext");
22
+ var _icons = require("../icons");
21
23
  var _jsxRuntime = require("react/jsx-runtime");
22
- const _excluded = ["children", "className", "collapseIcon", "ContentComponent", "ContentProps", "endIcon", "expandIcon", "icon", "nodeId", "id", "label", "onClick", "onMouseDown", "TransitionComponent", "TransitionProps"];
24
+ const _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown", "TransitionComponent", "TransitionProps"],
25
+ _excluded2 = ["ownerState"],
26
+ _excluded3 = ["ownerState"],
27
+ _excluded4 = ["ownerState"];
23
28
  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); }
24
29
  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 && Object.prototype.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; }
25
30
  const useUtilityClasses = ownerState => {
@@ -141,7 +146,9 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
141
146
  const {
142
147
  icons: contextIcons,
143
148
  runItemPlugins,
144
- multiSelect,
149
+ selection: {
150
+ multiSelect
151
+ },
145
152
  disabledItemsFocusable,
146
153
  instance
147
154
  } = (0, _useTreeViewContext.useTreeViewContext)();
@@ -160,12 +167,10 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
160
167
  const {
161
168
  children,
162
169
  className,
163
- collapseIcon,
170
+ slots: inSlots,
171
+ slotProps: inSlotProps,
164
172
  ContentComponent = _TreeItemContent.TreeItemContent,
165
173
  ContentProps,
166
- endIcon,
167
- expandIcon,
168
- icon,
169
174
  nodeId,
170
175
  id,
171
176
  label,
@@ -175,6 +180,12 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
175
180
  TransitionProps
176
181
  } = props,
177
182
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
183
+ const slots = {
184
+ expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? _icons.TreeViewExpandIcon,
185
+ collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? _icons.TreeViewCollapseIcon,
186
+ endIcon: inSlots?.endIcon ?? contextIcons.slots.endIcon,
187
+ icon: inSlots?.icon
188
+ };
178
189
  const expandable = Boolean(Array.isArray(children) ? children.length : children);
179
190
  const expanded = instance.isNodeExpanded(nodeId);
180
191
  const focused = instance.isNodeFocused(nodeId);
@@ -187,20 +198,40 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
187
198
  disabled
188
199
  });
189
200
  const classes = useUtilityClasses(ownerState);
190
- let displayIcon;
191
- let expansionIcon;
192
- if (expandable) {
193
- if (!expanded) {
194
- expansionIcon = expandIcon || contextIcons.defaultExpandIcon;
195
- } else {
196
- expansionIcon = collapseIcon || contextIcons.defaultCollapseIcon;
197
- }
198
- }
199
- if (expandable) {
200
- displayIcon = contextIcons.defaultParentIcon;
201
- } else {
202
- displayIcon = endIcon || contextIcons.defaultEndIcon;
203
- }
201
+ const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
202
+ const _useSlotProps = (0, _utils.useSlotProps)({
203
+ elementType: ExpansionIcon,
204
+ ownerState: {},
205
+ externalSlotProps: tempOwnerState => {
206
+ if (expanded) {
207
+ return (0, _extends2.default)({}, (0, _utils.resolveComponentProps)(contextIcons.slotProps.collapseIcon, tempOwnerState), (0, _utils.resolveComponentProps)(inSlotProps?.collapseIcon, tempOwnerState));
208
+ }
209
+ return (0, _extends2.default)({}, (0, _utils.resolveComponentProps)(contextIcons.slotProps.expandIcon, tempOwnerState), (0, _utils.resolveComponentProps)(inSlotProps?.expandIcon, tempOwnerState));
210
+ }
211
+ }),
212
+ expansionIconProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded2);
213
+ const expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(ExpansionIcon, (0, _extends2.default)({}, expansionIconProps)) : null;
214
+ const DisplayIcon = expandable ? undefined : slots.endIcon;
215
+ const _useSlotProps2 = (0, _utils.useSlotProps)({
216
+ elementType: DisplayIcon,
217
+ ownerState: {},
218
+ externalSlotProps: tempOwnerState => {
219
+ if (expandable) {
220
+ return {};
221
+ }
222
+ return (0, _extends2.default)({}, (0, _utils.resolveComponentProps)(contextIcons.slotProps.endIcon, tempOwnerState), (0, _utils.resolveComponentProps)(inSlotProps?.endIcon, tempOwnerState));
223
+ }
224
+ }),
225
+ displayIconProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps2, _excluded3);
226
+ const displayIcon = DisplayIcon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(DisplayIcon, (0, _extends2.default)({}, displayIconProps)) : null;
227
+ const Icon = slots.icon;
228
+ const _useSlotProps3 = (0, _utils.useSlotProps)({
229
+ elementType: Icon,
230
+ ownerState: {},
231
+ externalSlotProps: inSlotProps?.icon
232
+ }),
233
+ iconProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps3, _excluded4);
234
+ const icon = Icon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, (0, _extends2.default)({}, iconProps)) : null;
204
235
  let ariaSelected;
205
236
  if (multiSelect) {
206
237
  ariaSelected = selected;
@@ -281,14 +312,7 @@ TreeItem.propTypes = {
281
312
  * Override or extend the styles applied to the component.
282
313
  */
283
314
  classes: _propTypes.default.object,
284
- /**
285
- * className applied to the root element.
286
- */
287
315
  className: _propTypes.default.string,
288
- /**
289
- * The icon used to collapse the node.
290
- */
291
- collapseIcon: _propTypes.default.node,
292
316
  /**
293
317
  * The component used for the content node.
294
318
  * @default TreeItemContent
@@ -303,18 +327,6 @@ TreeItem.propTypes = {
303
327
  * @default false
304
328
  */
305
329
  disabled: _propTypes.default.bool,
306
- /**
307
- * The icon displayed next to an end node.
308
- */
309
- endIcon: _propTypes.default.node,
310
- /**
311
- * The icon used to expand the node.
312
- */
313
- expandIcon: _propTypes.default.node,
314
- /**
315
- * The icon to display next to the tree node's label.
316
- */
317
- icon: _propTypes.default.node,
318
330
  /**
319
331
  * The tree node label.
320
332
  */
@@ -328,6 +340,16 @@ TreeItem.propTypes = {
328
340
  * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
329
341
  */
330
342
  onFocus: _unsupportedProp.default,
343
+ /**
344
+ * The props used for each component slot.
345
+ * @default {}
346
+ */
347
+ slotProps: _propTypes.default.object,
348
+ /**
349
+ * Overridable component slots.
350
+ * @default {}
351
+ */
352
+ slots: _propTypes.default.object,
331
353
  /**
332
354
  * The system prop that allows defining system overrides as well as additional CSS styles.
333
355
  */