@mui/x-tree-view 6.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 +3682 -0
- package/LICENSE +21 -0
- package/README.md +34 -0
- package/TreeItem/TreeItem.d.ts +13 -0
- package/TreeItem/TreeItem.js +392 -0
- package/TreeItem/TreeItem.types.d.ts +84 -0
- package/TreeItem/TreeItem.types.js +1 -0
- package/TreeItem/TreeItemContent.d.ts +52 -0
- package/TreeItem/TreeItemContent.js +101 -0
- package/TreeItem/index.d.ts +5 -0
- package/TreeItem/index.js +4 -0
- package/TreeItem/package.json +6 -0
- package/TreeItem/treeItemClasses.d.ts +23 -0
- package/TreeItem/treeItemClasses.js +6 -0
- package/TreeItem/useTreeItem.d.ts +10 -0
- package/TreeItem/useTreeItem.js +68 -0
- package/TreeView/TreeView.d.ts +14 -0
- package/TreeView/TreeView.js +854 -0
- package/TreeView/TreeView.types.d.ts +170 -0
- package/TreeView/TreeView.types.js +1 -0
- package/TreeView/TreeViewContext.d.ts +6 -0
- package/TreeView/TreeViewContext.js +31 -0
- package/TreeView/descendants.d.ts +42 -0
- package/TreeView/descendants.js +186 -0
- package/TreeView/index.d.ts +3 -0
- package/TreeView/index.js +3 -0
- package/TreeView/package.json +6 -0
- package/TreeView/treeViewClasses.d.ts +7 -0
- package/TreeView/treeViewClasses.js +6 -0
- package/index.d.ts +2 -0
- package/index.js +9 -0
- package/internals/models.d.ts +1 -0
- package/internals/models.js +1 -0
- package/legacy/TreeItem/TreeItem.js +391 -0
- package/legacy/TreeItem/TreeItem.types.js +1 -0
- package/legacy/TreeItem/TreeItemContent.js +98 -0
- package/legacy/TreeItem/index.js +4 -0
- package/legacy/TreeItem/treeItemClasses.js +6 -0
- package/legacy/TreeItem/useTreeItem.js +67 -0
- package/legacy/TreeView/TreeView.js +907 -0
- package/legacy/TreeView/TreeView.types.js +1 -0
- package/legacy/TreeView/TreeViewContext.js +41 -0
- package/legacy/TreeView/descendants.js +199 -0
- package/legacy/TreeView/index.js +3 -0
- package/legacy/TreeView/treeViewClasses.js +6 -0
- package/legacy/index.js +9 -0
- package/legacy/internals/models.js +1 -0
- package/modern/TreeItem/TreeItem.js +391 -0
- package/modern/TreeItem/TreeItem.types.js +1 -0
- package/modern/TreeItem/TreeItemContent.js +101 -0
- package/modern/TreeItem/index.js +4 -0
- package/modern/TreeItem/treeItemClasses.js +6 -0
- package/modern/TreeItem/useTreeItem.js +68 -0
- package/modern/TreeView/TreeView.js +853 -0
- package/modern/TreeView/TreeView.types.js +1 -0
- package/modern/TreeView/TreeViewContext.js +31 -0
- package/modern/TreeView/descendants.js +186 -0
- package/modern/TreeView/index.js +3 -0
- package/modern/TreeView/treeViewClasses.js +6 -0
- package/modern/index.js +9 -0
- package/modern/internals/models.js +1 -0
- package/node/TreeItem/TreeItem.js +400 -0
- package/node/TreeItem/TreeItem.types.js +5 -0
- package/node/TreeItem/TreeItemContent.js +109 -0
- package/node/TreeItem/index.js +38 -0
- package/node/TreeItem/treeItemClasses.js +15 -0
- package/node/TreeItem/useTreeItem.js +76 -0
- package/node/TreeView/TreeView.js +862 -0
- package/node/TreeView/TreeView.types.js +5 -0
- package/node/TreeView/TreeViewContext.js +40 -0
- package/node/TreeView/descendants.js +194 -0
- package/node/TreeView/index.js +27 -0
- package/node/TreeView/treeViewClasses.js +15 -0
- package/node/index.js +34 -0
- package/node/internals/models.js +5 -0
- package/package.json +59 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
+
const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "nodeId", "onClick", "onMouseDown"];
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import clsx from 'clsx';
|
|
7
|
+
import { useTreeItem } from './useTreeItem';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
/**
|
|
11
|
+
* @ignore - internal component.
|
|
12
|
+
*/
|
|
13
|
+
const TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(props, ref) {
|
|
14
|
+
const {
|
|
15
|
+
classes,
|
|
16
|
+
className,
|
|
17
|
+
displayIcon,
|
|
18
|
+
expansionIcon,
|
|
19
|
+
icon: iconProp,
|
|
20
|
+
label,
|
|
21
|
+
nodeId,
|
|
22
|
+
onClick,
|
|
23
|
+
onMouseDown
|
|
24
|
+
} = props,
|
|
25
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
26
|
+
const {
|
|
27
|
+
disabled,
|
|
28
|
+
expanded,
|
|
29
|
+
selected,
|
|
30
|
+
focused,
|
|
31
|
+
handleExpansion,
|
|
32
|
+
handleSelection,
|
|
33
|
+
preventSelection
|
|
34
|
+
} = useTreeItem(nodeId);
|
|
35
|
+
const icon = iconProp || expansionIcon || displayIcon;
|
|
36
|
+
const handleMouseDown = event => {
|
|
37
|
+
preventSelection(event);
|
|
38
|
+
if (onMouseDown) {
|
|
39
|
+
onMouseDown(event);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
const handleClick = event => {
|
|
43
|
+
handleExpansion(event);
|
|
44
|
+
handleSelection(event);
|
|
45
|
+
if (onClick) {
|
|
46
|
+
onClick(event);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
return (
|
|
50
|
+
/*#__PURE__*/
|
|
51
|
+
/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */
|
|
52
|
+
_jsxs("div", _extends({}, other, {
|
|
53
|
+
className: clsx(className, classes.root, expanded && classes.expanded, selected && classes.selected, focused && classes.focused, disabled && classes.disabled),
|
|
54
|
+
onClick: handleClick,
|
|
55
|
+
onMouseDown: handleMouseDown,
|
|
56
|
+
ref: ref,
|
|
57
|
+
children: [/*#__PURE__*/_jsx("div", {
|
|
58
|
+
className: classes.iconContainer,
|
|
59
|
+
children: icon
|
|
60
|
+
}), /*#__PURE__*/_jsx("div", {
|
|
61
|
+
className: classes.label,
|
|
62
|
+
children: label
|
|
63
|
+
})]
|
|
64
|
+
}))
|
|
65
|
+
);
|
|
66
|
+
});
|
|
67
|
+
process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
|
|
68
|
+
// ----------------------------- Warning --------------------------------
|
|
69
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
70
|
+
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
71
|
+
// ----------------------------------------------------------------------
|
|
72
|
+
/**
|
|
73
|
+
* Override or extend the styles applied to the component.
|
|
74
|
+
*/
|
|
75
|
+
classes: PropTypes.object.isRequired,
|
|
76
|
+
/**
|
|
77
|
+
* className applied to the root element.
|
|
78
|
+
*/
|
|
79
|
+
className: PropTypes.string,
|
|
80
|
+
/**
|
|
81
|
+
* The icon to display next to the tree node's label. Either a parent or end icon.
|
|
82
|
+
*/
|
|
83
|
+
displayIcon: PropTypes.node,
|
|
84
|
+
/**
|
|
85
|
+
* The icon to display next to the tree node's label. Either an expansion or collapse icon.
|
|
86
|
+
*/
|
|
87
|
+
expansionIcon: PropTypes.node,
|
|
88
|
+
/**
|
|
89
|
+
* The icon to display next to the tree node's label.
|
|
90
|
+
*/
|
|
91
|
+
icon: PropTypes.node,
|
|
92
|
+
/**
|
|
93
|
+
* The tree node label.
|
|
94
|
+
*/
|
|
95
|
+
label: PropTypes.node,
|
|
96
|
+
/**
|
|
97
|
+
* The id of the node.
|
|
98
|
+
*/
|
|
99
|
+
nodeId: PropTypes.string.isRequired
|
|
100
|
+
} : void 0;
|
|
101
|
+
export { TreeItemContent };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
2
|
+
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
3
|
+
export function getTreeItemUtilityClass(slot) {
|
|
4
|
+
return generateUtilityClass('MuiTreeItem', slot);
|
|
5
|
+
}
|
|
6
|
+
export const treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'group', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label']);
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TreeViewContext } from '../TreeView/TreeViewContext';
|
|
3
|
+
export function useTreeItem(nodeId) {
|
|
4
|
+
const {
|
|
5
|
+
focus,
|
|
6
|
+
isExpanded,
|
|
7
|
+
isExpandable,
|
|
8
|
+
isFocused,
|
|
9
|
+
isDisabled,
|
|
10
|
+
isSelected,
|
|
11
|
+
multiSelect,
|
|
12
|
+
selectNode,
|
|
13
|
+
selectRange,
|
|
14
|
+
toggleExpansion
|
|
15
|
+
} = React.useContext(TreeViewContext);
|
|
16
|
+
const expandable = isExpandable ? isExpandable(nodeId) : false;
|
|
17
|
+
const expanded = isExpanded ? isExpanded(nodeId) : false;
|
|
18
|
+
const focused = isFocused ? isFocused(nodeId) : false;
|
|
19
|
+
const disabled = isDisabled ? isDisabled(nodeId) : false;
|
|
20
|
+
const selected = isSelected ? isSelected(nodeId) : false;
|
|
21
|
+
const handleExpansion = event => {
|
|
22
|
+
if (!disabled) {
|
|
23
|
+
if (!focused) {
|
|
24
|
+
focus(event, nodeId);
|
|
25
|
+
}
|
|
26
|
+
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
27
|
+
|
|
28
|
+
// If already expanded and trying to toggle selection don't close
|
|
29
|
+
if (expandable && !(multiple && isExpanded(nodeId))) {
|
|
30
|
+
toggleExpansion(event, nodeId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const handleSelection = event => {
|
|
35
|
+
if (!disabled) {
|
|
36
|
+
if (!focused) {
|
|
37
|
+
focus(event, nodeId);
|
|
38
|
+
}
|
|
39
|
+
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
40
|
+
if (multiple) {
|
|
41
|
+
if (event.shiftKey) {
|
|
42
|
+
selectRange(event, {
|
|
43
|
+
end: nodeId
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
selectNode(event, nodeId, true);
|
|
47
|
+
}
|
|
48
|
+
} else {
|
|
49
|
+
selectNode(event, nodeId);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const preventSelection = event => {
|
|
54
|
+
if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {
|
|
55
|
+
// Prevent text selection
|
|
56
|
+
event.preventDefault();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
disabled,
|
|
61
|
+
expanded,
|
|
62
|
+
selected,
|
|
63
|
+
focused,
|
|
64
|
+
handleExpansion,
|
|
65
|
+
handleSelection,
|
|
66
|
+
preventSelection
|
|
67
|
+
};
|
|
68
|
+
}
|