@mui/x-tree-view 7.0.0-beta.3 → 7.0.0-beta.5

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 (147) hide show
  1. package/CHANGELOG.md +357 -22
  2. package/RichTreeView/RichTreeView.js +8 -0
  3. package/RichTreeView/RichTreeView.types.d.ts +7 -1
  4. package/SimpleTreeView/SimpleTreeView.js +8 -0
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +7 -1
  6. package/TreeItem/TreeItem.js +1 -1
  7. package/TreeItem/TreeItem.types.d.ts +1 -1
  8. package/TreeView/TreeView.js +8 -0
  9. package/hooks/index.d.ts +1 -0
  10. package/hooks/index.js +1 -0
  11. package/hooks/package.json +6 -0
  12. package/hooks/useTreeViewApiRef.d.ts +6 -0
  13. package/hooks/useTreeViewApiRef.js +5 -0
  14. package/index.d.ts +1 -0
  15. package/index.js +3 -2
  16. package/internals/TreeViewProvider/DescendantProvider.js +1 -11
  17. package/internals/hooks/useTimeout.d.ts +5 -3
  18. package/internals/hooks/useTimeout.js +13 -5
  19. package/internals/models/helpers.d.ts +1 -0
  20. package/internals/models/plugin.d.ts +12 -0
  21. package/internals/models/treeView.d.ts +1 -0
  22. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +40 -22
  23. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +5 -0
  24. package/internals/useTreeView/useTreeView.d.ts +2 -0
  25. package/internals/useTreeView/useTreeView.js +12 -0
  26. package/internals/useTreeView/useTreeView.types.d.ts +2 -1
  27. package/internals/useTreeView/useTreeView.utils.d.ts +2 -1
  28. package/internals/useTreeView/useTreeView.utils.js +3 -0
  29. package/internals/utils/extractPluginParamsFromProps.d.ts +3 -2
  30. package/internals/utils/extractPluginParamsFromProps.js +5 -3
  31. package/internals/utils/utils.d.ts +1 -0
  32. package/internals/utils/utils.js +10 -0
  33. package/modern/RichTreeView/RichTreeView.js +8 -0
  34. package/modern/SimpleTreeView/SimpleTreeView.js +8 -0
  35. package/modern/TreeItem/TreeItem.js +1 -1
  36. package/modern/TreeView/TreeView.js +8 -0
  37. package/modern/hooks/index.js +1 -0
  38. package/modern/hooks/useTreeViewApiRef.js +5 -0
  39. package/modern/index.js +3 -2
  40. package/modern/internals/TreeViewProvider/DescendantProvider.js +1 -11
  41. package/modern/internals/hooks/useTimeout.js +13 -5
  42. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +40 -22
  43. package/modern/internals/useTreeView/useTreeView.js +12 -0
  44. package/modern/internals/useTreeView/useTreeView.utils.js +3 -0
  45. package/modern/internals/utils/extractPluginParamsFromProps.js +5 -3
  46. package/modern/internals/utils/utils.js +10 -0
  47. package/node/RichTreeView/RichTreeView.js +8 -0
  48. package/node/SimpleTreeView/SimpleTreeView.js +8 -0
  49. package/node/TreeItem/TreeItem.js +1 -1
  50. package/node/TreeView/TreeView.js +8 -0
  51. package/node/hooks/index.js +12 -0
  52. package/node/hooks/useTreeViewApiRef.js +14 -0
  53. package/node/index.js +13 -1
  54. package/node/internals/TreeViewProvider/DescendantProvider.js +1 -10
  55. package/node/internals/hooks/useTimeout.js +13 -4
  56. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +39 -21
  57. package/node/internals/useTreeView/useTreeView.js +13 -0
  58. package/node/internals/useTreeView/useTreeView.utils.js +6 -2
  59. package/node/internals/utils/extractPluginParamsFromProps.js +5 -3
  60. package/node/internals/utils/utils.js +17 -0
  61. package/package.json +1 -1
  62. package/legacy/RichTreeView/RichTreeView.js +0 -255
  63. package/legacy/RichTreeView/RichTreeView.types.js +0 -1
  64. package/legacy/RichTreeView/index.js +0 -3
  65. package/legacy/RichTreeView/richTreeViewClasses.js +0 -6
  66. package/legacy/SimpleTreeView/SimpleTreeView.js +0 -190
  67. package/legacy/SimpleTreeView/SimpleTreeView.plugins.js +0 -6
  68. package/legacy/SimpleTreeView/SimpleTreeView.types.js +0 -1
  69. package/legacy/SimpleTreeView/index.js +0 -3
  70. package/legacy/SimpleTreeView/simpleTreeViewClasses.js +0 -6
  71. package/legacy/TreeItem/TreeItem.js +0 -360
  72. package/legacy/TreeItem/TreeItem.types.js +0 -1
  73. package/legacy/TreeItem/TreeItemContent.js +0 -95
  74. package/legacy/TreeItem/index.js +0 -4
  75. package/legacy/TreeItem/treeItemClasses.js +0 -6
  76. package/legacy/TreeItem/useTreeItemState.js +0 -58
  77. package/legacy/TreeView/TreeView.js +0 -165
  78. package/legacy/TreeView/TreeView.types.js +0 -1
  79. package/legacy/TreeView/index.js +0 -3
  80. package/legacy/TreeView/treeViewClasses.js +0 -6
  81. package/legacy/icons/icons.js +0 -9
  82. package/legacy/icons/index.js +0 -1
  83. package/legacy/index.js +0 -14
  84. package/legacy/internals/TreeViewProvider/DescendantProvider.js +0 -199
  85. package/legacy/internals/TreeViewProvider/TreeViewContext.js +0 -8
  86. package/legacy/internals/TreeViewProvider/TreeViewProvider.js +0 -19
  87. package/legacy/internals/TreeViewProvider/TreeViewProvider.types.js +0 -1
  88. package/legacy/internals/TreeViewProvider/index.js +0 -1
  89. package/legacy/internals/TreeViewProvider/useTreeViewContext.js +0 -9
  90. package/legacy/internals/corePlugins/corePlugins.js +0 -6
  91. package/legacy/internals/corePlugins/index.js +0 -1
  92. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
  93. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -40
  94. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +0 -1
  95. package/legacy/internals/hooks/useInstanceEventHandler.js +0 -87
  96. package/legacy/internals/hooks/useLazyRef.js +0 -11
  97. package/legacy/internals/hooks/useOnMount.js +0 -7
  98. package/legacy/internals/hooks/useTimeout.js +0 -38
  99. package/legacy/internals/index.js +0 -4
  100. package/legacy/internals/models/MuiCancellableEvent.js +0 -1
  101. package/legacy/internals/models/events.js +0 -1
  102. package/legacy/internals/models/helpers.js +0 -1
  103. package/legacy/internals/models/index.js +0 -3
  104. package/legacy/internals/models/plugin.js +0 -1
  105. package/legacy/internals/models/treeView.js +0 -1
  106. package/legacy/internals/plugins/defaultPlugins.js +0 -10
  107. package/legacy/internals/plugins/index.js +0 -1
  108. package/legacy/internals/plugins/useTreeViewExpansion/index.js +0 -1
  109. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -81
  110. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
  111. package/legacy/internals/plugins/useTreeViewFocus/index.js +0 -1
  112. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -103
  113. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
  114. package/legacy/internals/plugins/useTreeViewIcons/index.js +0 -1
  115. package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +0 -21
  116. package/legacy/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +0 -1
  117. package/legacy/internals/plugins/useTreeViewId/index.js +0 -1
  118. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.js +0 -24
  119. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.types.js +0 -1
  120. package/legacy/internals/plugins/useTreeViewJSXNodes/index.js +0 -1
  121. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +0 -130
  122. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +0 -1
  123. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
  124. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -284
  125. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
  126. package/legacy/internals/plugins/useTreeViewNodes/index.js +0 -1
  127. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +0 -161
  128. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +0 -1
  129. package/legacy/internals/plugins/useTreeViewSelection/index.js +0 -1
  130. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -219
  131. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
  132. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -55
  133. package/legacy/internals/useTreeView/index.js +0 -1
  134. package/legacy/internals/useTreeView/useTreeView.js +0 -111
  135. package/legacy/internals/useTreeView/useTreeView.types.js +0 -1
  136. package/legacy/internals/useTreeView/useTreeView.utils.js +0 -46
  137. package/legacy/internals/useTreeView/useTreeViewModels.js +0 -75
  138. package/legacy/internals/utils/EventManager.js +0 -91
  139. package/legacy/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
  140. package/legacy/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -29
  141. package/legacy/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -52
  142. package/legacy/internals/utils/extractPluginParamsFromProps.js +0 -36
  143. package/legacy/internals/utils/publishTreeViewEvent.js +0 -3
  144. package/legacy/internals/utils/warning.js +0 -15
  145. package/legacy/models/index.js +0 -1
  146. package/legacy/models/items.js +0 -1
  147. package/legacy/themeAugmentation/index.js +0 -3
