@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +3682 -0
  2. package/LICENSE +21 -0
  3. package/README.md +34 -0
  4. package/TreeItem/TreeItem.d.ts +13 -0
  5. package/TreeItem/TreeItem.js +392 -0
  6. package/TreeItem/TreeItem.types.d.ts +84 -0
  7. package/TreeItem/TreeItem.types.js +1 -0
  8. package/TreeItem/TreeItemContent.d.ts +52 -0
  9. package/TreeItem/TreeItemContent.js +101 -0
  10. package/TreeItem/index.d.ts +5 -0
  11. package/TreeItem/index.js +4 -0
  12. package/TreeItem/package.json +6 -0
  13. package/TreeItem/treeItemClasses.d.ts +23 -0
  14. package/TreeItem/treeItemClasses.js +6 -0
  15. package/TreeItem/useTreeItem.d.ts +10 -0
  16. package/TreeItem/useTreeItem.js +68 -0
  17. package/TreeView/TreeView.d.ts +14 -0
  18. package/TreeView/TreeView.js +854 -0
  19. package/TreeView/TreeView.types.d.ts +170 -0
  20. package/TreeView/TreeView.types.js +1 -0
  21. package/TreeView/TreeViewContext.d.ts +6 -0
  22. package/TreeView/TreeViewContext.js +31 -0
  23. package/TreeView/descendants.d.ts +42 -0
  24. package/TreeView/descendants.js +186 -0
  25. package/TreeView/index.d.ts +3 -0
  26. package/TreeView/index.js +3 -0
  27. package/TreeView/package.json +6 -0
  28. package/TreeView/treeViewClasses.d.ts +7 -0
  29. package/TreeView/treeViewClasses.js +6 -0
  30. package/index.d.ts +2 -0
  31. package/index.js +9 -0
  32. package/internals/models.d.ts +1 -0
  33. package/internals/models.js +1 -0
  34. package/legacy/TreeItem/TreeItem.js +391 -0
  35. package/legacy/TreeItem/TreeItem.types.js +1 -0
  36. package/legacy/TreeItem/TreeItemContent.js +98 -0
  37. package/legacy/TreeItem/index.js +4 -0
  38. package/legacy/TreeItem/treeItemClasses.js +6 -0
  39. package/legacy/TreeItem/useTreeItem.js +67 -0
  40. package/legacy/TreeView/TreeView.js +907 -0
  41. package/legacy/TreeView/TreeView.types.js +1 -0
  42. package/legacy/TreeView/TreeViewContext.js +41 -0
  43. package/legacy/TreeView/descendants.js +199 -0
  44. package/legacy/TreeView/index.js +3 -0
  45. package/legacy/TreeView/treeViewClasses.js +6 -0
  46. package/legacy/index.js +9 -0
  47. package/legacy/internals/models.js +1 -0
  48. package/modern/TreeItem/TreeItem.js +391 -0
  49. package/modern/TreeItem/TreeItem.types.js +1 -0
  50. package/modern/TreeItem/TreeItemContent.js +101 -0
  51. package/modern/TreeItem/index.js +4 -0
  52. package/modern/TreeItem/treeItemClasses.js +6 -0
  53. package/modern/TreeItem/useTreeItem.js +68 -0
  54. package/modern/TreeView/TreeView.js +853 -0
  55. package/modern/TreeView/TreeView.types.js +1 -0
  56. package/modern/TreeView/TreeViewContext.js +31 -0
  57. package/modern/TreeView/descendants.js +186 -0
  58. package/modern/TreeView/index.js +3 -0
  59. package/modern/TreeView/treeViewClasses.js +6 -0
  60. package/modern/index.js +9 -0
  61. package/modern/internals/models.js +1 -0
  62. package/node/TreeItem/TreeItem.js +400 -0
  63. package/node/TreeItem/TreeItem.types.js +5 -0
  64. package/node/TreeItem/TreeItemContent.js +109 -0
  65. package/node/TreeItem/index.js +38 -0
  66. package/node/TreeItem/treeItemClasses.js +15 -0
  67. package/node/TreeItem/useTreeItem.js +76 -0
  68. package/node/TreeView/TreeView.js +862 -0
  69. package/node/TreeView/TreeView.types.js +5 -0
  70. package/node/TreeView/TreeViewContext.js +40 -0
  71. package/node/TreeView/descendants.js +194 -0
  72. package/node/TreeView/index.js +27 -0
  73. package/node/TreeView/treeViewClasses.js +15 -0
  74. package/node/index.js +34 -0
  75. package/node/internals/models.js +5 -0
  76. 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,4 @@
1
+ export * from './TreeItem';
2
+ export * from './useTreeItem';
3
+ export * from './treeItemClasses';
4
+ export {};
@@ -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
+ }