@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.
Files changed (196) hide show
  1. package/CHANGELOG.md +143 -92
  2. package/README.md +2 -2
  3. package/RichTreeView/RichTreeView.js +20 -1
  4. package/RichTreeView/RichTreeView.types.d.ts +4 -4
  5. package/SimpleTreeView/SimpleTreeView.js +21 -3
  6. package/TreeItem/TreeItem.d.ts +20 -2
  7. package/TreeItem/TreeItem.js +238 -368
  8. package/TreeItem/TreeItem.types.d.ts +51 -86
  9. package/TreeItem/index.d.ts +1 -4
  10. package/TreeItem/index.js +2 -4
  11. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +7 -0
  12. package/{modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
  13. package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts} +1 -1
  14. package/TreeItemDragAndDropOverlay/index.d.ts +2 -0
  15. package/TreeItemDragAndDropOverlay/index.js +1 -0
  16. package/{TreeItem2LabelInput → TreeItemDragAndDropOverlay}/package.json +1 -1
  17. package/TreeItemIcon/TreeItemIcon.d.ts +7 -0
  18. package/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
  19. package/{TreeItem2Icon/TreeItem2Icon.types.d.ts → TreeItemIcon/TreeItemIcon.types.d.ts} +7 -7
  20. package/TreeItemIcon/index.d.ts +2 -0
  21. package/TreeItemIcon/index.js +1 -0
  22. package/{useTreeItem2 → TreeItemIcon}/package.json +1 -1
  23. package/TreeItemLabelInput/TreeItemLabelInput.d.ts +5 -0
  24. package/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  25. package/{TreeItem2LabelInput/TreeItem2LabelInput.types.d.ts → TreeItemLabelInput/TreeItemLabelInput.types.d.ts} +1 -1
  26. package/TreeItemLabelInput/index.d.ts +2 -0
  27. package/TreeItemLabelInput/index.js +1 -0
  28. package/{TreeItem2Provider → TreeItemLabelInput}/package.json +1 -1
  29. package/TreeItemProvider/TreeItemProvider.d.ts +9 -0
  30. package/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
  31. package/{TreeItem2Provider/TreeItem2Provider.types.d.ts → TreeItemProvider/TreeItemProvider.types.d.ts} +1 -1
  32. package/TreeItemProvider/index.d.ts +2 -0
  33. package/TreeItemProvider/index.js +1 -0
  34. package/{TreeItem2Icon → TreeItemProvider}/package.json +1 -1
  35. package/hooks/index.d.ts +1 -1
  36. package/hooks/index.js +1 -1
  37. package/hooks/useTreeItemUtils/index.d.ts +1 -0
  38. package/hooks/useTreeItemUtils/index.js +1 -0
  39. package/hooks/{useTreeItem2Utils/useTreeItem2Utils.d.ts → useTreeItemUtils/useTreeItemUtils.d.ts} +11 -11
  40. package/{modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js → hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
  41. package/index.d.ts +5 -7
  42. package/index.js +6 -8
  43. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +2 -1
  44. package/internals/components/RichTreeViewItems.d.ts +1 -2
  45. package/internals/index.d.ts +1 -1
  46. package/internals/models/helpers.d.ts +0 -2
  47. package/internals/models/itemPlugin.d.ts +11 -8
  48. package/internals/models/plugin.d.ts +1 -1
  49. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +2 -1
  50. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
  51. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +3 -5
  52. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +1 -1
  53. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +6 -5
  54. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +2 -0
  55. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
  56. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
  57. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +33 -3
  58. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +20 -1
  59. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
  60. package/models/items.d.ts +4 -0
  61. package/modern/RichTreeView/RichTreeView.js +20 -1
  62. package/modern/SimpleTreeView/SimpleTreeView.js +21 -3
  63. package/modern/TreeItem/TreeItem.js +238 -368
  64. package/modern/TreeItem/index.js +2 -4
  65. package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
  66. package/modern/TreeItemDragAndDropOverlay/index.js +1 -0
  67. package/modern/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
  68. package/modern/TreeItemIcon/index.js +1 -0
  69. package/modern/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  70. package/modern/TreeItemLabelInput/index.js +1 -0
  71. package/modern/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +7 -3
  72. package/modern/TreeItemProvider/index.js +1 -0
  73. package/modern/hooks/index.js +1 -1
  74. package/modern/hooks/useTreeItemUtils/index.js +1 -0
  75. package/{hooks/useTreeItem2Utils/useTreeItem2Utils.js → modern/hooks/useTreeItemUtils/useTreeItemUtils.js} +5 -3
  76. package/modern/index.js +6 -8
  77. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
  78. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +86 -0
  79. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -18
  80. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +95 -0
  81. package/modern/useTreeItem/index.js +1 -0
  82. package/modern/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
  83. package/node/RichTreeView/RichTreeView.js +20 -1
  84. package/node/SimpleTreeView/SimpleTreeView.js +21 -3
  85. package/node/TreeItem/TreeItem.js +239 -369
  86. package/node/TreeItem/index.js +38 -16
  87. package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +7 -6
  88. package/node/TreeItemDragAndDropOverlay/index.js +12 -0
  89. package/node/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +4 -3
  90. package/node/TreeItemIcon/index.js +12 -0
  91. package/node/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  92. package/node/TreeItemLabelInput/index.js +12 -0
  93. package/node/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +6 -3
  94. package/node/TreeItemProvider/index.js +12 -0
  95. package/node/hooks/index.js +3 -3
  96. package/node/hooks/useTreeItemUtils/index.js +12 -0
  97. package/node/hooks/{useTreeItem2Utils/useTreeItem2Utils.js → useTreeItemUtils/useTreeItemUtils.js} +6 -5
  98. package/node/index.js +18 -42
  99. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +2 -4
  100. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +94 -0
  101. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -17
  102. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +99 -2
  103. package/node/useTreeItem/index.js +12 -0
  104. package/node/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +22 -44
  105. package/package.json +3 -3
  106. package/themeAugmentation/components.d.ts +0 -10
  107. package/themeAugmentation/overrides.d.ts +0 -3
  108. package/themeAugmentation/props.d.ts +1 -5
  109. package/useTreeItem/index.d.ts +2 -0
  110. package/useTreeItem/index.js +1 -0
  111. package/{TreeItem2 → useTreeItem}/package.json +1 -1
  112. package/useTreeItem/useTreeItem.d.ts +2 -0
  113. package/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +21 -42
  114. package/{useTreeItem2/useTreeItem2.types.d.ts → useTreeItem/useTreeItem.types.d.ts} +42 -58
  115. package/TreeItem/TreeItemContent.d.ts +0 -61
  116. package/TreeItem/TreeItemContent.js +0 -146
  117. package/TreeItem/useTreeItemState.d.ts +0 -21
  118. package/TreeItem/useTreeItemState.js +0 -143
  119. package/TreeItem2/TreeItem2.d.ts +0 -34
  120. package/TreeItem2/TreeItem2.js +0 -387
  121. package/TreeItem2/TreeItem2.types.d.ts +0 -92
  122. package/TreeItem2/index.d.ts +0 -2
  123. package/TreeItem2/index.js +0 -1
  124. package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +0 -7
  125. package/TreeItem2DragAndDropOverlay/index.d.ts +0 -2
  126. package/TreeItem2DragAndDropOverlay/index.js +0 -1
  127. package/TreeItem2DragAndDropOverlay/package.json +0 -6
  128. package/TreeItem2Icon/TreeItem2Icon.d.ts +0 -7
  129. package/TreeItem2Icon/index.d.ts +0 -2
  130. package/TreeItem2Icon/index.js +0 -1
  131. package/TreeItem2LabelInput/TreeItem2LabelInput.d.ts +0 -5
  132. package/TreeItem2LabelInput/index.d.ts +0 -2
  133. package/TreeItem2LabelInput/index.js +0 -1
  134. package/TreeItem2Provider/TreeItem2Provider.d.ts +0 -6
  135. package/TreeItem2Provider/index.d.ts +0 -2
  136. package/TreeItem2Provider/index.js +0 -1
  137. package/TreeView/TreeView.d.ts +0 -21
  138. package/TreeView/TreeView.js +0 -211
  139. package/TreeView/TreeView.types.d.ts +0 -9
  140. package/TreeView/index.d.ts +0 -3
  141. package/TreeView/index.js +0 -3
  142. package/TreeView/package.json +0 -6
  143. package/TreeView/treeViewClasses.d.ts +0 -7
  144. package/TreeView/treeViewClasses.js +0 -6
  145. package/hooks/useTreeItem2Utils/index.d.ts +0 -1
  146. package/hooks/useTreeItem2Utils/index.js +0 -1
  147. package/modern/TreeItem/TreeItemContent.js +0 -146
  148. package/modern/TreeItem/useTreeItemState.js +0 -143
  149. package/modern/TreeItem2/TreeItem2.js +0 -387
  150. package/modern/TreeItem2/index.js +0 -1
  151. package/modern/TreeItem2DragAndDropOverlay/index.js +0 -1
  152. package/modern/TreeItem2Icon/index.js +0 -1
  153. package/modern/TreeItem2LabelInput/index.js +0 -1
  154. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +0 -1
  155. package/modern/TreeItem2Provider/index.js +0 -1
  156. package/modern/TreeView/TreeView.js +0 -211
  157. package/modern/TreeView/TreeView.types.js +0 -1
  158. package/modern/TreeView/index.js +0 -3
  159. package/modern/TreeView/treeViewClasses.js +0 -6
  160. package/modern/hooks/useTreeItem2Utils/index.js +0 -1
  161. package/modern/useTreeItem2/index.js +0 -4
  162. package/modern/useTreeItem2/useTreeItem2.types.js +0 -1
  163. package/node/TreeItem/TreeItemContent.js +0 -153
  164. package/node/TreeItem/useTreeItemState.js +0 -148
  165. package/node/TreeItem2/TreeItem2.js +0 -394
  166. package/node/TreeItem2/index.js +0 -48
  167. package/node/TreeItem2DragAndDropOverlay/index.js +0 -12
  168. package/node/TreeItem2Icon/index.js +0 -12
  169. package/node/TreeItem2LabelInput/index.js +0 -12
  170. package/node/TreeItem2Provider/index.js +0 -12
  171. package/node/TreeView/TreeView.js +0 -217
  172. package/node/TreeView/TreeView.types.js +0 -5
  173. package/node/TreeView/index.js +0 -27
  174. package/node/TreeView/treeViewClasses.js +0 -14
  175. package/node/hooks/useTreeItem2Utils/index.js +0 -12
  176. package/node/useTreeItem2/index.js +0 -10
  177. package/node/useTreeItem2/useTreeItem2.types.js +0 -5
  178. package/useTreeItem2/index.d.ts +0 -3
  179. package/useTreeItem2/index.js +0 -4
  180. package/useTreeItem2/useTreeItem2.d.ts +0 -2
  181. package/useTreeItem2/useTreeItem2.types.js +0 -1
  182. /package/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  183. /package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
  184. /package/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  185. /package/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  186. /package/{TreeItem2Provider/TreeItem2Provider.types.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  187. /package/{TreeView/TreeView.types.js → modern/TreeItemIcon/TreeItemIcon.types.js} +0 -0
  188. /package/modern/{TreeItem2/TreeItem2.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  189. /package/modern/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  190. /package/modern/{TreeItem2Icon/TreeItem2Icon.types.js → useTreeItem/useTreeItem.types.js} +0 -0
  191. /package/node/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  192. /package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
  193. /package/node/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  194. /package/node/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  195. /package/node/{TreeItem2Provider/TreeItem2Provider.types.js → useTreeItem/useTreeItem.types.js} +0 -0
  196. /package/{modern/TreeItem2LabelInput/TreeItem2LabelInput.types.js → useTreeItem/useTreeItem.types.js} +0 -0
@@ -1,153 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.TreeItemContent = void 0;
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
- var React = _interopRequireWildcard(require("react"));
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
13
- var _clsx = _interopRequireDefault(require("clsx"));
14
- var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
15
- var _useTreeItemState = require("./useTreeItemState");
16
- var _TreeItem2DragAndDropOverlay = require("../TreeItem2DragAndDropOverlay");
17
- var _TreeItem2LabelInput = require("../TreeItem2LabelInput");
18
- var _jsxRuntime = require("react/jsx-runtime");
19
- const _excluded = ["classes", "className", "displayIcon", "expansionIcon", "icon", "label", "itemId", "onClick", "onMouseDown", "dragAndDropOverlayProps", "labelInputProps"];
20
- /**
21
- * @ignore - internal component.
22
- */
23
- const TreeItemContent = exports.TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(props, ref) {
24
- const {
25
- classes,
26
- className,
27
- displayIcon,
28
- expansionIcon,
29
- icon: iconProp,
30
- label,
31
- itemId,
32
- onClick,
33
- onMouseDown,
34
- dragAndDropOverlayProps,
35
- labelInputProps
36
- } = props,
37
- other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
38
- const {
39
- disabled,
40
- expanded,
41
- selected,
42
- focused,
43
- editing,
44
- editable,
45
- disableSelection,
46
- checkboxSelection,
47
- handleExpansion,
48
- handleSelection,
49
- handleCheckboxSelection,
50
- handleContentClick,
51
- preventSelection,
52
- expansionTrigger,
53
- toggleItemEditing
54
- } = (0, _useTreeItemState.useTreeItemState)(itemId);
55
- const icon = iconProp || expansionIcon || displayIcon;
56
- const checkboxRef = React.useRef(null);
57
- const handleMouseDown = event => {
58
- preventSelection(event);
59
- if (onMouseDown) {
60
- onMouseDown(event);
61
- }
62
- };
63
- const handleClick = event => {
64
- handleContentClick?.(event, itemId);
65
- if (checkboxRef.current?.contains(event.target)) {
66
- return;
67
- }
68
- if (expansionTrigger === 'content') {
69
- handleExpansion(event);
70
- }
71
- if (!checkboxSelection) {
72
- handleSelection(event);
73
- }
74
- if (onClick) {
75
- onClick(event);
76
- }
77
- };
78
- const handleLabelDoubleClick = event => {
79
- if (event.defaultMuiPrevented) {
80
- return;
81
- }
82
- toggleItemEditing();
83
- };
84
- return /*#__PURE__*/ /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */(0, _jsxRuntime.jsxs)("div", (0, _extends2.default)({}, other, {
85
- className: (0, _clsx.default)(classes.root, className, expanded && classes.expanded, selected && classes.selected, focused && classes.focused, disabled && classes.disabled, editing && classes.editing, editable && classes.editable),
86
- onClick: handleClick,
87
- onMouseDown: handleMouseDown,
88
- ref: ref,
89
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
90
- className: classes.iconContainer,
91
- children: icon
92
- }), checkboxSelection && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.default, {
93
- className: classes.checkbox,
94
- checked: selected,
95
- onChange: handleCheckboxSelection,
96
- disabled: disabled || disableSelection,
97
- ref: checkboxRef,
98
- tabIndex: -1
99
- }), editing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2LabelInput.TreeItem2LabelInput, (0, _extends2.default)({}, labelInputProps, {
100
- className: classes.labelInput
101
- })) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _extends2.default)({
102
- className: classes.label
103
- }, editable && {
104
- onDoubleClick: handleLabelDoubleClick
105
- }, {
106
- children: label
107
- })), dragAndDropOverlayProps && /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2DragAndDropOverlay.TreeItem2DragAndDropOverlay, (0, _extends2.default)({}, dragAndDropOverlayProps))]
108
- }));
109
- });
110
- process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
111
- // ----------------------------- Warning --------------------------------
112
- // | These PropTypes are generated from the TypeScript type definitions |
113
- // | To update them edit the TypeScript types and run "pnpm proptypes" |
114
- // ----------------------------------------------------------------------
115
- /**
116
- * Override or extend the styles applied to the component.
117
- */
118
- classes: _propTypes.default.object.isRequired,
119
- className: _propTypes.default.string,
120
- /**
121
- * The icon to display next to the Tree Item's label. Either a parent or end icon.
122
- */
123
- displayIcon: _propTypes.default.node,
124
- dragAndDropOverlayProps: _propTypes.default.shape({
125
- action: _propTypes.default.oneOf(['make-child', 'move-to-parent', 'reorder-above', 'reorder-below']),
126
- style: _propTypes.default.object
127
- }),
128
- /**
129
- * The icon to display next to the Tree Item's label. Either an expansion or collapse icon.
130
- */
131
- expansionIcon: _propTypes.default.node,
132
- /**
133
- * The icon to display next to the Tree Item's label.
134
- */
135
- icon: _propTypes.default.node,
136
- /**
137
- * The id of the item.
138
- */
139
- itemId: _propTypes.default.string.isRequired,
140
- /**
141
- * The Tree Item label.
142
- */
143
- label: _propTypes.default.node,
144
- labelInputProps: _propTypes.default.shape({
145
- autoFocus: _propTypes.default.oneOf([true]),
146
- 'data-element': _propTypes.default.oneOf(['labelInput']),
147
- onBlur: _propTypes.default.func,
148
- onChange: _propTypes.default.func,
149
- onKeyDown: _propTypes.default.func,
150
- type: _propTypes.default.oneOf(['text']),
151
- value: _propTypes.default.string
152
- })
153
- } : void 0;
@@ -1,148 +0,0 @@
1
- "use strict";
2
- 'use client';
3
-
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useTreeItemState = useTreeItemState;
8
- var _TreeViewProvider = require("../internals/TreeViewProvider");
9
- var _useTreeViewLabel = require("../internals/plugins/useTreeViewLabel");
10
- var _plugins = require("../internals/utils/plugins");
11
- function useTreeItemState(itemId) {
12
- const {
13
- instance,
14
- items: {
15
- onItemClick
16
- },
17
- selection: {
18
- multiSelect,
19
- checkboxSelection,
20
- disableSelection
21
- },
22
- expansion: {
23
- expansionTrigger
24
- }
25
- } = (0, _TreeViewProvider.useTreeViewContext)();
26
- const expandable = instance.isItemExpandable(itemId);
27
- const expanded = instance.isItemExpanded(itemId);
28
- const focused = instance.isItemFocused(itemId);
29
- const selected = instance.isItemSelected(itemId);
30
- const disabled = instance.isItemDisabled(itemId);
31
- const editing = instance?.isItemBeingEdited ? instance?.isItemBeingEdited(itemId) : false;
32
- const editable = instance.isItemEditable ? instance.isItemEditable(itemId) : false;
33
- const handleExpansion = event => {
34
- if (!disabled) {
35
- if (!focused) {
36
- instance.focusItem(event, itemId);
37
- }
38
- const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
39
-
40
- // If already expanded and trying to toggle selection don't close
41
- if (expandable && !(multiple && instance.isItemExpanded(itemId))) {
42
- instance.toggleItemExpansion(event, itemId);
43
- }
44
- }
45
- };
46
- const handleSelection = event => {
47
- if (!disabled) {
48
- if (!focused) {
49
- instance.focusItem(event, itemId);
50
- }
51
- const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
52
- if (multiple) {
53
- if (event.shiftKey) {
54
- instance.expandSelectionRange(event, itemId);
55
- } else {
56
- instance.selectItem({
57
- event,
58
- itemId,
59
- keepExistingSelection: true
60
- });
61
- }
62
- } else {
63
- instance.selectItem({
64
- event,
65
- itemId,
66
- shouldBeSelected: true
67
- });
68
- }
69
- }
70
- };
71
- const handleCheckboxSelection = event => {
72
- if (disableSelection || disabled) {
73
- return;
74
- }
75
- const hasShift = event.nativeEvent.shiftKey;
76
- if (multiSelect && hasShift) {
77
- instance.expandSelectionRange(event, itemId);
78
- } else {
79
- instance.selectItem({
80
- event,
81
- itemId,
82
- keepExistingSelection: multiSelect,
83
- shouldBeSelected: event.target.checked
84
- });
85
- }
86
- };
87
- const preventSelection = event => {
88
- if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {
89
- // Prevent text selection
90
- event.preventDefault();
91
- }
92
- };
93
- const toggleItemEditing = () => {
94
- if (!(0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel)) {
95
- return;
96
- }
97
- if (instance.isItemEditable(itemId)) {
98
- if (instance.isItemBeingEdited(itemId)) {
99
- instance.setEditedItemId(null);
100
- } else {
101
- instance.setEditedItemId(itemId);
102
- }
103
- }
104
- };
105
- const handleSaveItemLabel = (event, label) => {
106
- if (!(0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel)) {
107
- return;
108
- }
109
-
110
- // As a side effect of `instance.focusItem` called here and in `handleCancelItemLabelEditing` the `labelInput` is blurred
111
- // The `onBlur` event is triggered, which calls `handleSaveItemLabel` again.
112
- // To avoid creating an unwanted behavior we need to check if the item is being edited before calling `updateItemLabel`
113
- // using `instance.isItemBeingEditedRef` instead of `instance.isItemBeingEdited` since the state is not yet updated in this point
114
- if (instance.isItemBeingEditedRef(itemId)) {
115
- instance.updateItemLabel(itemId, label);
116
- toggleItemEditing();
117
- instance.focusItem(event, itemId);
118
- }
119
- };
120
- const handleCancelItemLabelEditing = event => {
121
- if (!(0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel)) {
122
- return;
123
- }
124
- if (instance.isItemBeingEditedRef(itemId)) {
125
- toggleItemEditing();
126
- instance.focusItem(event, itemId);
127
- }
128
- };
129
- return {
130
- disabled,
131
- expanded,
132
- selected,
133
- focused,
134
- editable,
135
- editing,
136
- disableSelection,
137
- checkboxSelection,
138
- handleExpansion,
139
- handleSelection,
140
- handleCheckboxSelection,
141
- handleContentClick: onItemClick,
142
- preventSelection,
143
- expansionTrigger,
144
- toggleItemEditing,
145
- handleSaveItemLabel,
146
- handleCancelItemLabelEditing
147
- };
148
- }
@@ -1,394 +0,0 @@
1
- "use strict";
2
- 'use client';
3
-
4
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
- Object.defineProperty(exports, "__esModule", {
7
- value: true
8
- });
9
- exports.TreeItem2Root = exports.TreeItem2Label = exports.TreeItem2IconContainer = exports.TreeItem2GroupTransition = exports.TreeItem2Content = exports.TreeItem2Checkbox = exports.TreeItem2 = void 0;
10
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
- var React = _interopRequireWildcard(require("react"));
13
- var _propTypes = _interopRequireDefault(require("prop-types"));
14
- var _clsx = _interopRequireDefault(require("clsx"));
15
- var _unsupportedProp = _interopRequireDefault(require("@mui/utils/unsupportedProp"));
16
- var _styles = require("@mui/material/styles");
17
- var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
18
- var _Checkbox = _interopRequireDefault(require("@mui/material/Checkbox"));
19
- var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
20
- var _createStyled = require("@mui/system/createStyled");
21
- var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
22
- var _zeroStyled = require("../internals/zero-styled");
23
- var _useTreeItem = require("../useTreeItem2");
24
- var _TreeItem = require("../TreeItem");
25
- var _TreeItem2Icon = require("../TreeItem2Icon");
26
- var _TreeItem2DragAndDropOverlay = require("../TreeItem2DragAndDropOverlay");
27
- var _TreeItem2Provider = require("../TreeItem2Provider");
28
- var _TreeItem2LabelInput = require("../TreeItem2LabelInput");
29
- var _jsxRuntime = require("react/jsx-runtime");
30
- const _excluded = ["visible"],
31
- _excluded2 = ["id", "itemId", "label", "disabled", "children", "slots", "slotProps"];
32
- const useThemeProps = (0, _zeroStyled.createUseThemeProps)('MuiTreeItem2');
33
- const TreeItem2Root = exports.TreeItem2Root = (0, _zeroStyled.styled)('li', {
34
- name: 'MuiTreeItem2',
35
- slot: 'Root',
36
- overridesResolver: (props, styles) => styles.root
37
- })({
38
- listStyle: 'none',
39
- margin: 0,
40
- padding: 0,
41
- outline: 0
42
- });
43
- const TreeItem2Content = exports.TreeItem2Content = (0, _zeroStyled.styled)('div', {
44
- name: 'MuiTreeItem2',
45
- slot: 'Content',
46
- overridesResolver: (props, styles) => styles.content,
47
- shouldForwardProp: prop => (0, _createStyled.shouldForwardProp)(prop) && prop !== 'status' && prop !== 'indentationAtItemLevel'
48
- })(({
49
- theme
50
- }) => ({
51
- padding: theme.spacing(0.5, 1),
52
- borderRadius: theme.shape.borderRadius,
53
- width: '100%',
54
- boxSizing: 'border-box',
55
- // prevent width + padding to overflow
56
- position: 'relative',
57
- display: 'flex',
58
- alignItems: 'center',
59
- gap: theme.spacing(1),
60
- cursor: 'pointer',
61
- WebkitTapHighlightColor: 'transparent',
62
- '&:hover': {
63
- backgroundColor: (theme.vars || theme).palette.action.hover,
64
- // Reset on touch devices, it doesn't add specificity
65
- '@media (hover: none)': {
66
- backgroundColor: 'transparent'
67
- }
68
- },
69
- variants: [{
70
- props: {
71
- indentationAtItemLevel: true
72
- },
73
- style: {
74
- paddingLeft: `calc(${theme.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth))`
75
- }
76
- }, {
77
- props: ({
78
- status
79
- }) => status.disabled,
80
- style: {
81
- opacity: (theme.vars || theme).palette.action.disabledOpacity,
82
- backgroundColor: 'transparent'
83
- }
84
- }, {
85
- props: ({
86
- status
87
- }) => status.focused,
88
- style: {
89
- backgroundColor: (theme.vars || theme).palette.action.focus
90
- }
91
- }, {
92
- props: ({
93
- status
94
- }) => status.selected,
95
- style: {
96
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),
97
- '&:hover': {
98
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
99
- // Reset on touch devices, it doesn't add specificity
100
- '@media (hover: none)': {
101
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity)
102
- }
103
- }
104
- }
105
- }, {
106
- props: ({
107
- status
108
- }) => status.selected && status.focused,
109
- style: {
110
- backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0, _styles.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
111
- }
112
- }]
113
- }));
114
- const TreeItem2Label = exports.TreeItem2Label = (0, _zeroStyled.styled)('div', {
115
- name: 'MuiTreeItem2',
116
- slot: 'Label',
117
- overridesResolver: (props, styles) => styles.label,
118
- shouldForwardProp: prop => (0, _createStyled.shouldForwardProp)(prop) && prop !== 'editable'
119
- })(({
120
- theme
121
- }) => (0, _extends2.default)({
122
- width: '100%',
123
- boxSizing: 'border-box',
124
- // prevent width + padding to overflow
125
- // fixes overflow - see https://github.com/mui/material-ui/issues/27372
126
- minWidth: 0,
127
- position: 'relative',
128
- overflow: 'hidden'
129
- }, theme.typography.body1, {
130
- variants: [{
131
- props: ({
132
- editable
133
- }) => editable,
134
- style: {
135
- paddingLeft: '2px'
136
- }
137
- }]
138
- }));
139
- const TreeItem2IconContainer = exports.TreeItem2IconContainer = (0, _zeroStyled.styled)('div', {
140
- name: 'MuiTreeItem2',
141
- slot: 'IconContainer',
142
- overridesResolver: (props, styles) => styles.iconContainer
143
- })({
144
- width: 16,
145
- display: 'flex',
146
- flexShrink: 0,
147
- justifyContent: 'center',
148
- '& svg': {
149
- fontSize: 18
150
- }
151
- });
152
- const TreeItem2GroupTransition = exports.TreeItem2GroupTransition = (0, _zeroStyled.styled)(_Collapse.default, {
153
- name: 'MuiTreeItem2',
154
- slot: 'GroupTransition',
155
- overridesResolver: (props, styles) => styles.groupTransition,
156
- shouldForwardProp: prop => (0, _createStyled.shouldForwardProp)(prop) && prop !== 'indentationAtItemLevel'
157
- })({
158
- margin: 0,
159
- padding: 0,
160
- paddingLeft: 'var(--TreeView-itemChildrenIndentation)',
161
- variants: [{
162
- props: {
163
- indentationAtItemLevel: true
164
- },
165
- style: {
166
- paddingLeft: 0
167
- }
168
- }]
169
- });
170
- const TreeItem2Checkbox = exports.TreeItem2Checkbox = (0, _zeroStyled.styled)(/*#__PURE__*/React.forwardRef((props, ref) => {
171
- const {
172
- visible
173
- } = props,
174
- other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
175
- if (!visible) {
176
- return null;
177
- }
178
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Checkbox.default, (0, _extends2.default)({}, other, {
179
- ref: ref
180
- }));
181
- }), {
182
- name: 'MuiTreeItem2',
183
- slot: 'Checkbox',
184
- overridesResolver: (props, styles) => styles.checkbox
185
- })({
186
- padding: 0
187
- });
188
- const useUtilityClasses = ownerState => {
189
- const {
190
- classes
191
- } = ownerState;
192
- const slots = {
193
- root: ['root'],
194
- content: ['content'],
195
- expanded: ['expanded'],
196
- editing: ['editing'],
197
- editable: ['editable'],
198
- selected: ['selected'],
199
- focused: ['focused'],
200
- disabled: ['disabled'],
201
- iconContainer: ['iconContainer'],
202
- checkbox: ['checkbox'],
203
- label: ['label'],
204
- groupTransition: ['groupTransition'],
205
- labelInput: ['labelInput'],
206
- dragAndDropOverlay: ['dragAndDropOverlay']
207
- };
208
- return (0, _composeClasses.default)(slots, _TreeItem.getTreeItemUtilityClass, classes);
209
- };
210
- /**
211
- *
212
- * Demos:
213
- *
214
- * - [Tree View](https://mui.com/x/react-tree-view/)
215
- *
216
- * API:
217
- *
218
- * - [TreeItem2 API](https://mui.com/x/api/tree-view/tree-item-2/)
219
- */
220
- const TreeItem2 = exports.TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProps, forwardedRef) {
221
- const props = useThemeProps({
222
- props: inProps,
223
- name: 'MuiTreeItem2'
224
- });
225
- const {
226
- id,
227
- itemId,
228
- label,
229
- disabled,
230
- children,
231
- slots = {},
232
- slotProps = {}
233
- } = props,
234
- other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded2);
235
- const {
236
- getRootProps,
237
- getContentProps,
238
- getIconContainerProps,
239
- getCheckboxProps,
240
- getLabelProps,
241
- getGroupTransitionProps,
242
- getLabelInputProps,
243
- getDragAndDropOverlayProps,
244
- status
245
- } = (0, _useTreeItem.useTreeItem2)({
246
- id,
247
- itemId,
248
- children,
249
- label,
250
- disabled
251
- });
252
- const ownerState = (0, _extends2.default)({}, props, status);
253
- const classes = useUtilityClasses(ownerState);
254
- const Root = slots.root ?? TreeItem2Root;
255
- const rootProps = (0, _useSlotProps.default)({
256
- elementType: Root,
257
- getSlotProps: getRootProps,
258
- externalForwardedProps: other,
259
- externalSlotProps: slotProps.root,
260
- additionalProps: {
261
- ref: forwardedRef
262
- },
263
- ownerState: {},
264
- className: classes.root
265
- });
266
- const Content = slots.content ?? TreeItem2Content;
267
- const contentProps = (0, _useSlotProps.default)({
268
- elementType: Content,
269
- getSlotProps: getContentProps,
270
- externalSlotProps: slotProps.content,
271
- ownerState: {},
272
- className: (0, _clsx.default)(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)
273
- });
274
- const IconContainer = slots.iconContainer ?? TreeItem2IconContainer;
275
- const iconContainerProps = (0, _useSlotProps.default)({
276
- elementType: IconContainer,
277
- getSlotProps: getIconContainerProps,
278
- externalSlotProps: slotProps.iconContainer,
279
- ownerState: {},
280
- className: classes.iconContainer
281
- });
282
- const Label = slots.label ?? TreeItem2Label;
283
- const labelProps = (0, _useSlotProps.default)({
284
- elementType: Label,
285
- getSlotProps: getLabelProps,
286
- externalSlotProps: slotProps.label,
287
- ownerState: {},
288
- className: classes.label
289
- });
290
- const Checkbox = slots.checkbox ?? TreeItem2Checkbox;
291
- const checkboxProps = (0, _useSlotProps.default)({
292
- elementType: Checkbox,
293
- getSlotProps: getCheckboxProps,
294
- externalSlotProps: slotProps.checkbox,
295
- ownerState: {},
296
- className: classes.checkbox
297
- });
298
- const GroupTransition = slots.groupTransition ?? undefined;
299
- const groupTransitionProps = (0, _useSlotProps.default)({
300
- elementType: GroupTransition,
301
- getSlotProps: getGroupTransitionProps,
302
- externalSlotProps: slotProps.groupTransition,
303
- ownerState: {},
304
- className: classes.groupTransition
305
- });
306
- const LabelInput = slots.labelInput ?? _TreeItem2LabelInput.TreeItem2LabelInput;
307
- const labelInputProps = (0, _useSlotProps.default)({
308
- elementType: LabelInput,
309
- getSlotProps: getLabelInputProps,
310
- externalSlotProps: slotProps.labelInput,
311
- ownerState: {},
312
- className: classes.labelInput
313
- });
314
- const DragAndDropOverlay = slots.dragAndDropOverlay ?? _TreeItem2DragAndDropOverlay.TreeItem2DragAndDropOverlay;
315
- const dragAndDropOverlayProps = (0, _useSlotProps.default)({
316
- elementType: DragAndDropOverlay,
317
- getSlotProps: getDragAndDropOverlayProps,
318
- externalSlotProps: slotProps.dragAndDropOverlay,
319
- ownerState: {},
320
- className: classes.dragAndDropOverlay
321
- });
322
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Provider.TreeItem2Provider, {
323
- itemId: itemId,
324
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, (0, _extends2.default)({}, rootProps, {
325
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Content, (0, _extends2.default)({}, contentProps, {
326
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(IconContainer, (0, _extends2.default)({}, iconContainerProps, {
327
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItem2Icon.TreeItem2Icon, {
328
- status: status,
329
- slots: slots,
330
- slotProps: slotProps
331
- })
332
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(Checkbox, (0, _extends2.default)({}, checkboxProps)), status.editing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelInput, (0, _extends2.default)({}, labelInputProps)) : /*#__PURE__*/(0, _jsxRuntime.jsx)(Label, (0, _extends2.default)({}, labelProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(DragAndDropOverlay, (0, _extends2.default)({}, dragAndDropOverlayProps))]
333
- })), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItem2GroupTransition, (0, _extends2.default)({
334
- as: GroupTransition
335
- }, groupTransitionProps))]
336
- }))
337
- });
338
- });
339
- process.env.NODE_ENV !== "production" ? TreeItem2.propTypes = {
340
- // ----------------------------- Warning --------------------------------
341
- // | These PropTypes are generated from the TypeScript type definitions |
342
- // | To update them edit the TypeScript types and run "pnpm proptypes" |
343
- // ----------------------------------------------------------------------
344
- /**
345
- * The content of the component.
346
- */
347
- children: _propTypes.default.node,
348
- /**
349
- * Override or extend the styles applied to the component.
350
- */
351
- classes: _propTypes.default.object,
352
- className: _propTypes.default.string,
353
- /**
354
- * If `true`, the item is disabled.
355
- * @default false
356
- */
357
- disabled: _propTypes.default.bool,
358
- /**
359
- * The id attribute of the item. If not provided, it will be generated.
360
- */
361
- id: _propTypes.default.string,
362
- /**
363
- * The id of the item.
364
- * Must be unique.
365
- */
366
- itemId: _propTypes.default.string.isRequired,
367
- /**
368
- * The label of the item.
369
- */
370
- label: _propTypes.default.node,
371
- /**
372
- * Callback fired when the item root is blurred.
373
- */
374
- onBlur: _propTypes.default.func,
375
- /**
376
- * This prop isn't supported.
377
- * Use the `onItemFocus` callback on the tree if you need to monitor an item's focus.
378
- */
379
- onFocus: _unsupportedProp.default,
380
- /**
381
- * Callback fired when a key is pressed on the keyboard and the tree is in focus.
382
- */
383
- onKeyDown: _propTypes.default.func,
384
- /**
385
- * The props used for each component slot.
386
- * @default {}
387
- */
388
- slotProps: _propTypes.default.object,
389
- /**
390
- * Overridable component slots.
391
- * @default {}
392
- */
393
- slots: _propTypes.default.object
394
- } : void 0;