@mui/x-tree-view 7.22.1 → 8.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +143 -92
- package/README.md +2 -2
- package/RichTreeView/RichTreeView.js +20 -1
- package/RichTreeView/RichTreeView.types.d.ts +4 -4
- package/SimpleTreeView/SimpleTreeView.js +21 -3
- package/TreeItem/TreeItem.d.ts +20 -2
- package/TreeItem/TreeItem.js +238 -368
- package/TreeItem/TreeItem.types.d.ts +51 -86
- package/TreeItem/index.d.ts +1 -4
- package/TreeItem/index.js +2 -4
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +7 -0
- package/{modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
- package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts} +1 -1
- package/TreeItemDragAndDropOverlay/index.d.ts +2 -0
- package/TreeItemDragAndDropOverlay/index.js +1 -0
- package/{TreeItem2LabelInput → TreeItemDragAndDropOverlay}/package.json +1 -1
- package/TreeItemIcon/TreeItemIcon.d.ts +7 -0
- package/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
- package/{TreeItem2Icon/TreeItem2Icon.types.d.ts → TreeItemIcon/TreeItemIcon.types.d.ts} +7 -7
- package/TreeItemIcon/index.d.ts +2 -0
- package/TreeItemIcon/index.js +1 -0
- package/{useTreeItem2 → TreeItemIcon}/package.json +1 -1
- package/TreeItemLabelInput/TreeItemLabelInput.d.ts +5 -0
- package/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/{TreeItem2LabelInput/TreeItem2LabelInput.types.d.ts → TreeItemLabelInput/TreeItemLabelInput.types.d.ts} +1 -1
- package/TreeItemLabelInput/index.d.ts +2 -0
- package/TreeItemLabelInput/index.js +1 -0
- package/{TreeItem2Provider → TreeItemLabelInput}/package.json +1 -1
- package/TreeItemProvider/TreeItemProvider.d.ts +9 -0
- package/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
- package/{TreeItem2Provider/TreeItem2Provider.types.d.ts → TreeItemProvider/TreeItemProvider.types.d.ts} +1 -1
- package/TreeItemProvider/index.d.ts +2 -0
- package/TreeItemProvider/index.js +1 -0
- package/{TreeItem2Icon → TreeItemProvider}/package.json +1 -1
- package/hooks/index.d.ts +1 -1
- package/hooks/index.js +1 -1
- package/hooks/useTreeItemUtils/index.d.ts +1 -0
- package/hooks/useTreeItemUtils/index.js +1 -0
- package/hooks/{useTreeItem2Utils/useTreeItem2Utils.d.ts → useTreeItemUtils/useTreeItemUtils.d.ts} +11 -11
- package/{modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js → hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
- package/index.d.ts +5 -7
- package/index.js +6 -8
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +2 -1
- package/internals/components/RichTreeViewItems.d.ts +1 -2
- package/internals/index.d.ts +1 -1
- package/internals/models/helpers.d.ts +0 -2
- package/internals/models/itemPlugin.d.ts +11 -8
- package/internals/models/plugin.d.ts +1 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +3 -5
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +1 -1
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +6 -5
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +2 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +33 -3
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +20 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
- package/models/items.d.ts +4 -0
- package/modern/RichTreeView/RichTreeView.js +20 -1
- package/modern/SimpleTreeView/SimpleTreeView.js +21 -3
- package/modern/TreeItem/TreeItem.js +238 -368
- package/modern/TreeItem/index.js +2 -4
- package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
- package/modern/TreeItemDragAndDropOverlay/index.js +1 -0
- package/modern/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
- package/modern/TreeItemIcon/index.js +1 -0
- package/modern/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/modern/TreeItemLabelInput/index.js +1 -0
- package/modern/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
- package/modern/TreeItemProvider/index.js +1 -0
- package/modern/hooks/index.js +1 -1
- package/modern/hooks/useTreeItemUtils/index.js +1 -0
- package/{hooks/useTreeItem2Utils/useTreeItem2Utils.js → modern/hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
- package/modern/index.js +6 -8
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
- package/modern/useTreeItem/index.js +1 -0
- package/modern/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
- package/node/RichTreeView/RichTreeView.js +20 -1
- package/node/SimpleTreeView/SimpleTreeView.js +21 -3
- package/node/TreeItem/TreeItem.js +239 -369
- package/node/TreeItem/index.js +38 -16
- package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +7 -6
- package/node/TreeItemDragAndDropOverlay/index.js +12 -0
- package/node/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +4 -3
- package/node/TreeItemIcon/index.js +12 -0
- package/node/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/node/TreeItemLabelInput/index.js +12 -0
- package/node/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +6 -3
- package/node/TreeItemProvider/index.js +12 -0
- package/node/hooks/index.js +3 -3
- package/node/hooks/useTreeItemUtils/index.js +12 -0
- package/node/hooks/{useTreeItem2Utils/useTreeItem2Utils.js → useTreeItemUtils/useTreeItemUtils.js} +6 -5
- package/node/index.js +18 -42
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +94 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -17
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +99 -2
- package/node/useTreeItem/index.js +12 -0
- package/node/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +22 -44
- package/package.json +3 -3
- package/themeAugmentation/components.d.ts +0 -10
- package/themeAugmentation/overrides.d.ts +0 -3
- package/themeAugmentation/props.d.ts +1 -5
- package/useTreeItem/index.d.ts +2 -0
- package/useTreeItem/index.js +1 -0
- package/{TreeItem2 → useTreeItem}/package.json +1 -1
- package/useTreeItem/useTreeItem.d.ts +2 -0
- package/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
- package/{useTreeItem2/useTreeItem2.types.d.ts → useTreeItem/useTreeItem.types.d.ts} +42 -58
- package/TreeItem/TreeItemContent.d.ts +0 -61
- package/TreeItem/TreeItemContent.js +0 -146
- package/TreeItem/useTreeItemState.d.ts +0 -21
- package/TreeItem/useTreeItemState.js +0 -143
- package/TreeItem2/TreeItem2.d.ts +0 -34
- package/TreeItem2/TreeItem2.js +0 -387
- package/TreeItem2/TreeItem2.types.d.ts +0 -92
- package/TreeItem2/index.d.ts +0 -2
- package/TreeItem2/index.js +0 -1
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +0 -7
- package/TreeItem2DragAndDropOverlay/index.d.ts +0 -2
- package/TreeItem2DragAndDropOverlay/index.js +0 -1
- package/TreeItem2DragAndDropOverlay/package.json +0 -6
- package/TreeItem2Icon/TreeItem2Icon.d.ts +0 -7
- package/TreeItem2Icon/index.d.ts +0 -2
- package/TreeItem2Icon/index.js +0 -1
- package/TreeItem2LabelInput/TreeItem2LabelInput.d.ts +0 -5
- package/TreeItem2LabelInput/index.d.ts +0 -2
- package/TreeItem2LabelInput/index.js +0 -1
- package/TreeItem2Provider/TreeItem2Provider.d.ts +0 -6
- package/TreeItem2Provider/index.d.ts +0 -2
- package/TreeItem2Provider/index.js +0 -1
- package/TreeView/TreeView.d.ts +0 -21
- package/TreeView/TreeView.js +0 -211
- package/TreeView/TreeView.types.d.ts +0 -9
- package/TreeView/index.d.ts +0 -3
- package/TreeView/index.js +0 -3
- package/TreeView/package.json +0 -6
- package/TreeView/treeViewClasses.d.ts +0 -7
- package/TreeView/treeViewClasses.js +0 -6
- package/hooks/useTreeItem2Utils/index.d.ts +0 -1
- package/hooks/useTreeItem2Utils/index.js +0 -1
- package/modern/TreeItem/TreeItemContent.js +0 -146
- package/modern/TreeItem/useTreeItemState.js +0 -143
- package/modern/TreeItem2/TreeItem2.js +0 -387
- package/modern/TreeItem2/index.js +0 -1
- package/modern/TreeItem2DragAndDropOverlay/index.js +0 -1
- package/modern/TreeItem2Icon/index.js +0 -1
- package/modern/TreeItem2LabelInput/index.js +0 -1
- package/modern/TreeItem2Provider/TreeItem2Provider.types.js +0 -1
- package/modern/TreeItem2Provider/index.js +0 -1
- package/modern/TreeView/TreeView.js +0 -211
- package/modern/TreeView/TreeView.types.js +0 -1
- package/modern/TreeView/index.js +0 -3
- package/modern/TreeView/treeViewClasses.js +0 -6
- package/modern/hooks/useTreeItem2Utils/index.js +0 -1
- package/modern/useTreeItem2/index.js +0 -4
- package/modern/useTreeItem2/useTreeItem2.types.js +0 -1
- package/node/TreeItem/TreeItemContent.js +0 -153
- package/node/TreeItem/useTreeItemState.js +0 -148
- package/node/TreeItem2/TreeItem2.js +0 -394
- package/node/TreeItem2/index.js +0 -48
- package/node/TreeItem2DragAndDropOverlay/index.js +0 -12
- package/node/TreeItem2Icon/index.js +0 -12
- package/node/TreeItem2LabelInput/index.js +0 -12
- package/node/TreeItem2Provider/index.js +0 -12
- package/node/TreeView/TreeView.js +0 -217
- package/node/TreeView/TreeView.types.js +0 -5
- package/node/TreeView/index.js +0 -27
- package/node/TreeView/treeViewClasses.js +0 -14
- package/node/hooks/useTreeItem2Utils/index.js +0 -12
- package/node/useTreeItem2/index.js +0 -10
- package/node/useTreeItem2/useTreeItem2.types.js +0 -5
- package/useTreeItem2/index.d.ts +0 -3
- package/useTreeItem2/index.js +0 -4
- package/useTreeItem2/useTreeItem2.d.ts +0 -2
- package/useTreeItem2/useTreeItem2.types.js +0 -1
- /package/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/{TreeItem2Provider/TreeItem2Provider.types.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/{TreeView/TreeView.types.js → modern/TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/modern/{TreeItem2/TreeItem2.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/modern/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/modern/{TreeItem2Icon/TreeItem2Icon.types.js → useTreeItem/useTreeItem.types.js} +0 -0
- /package/node/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/node/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/node/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/node/{TreeItem2Provider/TreeItem2Provider.types.js → useTreeItem/useTreeItem.types.js} +0 -0
- /package/{modern/TreeItem2LabelInput/TreeItem2LabelInput.types.js → useTreeItem/useTreeItem.types.js} +0 -0
|
@@ -2,58 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
4
4
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
5
|
-
const _excluded = ["
|
|
6
|
-
_excluded2 = ["
|
|
7
|
-
_excluded3 = ["ownerState"],
|
|
8
|
-
_excluded4 = ["ownerState"];
|
|
5
|
+
const _excluded = ["visible"],
|
|
6
|
+
_excluded2 = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps"];
|
|
9
7
|
import * as React from 'react';
|
|
10
8
|
import PropTypes from 'prop-types';
|
|
11
9
|
import clsx from 'clsx';
|
|
10
|
+
import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
11
|
+
import { alpha } from '@mui/material/styles';
|
|
12
12
|
import Collapse from '@mui/material/Collapse';
|
|
13
|
-
import
|
|
13
|
+
import MuiCheckbox from '@mui/material/Checkbox';
|
|
14
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
14
15
|
import { shouldForwardProp } from '@mui/system/createStyled';
|
|
15
|
-
import { alpha } from '@mui/material/styles';
|
|
16
16
|
import composeClasses from '@mui/utils/composeClasses';
|
|
17
|
-
import extractEventHandlers from '@mui/utils/extractEventHandlers';
|
|
18
|
-
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
19
|
-
import useSlotProps from '@mui/utils/useSlotProps';
|
|
20
|
-
import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
21
|
-
import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
|
|
22
|
-
import { warnOnce } from '@mui/x-internals/warning';
|
|
23
17
|
import { styled, createUseThemeProps } from "../internals/zero-styled/index.js";
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import { useTreeItemState } from "./useTreeItemState.js";
|
|
31
|
-
import { isTargetInDescendants } from "../internals/utils/tree.js";
|
|
32
|
-
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
18
|
+
import { useTreeItem } from "../useTreeItem/index.js";
|
|
19
|
+
import { getTreeItemUtilityClass } from "./treeItemClasses.js";
|
|
20
|
+
import { TreeItemIcon } from "../TreeItemIcon/index.js";
|
|
21
|
+
import { TreeItemDragAndDropOverlay } from "../TreeItemDragAndDropOverlay/index.js";
|
|
22
|
+
import { TreeItemProvider } from "../TreeItemProvider/index.js";
|
|
23
|
+
import { TreeItemLabelInput } from "../TreeItemLabelInput/index.js";
|
|
33
24
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
34
25
|
const useThemeProps = createUseThemeProps('MuiTreeItem');
|
|
35
|
-
const
|
|
36
|
-
const {
|
|
37
|
-
classes
|
|
38
|
-
} = ownerState;
|
|
39
|
-
const slots = {
|
|
40
|
-
root: ['root'],
|
|
41
|
-
content: ['content'],
|
|
42
|
-
expanded: ['expanded'],
|
|
43
|
-
selected: ['selected'],
|
|
44
|
-
focused: ['focused'],
|
|
45
|
-
disabled: ['disabled'],
|
|
46
|
-
iconContainer: ['iconContainer'],
|
|
47
|
-
checkbox: ['checkbox'],
|
|
48
|
-
label: ['label'],
|
|
49
|
-
labelInput: ['labelInput'],
|
|
50
|
-
editing: ['editing'],
|
|
51
|
-
editable: ['editable'],
|
|
52
|
-
groupTransition: ['groupTransition']
|
|
53
|
-
};
|
|
54
|
-
return composeClasses(slots, getTreeItemUtilityClass, classes);
|
|
55
|
-
};
|
|
56
|
-
const TreeItemRoot = styled('li', {
|
|
26
|
+
export const TreeItemRoot = styled('li', {
|
|
57
27
|
name: 'MuiTreeItem',
|
|
58
28
|
slot: 'Root',
|
|
59
29
|
overridesResolver: (props, styles) => styles.root
|
|
@@ -63,21 +33,16 @@ const TreeItemRoot = styled('li', {
|
|
|
63
33
|
padding: 0,
|
|
64
34
|
outline: 0
|
|
65
35
|
});
|
|
66
|
-
const
|
|
36
|
+
export const TreeItemContent = styled('div', {
|
|
67
37
|
name: 'MuiTreeItem',
|
|
68
38
|
slot: 'Content',
|
|
69
|
-
overridesResolver: (props, styles) =>
|
|
70
|
-
|
|
71
|
-
[`& .${treeItemClasses.iconContainer}`]: styles.iconContainer
|
|
72
|
-
}, styles.label && {
|
|
73
|
-
[`& .${treeItemClasses.label}`]: styles.label
|
|
74
|
-
}];
|
|
75
|
-
},
|
|
76
|
-
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'indentationAtItemLevel'
|
|
39
|
+
overridesResolver: (props, styles) => styles.content,
|
|
40
|
+
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'status'
|
|
77
41
|
})(({
|
|
78
42
|
theme
|
|
79
43
|
}) => ({
|
|
80
44
|
padding: theme.spacing(0.5, 1),
|
|
45
|
+
paddingLeft: `calc(${theme.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`,
|
|
81
46
|
borderRadius: theme.shape.borderRadius,
|
|
82
47
|
width: '100%',
|
|
83
48
|
boxSizing: 'border-box',
|
|
@@ -95,74 +60,130 @@ const StyledTreeItemContent = styled(TreeItemContent, {
|
|
|
95
60
|
backgroundColor: 'transparent'
|
|
96
61
|
}
|
|
97
62
|
},
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
63
|
+
variants: [{
|
|
64
|
+
props: ({
|
|
65
|
+
status
|
|
66
|
+
}) => status.disabled,
|
|
67
|
+
style: {
|
|
68
|
+
opacity: (theme.vars || theme).palette.action.disabledOpacity,
|
|
69
|
+
backgroundColor: 'transparent'
|
|
70
|
+
}
|
|
71
|
+
}, {
|
|
72
|
+
props: ({
|
|
73
|
+
status
|
|
74
|
+
}) => status.focused,
|
|
75
|
+
style: {
|
|
76
|
+
backgroundColor: (theme.vars || theme).palette.action.focus
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
props: ({
|
|
80
|
+
status
|
|
81
|
+
}) => status.selected,
|
|
82
|
+
style: {
|
|
83
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
|
|
84
|
+
'&:hover': {
|
|
85
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
|
|
86
|
+
// Reset on touch devices, it doesn't add specificity
|
|
87
|
+
'@media (hover: none)': {
|
|
88
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)
|
|
89
|
+
}
|
|
112
90
|
}
|
|
113
|
-
},
|
|
114
|
-
[`&.${treeItemClasses.focused}`]: {
|
|
115
|
-
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
|
|
116
91
|
}
|
|
117
|
-
},
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
'& svg': {
|
|
124
|
-
fontSize: 18
|
|
92
|
+
}, {
|
|
93
|
+
props: ({
|
|
94
|
+
status
|
|
95
|
+
}) => status.selected && status.focused,
|
|
96
|
+
style: {
|
|
97
|
+
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
|
|
125
98
|
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
99
|
+
}]
|
|
100
|
+
}));
|
|
101
|
+
export const TreeItemLabel = styled('div', {
|
|
102
|
+
name: 'MuiTreeItem',
|
|
103
|
+
slot: 'Label',
|
|
104
|
+
overridesResolver: (props, styles) => styles.label,
|
|
105
|
+
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'editable'
|
|
106
|
+
})(({
|
|
107
|
+
theme
|
|
108
|
+
}) => _extends({
|
|
109
|
+
width: '100%',
|
|
110
|
+
boxSizing: 'border-box',
|
|
111
|
+
// prevent width + padding to overflow
|
|
112
|
+
// fixes overflow - see https://github.com/mui/material-ui/issues/27372
|
|
113
|
+
minWidth: 0,
|
|
114
|
+
position: 'relative',
|
|
115
|
+
overflow: 'hidden'
|
|
116
|
+
}, theme.typography.body1, {
|
|
138
117
|
variants: [{
|
|
139
|
-
props: {
|
|
140
|
-
|
|
141
|
-
},
|
|
118
|
+
props: ({
|
|
119
|
+
editable
|
|
120
|
+
}) => editable,
|
|
142
121
|
style: {
|
|
143
|
-
paddingLeft:
|
|
122
|
+
paddingLeft: '2px'
|
|
144
123
|
}
|
|
145
124
|
}]
|
|
146
125
|
}));
|
|
147
|
-
const
|
|
126
|
+
export const TreeItemIconContainer = styled('div', {
|
|
127
|
+
name: 'MuiTreeItem',
|
|
128
|
+
slot: 'IconContainer',
|
|
129
|
+
overridesResolver: (props, styles) => styles.iconContainer
|
|
130
|
+
})({
|
|
131
|
+
width: 16,
|
|
132
|
+
display: 'flex',
|
|
133
|
+
flexShrink: 0,
|
|
134
|
+
justifyContent: 'center',
|
|
135
|
+
'& svg': {
|
|
136
|
+
fontSize: 18
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
export const TreeItemGroupTransition = styled(Collapse, {
|
|
148
140
|
name: 'MuiTreeItem',
|
|
149
141
|
slot: 'GroupTransition',
|
|
150
|
-
overridesResolver: (props, styles) => styles.groupTransition
|
|
151
|
-
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'indentationAtItemLevel'
|
|
142
|
+
overridesResolver: (props, styles) => styles.groupTransition
|
|
152
143
|
})({
|
|
153
144
|
margin: 0,
|
|
154
|
-
padding: 0
|
|
155
|
-
paddingLeft: 'var(--TreeView-itemChildrenIndentation)',
|
|
156
|
-
variants: [{
|
|
157
|
-
props: {
|
|
158
|
-
indentationAtItemLevel: true
|
|
159
|
-
},
|
|
160
|
-
style: {
|
|
161
|
-
paddingLeft: 0
|
|
162
|
-
}
|
|
163
|
-
}]
|
|
145
|
+
padding: 0
|
|
164
146
|
});
|
|
165
|
-
|
|
147
|
+
export const TreeItemCheckbox = styled(/*#__PURE__*/React.forwardRef((props, ref) => {
|
|
148
|
+
const {
|
|
149
|
+
visible
|
|
150
|
+
} = props,
|
|
151
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
152
|
+
if (!visible) {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
return /*#__PURE__*/_jsx(MuiCheckbox, _extends({}, other, {
|
|
156
|
+
ref: ref
|
|
157
|
+
}));
|
|
158
|
+
}), {
|
|
159
|
+
name: 'MuiTreeItem',
|
|
160
|
+
slot: 'Checkbox',
|
|
161
|
+
overridesResolver: (props, styles) => styles.checkbox
|
|
162
|
+
})({
|
|
163
|
+
padding: 0
|
|
164
|
+
});
|
|
165
|
+
const useUtilityClasses = ownerState => {
|
|
166
|
+
const {
|
|
167
|
+
classes
|
|
168
|
+
} = ownerState;
|
|
169
|
+
const slots = {
|
|
170
|
+
root: ['root'],
|
|
171
|
+
content: ['content'],
|
|
172
|
+
expanded: ['expanded'],
|
|
173
|
+
editing: ['editing'],
|
|
174
|
+
editable: ['editable'],
|
|
175
|
+
selected: ['selected'],
|
|
176
|
+
focused: ['focused'],
|
|
177
|
+
disabled: ['disabled'],
|
|
178
|
+
iconContainer: ['iconContainer'],
|
|
179
|
+
checkbox: ['checkbox'],
|
|
180
|
+
label: ['label'],
|
|
181
|
+
groupTransition: ['groupTransition'],
|
|
182
|
+
labelInput: ['labelInput'],
|
|
183
|
+
dragAndDropOverlay: ['dragAndDropOverlay']
|
|
184
|
+
};
|
|
185
|
+
return composeClasses(slots, getTreeItemUtilityClass, classes);
|
|
186
|
+
};
|
|
166
187
|
/**
|
|
167
188
|
*
|
|
168
189
|
* Demos:
|
|
@@ -171,269 +192,124 @@ const TreeItemGroup = styled(Collapse, {
|
|
|
171
192
|
*
|
|
172
193
|
* API:
|
|
173
194
|
*
|
|
174
|
-
* - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)
|
|
195
|
+
* - [TreeItem API](https://mui.com/x/api/tree-view/tree-item-2/)
|
|
175
196
|
*/
|
|
176
|
-
export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
177
|
-
const {
|
|
178
|
-
icons: contextIcons,
|
|
179
|
-
runItemPlugins,
|
|
180
|
-
items: {
|
|
181
|
-
disabledItemsFocusable,
|
|
182
|
-
indentationAtItemLevel
|
|
183
|
-
},
|
|
184
|
-
selection: {
|
|
185
|
-
disableSelection
|
|
186
|
-
},
|
|
187
|
-
expansion: {
|
|
188
|
-
expansionTrigger
|
|
189
|
-
},
|
|
190
|
-
treeId,
|
|
191
|
-
instance
|
|
192
|
-
} = useTreeViewContext();
|
|
193
|
-
const depthContext = React.useContext(TreeViewItemDepthContext);
|
|
197
|
+
export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, forwardedRef) {
|
|
194
198
|
const props = useThemeProps({
|
|
195
199
|
props: inProps,
|
|
196
200
|
name: 'MuiTreeItem'
|
|
197
201
|
});
|
|
198
202
|
const {
|
|
199
|
-
children,
|
|
200
|
-
className,
|
|
201
|
-
slots: inSlots,
|
|
202
|
-
slotProps: inSlotProps,
|
|
203
|
-
ContentComponent = TreeItemContent,
|
|
204
|
-
ContentProps,
|
|
205
|
-
itemId,
|
|
206
203
|
id,
|
|
204
|
+
itemId,
|
|
207
205
|
label,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
206
|
+
disabled,
|
|
207
|
+
children,
|
|
208
|
+
slots = {},
|
|
209
|
+
slotProps = {}
|
|
212
210
|
} = props,
|
|
213
|
-
other = _objectWithoutPropertiesLoose(props,
|
|
211
|
+
other = _objectWithoutPropertiesLoose(props, _excluded2);
|
|
214
212
|
const {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
warnOnce(['MUI X: The ContentProps prop of the TreeItem component is deprecated and will be removed in the next major release.', 'You can use the new TreeItem2 component or the new useTreeItem2 hook to customize the rendering of the content.', 'For more detail, see https://mui.com/x/react-tree-view/tree-item-customization/.']);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
const {
|
|
234
|
-
contentRef,
|
|
235
|
-
rootRef,
|
|
236
|
-
propsEnhancers
|
|
237
|
-
} = runItemPlugins(props);
|
|
238
|
-
const rootRefObject = React.useRef(null);
|
|
239
|
-
const contentRefObject = React.useRef(null);
|
|
240
|
-
const handleRootRef = useForkRef(inRef, rootRef, rootRefObject);
|
|
241
|
-
const handleContentRef = useForkRef(ContentProps?.ref, contentRef, contentRefObject);
|
|
242
|
-
const slots = {
|
|
243
|
-
expandIcon: inSlots?.expandIcon ?? contextIcons.slots.expandIcon ?? TreeViewExpandIcon,
|
|
244
|
-
collapseIcon: inSlots?.collapseIcon ?? contextIcons.slots.collapseIcon ?? TreeViewCollapseIcon,
|
|
245
|
-
endIcon: inSlots?.endIcon ?? contextIcons.slots.endIcon,
|
|
246
|
-
icon: inSlots?.icon,
|
|
247
|
-
groupTransition: inSlots?.groupTransition
|
|
248
|
-
};
|
|
249
|
-
const isExpandable = reactChildren => {
|
|
250
|
-
if (Array.isArray(reactChildren)) {
|
|
251
|
-
return reactChildren.length > 0 && reactChildren.some(isExpandable);
|
|
252
|
-
}
|
|
253
|
-
return Boolean(reactChildren);
|
|
254
|
-
};
|
|
255
|
-
const expandable = isExpandable(children);
|
|
256
|
-
const ownerState = _extends({}, props, {
|
|
257
|
-
expanded,
|
|
258
|
-
focused,
|
|
259
|
-
selected,
|
|
260
|
-
disabled,
|
|
261
|
-
indentationAtItemLevel
|
|
213
|
+
getRootProps,
|
|
214
|
+
getContentProps,
|
|
215
|
+
getIconContainerProps,
|
|
216
|
+
getCheckboxProps,
|
|
217
|
+
getLabelProps,
|
|
218
|
+
getGroupTransitionProps,
|
|
219
|
+
getLabelInputProps,
|
|
220
|
+
getDragAndDropOverlayProps,
|
|
221
|
+
status
|
|
222
|
+
} = useTreeItem({
|
|
223
|
+
id,
|
|
224
|
+
itemId,
|
|
225
|
+
children,
|
|
226
|
+
label,
|
|
227
|
+
disabled
|
|
262
228
|
});
|
|
229
|
+
const ownerState = _extends({}, props, status);
|
|
263
230
|
const classes = useUtilityClasses(ownerState);
|
|
231
|
+
const Root = slots.root ?? TreeItemRoot;
|
|
232
|
+
const rootProps = useSlotProps({
|
|
233
|
+
elementType: Root,
|
|
234
|
+
getSlotProps: getRootProps,
|
|
235
|
+
externalForwardedProps: other,
|
|
236
|
+
externalSlotProps: slotProps.root,
|
|
237
|
+
additionalProps: {
|
|
238
|
+
ref: forwardedRef
|
|
239
|
+
},
|
|
240
|
+
ownerState: {},
|
|
241
|
+
className: classes.root
|
|
242
|
+
});
|
|
243
|
+
const Content = slots.content ?? TreeItemContent;
|
|
244
|
+
const contentProps = useSlotProps({
|
|
245
|
+
elementType: Content,
|
|
246
|
+
getSlotProps: getContentProps,
|
|
247
|
+
externalSlotProps: slotProps.content,
|
|
248
|
+
ownerState: {},
|
|
249
|
+
className: clsx(classes.content, status.expanded && classes.expanded, status.selected && classes.selected, status.focused && classes.focused, status.disabled && classes.disabled, status.editing && classes.editing, status.editable && classes.editable)
|
|
250
|
+
});
|
|
251
|
+
const IconContainer = slots.iconContainer ?? TreeItemIconContainer;
|
|
252
|
+
const iconContainerProps = useSlotProps({
|
|
253
|
+
elementType: IconContainer,
|
|
254
|
+
getSlotProps: getIconContainerProps,
|
|
255
|
+
externalSlotProps: slotProps.iconContainer,
|
|
256
|
+
ownerState: {},
|
|
257
|
+
className: classes.iconContainer
|
|
258
|
+
});
|
|
259
|
+
const Label = slots.label ?? TreeItemLabel;
|
|
260
|
+
const labelProps = useSlotProps({
|
|
261
|
+
elementType: Label,
|
|
262
|
+
getSlotProps: getLabelProps,
|
|
263
|
+
externalSlotProps: slotProps.label,
|
|
264
|
+
ownerState: {},
|
|
265
|
+
className: classes.label
|
|
266
|
+
});
|
|
267
|
+
const Checkbox = slots.checkbox ?? TreeItemCheckbox;
|
|
268
|
+
const checkboxProps = useSlotProps({
|
|
269
|
+
elementType: Checkbox,
|
|
270
|
+
getSlotProps: getCheckboxProps,
|
|
271
|
+
externalSlotProps: slotProps.checkbox,
|
|
272
|
+
ownerState: {},
|
|
273
|
+
className: classes.checkbox
|
|
274
|
+
});
|
|
264
275
|
const GroupTransition = slots.groupTransition ?? undefined;
|
|
265
276
|
const groupTransitionProps = useSlotProps({
|
|
266
277
|
elementType: GroupTransition,
|
|
278
|
+
getSlotProps: getGroupTransitionProps,
|
|
279
|
+
externalSlotProps: slotProps.groupTransition,
|
|
267
280
|
ownerState: {},
|
|
268
|
-
externalSlotProps: inSlotProps?.groupTransition,
|
|
269
|
-
additionalProps: _extends({
|
|
270
|
-
unmountOnExit: true,
|
|
271
|
-
in: expanded,
|
|
272
|
-
component: 'ul',
|
|
273
|
-
role: 'group'
|
|
274
|
-
}, indentationAtItemLevel ? {
|
|
275
|
-
indentationAtItemLevel: true
|
|
276
|
-
} : {}),
|
|
277
281
|
className: classes.groupTransition
|
|
278
282
|
});
|
|
279
|
-
const
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
elementType: ExpansionIcon,
|
|
287
|
-
ownerState: {},
|
|
288
|
-
externalSlotProps: tempOwnerState => {
|
|
289
|
-
if (expanded) {
|
|
290
|
-
return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps?.collapseIcon, tempOwnerState));
|
|
291
|
-
}
|
|
292
|
-
return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps?.expandIcon, tempOwnerState));
|
|
293
|
-
},
|
|
294
|
-
additionalProps: {
|
|
295
|
-
onClick: handleIconContainerClick
|
|
296
|
-
}
|
|
297
|
-
}),
|
|
298
|
-
expansionIconProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded2);
|
|
299
|
-
const expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/_jsx(ExpansionIcon, _extends({}, expansionIconProps)) : null;
|
|
300
|
-
const DisplayIcon = expandable ? undefined : slots.endIcon;
|
|
301
|
-
const _useSlotProps2 = useSlotProps({
|
|
302
|
-
elementType: DisplayIcon,
|
|
303
|
-
ownerState: {},
|
|
304
|
-
externalSlotProps: tempOwnerState => {
|
|
305
|
-
if (expandable) {
|
|
306
|
-
return {};
|
|
307
|
-
}
|
|
308
|
-
return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps?.endIcon, tempOwnerState));
|
|
309
|
-
}
|
|
310
|
-
}),
|
|
311
|
-
displayIconProps = _objectWithoutPropertiesLoose(_useSlotProps2, _excluded3);
|
|
312
|
-
const displayIcon = DisplayIcon ? /*#__PURE__*/_jsx(DisplayIcon, _extends({}, displayIconProps)) : null;
|
|
313
|
-
const Icon = slots.icon;
|
|
314
|
-
const _useSlotProps3 = useSlotProps({
|
|
315
|
-
elementType: Icon,
|
|
316
|
-
ownerState: {},
|
|
317
|
-
externalSlotProps: inSlotProps?.icon
|
|
318
|
-
}),
|
|
319
|
-
iconProps = _objectWithoutPropertiesLoose(_useSlotProps3, _excluded4);
|
|
320
|
-
const icon = Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, iconProps)) : null;
|
|
321
|
-
|
|
322
|
-
// https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
|
|
323
|
-
let ariaSelected;
|
|
324
|
-
if (selected) {
|
|
325
|
-
// - each selected node has aria-selected set to true.
|
|
326
|
-
ariaSelected = true;
|
|
327
|
-
} else if (disableSelection || disabled) {
|
|
328
|
-
// - if the tree contains nodes that are not selectable, aria-selected is not present on those nodes.
|
|
329
|
-
ariaSelected = undefined;
|
|
330
|
-
} else {
|
|
331
|
-
// - all nodes that are selectable but not selected have aria-selected set to false.
|
|
332
|
-
ariaSelected = false;
|
|
333
|
-
}
|
|
334
|
-
function handleFocus(event) {
|
|
335
|
-
const canBeFocused = !disabled || disabledItemsFocusable;
|
|
336
|
-
if (!focused && canBeFocused && event.currentTarget === event.target) {
|
|
337
|
-
instance.focusItem(event, itemId);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
function handleBlur(event) {
|
|
341
|
-
onBlur?.(event);
|
|
342
|
-
if (editing ||
|
|
343
|
-
// we can exit the editing state by clicking outside the input (within the Tree Item) or by pressing Enter or Escape -> we don't want to remove the focused item from the state in these cases
|
|
344
|
-
// we can also exit the editing state by clicking on the root itself -> want to remove the focused item from the state in this case
|
|
345
|
-
event.relatedTarget && isTargetInDescendants(event.relatedTarget, rootRefObject.current) && (event.target && event.target?.dataset?.element === 'labelInput' && isTargetInDescendants(event.target, rootRefObject.current) || event.relatedTarget?.dataset?.element === 'labelInput')) {
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
instance.removeFocusedItem();
|
|
349
|
-
}
|
|
350
|
-
const handleKeyDown = event => {
|
|
351
|
-
onKeyDown?.(event);
|
|
352
|
-
if (event.target?.dataset?.element === 'labelInput') {
|
|
353
|
-
return;
|
|
354
|
-
}
|
|
355
|
-
instance.handleItemKeyDown(event, itemId);
|
|
356
|
-
};
|
|
357
|
-
const idAttribute = generateTreeItemIdAttribute({
|
|
358
|
-
itemId,
|
|
359
|
-
treeId,
|
|
360
|
-
id
|
|
283
|
+
const LabelInput = slots.labelInput ?? TreeItemLabelInput;
|
|
284
|
+
const labelInputProps = useSlotProps({
|
|
285
|
+
elementType: LabelInput,
|
|
286
|
+
getSlotProps: getLabelInputProps,
|
|
287
|
+
externalSlotProps: slotProps.labelInput,
|
|
288
|
+
ownerState: {},
|
|
289
|
+
className: classes.labelInput
|
|
361
290
|
});
|
|
362
|
-
const
|
|
363
|
-
const
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const enhancedRootProps = propsEnhancers.root?.(_extends({}, sharedPropsEnhancerParams, {
|
|
372
|
-
externalEventHandlers: extractEventHandlers(other)
|
|
373
|
-
})) ?? {};
|
|
374
|
-
const enhancedContentProps = propsEnhancers.content?.(_extends({}, sharedPropsEnhancerParams, {
|
|
375
|
-
externalEventHandlers: extractEventHandlers(ContentProps)
|
|
376
|
-
})) ?? {};
|
|
377
|
-
const enhancedDragAndDropOverlayProps = propsEnhancers.dragAndDropOverlay?.(_extends({}, sharedPropsEnhancerParams, {
|
|
378
|
-
externalEventHandlers: {}
|
|
379
|
-
})) ?? {};
|
|
380
|
-
const enhancedLabelInputProps = propsEnhancers.labelInput?.(_extends({}, sharedPropsEnhancerParams, {
|
|
381
|
-
externalEventHandlers: {}
|
|
382
|
-
})) ?? {};
|
|
383
|
-
return /*#__PURE__*/_jsx(TreeItem2Provider, {
|
|
291
|
+
const DragAndDropOverlay = slots.dragAndDropOverlay ?? TreeItemDragAndDropOverlay;
|
|
292
|
+
const dragAndDropOverlayProps = useSlotProps({
|
|
293
|
+
elementType: DragAndDropOverlay,
|
|
294
|
+
getSlotProps: getDragAndDropOverlayProps,
|
|
295
|
+
externalSlotProps: slotProps.dragAndDropOverlay,
|
|
296
|
+
ownerState: {},
|
|
297
|
+
className: classes.dragAndDropOverlay
|
|
298
|
+
});
|
|
299
|
+
return /*#__PURE__*/_jsx(TreeItemProvider, {
|
|
384
300
|
itemId: itemId,
|
|
385
|
-
children: /*#__PURE__*/_jsxs(
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
onFocus: handleFocus,
|
|
396
|
-
onBlur: handleBlur,
|
|
397
|
-
onKeyDown: handleKeyDown,
|
|
398
|
-
ref: handleRootRef,
|
|
399
|
-
style: indentationAtItemLevel ? _extends({}, other.style, {
|
|
400
|
-
'--TreeView-itemDepth': typeof depthContext === 'function' ? depthContext(itemId) : depthContext
|
|
401
|
-
}) : other.style
|
|
402
|
-
}, enhancedRootProps, {
|
|
403
|
-
children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
|
|
404
|
-
as: ContentComponent,
|
|
405
|
-
classes: {
|
|
406
|
-
root: classes.content,
|
|
407
|
-
expanded: classes.expanded,
|
|
408
|
-
selected: classes.selected,
|
|
409
|
-
focused: classes.focused,
|
|
410
|
-
disabled: classes.disabled,
|
|
411
|
-
editable: classes.editable,
|
|
412
|
-
editing: classes.editing,
|
|
413
|
-
iconContainer: classes.iconContainer,
|
|
414
|
-
label: classes.label,
|
|
415
|
-
labelInput: classes.labelInput,
|
|
416
|
-
checkbox: classes.checkbox
|
|
417
|
-
},
|
|
418
|
-
label: label,
|
|
419
|
-
itemId: itemId,
|
|
420
|
-
onClick: onClick,
|
|
421
|
-
onMouseDown: onMouseDown,
|
|
422
|
-
icon: icon,
|
|
423
|
-
expansionIcon: expansionIcon,
|
|
424
|
-
displayIcon: displayIcon,
|
|
425
|
-
ownerState: ownerState
|
|
426
|
-
}, ContentProps, enhancedContentProps, enhancedDragAndDropOverlayProps.action == null ? {} : {
|
|
427
|
-
dragAndDropOverlayProps: enhancedDragAndDropOverlayProps
|
|
428
|
-
}, enhancedLabelInputProps.value == null ? {} : {
|
|
429
|
-
labelInputProps: enhancedLabelInputProps
|
|
430
|
-
}, {
|
|
431
|
-
ref: handleContentRef
|
|
432
|
-
})), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
|
|
301
|
+
children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
|
|
302
|
+
children: [/*#__PURE__*/_jsxs(Content, _extends({}, contentProps, {
|
|
303
|
+
children: [/*#__PURE__*/_jsx(IconContainer, _extends({}, iconContainerProps, {
|
|
304
|
+
children: /*#__PURE__*/_jsx(TreeItemIcon, {
|
|
305
|
+
status: status,
|
|
306
|
+
slots: slots,
|
|
307
|
+
slotProps: slotProps
|
|
308
|
+
})
|
|
309
|
+
})), /*#__PURE__*/_jsx(Checkbox, _extends({}, checkboxProps)), status.editing ? /*#__PURE__*/_jsx(LabelInput, _extends({}, labelInputProps)) : /*#__PURE__*/_jsx(Label, _extends({}, labelProps)), /*#__PURE__*/_jsx(DragAndDropOverlay, _extends({}, dragAndDropOverlayProps))]
|
|
310
|
+
})), children && /*#__PURE__*/_jsx(TreeItemGroupTransition, _extends({
|
|
433
311
|
as: GroupTransition
|
|
434
|
-
}, groupTransitionProps
|
|
435
|
-
children: children
|
|
436
|
-
}))]
|
|
312
|
+
}, groupTransitionProps))]
|
|
437
313
|
}))
|
|
438
314
|
});
|
|
439
315
|
});
|
|
@@ -451,37 +327,35 @@ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
|
|
|
451
327
|
*/
|
|
452
328
|
classes: PropTypes.object,
|
|
453
329
|
className: PropTypes.string,
|
|
454
|
-
/**
|
|
455
|
-
* The component used to render the content of the item.
|
|
456
|
-
* @deprecated Consider using the `<TreeItem2 />` component or the `useTreeItem2` hook instead. For more details, see https://mui.com/x/react-tree-view/tree-item-customization/.
|
|
457
|
-
* @default TreeItemContent
|
|
458
|
-
*/
|
|
459
|
-
ContentComponent: elementTypeAcceptingRef,
|
|
460
|
-
/**
|
|
461
|
-
* Props applied to ContentComponent.
|
|
462
|
-
* @deprecated Consider using the `<TreeItem2 />` component or the `useTreeItem2` hook instead. For more details, see https://mui.com/x/react-tree-view/tree-item-customization/.
|
|
463
|
-
*/
|
|
464
|
-
ContentProps: PropTypes.object,
|
|
465
330
|
/**
|
|
466
331
|
* If `true`, the item is disabled.
|
|
467
332
|
* @default false
|
|
468
333
|
*/
|
|
469
334
|
disabled: PropTypes.bool,
|
|
335
|
+
/**
|
|
336
|
+
* The id attribute of the item. If not provided, it will be generated.
|
|
337
|
+
*/
|
|
338
|
+
id: PropTypes.string,
|
|
470
339
|
/**
|
|
471
340
|
* The id of the item.
|
|
341
|
+
* Must be unique.
|
|
472
342
|
*/
|
|
473
343
|
itemId: PropTypes.string.isRequired,
|
|
474
344
|
/**
|
|
475
|
-
* The
|
|
345
|
+
* The label of the item.
|
|
476
346
|
*/
|
|
477
347
|
label: PropTypes.node,
|
|
348
|
+
/**
|
|
349
|
+
* Callback fired when the item root is blurred.
|
|
350
|
+
*/
|
|
351
|
+
onBlur: PropTypes.func,
|
|
478
352
|
/**
|
|
479
353
|
* This prop isn't supported.
|
|
480
|
-
* Use the `onItemFocus` callback on the tree if you need to monitor
|
|
354
|
+
* Use the `onItemFocus` callback on the tree if you need to monitor an item's focus.
|
|
481
355
|
*/
|
|
482
356
|
onFocus: unsupportedProp,
|
|
483
357
|
/**
|
|
484
|
-
* Callback fired when a key
|
|
358
|
+
* Callback fired when a key is pressed on the keyboard and the tree is in focus.
|
|
485
359
|
*/
|
|
486
360
|
onKeyDown: PropTypes.func,
|
|
487
361
|
/**
|
|
@@ -493,9 +367,5 @@ process.env.NODE_ENV !== "production" ? TreeItem.propTypes = {
|
|
|
493
367
|
* Overridable component slots.
|
|
494
368
|
* @default {}
|
|
495
369
|
*/
|
|
496
|
-
slots: PropTypes.object
|
|
497
|
-
/**
|
|
498
|
-
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
499
|
-
*/
|
|
500
|
-
sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
|
|
370
|
+
slots: PropTypes.object
|
|
501
371
|
} : void 0;
|