@@ -1,360 +0,0 @@
1
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
- import _extends from "@babel/runtime/helpers/esm/extends";
3
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
- var _excluded = ["children", "className", "slots", "slotProps", "ContentComponent", "ContentProps", "nodeId", "id", "label", "onClick", "onMouseDown", "TransitionComponent", "TransitionProps"],
5
- _excluded2 = ["ownerState"],
6
- _excluded3 = ["ownerState"],
7
- _excluded4 = ["ownerState"];
8
- import * as React from 'react';
9
- import PropTypes from 'prop-types';
10
- import clsx from 'clsx';
11
- import Collapse from '@mui/material/Collapse';
12
- import { resolveComponentProps, useSlotProps } from '@mui/base/utils';
13
- import { alpha, styled, useThemeProps } from '@mui/material/styles';
14
- import unsupportedProp from '@mui/utils/unsupportedProp';
15
- import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
16
- import { unstable_composeClasses as composeClasses } from '@mui/base';
17
- import { TreeItemContent } from './TreeItemContent';
18
- import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';
19
- import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
20
- import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
21
- import { jsx as _jsx } from "react/jsx-runtime";
22
- import { jsxs as _jsxs } from "react/jsx-runtime";
23
- var useUtilityClasses = function useUtilityClasses(ownerState) {
24
- var classes = ownerState.classes;
25
- var slots = {
26
- root: ['root'],
27
- content: ['content'],
28
- expanded: ['expanded'],
29
- selected: ['selected'],
30
- focused: ['focused'],
31
- disabled: ['disabled'],
32
- iconContainer: ['iconContainer'],
33
- label: ['label'],
34
- group: ['group']
35
- };
36
- return composeClasses(slots, getTreeItemUtilityClass, classes);
37
- };
38
- var TreeItemRoot = styled('li', {
39
- name: 'MuiTreeItem',
40
- slot: 'Root',
41
- overridesResolver: function overridesResolver(props, styles) {
42
- return styles.root;
43
- }
44
- })({
45
- listStyle: 'none',
46
- margin: 0,
47
- padding: 0,
48
- outline: 0
49
- });
50
- var StyledTreeItemContent = styled(TreeItemContent, {
51
- name: 'MuiTreeItem',
52
- slot: 'Content',
53
- overridesResolver: function overridesResolver(props, styles) {
54
- return [styles.content, styles.iconContainer && _defineProperty({}, "& .".concat(treeItemClasses.iconContainer), styles.iconContainer), styles.label && _defineProperty({}, "& .".concat(treeItemClasses.label), styles.label)];
55
- }
56
- })(function (_ref3) {
57
- var theme = _ref3.theme;
58
- return _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({
59
- padding: theme.spacing(0.5, 1),
60
- borderRadius: theme.shape.borderRadius,
61
- width: '100%',
62
- boxSizing: 'border-box',
63
- // prevent width + padding to overflow
64
- display: 'flex',
65
- alignItems: 'center',
66
- gap: theme.spacing(1),
67
- cursor: 'pointer',
68
- WebkitTapHighlightColor: 'transparent',
69
- '&:hover': {
70
- backgroundColor: (theme.vars || theme).palette.action.hover,
71
- // Reset on touch devices, it doesn't add specificity
72
- '@media (hover: none)': {
73
- backgroundColor: 'transparent'
74
- }
75
- }
76
- }, "&.".concat(treeItemClasses.disabled), {
77
- opacity: (theme.vars || theme).palette.action.disabledOpacity,
78
- backgroundColor: 'transparent'
79
- }), "&.".concat(treeItemClasses.focused), {
80
- backgroundColor: (theme.vars || theme).palette.action.focus
81
- }), "&.".concat(treeItemClasses.selected), _defineProperty({
82
- backgroundColor: theme.vars ? "rgba(".concat(theme.vars.palette.primary.mainChannel, " / ").concat(theme.vars.palette.action.selectedOpacity, ")") : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
83
- '&:hover': {
84
- backgroundColor: theme.vars ? "rgba(".concat(theme.vars.palette.primary.mainChannel, " / calc(").concat(theme.vars.palette.action.selectedOpacity, " + ").concat(theme.vars.palette.action.hoverOpacity, "))") : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
85
- // Reset on touch devices, it doesn't add specificity
86
- '@media (hover: none)': {
87
- backgroundColor: theme.vars ? "rgba(".concat(theme.vars.palette.primary.mainChannel, " / ").concat(theme.vars.palette.action.selectedOpacity, ")") : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)
88
- }
89
- }
90
- }, "&.".concat(treeItemClasses.focused), {
91
- backgroundColor: theme.vars ? "rgba(".concat(theme.vars.palette.primary.mainChannel, " / calc(").concat(theme.vars.palette.action.selectedOpacity, " + ").concat(theme.vars.palette.action.focusOpacity, "))") : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
92
- })), "& .".concat(treeItemClasses.iconContainer), {
93
- width: 16,
94
- display: 'flex',
95
- flexShrink: 0,
96
- justifyContent: 'center',
97
- '& svg': {
98
- fontSize: 18
99
- }
100
- }), "& .".concat(treeItemClasses.label), _extends({
101
- width: '100%',
102
- boxSizing: 'border-box',
103
- // prevent width + padding to overflow
104
- // fixes overflow - see https://github.com/mui/material-ui/issues/27372
105
- minWidth: 0,
106
- position: 'relative'
107
- }, theme.typography.body1));
108
- });
109
- var TreeItemGroup = styled(Collapse, {
110
- name: 'MuiTreeItem',
111
- slot: 'Group',
112
- overridesResolver: function overridesResolver(props, styles) {
113
- return styles.group;
114
- }
115
- })({
116
- margin: 0,
117
- padding: 0,
118
- paddingLeft: 12
119
- });
120
-
121
- /**
122
- *
123
- * Demos:
124
- *
125
- * - [Tree View](https://mui.com/x/react-tree-view/)
126
- *
127
- * API:
128
- *
129
- * - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)
130
- */
131
- export var TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, inRef) {
132
- var _ref5, _inSlots$expandIcon, _ref6, _inSlots$collapseIcon, _inSlots$endIcon;
133
- var _useTreeViewContext = useTreeViewContext(),
134
- contextIcons = _useTreeViewContext.icons,
135
- runItemPlugins = _useTreeViewContext.runItemPlugins,
136
- multiSelect = _useTreeViewContext.selection.multiSelect,
137
- disabledItemsFocusable = _useTreeViewContext.disabledItemsFocusable,
138
- instance = _useTreeViewContext.instance;
139
- var inPropsWithTheme = useThemeProps({
140
- props: inProps,
141
- name: 'MuiTreeItem'
142
- });
143
- var _runItemPlugins = runItemPlugins({
144
- props: inPropsWithTheme,
145
- ref: inRef
146
- }),
147
- props = _runItemPlugins.props,
148
- ref = _runItemPlugins.ref,
149
- wrapItem = _runItemPlugins.wrapItem;
150
- var children = props.children,
151
- className = props.className,
152
- inSlots = props.slots,
153
- inSlotProps = props.slotProps,
154
- _props$ContentCompone = props.ContentComponent,
155
- ContentComponent = _props$ContentCompone === void 0 ? TreeItemContent : _props$ContentCompone,
156
- ContentProps = props.ContentProps,
157
- nodeId = props.nodeId,
158
- id = props.id,
159
- label = props.label,
160
- onClick = props.onClick,
161
- onMouseDown = props.onMouseDown,
162
- _props$TransitionComp = props.TransitionComponent,
163
- TransitionComponent = _props$TransitionComp === void 0 ? Collapse : _props$TransitionComp,
164
- TransitionProps = props.TransitionProps,
165
- other = _objectWithoutProperties(props, _excluded);
166
- var slots = {
167
- expandIcon: (_ref5 = (_inSlots$expandIcon = inSlots == null ? void 0 : inSlots.expandIcon) != null ? _inSlots$expandIcon : contextIcons.slots.expandIcon) != null ? _ref5 : TreeViewExpandIcon,
168
- collapseIcon: (_ref6 = (_inSlots$collapseIcon = inSlots == null ? void 0 : inSlots.collapseIcon) != null ? _inSlots$collapseIcon : contextIcons.slots.collapseIcon) != null ? _ref6 : TreeViewCollapseIcon,
169
- endIcon: (_inSlots$endIcon = inSlots == null ? void 0 : inSlots.endIcon) != null ? _inSlots$endIcon : contextIcons.slots.endIcon,
170
- icon: inSlots == null ? void 0 : inSlots.icon
171
- };
172
- var isExpandable = function isExpandable(reactChildren) {
173
- if (Array.isArray(reactChildren)) {
174
- return reactChildren.length > 0 && reactChildren.some(isExpandable);
175
- }
176
- return Boolean(reactChildren);
177
- };
178
- var expandable = isExpandable(children);
179
- var expanded = instance.isNodeExpanded(nodeId);
180
- var focused = instance.isNodeFocused(nodeId);
181
- var selected = instance.isNodeSelected(nodeId);
182
- var disabled = instance.isNodeDisabled(nodeId);
183
- var ownerState = _extends({}, props, {
184
- expanded: expanded,
185
- focused: focused,
186
- selected: selected,
187
- disabled: disabled
188
- });
189
- var classes = useUtilityClasses(ownerState);
190
- var ExpansionIcon = expanded ? slots.collapseIcon : slots.expandIcon;
191
- var _useSlotProps = useSlotProps({
192
- elementType: ExpansionIcon,
193
- ownerState: {},
194
- externalSlotProps: function externalSlotProps(tempOwnerState) {
195
- if (expanded) {
196
- return _extends({}, resolveComponentProps(contextIcons.slotProps.collapseIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.collapseIcon, tempOwnerState));
197
- }
198
- return _extends({}, resolveComponentProps(contextIcons.slotProps.expandIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.expandIcon, tempOwnerState));
199
- }
200
- }),
201
- expansionIconOwnerState = _useSlotProps.ownerState,
202
- expansionIconProps = _objectWithoutProperties(_useSlotProps, _excluded2);
203
- var expansionIcon = expandable && !!ExpansionIcon ? /*#__PURE__*/_jsx(ExpansionIcon, _extends({}, expansionIconProps)) : null;
204
- var DisplayIcon = expandable ? undefined : slots.endIcon;
205
- var _useSlotProps2 = useSlotProps({
206
- elementType: DisplayIcon,
207
- ownerState: {},
208
- externalSlotProps: function externalSlotProps(tempOwnerState) {
209
- if (expandable) {
210
- return {};
211
- }
212
- return _extends({}, resolveComponentProps(contextIcons.slotProps.endIcon, tempOwnerState), resolveComponentProps(inSlotProps == null ? void 0 : inSlotProps.endIcon, tempOwnerState));
213
- }
214
- }),
215
- displayIconOwnerState = _useSlotProps2.ownerState,
216
- displayIconProps = _objectWithoutProperties(_useSlotProps2, _excluded3);
217
- var displayIcon = DisplayIcon ? /*#__PURE__*/_jsx(DisplayIcon, _extends({}, displayIconProps)) : null;
218
- var Icon = slots.icon;
219
- var _useSlotProps3 = useSlotProps({
220
- elementType: Icon,
221
- ownerState: {},
222
- externalSlotProps: inSlotProps == null ? void 0 : inSlotProps.icon
223
- }),
224
- iconOwnerState = _useSlotProps3.ownerState,
225
- iconProps = _objectWithoutProperties(_useSlotProps3, _excluded4);
226
- var icon = Icon ? /*#__PURE__*/_jsx(Icon, _extends({}, iconProps)) : null;
227
- var ariaSelected;
228
- if (multiSelect) {
229
- ariaSelected = selected;
230
- } else if (selected) {
231
- /* single-selection trees unset aria-selected on un-selected items.
232
- *
233
- * If the tree does not support multiple selection, aria-selected
234
- * is set to true for the selected node and it is not present on any other node in the tree.
235
- * Source: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/
236
- */
237
- ariaSelected = true;
238
- }
239
- function handleFocus(event) {
240
- // DOM focus stays on the tree which manages focus with aria-activedescendant
241
- if (event.target === event.currentTarget) {
242
- instance.focusRoot();
243
- }
244
- var canBeFocused = !disabled || disabledItemsFocusable;
245
- if (!focused && canBeFocused && event.currentTarget === event.target) {
246
- instance.focusNode(event, nodeId);
247
- }
248
- }
249
- var idAttribute = instance.getTreeItemId(nodeId, id);
250
- var item = /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
251
- className: clsx(classes.root, className),
252
- role: "treeitem",
253
- "aria-expanded": expandable ? expanded : undefined,
254
- "aria-selected": ariaSelected,
255
- "aria-disabled": disabled || undefined,
256
- id: idAttribute,
257
- tabIndex: -1
258
- }, other, {
259
- ownerState: ownerState,
260
- onFocus: handleFocus,
261
- ref: ref,
262
- children: [/*#__PURE__*/_jsx(StyledTreeItemContent, _extends({
263
- as: ContentComponent,
264
- classes: {
265
- root: classes.content,
266
- expanded: classes.expanded,
267
- selected: classes.selected,
268
- focused: classes.focused,
269
- disabled: classes.disabled,
270
- iconContainer: classes.iconContainer,
271
- label: classes.label
272
- },
273
- label: label,
274
- nodeId: nodeId,
275
- onClick: onClick,
276
- onMouseDown: onMouseDown,
277
- icon: icon,
278
- expansionIcon: expansionIcon,
279
- displayIcon: displayIcon,
280
- ownerState: ownerState
281
- }, ContentProps)), children && /*#__PURE__*/_jsx(TreeItemGroup, _extends({
282
- as: TransitionComponent,
283
- unmountOnExit: true,
284
- className: classes.group,
285
- in: expanded,
286
- component: "ul",
287
- role: "group"
288
- }, TransitionProps, {
289
- children: children
290
- }))]
291
- }));
292
- return wrapItem(item);
293
- });
294
- TreeItem.propTypes = {
295
- // ----------------------------- Warning --------------------------------
296
- // | These PropTypes are generated from the TypeScript type definitions |
297
- // | To update them edit the TypeScript types and run "yarn proptypes" |
298
- // ----------------------------------------------------------------------
299
- /**
300
- * The content of the component.
301
- */
302
- children: PropTypes.node,
303
- /**
304
- * Override or extend the styles applied to the component.
305
- */
306
- classes: PropTypes.object,
307
- className: PropTypes.string,
308
- /**
309
- * The component used for the content node.
310
- * @default TreeItemContent
311
- */
312
- ContentComponent: elementTypeAcceptingRef,
313
- /**
314
- * Props applied to ContentComponent.
315
- */
316
- ContentProps: PropTypes.object,
317
- /**
318
- * If `true`, the node is disabled.
319
- * @default false
320
- */
321
- disabled: PropTypes.bool,
322
- /**
323
- * The tree node label.
324
- */
325
- label: PropTypes.node,
326
- /**
327
- * The id of the node.
328
- */
329
- nodeId: PropTypes.string.isRequired,
330
- /**
331
- * This prop isn't supported.
332
- * Use the `onNodeFocus` callback on the tree if you need to monitor a node's focus.
333
- */
334
- onFocus: unsupportedProp,
335
- /**
336
- * The props used for each component slot.
337
- * @default {}
338
- */
339
- slotProps: PropTypes.object,
340
- /**
341
- * Overridable component slots.
342
- * @default {}
343
- */
344
- slots: PropTypes.object,
345
- /**
346
- * The system prop that allows defining system overrides as well as additional CSS styles.
347
- */
348
- sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),
349
- /**
350
- * The component used for the transition.
351
- * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
352
- * @default Collapse
353
- */
354
- TransitionComponent: PropTypes.elementType,
355
- /**
356
- * Props applied to the transition element.
357
- * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.
358
- */
359
- TransitionProps: PropTypes.object
360
- };
@@ -1 +0,0 @@
1
- export {};
@@ -1,95 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
- var _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 { useTreeItemState } from './useTreeItemState';
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
- var TreeItemContent = /*#__PURE__*/React.forwardRef(function TreeItemContent(props, ref) {
14
- var classes = props.classes,
15
- className = props.className,
16
- displayIcon = props.displayIcon,
17
- expansionIcon = props.expansionIcon,
18
- iconProp = props.icon,
19
- label = props.label,
20
- nodeId = props.nodeId,
21
- onClick = props.onClick,
22
- onMouseDown = props.onMouseDown,
23
- other = _objectWithoutProperties(props, _excluded);
24
- var _useTreeItemState = useTreeItemState(nodeId),
25
- disabled = _useTreeItemState.disabled,
26
- expanded = _useTreeItemState.expanded,
27
- selected = _useTreeItemState.selected,
28
- focused = _useTreeItemState.focused,
29
- handleExpansion = _useTreeItemState.handleExpansion,
30
- handleSelection = _useTreeItemState.handleSelection,
31
- preventSelection = _useTreeItemState.preventSelection;
32
- var icon = iconProp || expansionIcon || displayIcon;
33
- var handleMouseDown = function handleMouseDown(event) {
34
- preventSelection(event);
35
- if (onMouseDown) {
36
- onMouseDown(event);
37
- }
38
- };
39
- var handleClick = function handleClick(event) {
40
- handleExpansion(event);
41
- handleSelection(event);
42
- if (onClick) {
43
- onClick(event);
44
- }
45
- };
46
- return (
47
- /*#__PURE__*/
48
- /* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */
49
- _jsxs("div", _extends({}, other, {
50
- className: clsx(className, classes.root, expanded && classes.expanded, selected && classes.selected, focused && classes.focused, disabled && classes.disabled),
51
- onClick: handleClick,
52
- onMouseDown: handleMouseDown,
53
- ref: ref,
54
- children: [/*#__PURE__*/_jsx("div", {
55
- className: classes.iconContainer,
56
- children: icon
57
- }), /*#__PURE__*/_jsx("div", {
58
- className: classes.label,
59
- children: label
60
- })]
61
- }))
62
- );
63
- });
64
- process.env.NODE_ENV !== "production" ? TreeItemContent.propTypes = {
65
- // ----------------------------- Warning --------------------------------
66
- // | These PropTypes are generated from the TypeScript type definitions |
67
- // | To update them edit the TypeScript types and run "yarn proptypes" |
68
- // ----------------------------------------------------------------------
69
- /**
70
- * Override or extend the styles applied to the component.
71
- */
72
- classes: PropTypes.object.isRequired,
73
- className: PropTypes.string,
74
- /**
75
- * The icon to display next to the tree node's label. Either a parent or end icon.
76
- */
77
- displayIcon: PropTypes.node,
78
- /**
79
- * The icon to display next to the tree node's label. Either an expansion or collapse icon.
80
- */
81
- expansionIcon: PropTypes.node,
82
- /**
83
- * The icon to display next to the tree node's label.
84
- */
85
- icon: PropTypes.node,
86
- /**
87
- * The tree node label.
88
- */
89
- label: PropTypes.node,
90
- /**
91
- * The id of the node.
92
- */
93
- nodeId: PropTypes.string.isRequired
94
- } : void 0;
95
- export { TreeItemContent };
@@ -1,4 +0,0 @@
1
- export { TreeItem } from './TreeItem';
2
- export * from './treeItemClasses';
3
- export * from './useTreeItemState';
4
- export { TreeItemContent } from './TreeItemContent';
@@ -1,6 +0,0 @@
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 var treeItemClasses = generateUtilityClasses('MuiTreeItem', ['root', 'group', 'content', 'expanded', 'selected', 'focused', 'disabled', 'iconContainer', 'label']);
@@ -1,58 +0,0 @@
1
- import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
2
- export function useTreeItemState(nodeId) {
3
- var _useTreeViewContext = useTreeViewContext(),
4
- instance = _useTreeViewContext.instance,
5
- multiSelect = _useTreeViewContext.selection.multiSelect;
6
- var expandable = instance.isNodeExpandable(nodeId);
7
- var expanded = instance.isNodeExpanded(nodeId);
8
- var focused = instance.isNodeFocused(nodeId);
9
- var selected = instance.isNodeSelected(nodeId);
10
- var disabled = instance.isNodeDisabled(nodeId);
11
- var handleExpansion = function handleExpansion(event) {
12
- if (!disabled) {
13
- if (!focused) {
14
- instance.focusNode(event, nodeId);
15
- }
16
- var multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
17
-
18
- // If already expanded and trying to toggle selection don't close
19
- if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
20
- instance.toggleNodeExpansion(event, nodeId);
21
- }
22
- }
23
- };
24
- var handleSelection = function handleSelection(event) {
25
- if (!disabled) {
26
- if (!focused) {
27
- instance.focusNode(event, nodeId);
28
- }
29
- var multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
30
- if (multiple) {
31
- if (event.shiftKey) {
32
- instance.selectRange(event, {
33
- end: nodeId
34
- });
35
- } else {
36
- instance.selectNode(event, nodeId, true);
37
- }
38
- } else {
39
- instance.selectNode(event, nodeId);
40
- }
41
- }
42
- };
43
- var preventSelection = function preventSelection(event) {
44
- if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {
45
- // Prevent text selection
46
- event.preventDefault();
47
- }
48
- };
49
- return {
50
- disabled: disabled,
51
- expanded: expanded,
52
- selected: selected,
53
- focused: focused,
54
- handleExpansion: handleExpansion,
55
- handleSelection: handleSelection,
56
- preventSelection: preventSelection
57
- };
58
- }