@mui/x-tree-view 7.18.0 → 7.20.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 +213 -11
- package/RichTreeView/RichTreeView.js +6 -45
- package/RichTreeView/RichTreeView.plugins.d.ts +1 -1
- package/SimpleTreeView/SimpleTreeView.plugins.d.ts +1 -1
- package/TreeItem/TreeItem.js +19 -1
- package/TreeItem/TreeItem.types.d.ts +2 -0
- package/TreeItem/TreeItemContent.js +25 -29
- package/TreeItem2/TreeItem2.d.ts +6 -6
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +24 -6
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +10 -8
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +7 -1
- package/internals/TreeViewProvider/TreeViewProvider.js +2 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +2 -1
- package/internals/TreeViewProvider/useTreeViewContext.d.ts +1 -1
- package/internals/components/RichTreeViewItems.d.ts +35 -0
- package/internals/components/RichTreeViewItems.js +56 -0
- package/internals/corePlugins/corePlugins.d.ts +1 -1
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +28 -7
- package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +11 -13
- package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +17 -0
- package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +26 -0
- package/internals/index.d.ts +1 -0
- package/internals/index.js +1 -0
- package/internals/models/plugin.d.ts +4 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +3 -1
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -1
- package/internals/plugins/useTreeViewItems/index.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +9 -2
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +11 -5
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +6 -0
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -8
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +3 -2
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +3 -1
- package/internals/useTreeView/extractPluginParamsFromProps.d.ts +1 -1
- package/internals/useTreeView/extractPluginParamsFromProps.js +7 -3
- package/modern/RichTreeView/RichTreeView.js +6 -45
- package/modern/TreeItem/TreeItem.js +19 -1
- package/modern/TreeItem/TreeItemContent.js +25 -29
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +10 -8
- package/modern/index.js +1 -1
- package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +7 -1
- package/modern/internals/TreeViewProvider/TreeViewProvider.js +2 -1
- package/modern/internals/components/RichTreeViewItems.js +56 -0
- package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.js +28 -7
- package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +26 -0
- package/modern/internals/index.js +1 -0
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +3 -1
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -1
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +9 -2
- package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +11 -5
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +6 -0
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -8
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +3 -1
- package/modern/internals/useTreeView/extractPluginParamsFromProps.js +7 -3
- package/modern/useTreeItem2/useTreeItem2.js +7 -1
- package/node/RichTreeView/RichTreeView.js +6 -45
- package/node/TreeItem/TreeItem.js +19 -1
- package/node/TreeItem/TreeItemContent.js +25 -29
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +10 -9
- package/node/index.js +1 -1
- package/node/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +7 -1
- package/node/internals/TreeViewProvider/TreeViewProvider.js +2 -1
- package/node/internals/components/RichTreeViewItems.js +64 -0
- package/node/internals/corePlugins/useTreeViewId/useTreeViewId.js +29 -8
- package/node/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +34 -0
- package/node/internals/index.js +7 -0
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +3 -1
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -1
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +9 -2
- package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +11 -5
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +6 -0
- package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -8
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +3 -1
- package/node/internals/useTreeView/extractPluginParamsFromProps.js +7 -3
- package/node/useTreeItem2/useTreeItem2.js +7 -1
- package/package.json +4 -4
- package/useTreeItem2/index.d.ts +3 -3
- package/useTreeItem2/useTreeItem2.js +7 -1
- package/useTreeItem2/useTreeItem2.types.d.ts +1 -1
|
@@ -14,14 +14,8 @@ const useTreeViewLabel = ({
|
|
|
14
14
|
instance,
|
|
15
15
|
state,
|
|
16
16
|
setState,
|
|
17
|
-
params
|
|
18
|
-
experimentalFeatures
|
|
17
|
+
params
|
|
19
18
|
}) => {
|
|
20
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
21
|
-
if (params.isItemEditable && !experimentalFeatures?.labelEditing) {
|
|
22
|
-
(0, _warning.warnOnce)(['MUI X: The label editing feature requires the `labelEditing` experimental feature to be enabled.', 'You can do it by passing `experimentalFeatures={{ labelEditing: true}}` to the `RichTreeViewPro` component.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/editing/']);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
19
|
const editedItemRef = React.useRef(state.editedItemId);
|
|
26
20
|
const isItemBeingEditedRef = itemId => editedItemRef.current === itemId;
|
|
27
21
|
const setEditedItemId = editedItemId => {
|
|
@@ -31,7 +25,7 @@ const useTreeViewLabel = ({
|
|
|
31
25
|
editedItemRef.current = editedItemId;
|
|
32
26
|
};
|
|
33
27
|
const isItemBeingEdited = itemId => itemId === state.editedItemId;
|
|
34
|
-
const isTreeViewEditable = Boolean(params.isItemEditable)
|
|
28
|
+
const isTreeViewEditable = Boolean(params.isItemEditable);
|
|
35
29
|
const isItemEditable = itemId => {
|
|
36
30
|
if (itemId == null || !isTreeViewEditable) {
|
|
37
31
|
return false;
|
|
@@ -81,6 +75,20 @@ const useTreeViewLabel = ({
|
|
|
81
75
|
};
|
|
82
76
|
exports.useTreeViewLabel = useTreeViewLabel;
|
|
83
77
|
useTreeViewLabel.itemPlugin = _useTreeViewLabel.useTreeViewLabelItemPlugin;
|
|
78
|
+
useTreeViewLabel.getDefaultizedParams = ({
|
|
79
|
+
params,
|
|
80
|
+
experimentalFeatures
|
|
81
|
+
}) => {
|
|
82
|
+
const canUseFeature = experimentalFeatures?.labelEditing;
|
|
83
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
84
|
+
if (params.isItemEditable && !canUseFeature) {
|
|
85
|
+
(0, _warning.warnOnce)(['MUI X: The label editing feature requires the `labelEditing` experimental feature to be enabled.', 'You can do it by passing `experimentalFeatures={{ labelEditing: true}}` to the `RichTreeViewPro` component.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/editing/']);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return (0, _extends2.default)({}, params, {
|
|
89
|
+
isItemEditable: canUseFeature ? params.isItemEditable ?? false : false
|
|
90
|
+
});
|
|
91
|
+
};
|
|
84
92
|
useTreeViewLabel.getInitialState = () => ({
|
|
85
93
|
editedItemId: null
|
|
86
94
|
});
|
|
@@ -183,7 +183,9 @@ useTreeViewSelection.models = {
|
|
|
183
183
|
}
|
|
184
184
|
};
|
|
185
185
|
const DEFAULT_SELECTED_ITEMS = [];
|
|
186
|
-
useTreeViewSelection.getDefaultizedParams =
|
|
186
|
+
useTreeViewSelection.getDefaultizedParams = ({
|
|
187
|
+
params
|
|
188
|
+
}) => (0, _extends2.default)({}, params, {
|
|
187
189
|
disableSelection: params.disableSelection ?? false,
|
|
188
190
|
multiSelect: params.multiSelect ?? false,
|
|
189
191
|
checkboxSelection: params.checkboxSelection ?? false,
|
|
@@ -13,7 +13,7 @@ const extractPluginParamsFromProps = _ref => {
|
|
|
13
13
|
slots,
|
|
14
14
|
slotProps,
|
|
15
15
|
apiRef,
|
|
16
|
-
experimentalFeatures
|
|
16
|
+
experimentalFeatures: inExperimentalFeatures
|
|
17
17
|
},
|
|
18
18
|
plugins
|
|
19
19
|
} = _ref,
|
|
@@ -32,9 +32,13 @@ const extractPluginParamsFromProps = _ref => {
|
|
|
32
32
|
forwardedProps[propName] = prop;
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
|
+
const experimentalFeatures = inExperimentalFeatures ?? {};
|
|
35
36
|
const defaultizedPluginParams = plugins.reduce((acc, plugin) => {
|
|
36
37
|
if (plugin.getDefaultizedParams) {
|
|
37
|
-
return plugin.getDefaultizedParams(
|
|
38
|
+
return plugin.getDefaultizedParams({
|
|
39
|
+
params: acc,
|
|
40
|
+
experimentalFeatures
|
|
41
|
+
});
|
|
38
42
|
}
|
|
39
43
|
return acc;
|
|
40
44
|
}, pluginParams);
|
|
@@ -44,7 +48,7 @@ const extractPluginParamsFromProps = _ref => {
|
|
|
44
48
|
pluginParams: defaultizedPluginParams,
|
|
45
49
|
slots: slots ?? {},
|
|
46
50
|
slotProps: slotProps ?? {},
|
|
47
|
-
experimentalFeatures
|
|
51
|
+
experimentalFeatures
|
|
48
52
|
};
|
|
49
53
|
};
|
|
50
54
|
exports.extractPluginParamsFromProps = extractPluginParamsFromProps;
|
|
@@ -14,6 +14,7 @@ var _TreeViewProvider = require("../internals/TreeViewProvider");
|
|
|
14
14
|
var _useTreeItem2Utils = require("../hooks/useTreeItem2Utils");
|
|
15
15
|
var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
|
|
16
16
|
var _tree = require("../internals/utils/tree");
|
|
17
|
+
var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
|
|
17
18
|
const useTreeItem2 = parameters => {
|
|
18
19
|
const {
|
|
19
20
|
runItemPlugins,
|
|
@@ -30,6 +31,7 @@ const useTreeItem2 = parameters => {
|
|
|
30
31
|
expansion: {
|
|
31
32
|
expansionTrigger
|
|
32
33
|
},
|
|
34
|
+
treeId,
|
|
33
35
|
instance,
|
|
34
36
|
publicAPI
|
|
35
37
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
@@ -55,10 +57,14 @@ const useTreeItem2 = parameters => {
|
|
|
55
57
|
});
|
|
56
58
|
const rootRefObject = React.useRef(null);
|
|
57
59
|
const contentRefObject = React.useRef(null);
|
|
58
|
-
const idAttribute = instance.getTreeItemIdAttribute(itemId, id);
|
|
59
60
|
const handleRootRef = (0, _useForkRef.default)(rootRef, pluginRootRef, rootRefObject);
|
|
60
61
|
const handleContentRef = (0, _useForkRef.default)(contentRef, contentRefObject);
|
|
61
62
|
const checkboxRef = React.useRef(null);
|
|
63
|
+
const idAttribute = (0, _useTreeViewId.generateTreeItemIdAttribute)({
|
|
64
|
+
itemId,
|
|
65
|
+
treeId,
|
|
66
|
+
id
|
|
67
|
+
});
|
|
62
68
|
const rootTabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
|
|
63
69
|
const sharedPropsEnhancerParams = {
|
|
64
70
|
rootRefObject,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.20.0",
|
|
4
4
|
"description": "The community edition of the Tree View components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
"directory": "packages/x-tree-view"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@babel/runtime": "^7.25.
|
|
37
|
-
"@mui/utils": "^5.16.6",
|
|
36
|
+
"@babel/runtime": "^7.25.7",
|
|
37
|
+
"@mui/utils": "^5.16.6 || ^6.0.0",
|
|
38
38
|
"@types/react-transition-group": "^4.4.11",
|
|
39
39
|
"clsx": "^2.1.1",
|
|
40
40
|
"prop-types": "^15.8.1",
|
|
41
41
|
"react-transition-group": "^4.4.5",
|
|
42
|
-
"@mui/x-internals": "7.
|
|
42
|
+
"@mui/x-internals": "7.20.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@emotion/react": "^11.9.0",
|
package/useTreeItem2/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const useTreeItem2: <TSignatures extends import("./useTreeItem2.types").UseTreeItem2MinimalPlugins = import("./useTreeItem2.types").UseTreeItem2MinimalPlugins, TOptionalSignatures extends import("./useTreeItem2.types").UseTreeItem2OptionalPlugins = readonly []>(parameters: import("
|
|
2
|
-
export declare const unstable_useTreeItem2: <TSignatures extends import("./useTreeItem2.types").UseTreeItem2MinimalPlugins = import("./useTreeItem2.types").UseTreeItem2MinimalPlugins, TOptionalSignatures extends import("./useTreeItem2.types").UseTreeItem2OptionalPlugins = readonly []>(parameters: import("
|
|
3
|
-
export type { UseTreeItem2Parameters, UseTreeItem2ReturnValue, UseTreeItem2Status, UseTreeItem2RootSlotOwnProps, UseTreeItem2ContentSlotOwnProps, UseTreeItem2LabelInputSlotOwnProps, UseTreeItem2LabelSlotOwnProps, UseTreeItem2IconContainerSlotOwnProps, UseTreeItem2GroupTransitionSlotOwnProps, UseTreeItem2DragAndDropOverlaySlotOwnProps, } from './useTreeItem2.types';
|
|
1
|
+
export declare const useTreeItem2: <TSignatures extends import("./useTreeItem2.types").UseTreeItem2MinimalPlugins = import("./useTreeItem2.types").UseTreeItem2MinimalPlugins, TOptionalSignatures extends import("./useTreeItem2.types").UseTreeItem2OptionalPlugins = readonly []>(parameters: import("@mui/x-tree-view/useTreeItem2").UseTreeItem2Parameters) => import("@mui/x-tree-view/useTreeItem2").UseTreeItem2ReturnValue<TSignatures, TOptionalSignatures>;
|
|
2
|
+
export declare const unstable_useTreeItem2: <TSignatures extends import("./useTreeItem2.types").UseTreeItem2MinimalPlugins = import("./useTreeItem2.types").UseTreeItem2MinimalPlugins, TOptionalSignatures extends import("./useTreeItem2.types").UseTreeItem2OptionalPlugins = readonly []>(parameters: import("@mui/x-tree-view/useTreeItem2").UseTreeItem2Parameters) => import("@mui/x-tree-view/useTreeItem2").UseTreeItem2ReturnValue<TSignatures, TOptionalSignatures>;
|
|
3
|
+
export type { UseTreeItem2Parameters, UseTreeItem2ReturnValue, UseTreeItem2Status, UseTreeItem2RootSlotOwnProps, UseTreeItem2ContentSlotOwnProps, UseTreeItem2LabelInputSlotOwnProps, UseTreeItem2LabelSlotOwnProps, UseTreeItem2CheckboxSlotOwnProps, UseTreeItem2IconContainerSlotOwnProps, UseTreeItem2GroupTransitionSlotOwnProps, UseTreeItem2DragAndDropOverlaySlotOwnProps, } from './useTreeItem2.types';
|
|
@@ -6,6 +6,7 @@ import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
|
|
|
6
6
|
import { useTreeItem2Utils } from "../hooks/useTreeItem2Utils/index.js";
|
|
7
7
|
import { TreeViewItemDepthContext } from "../internals/TreeViewItemDepthContext/index.js";
|
|
8
8
|
import { isTargetInDescendants } from "../internals/utils/tree.js";
|
|
9
|
+
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
9
10
|
export const useTreeItem2 = parameters => {
|
|
10
11
|
const {
|
|
11
12
|
runItemPlugins,
|
|
@@ -22,6 +23,7 @@ export const useTreeItem2 = parameters => {
|
|
|
22
23
|
expansion: {
|
|
23
24
|
expansionTrigger
|
|
24
25
|
},
|
|
26
|
+
treeId,
|
|
25
27
|
instance,
|
|
26
28
|
publicAPI
|
|
27
29
|
} = useTreeViewContext();
|
|
@@ -47,10 +49,14 @@ export const useTreeItem2 = parameters => {
|
|
|
47
49
|
});
|
|
48
50
|
const rootRefObject = React.useRef(null);
|
|
49
51
|
const contentRefObject = React.useRef(null);
|
|
50
|
-
const idAttribute = instance.getTreeItemIdAttribute(itemId, id);
|
|
51
52
|
const handleRootRef = useForkRef(rootRef, pluginRootRef, rootRefObject);
|
|
52
53
|
const handleContentRef = useForkRef(contentRef, contentRefObject);
|
|
53
54
|
const checkboxRef = React.useRef(null);
|
|
55
|
+
const idAttribute = generateTreeItemIdAttribute({
|
|
56
|
+
itemId,
|
|
57
|
+
treeId,
|
|
58
|
+
id
|
|
59
|
+
});
|
|
54
60
|
const rootTabIndex = instance.canItemBeTabbed(itemId) ? 0 : -1;
|
|
55
61
|
const sharedPropsEnhancerParams = {
|
|
56
62
|
rootRefObject,
|
|
@@ -83,7 +83,7 @@ export type UseTreeItem2LabelInputSlotProps<ExternalProps = {}> = ExternalProps
|
|
|
83
83
|
export interface UseTreeItem2CheckboxSlotOwnProps {
|
|
84
84
|
visible: boolean;
|
|
85
85
|
checked: boolean;
|
|
86
|
-
onChange: React.
|
|
86
|
+
onChange: MuiCancellableEventHandler<React.ChangeEvent<HTMLInputElement>>;
|
|
87
87
|
disabled: boolean;
|
|
88
88
|
ref: React.RefObject<HTMLButtonElement>;
|
|
89
89
|
tabIndex: -1;
|