@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
package/README.md
CHANGED
|
@@ -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 {
|
|
@@ -59,7 +58,7 @@ function WrappedTreeItem({
|
|
|
59
58
|
children: children
|
|
60
59
|
}));
|
|
61
60
|
}
|
|
62
|
-
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/']);
|
|
61
|
+
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/']);
|
|
63
62
|
|
|
64
63
|
/**
|
|
65
64
|
*
|
|
@@ -77,75 +76,32 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
|
|
|
77
76
|
props: inProps,
|
|
78
77
|
name: 'MuiRichTreeView'
|
|
79
78
|
});
|
|
80
|
-
const _ref = props,
|
|
81
|
-
{
|
|
82
|
-
// Headless implementation
|
|
83
|
-
disabledItemsFocusable,
|
|
84
|
-
expandedNodes,
|
|
85
|
-
defaultExpandedNodes,
|
|
86
|
-
onExpandedNodesChange,
|
|
87
|
-
onNodeExpansionToggle,
|
|
88
|
-
onNodeFocus,
|
|
89
|
-
disableSelection,
|
|
90
|
-
defaultSelectedNodes,
|
|
91
|
-
selectedNodes,
|
|
92
|
-
multiSelect,
|
|
93
|
-
onSelectedNodesChange,
|
|
94
|
-
onNodeSelectionToggle,
|
|
95
|
-
id: treeId,
|
|
96
|
-
defaultCollapseIcon,
|
|
97
|
-
defaultEndIcon,
|
|
98
|
-
defaultExpandIcon,
|
|
99
|
-
defaultParentIcon,
|
|
100
|
-
items,
|
|
101
|
-
getItemId,
|
|
102
|
-
getItemLabel,
|
|
103
|
-
isItemDisabled,
|
|
104
|
-
// Component implementation
|
|
105
|
-
slots,
|
|
106
|
-
slotProps
|
|
107
|
-
} = _ref,
|
|
108
|
-
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
109
79
|
if (process.env.NODE_ENV !== 'production') {
|
|
110
80
|
if (props.children != null) {
|
|
111
81
|
childrenWarning();
|
|
112
82
|
}
|
|
113
83
|
}
|
|
114
84
|
const {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
defaultExpandedNodes,
|
|
122
|
-
onExpandedNodesChange,
|
|
123
|
-
onNodeExpansionToggle,
|
|
124
|
-
onNodeFocus,
|
|
125
|
-
disableSelection,
|
|
126
|
-
defaultSelectedNodes,
|
|
127
|
-
selectedNodes,
|
|
128
|
-
multiSelect,
|
|
129
|
-
onSelectedNodesChange,
|
|
130
|
-
onNodeSelectionToggle,
|
|
131
|
-
id: treeId,
|
|
132
|
-
defaultCollapseIcon,
|
|
133
|
-
defaultEndIcon,
|
|
134
|
-
defaultExpandIcon,
|
|
135
|
-
defaultParentIcon,
|
|
136
|
-
items,
|
|
137
|
-
getItemId,
|
|
138
|
-
getItemLabel,
|
|
139
|
-
isItemDisabled,
|
|
85
|
+
pluginParams,
|
|
86
|
+
slots,
|
|
87
|
+
slotProps,
|
|
88
|
+
otherProps
|
|
89
|
+
} = extractPluginParamsFromProps({
|
|
90
|
+
props,
|
|
140
91
|
plugins: DEFAULT_TREE_VIEW_PLUGINS,
|
|
141
92
|
rootRef: ref
|
|
142
93
|
});
|
|
94
|
+
const {
|
|
95
|
+
getRootProps,
|
|
96
|
+
contextValue,
|
|
97
|
+
instance
|
|
98
|
+
} = useTreeView(pluginParams);
|
|
143
99
|
const classes = useUtilityClasses(props);
|
|
144
100
|
const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : RichTreeViewRoot;
|
|
145
101
|
const rootProps = useSlotProps({
|
|
146
102
|
elementType: Root,
|
|
147
103
|
externalSlotProps: slotProps == null ? void 0 : slotProps.root,
|
|
148
|
-
externalForwardedProps:
|
|
104
|
+
externalForwardedProps: otherProps,
|
|
149
105
|
className: classes.root,
|
|
150
106
|
getSlotProps: getRootProps,
|
|
151
107
|
ownerState: props
|
|
@@ -182,34 +138,13 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
|
|
|
182
138
|
* Override or extend the styles applied to the component.
|
|
183
139
|
*/
|
|
184
140
|
classes: PropTypes.object,
|
|
185
|
-
/**
|
|
186
|
-
* className applied to the root element.
|
|
187
|
-
*/
|
|
188
141
|
className: PropTypes.string,
|
|
189
|
-
/**
|
|
190
|
-
* The default icon used to collapse the node.
|
|
191
|
-
*/
|
|
192
|
-
defaultCollapseIcon: PropTypes.node,
|
|
193
|
-
/**
|
|
194
|
-
* The default icon displayed next to a end node. This is applied to all
|
|
195
|
-
* tree nodes and can be overridden by the TreeItem `icon` prop.
|
|
196
|
-
*/
|
|
197
|
-
defaultEndIcon: PropTypes.node,
|
|
198
142
|
/**
|
|
199
143
|
* Expanded node ids.
|
|
200
144
|
* Used when the item's expansion is not controlled.
|
|
201
145
|
* @default []
|
|
202
146
|
*/
|
|
203
147
|
defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
|
|
204
|
-
/**
|
|
205
|
-
* The default icon used to expand the node.
|
|
206
|
-
*/
|
|
207
|
-
defaultExpandIcon: PropTypes.node,
|
|
208
|
-
/**
|
|
209
|
-
* The default icon displayed next to a parent node. This is applied to all
|
|
210
|
-
* parent nodes and can be overridden by the TreeItem `icon` prop.
|
|
211
|
-
*/
|
|
212
|
-
defaultParentIcon: PropTypes.node,
|
|
213
148
|
/**
|
|
214
149
|
* Selected node ids. (Uncontrolled)
|
|
215
150
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
@@ -3,17 +3,17 @@ import { Theme } from '@mui/material/styles';
|
|
|
3
3
|
import { SxProps } from '@mui/system';
|
|
4
4
|
import { SlotComponentProps } from '@mui/base/utils';
|
|
5
5
|
import { RichTreeViewClasses } from './richTreeViewClasses';
|
|
6
|
-
import { DefaultTreeViewPluginParameters } from '../internals/plugins/defaultPlugins';
|
|
6
|
+
import { DefaultTreeViewPluginParameters, DefaultTreeViewPluginSlotProps, DefaultTreeViewPluginSlots } from '../internals/plugins/defaultPlugins';
|
|
7
7
|
import { TreeItem, TreeItemProps } from '../TreeItem';
|
|
8
8
|
import { TreeViewItemId } from '../models';
|
|
9
9
|
interface RichTreeViewItemSlotOwnerState {
|
|
10
10
|
nodeId: TreeViewItemId;
|
|
11
11
|
label: string;
|
|
12
12
|
}
|
|
13
|
-
export interface
|
|
13
|
+
export interface RichTreeViewSlots extends DefaultTreeViewPluginSlots {
|
|
14
14
|
/**
|
|
15
15
|
* Element rendered at the root.
|
|
16
|
-
* @default
|
|
16
|
+
* @default RichTreeViewRoot
|
|
17
17
|
*/
|
|
18
18
|
root?: React.ElementType;
|
|
19
19
|
/**
|
|
@@ -22,14 +22,11 @@ export interface RichTreeViewSlotsComponent {
|
|
|
22
22
|
*/
|
|
23
23
|
item?: React.JSXElementConstructor<TreeItemProps>;
|
|
24
24
|
}
|
|
25
|
-
export interface
|
|
25
|
+
export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends DefaultTreeViewPluginSlotProps {
|
|
26
26
|
root?: SlotComponentProps<'ul', {}, RichTreeViewProps<R, Multiple>>;
|
|
27
27
|
item?: SlotComponentProps<typeof TreeItem, {}, RichTreeViewItemSlotOwnerState>;
|
|
28
28
|
}
|
|
29
29
|
export interface RichTreeViewPropsBase extends React.HTMLAttributes<HTMLUListElement> {
|
|
30
|
-
/**
|
|
31
|
-
* className applied to the root element.
|
|
32
|
-
*/
|
|
33
30
|
className?: string;
|
|
34
31
|
/**
|
|
35
32
|
* Override or extend the styles applied to the component.
|
|
@@ -45,11 +42,11 @@ export interface RichTreeViewProps<R extends {}, Multiple extends boolean | unde
|
|
|
45
42
|
* Overridable component slots.
|
|
46
43
|
* @default {}
|
|
47
44
|
*/
|
|
48
|
-
slots?:
|
|
45
|
+
slots?: RichTreeViewSlots;
|
|
49
46
|
/**
|
|
50
47
|
* The props used for each component slot.
|
|
51
48
|
* @default {}
|
|
52
49
|
*/
|
|
53
|
-
slotProps?:
|
|
50
|
+
slotProps?: RichTreeViewSlotProps<R, Multiple>;
|
|
54
51
|
}
|
|
55
52
|
export {};
|
package/RichTreeView/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './RichTreeView';
|
|
2
2
|
export * from './richTreeViewClasses';
|
|
3
|
-
export type { RichTreeViewProps, RichTreeViewPropsBase } from './RichTreeView.types';
|
|
3
|
+
export type { RichTreeViewProps, RichTreeViewPropsBase, RichTreeViewSlots, RichTreeViewSlotProps, } from './RichTreeView.types';
|
|
@@ -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
|
*
|
|
@@ -51,76 +50,40 @@ const SimpleTreeView = /*#__PURE__*/React.forwardRef(function SimpleTreeView(inP
|
|
|
51
50
|
name: 'MuiSimpleTreeView'
|
|
52
51
|
});
|
|
53
52
|
const ownerState = props;
|
|
54
|
-
const _ref = props,
|
|
55
|
-
{
|
|
56
|
-
// Headless implementation
|
|
57
|
-
disabledItemsFocusable,
|
|
58
|
-
expandedNodes,
|
|
59
|
-
defaultExpandedNodes,
|
|
60
|
-
onExpandedNodesChange,
|
|
61
|
-
onNodeExpansionToggle,
|
|
62
|
-
onNodeFocus,
|
|
63
|
-
disableSelection,
|
|
64
|
-
defaultSelectedNodes,
|
|
65
|
-
selectedNodes,
|
|
66
|
-
multiSelect,
|
|
67
|
-
onSelectedNodesChange,
|
|
68
|
-
onNodeSelectionToggle,
|
|
69
|
-
id,
|
|
70
|
-
defaultCollapseIcon,
|
|
71
|
-
defaultEndIcon,
|
|
72
|
-
defaultExpandIcon,
|
|
73
|
-
defaultParentIcon,
|
|
74
|
-
// Component implementation
|
|
75
|
-
children,
|
|
76
|
-
slots
|
|
77
|
-
} = _ref,
|
|
78
|
-
other = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
79
53
|
if (process.env.NODE_ENV !== 'production') {
|
|
80
54
|
if (props.items != null) {
|
|
81
55
|
itemsPropWarning();
|
|
82
56
|
}
|
|
83
57
|
}
|
|
84
58
|
const {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
onNodeFocus,
|
|
94
|
-
disableSelection,
|
|
95
|
-
defaultSelectedNodes,
|
|
96
|
-
selectedNodes,
|
|
97
|
-
multiSelect,
|
|
98
|
-
onSelectedNodesChange,
|
|
99
|
-
onNodeSelectionToggle,
|
|
100
|
-
id,
|
|
101
|
-
defaultCollapseIcon,
|
|
102
|
-
defaultEndIcon,
|
|
103
|
-
defaultExpandIcon,
|
|
104
|
-
defaultParentIcon,
|
|
105
|
-
items: EMPTY_ITEMS,
|
|
59
|
+
pluginParams,
|
|
60
|
+
slots,
|
|
61
|
+
slotProps,
|
|
62
|
+
otherProps
|
|
63
|
+
} = extractPluginParamsFromProps({
|
|
64
|
+
props: _extends({}, props, {
|
|
65
|
+
items: EMPTY_ITEMS
|
|
66
|
+
}),
|
|
106
67
|
plugins: SIMPLE_TREE_VIEW_PLUGINS,
|
|
107
68
|
rootRef: ref
|
|
108
69
|
});
|
|
70
|
+
const {
|
|
71
|
+
getRootProps,
|
|
72
|
+
contextValue
|
|
73
|
+
} = useTreeView(pluginParams);
|
|
109
74
|
const classes = useUtilityClasses(props);
|
|
110
75
|
const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : SimpleTreeViewRoot;
|
|
111
76
|
const rootProps = useSlotProps({
|
|
112
77
|
elementType: Root,
|
|
113
|
-
externalSlotProps:
|
|
114
|
-
externalForwardedProps:
|
|
78
|
+
externalSlotProps: slotProps == null ? void 0 : slotProps.root,
|
|
79
|
+
externalForwardedProps: otherProps,
|
|
115
80
|
className: classes.root,
|
|
116
81
|
getSlotProps: getRootProps,
|
|
117
82
|
ownerState
|
|
118
83
|
});
|
|
119
84
|
return /*#__PURE__*/_jsx(TreeViewProvider, {
|
|
120
85
|
value: contextValue,
|
|
121
|
-
children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps
|
|
122
|
-
children: children
|
|
123
|
-
}))
|
|
86
|
+
children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps))
|
|
124
87
|
});
|
|
125
88
|
});
|
|
126
89
|
process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
@@ -136,34 +99,13 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
|
|
|
136
99
|
* Override or extend the styles applied to the component.
|
|
137
100
|
*/
|
|
138
101
|
classes: PropTypes.object,
|
|
139
|
-
/**
|
|
140
|
-
* className applied to the root element.
|
|
141
|
-
*/
|
|
142
102
|
className: PropTypes.string,
|
|
143
|
-
/**
|
|
144
|
-
* The default icon used to collapse the node.
|
|
145
|
-
*/
|
|
146
|
-
defaultCollapseIcon: PropTypes.node,
|
|
147
|
-
/**
|
|
148
|
-
* The default icon displayed next to a end node. This is applied to all
|
|
149
|
-
* tree nodes and can be overridden by the TreeItem `icon` prop.
|
|
150
|
-
*/
|
|
151
|
-
defaultEndIcon: PropTypes.node,
|
|
152
103
|
/**
|
|
153
104
|
* Expanded node ids.
|
|
154
105
|
* Used when the item's expansion is not controlled.
|
|
155
106
|
* @default []
|
|
156
107
|
*/
|
|
157
108
|
defaultExpandedNodes: PropTypes.arrayOf(PropTypes.string),
|
|
158
|
-
/**
|
|
159
|
-
* The default icon used to expand the node.
|
|
160
|
-
*/
|
|
161
|
-
defaultExpandIcon: PropTypes.node,
|
|
162
|
-
/**
|
|
163
|
-
* The default icon displayed next to a parent node. This is applied to all
|
|
164
|
-
* parent nodes and can be overridden by the TreeItem `icon` prop.
|
|
165
|
-
*/
|
|
166
|
-
defaultParentIcon: PropTypes.node,
|
|
167
109
|
/**
|
|
168
110
|
* Selected node ids. (Uncontrolled)
|
|
169
111
|
* When `multiSelect` is true this takes an array of strings; when false (default) a string.
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { DefaultTreeViewPluginParameters } from '../internals/plugins/defaultPlugins';
|
|
1
|
+
import { DefaultTreeViewPluginParameters, DefaultTreeViewPluginSlotProps, DefaultTreeViewPluginSlots } from '../internals/plugins/defaultPlugins';
|
|
2
2
|
import { ConvertPluginsIntoSignatures } from '../internals/models';
|
|
3
|
-
export declare const SIMPLE_TREE_VIEW_PLUGINS: readonly [import("../internals/models").TreeViewPlugin<import("../internals
|
|
3
|
+
export declare const SIMPLE_TREE_VIEW_PLUGINS: readonly [import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewIdSignature>, import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewNodesSignature>, import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewExpansionSignature>, import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewSelectionSignature>, import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewFocusSignature>, import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewKeyboardNavigationSignature>, import("../internals/models").TreeViewPlugin<import("../internals").UseTreeViewIconsSignature>, import("../internals/models").TreeViewPlugin<import("../internals/plugins/useTreeViewJSXNodes").UseTreeViewJSXNodesSignature>];
|
|
4
4
|
export type SimpleTreeViewPlugins = ConvertPluginsIntoSignatures<typeof SIMPLE_TREE_VIEW_PLUGINS>;
|
|
5
|
+
export type SimpleTreeViewPluginSlots = DefaultTreeViewPluginSlots;
|
|
6
|
+
export type SimpleTreeViewPluginSlotProps = DefaultTreeViewPluginSlotProps;
|
|
5
7
|
export interface SimpleTreeViewPluginParameters<Multiple extends boolean | undefined> extends Omit<DefaultTreeViewPluginParameters<any, Multiple>, 'items' | 'isItemDisabled'> {
|
|
6
8
|
}
|
|
@@ -3,11 +3,15 @@ import { Theme } from '@mui/material/styles';
|
|
|
3
3
|
import { SlotComponentProps } from '@mui/base/utils';
|
|
4
4
|
import { SxProps } from '@mui/system';
|
|
5
5
|
import { SimpleTreeViewClasses } from './simpleTreeViewClasses';
|
|
6
|
-
import { SimpleTreeViewPluginParameters } from './SimpleTreeView.plugins';
|
|
7
|
-
export interface SimpleTreeViewSlots {
|
|
8
|
-
|
|
6
|
+
import { SimpleTreeViewPluginParameters, SimpleTreeViewPluginSlotProps, SimpleTreeViewPluginSlots } from './SimpleTreeView.plugins';
|
|
7
|
+
export interface SimpleTreeViewSlots extends SimpleTreeViewPluginSlots {
|
|
8
|
+
/**
|
|
9
|
+
* Element rendered at the root.
|
|
10
|
+
* @default SimpleTreeViewRoot
|
|
11
|
+
*/
|
|
12
|
+
root?: React.ElementType;
|
|
9
13
|
}
|
|
10
|
-
export interface SimpleTreeViewSlotProps {
|
|
14
|
+
export interface SimpleTreeViewSlotProps extends SimpleTreeViewPluginSlotProps {
|
|
11
15
|
root?: SlotComponentProps<'ul', {}, {}>;
|
|
12
16
|
}
|
|
13
17
|
export interface SimpleTreeViewProps<Multiple extends boolean | undefined> extends SimpleTreeViewPluginParameters<Multiple>, React.HTMLAttributes<HTMLUListElement> {
|
|
@@ -23,9 +27,6 @@ export interface SimpleTreeViewProps<Multiple extends boolean | undefined> exten
|
|
|
23
27
|
* The props used for each component slot.
|
|
24
28
|
*/
|
|
25
29
|
slotProps?: SimpleTreeViewSlotProps;
|
|
26
|
-
/**
|
|
27
|
-
* className applied to the root element.
|
|
28
|
-
*/
|
|
29
30
|
className?: string;
|
|
30
31
|
/**
|
|
31
32
|
* Override or extend the styles applied to the component.
|
package/TreeItem/TreeItem.js
CHANGED
|
@@ -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 => {
|
|
@@ -130,10 +135,13 @@ const TreeItemGroup = styled(Collapse, {
|
|
|
130
135
|
* - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)
|
|
131
136
|
*/
|
|
132
137
|
export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, inRef) {
|
|
138
|
+
var _ref, _inSlots$expandIcon, _ref2, _inSlots$collapseIcon, _inSlots$endIcon;
|
|
133
139
|
const {
|
|
134
140
|
icons: contextIcons,
|
|
135
141
|
runItemPlugins,
|
|
136
|
-
|
|
142
|
+
selection: {
|
|
143
|
+
multiSelect
|
|
144
|
+
},
|
|
137
145
|
disabledItemsFocusable,
|
|
138
146
|
instance
|
|
139
147
|
} = useTreeViewContext();
|
|
@@ -152,12 +160,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
152
160
|
const {
|
|
153
161
|
children,
|
|
154
162
|
className,
|
|
155
|
-
|
|
163
|
+
slots: inSlots,
|
|
164
|
+
slotProps: inSlotProps,
|
|
156
165
|
ContentComponent = TreeItemContent,
|
|
157
166
|
ContentProps,
|
|
158
|
-
endIcon,
|
|
159
|
-
expandIcon,
|
|
160
|
-
icon,
|
|
161
167
|
nodeId,
|
|
162
168
|
id,
|
|
163
169
|
label,
|
|
@@ -167,6 +173,12 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
167
173
|
TransitionProps
|
|
168
174
|
} = props,
|
|
169
175
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
176
|
+
const slots = {
|
|
177
|
+
expandIcon: (_ref = (_inSlots$expandIcon = inSlots == null ? void 0 : inSlots.expandIcon) != null ? _inSlots$expandIcon : contextIcons.slots.expandIcon) != null ? _ref : TreeViewExpandIcon,
|
|
178
|
+
collapseIcon: (_ref2 = (_inSlots$collapseIcon = inSlots == null ? void 0 : inSlots.collapseIcon) != null ? _inSlots$collapseIcon : contextIcons.slots.collapseIcon) != null ? _ref2 : TreeViewCollapseIcon,
|
|
179
|
+
endIcon: (_inSlots$endIcon = inSlots == null ? void 0 : inSlots.endIcon) != null ? _inSlots$endIcon : contextIcons.slots.endIcon,
|
|
180
|
+
icon: inSlots == null ? void 0 : inSlots.icon
|
|
181
|
+
};
|
|
170
182
|
const expandable = Boolean(Array.isArray(children) ? children.length : children);
|
|
171
183
|
const expanded = instance.isNodeExpanded(nodeId);
|
|
172
184
|
const focused = instance.isNodeFocused(nodeId);
|
|
@@ -179,20 +191,40 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
179
191
|
disabled
|
|
180
192
|
});
|
|
181
193
|
const classes = useUtilityClasses(ownerState);
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
const ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
|
|
195
|
+
const _useSlotProps = useSlotProps({
|
|
196
|
+
elementType: ExpansionIcon,
|
|
197
|
+
ownerState: {},
|
|
198
|
+
externalSlotProps: tempOwnerState => {
|
|
199
|
+
if (expanded) {
|
|
200
|
+
return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.collapseIcon, tempOwnerState));
|
|
201
|
+
}
|
|
202
|
+
return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.expandIcon, tempOwnerState));
|
|
203
|
+
}
|
|
204
|
+
}),
|
|
205
|
+
expansionIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
|
|
206
|
+
const expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/_jsx(ExpansionIcon, _extends({}, expansionIconProps)) : null;
|
|
207
|
+
const DisplayIcon = expandable ? undefined : slots.endIcon;
|
|
208
|
+
const _useSlotProps2 = useSlotProps({
|
|
209
|
+
elementType: DisplayIcon,
|
|
210
|
+
ownerState: {},
|
|
211
|
+
externalSlotProps: tempOwnerState => {
|
|
212
|
+
if (expandable) {
|
|
213
|
+
return {};
|
|
214
|
+
}
|
|
215
|
+
return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.endIcon, tempOwnerState));
|
|
216
|
+
}
|
|
217
|
+
}),
|
|
218
|
+
displayIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
|
|
219
|
+
const displayIcon = DisplayIcon ? /*#__PURE__*/_jsx(DisplayIcon, _extends({}, displayIconProps)) : null;
|
|
220
|
+
const Icon = slots.icon;
|
|
221
|
+
const _useSlotProps3 = useSlotProps({
|
|
222
|
+
elementType: Icon,
|
|
223
|
+
ownerState: {},
|
|
224
|
+
externalSlotProps: inSlotProps == null ? void 0 : inSlotProps.icon
|
|
225
|
+
}),
|
|
226
|
+
iconProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded4);
|
|
227
|
+
const icon = Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, iconProps)) : null;
|
|
196
228
|
let ariaSelected;
|
|
197
229
|
if (multiSelect) {
|
|
198
230
|
ariaSelected = selected;
|
|
@@ -273,14 +305,7 @@ TreeItem.propTypes = {
|
|
|
273
305
|
* Override or extend the styles applied to the component.
|
|
274
306
|
*/
|
|
275
307
|
classes: PropTypes.object,
|
|
276
|
-
/**
|
|
277
|
-
* className applied to the root element.
|
|
278
|
-
*/
|
|
279
308
|
className: PropTypes.string,
|
|
280
|
-
/**
|
|
281
|
-
* The icon used to collapse the node.
|
|
282
|
-
*/
|
|
283
|
-
collapseIcon: PropTypes.node,
|
|
284
309
|
/**
|
|
285
310
|
* The component used for the content node.
|
|
286
311
|
* @default TreeItemContent
|
|
@@ -295,18 +320,6 @@ TreeItem.propTypes = {
|
|
|
295
320
|
* @default false
|
|
296
321
|
*/
|
|
297
322
|
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
323
|
/**
|
|
311
324
|
* The tree node label.
|
|
312
325
|
*/
|
|
@@ -320,6 +333,16 @@ TreeItem.propTypes = {
|
|
|
320
333
|
* Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
|
|
321
334
|
*/
|
|
322
335
|
onFocus: unsupportedProp,
|
|
336
|
+
/**
|
|
337
|
+
* The props used for each component slot.
|
|
338
|
+
* @default {}
|
|
339
|
+
*/
|
|
340
|
+
slotProps: PropTypes.object,
|
|
341
|
+
/**
|
|
342
|
+
* Overridable component slots.
|
|
343
|
+
* @default {}
|
|
344
|
+
*/
|
|
345
|
+
slots: PropTypes.object,
|
|
323
346
|
/**
|
|
324
347
|
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
325
348
|
*/
|
|
@@ -1,27 +1,55 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Theme } from '@mui/material/styles';
|
|
3
|
+
import { SlotComponentProps } from '@mui/base/utils';
|
|
3
4
|
import { TransitionProps } from '@mui/material/transitions';
|
|
4
5
|
import { SxProps } from '@mui/system';
|
|
5
6
|
import { TreeItemContentProps } from './TreeItemContent';
|
|
6
7
|
import { TreeItemClasses } from './treeItemClasses';
|
|
7
8
|
import { TreeViewItemId } from '../models';
|
|
9
|
+
export interface TreeItemSlots {
|
|
10
|
+
/**
|
|
11
|
+
* The icon used to collapse the node.
|
|
12
|
+
*/
|
|
13
|
+
collapseIcon?: React.ElementType;
|
|
14
|
+
/**
|
|
15
|
+
* The icon used to expand the node.
|
|
16
|
+
*/
|
|
17
|
+
expandIcon?: React.ElementType;
|
|
18
|
+
/**
|
|
19
|
+
* The icon displayed next to an end node.
|
|
20
|
+
*/
|
|
21
|
+
endIcon?: React.ElementType;
|
|
22
|
+
/**
|
|
23
|
+
* The icon to display next to the tree node's label.
|
|
24
|
+
*/
|
|
25
|
+
icon?: React.ElementType;
|
|
26
|
+
}
|
|
27
|
+
export interface TreeItemSlotProps {
|
|
28
|
+
collapseIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
29
|
+
expandIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
30
|
+
endIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
31
|
+
icon?: SlotComponentProps<'svg', {}, {}>;
|
|
32
|
+
}
|
|
8
33
|
export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>, 'onFocus'> {
|
|
9
34
|
/**
|
|
10
35
|
* The content of the component.
|
|
11
36
|
*/
|
|
12
37
|
children?: React.ReactNode;
|
|
13
|
-
/**
|
|
14
|
-
* className applied to the root element.
|
|
15
|
-
*/
|
|
16
38
|
className?: string;
|
|
17
39
|
/**
|
|
18
40
|
* Override or extend the styles applied to the component.
|
|
19
41
|
*/
|
|
20
42
|
classes?: Partial<TreeItemClasses>;
|
|
21
43
|
/**
|
|
22
|
-
*
|
|
44
|
+
* Overridable component slots.
|
|
45
|
+
* @default {}
|
|
23
46
|
*/
|
|
24
|
-
|
|
47
|
+
slots?: TreeItemSlots;
|
|
48
|
+
/**
|
|
49
|
+
* The props used for each component slot.
|
|
50
|
+
* @default {}
|
|
51
|
+
*/
|
|
52
|
+
slotProps?: TreeItemSlotProps;
|
|
25
53
|
/**
|
|
26
54
|
* The component used for the content node.
|
|
27
55
|
* @default TreeItemContent
|
|
@@ -36,18 +64,6 @@ export interface TreeItemProps extends Omit<React.HTMLAttributes<HTMLLIElement>,
|
|
|
36
64
|
* @default false
|
|
37
65
|
*/
|
|
38
66
|
disabled?: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* The icon displayed next to an end node.
|
|
41
|
-
*/
|
|
42
|
-
endIcon?: React.ReactNode;
|
|
43
|
-
/**
|
|
44
|
-
* The icon used to expand the node.
|
|
45
|
-
*/
|
|
46
|
-
expandIcon?: React.ReactNode;
|
|
47
|
-
/**
|
|
48
|
-
* The icon to display next to the tree node's label.
|
|
49
|
-
*/
|
|
50
|
-
icon?: React.ReactNode;
|
|
51
67
|
/**
|
|
52
68
|
* This prop isn't supported.
|
|
53
69
|
* Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
|