@mui/x-tree-view 7.0.0-beta.4 → 7.0.0-beta.6
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 +271 -61
- package/RichTreeView/RichTreeView.js +9 -0
- package/RichTreeView/RichTreeView.types.d.ts +7 -1
- package/SimpleTreeView/SimpleTreeView.js +9 -0
- package/SimpleTreeView/SimpleTreeView.types.d.ts +7 -1
- package/TreeItem/TreeItem.js +24 -28
- package/TreeItem/TreeItem.types.d.ts +7 -11
- package/TreeItem/treeItemClasses.d.ts +1 -1
- package/TreeItem/treeItemClasses.js +1 -1
- package/TreeView/TreeView.js +9 -0
- package/hooks/index.d.ts +1 -0
- package/hooks/index.js +1 -0
- package/hooks/package.json +6 -0
- package/hooks/useTreeViewApiRef.d.ts +6 -0
- package/hooks/useTreeViewApiRef.js +5 -0
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/internals/hooks/useTimeout.d.ts +5 -3
- package/internals/hooks/useTimeout.js +13 -5
- package/internals/models/helpers.d.ts +2 -0
- package/internals/models/plugin.d.ts +12 -0
- package/internals/models/treeView.d.ts +1 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +40 -22
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -0
- package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +20 -6
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +29 -16
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +16 -6
- package/internals/useTreeView/useTreeView.d.ts +2 -0
- package/internals/useTreeView/useTreeView.js +12 -0
- package/internals/useTreeView/useTreeView.types.d.ts +2 -1
- package/internals/useTreeView/useTreeView.utils.d.ts +2 -1
- package/internals/useTreeView/useTreeView.utils.js +3 -0
- package/internals/utils/extractPluginParamsFromProps.d.ts +3 -2
- package/internals/utils/extractPluginParamsFromProps.js +5 -3
- package/internals/utils/utils.d.ts +1 -0
- package/internals/utils/utils.js +10 -0
- package/modern/RichTreeView/RichTreeView.js +9 -0
- package/modern/SimpleTreeView/SimpleTreeView.js +9 -0
- package/modern/TreeItem/TreeItem.js +23 -27
- package/modern/TreeItem/treeItemClasses.js +1 -1
- package/modern/TreeView/TreeView.js +9 -0
- package/modern/hooks/index.js +1 -0
- package/modern/hooks/useTreeViewApiRef.js +5 -0
- package/modern/index.js +3 -2
- package/modern/internals/hooks/useTimeout.js +13 -5
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +40 -22
- package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +20 -6
- package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +29 -16
- package/modern/internals/useTreeView/useTreeView.js +12 -0
- package/modern/internals/useTreeView/useTreeView.utils.js +3 -0
- package/modern/internals/utils/extractPluginParamsFromProps.js +5 -3
- package/modern/internals/utils/utils.js +10 -0
- package/node/RichTreeView/RichTreeView.js +9 -0
- package/node/SimpleTreeView/SimpleTreeView.js +9 -0
- package/node/TreeItem/TreeItem.js +23 -27
- package/node/TreeItem/treeItemClasses.js +1 -1
- package/node/TreeView/TreeView.js +9 -0
- package/node/hooks/index.js +12 -0
- package/node/hooks/useTreeViewApiRef.js +14 -0
- package/node/index.js +13 -1
- package/node/internals/hooks/useTimeout.js +13 -4
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +39 -21
- package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +20 -6
- package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +28 -15
- package/node/internals/useTreeView/useTreeView.js +13 -0
- package/node/internals/useTreeView/useTreeView.utils.js +6 -2
- package/node/internals/utils/extractPluginParamsFromProps.js +5 -3
- package/node/internals/utils/utils.js +17 -0
- package/package.json +2 -2
|
@@ -12,13 +12,14 @@ var _useTreeView = require("../../useTreeView/useTreeView.utils");
|
|
|
12
12
|
var _publishTreeViewEvent = require("../../utils/publishTreeViewEvent");
|
|
13
13
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
|
-
const
|
|
15
|
+
const updateNodesState = ({
|
|
16
16
|
items,
|
|
17
17
|
isItemDisabled,
|
|
18
18
|
getItemLabel,
|
|
19
19
|
getItemId
|
|
20
20
|
}) => {
|
|
21
21
|
const nodeMap = {};
|
|
22
|
+
const itemMap = {};
|
|
22
23
|
const processItem = (item, index, parentId) => {
|
|
23
24
|
const id = getItemId ? getItemId(item) : item.id;
|
|
24
25
|
if (id == null) {
|
|
@@ -36,10 +37,11 @@ const updateState = ({
|
|
|
36
37
|
label,
|
|
37
38
|
index,
|
|
38
39
|
parentId,
|
|
39
|
-
idAttribute:
|
|
40
|
+
idAttribute: undefined,
|
|
40
41
|
expandable: !!item.children?.length,
|
|
41
42
|
disabled: isItemDisabled ? isItemDisabled(item) : false
|
|
42
43
|
};
|
|
44
|
+
itemMap[id] = item;
|
|
43
45
|
return {
|
|
44
46
|
id,
|
|
45
47
|
children: item.children?.map((child, childIndex) => processItem(child, childIndex, id))
|
|
@@ -48,16 +50,19 @@ const updateState = ({
|
|
|
48
50
|
const nodeTree = items.map((item, itemIndex) => processItem(item, itemIndex, null));
|
|
49
51
|
return {
|
|
50
52
|
nodeMap,
|
|
51
|
-
nodeTree
|
|
53
|
+
nodeTree,
|
|
54
|
+
itemMap
|
|
52
55
|
};
|
|
53
56
|
};
|
|
54
57
|
const useTreeViewNodes = ({
|
|
55
58
|
instance,
|
|
59
|
+
publicAPI,
|
|
56
60
|
params,
|
|
57
61
|
state,
|
|
58
62
|
setState
|
|
59
63
|
}) => {
|
|
60
|
-
const getNode = React.useCallback(nodeId => state.nodeMap[nodeId], [state.nodeMap]);
|
|
64
|
+
const getNode = React.useCallback(nodeId => state.nodes.nodeMap[nodeId], [state.nodes.nodeMap]);
|
|
65
|
+
const getItem = React.useCallback(nodeId => state.nodes.itemMap[nodeId], [state.nodes.itemMap]);
|
|
61
66
|
const isNodeDisabled = React.useCallback(nodeId => {
|
|
62
67
|
if (nodeId == null) {
|
|
63
68
|
return false;
|
|
@@ -79,7 +84,7 @@ const useTreeViewNodes = ({
|
|
|
79
84
|
}
|
|
80
85
|
return false;
|
|
81
86
|
}, [instance]);
|
|
82
|
-
const getChildrenIds = (0, _useEventCallback.default)(nodeId => Object.values(state.nodeMap).filter(node => node.parentId === nodeId).sort((a, b) => a.index - b.index).map(child => child.id));
|
|
87
|
+
const getChildrenIds = (0, _useEventCallback.default)(nodeId => Object.values(state.nodes.nodeMap).filter(node => node.parentId === nodeId).sort((a, b) => a.index - b.index).map(child => child.id));
|
|
83
88
|
const getNavigableChildrenIds = nodeId => {
|
|
84
89
|
let childrenIds = instance.getChildrenIds(nodeId);
|
|
85
90
|
if (!params.disabledItemsFocusable) {
|
|
@@ -89,20 +94,22 @@ const useTreeViewNodes = ({
|
|
|
89
94
|
};
|
|
90
95
|
React.useEffect(() => {
|
|
91
96
|
setState(prevState => {
|
|
92
|
-
const newState =
|
|
97
|
+
const newState = updateNodesState({
|
|
93
98
|
items: params.items,
|
|
94
99
|
isItemDisabled: params.isItemDisabled,
|
|
95
100
|
getItemId: params.getItemId,
|
|
96
101
|
getItemLabel: params.getItemLabel
|
|
97
102
|
});
|
|
98
|
-
Object.values(prevState.nodeMap).forEach(node => {
|
|
103
|
+
Object.values(prevState.nodes.nodeMap).forEach(node => {
|
|
99
104
|
if (!newState.nodeMap[node.id]) {
|
|
100
105
|
(0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeNode', {
|
|
101
106
|
id: node.id
|
|
102
107
|
});
|
|
103
108
|
}
|
|
104
109
|
});
|
|
105
|
-
return (0, _extends2.default)({}, prevState,
|
|
110
|
+
return (0, _extends2.default)({}, prevState, {
|
|
111
|
+
nodes: newState
|
|
112
|
+
});
|
|
106
113
|
});
|
|
107
114
|
}, [instance, setState, params.items, params.isItemDisabled, params.getItemId, params.getItemLabel]);
|
|
108
115
|
const getNodesToRender = (0, _useEventCallback.default)(() => {
|
|
@@ -110,7 +117,7 @@ const useTreeViewNodes = ({
|
|
|
110
117
|
id,
|
|
111
118
|
children
|
|
112
119
|
}) => {
|
|
113
|
-
const node = state.nodeMap[id];
|
|
120
|
+
const node = state.nodes.nodeMap[id];
|
|
114
121
|
return {
|
|
115
122
|
label: node.label,
|
|
116
123
|
nodeId: node.id,
|
|
@@ -118,15 +125,19 @@ const useTreeViewNodes = ({
|
|
|
118
125
|
children: children?.map(getPropsFromNodeId)
|
|
119
126
|
};
|
|
120
127
|
};
|
|
121
|
-
return state.nodeTree.map(getPropsFromNodeId);
|
|
128
|
+
return state.nodes.nodeTree.map(getPropsFromNodeId);
|
|
122
129
|
});
|
|
123
130
|
(0, _useTreeView.populateInstance)(instance, {
|
|
124
131
|
getNode,
|
|
132
|
+
getItem,
|
|
125
133
|
getNodesToRender,
|
|
126
134
|
getChildrenIds,
|
|
127
135
|
getNavigableChildrenIds,
|
|
128
136
|
isNodeDisabled
|
|
129
137
|
});
|
|
138
|
+
(0, _useTreeView.populatePublicAPI)(publicAPI, {
|
|
139
|
+
getItem
|
|
140
|
+
});
|
|
130
141
|
return {
|
|
131
142
|
contextValue: {
|
|
132
143
|
disabledItemsFocusable: params.disabledItemsFocusable
|
|
@@ -134,11 +145,13 @@ const useTreeViewNodes = ({
|
|
|
134
145
|
};
|
|
135
146
|
};
|
|
136
147
|
exports.useTreeViewNodes = useTreeViewNodes;
|
|
137
|
-
useTreeViewNodes.getInitialState = params =>
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
148
|
+
useTreeViewNodes.getInitialState = params => ({
|
|
149
|
+
nodes: updateNodesState({
|
|
150
|
+
items: params.items,
|
|
151
|
+
isItemDisabled: params.isItemDisabled,
|
|
152
|
+
getItemId: params.getItemId,
|
|
153
|
+
getItemLabel: params.getItemLabel
|
|
154
|
+
})
|
|
142
155
|
});
|
|
143
156
|
useTreeViewNodes.getDefaultizedParams = params => (0, _extends2.default)({}, params, {
|
|
144
157
|
disabledItemsFocusable: params.disabledItemsFocusable ?? false
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.useTreeView = void 0;
|
|
8
|
+
exports.useTreeViewApiInitialization = useTreeViewApiInitialization;
|
|
8
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
10
|
var React = _interopRequireWildcard(require("react"));
|
|
10
11
|
var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
|
|
@@ -12,6 +13,16 @@ var _useTreeViewModels = require("./useTreeViewModels");
|
|
|
12
13
|
var _corePlugins = require("../corePlugins");
|
|
13
14
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
14
15
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
+
function useTreeViewApiInitialization(inputApiRef) {
|
|
17
|
+
const fallbackPublicApiRef = React.useRef({});
|
|
18
|
+
if (inputApiRef) {
|
|
19
|
+
if (inputApiRef.current == null) {
|
|
20
|
+
inputApiRef.current = {};
|
|
21
|
+
}
|
|
22
|
+
return inputApiRef.current;
|
|
23
|
+
}
|
|
24
|
+
return fallbackPublicApiRef.current;
|
|
25
|
+
}
|
|
15
26
|
const useTreeView = inParams => {
|
|
16
27
|
const plugins = [..._corePlugins.TREE_VIEW_CORE_PLUGINS, ...inParams.plugins];
|
|
17
28
|
const params = plugins.reduce((acc, plugin) => {
|
|
@@ -23,6 +34,7 @@ const useTreeView = inParams => {
|
|
|
23
34
|
const models = (0, _useTreeViewModels.useTreeViewModels)(plugins, params);
|
|
24
35
|
const instanceRef = React.useRef({});
|
|
25
36
|
const instance = instanceRef.current;
|
|
37
|
+
const publicAPI = useTreeViewApiInitialization(inParams.apiRef);
|
|
26
38
|
const innerRootRef = React.useRef(null);
|
|
27
39
|
const handleRootRef = (0, _useForkRef.default)(innerRootRef, inParams.rootRef);
|
|
28
40
|
const [state, setState] = React.useState(() => {
|
|
@@ -41,6 +53,7 @@ const useTreeView = inParams => {
|
|
|
41
53
|
const runPlugin = plugin => {
|
|
42
54
|
const pluginResponse = plugin({
|
|
43
55
|
instance,
|
|
56
|
+
publicAPI,
|
|
44
57
|
params,
|
|
45
58
|
slots: params.slots,
|
|
46
59
|
slotProps: params.slotProps,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.populateInstance = exports.getPreviousNode = exports.getNextNode = exports.getLastNode = exports.getFirstNode = void 0;
|
|
6
|
+
exports.populatePublicAPI = exports.populateInstance = exports.getPreviousNode = exports.getNextNode = exports.getLastNode = exports.getFirstNode = void 0;
|
|
7
7
|
const getPreviousNode = (instance, nodeId) => {
|
|
8
8
|
const node = instance.getNode(nodeId);
|
|
9
9
|
const siblings = instance.getNavigableChildrenIds(node.parentId);
|
|
@@ -51,4 +51,8 @@ exports.getFirstNode = getFirstNode;
|
|
|
51
51
|
const populateInstance = (instance, methods) => {
|
|
52
52
|
Object.assign(instance, methods);
|
|
53
53
|
};
|
|
54
|
-
exports.populateInstance = populateInstance;
|
|
54
|
+
exports.populateInstance = populateInstance;
|
|
55
|
+
const populatePublicAPI = (publicAPI, methods) => {
|
|
56
|
+
Object.assign(publicAPI, methods);
|
|
57
|
+
};
|
|
58
|
+
exports.populatePublicAPI = populatePublicAPI;
|
|
@@ -6,12 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.extractPluginParamsFromProps = void 0;
|
|
8
8
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
9
|
-
const _excluded = ["slots", "slotProps"];
|
|
9
|
+
const _excluded = ["slots", "slotProps", "apiRef"];
|
|
10
10
|
const extractPluginParamsFromProps = _ref => {
|
|
11
11
|
let {
|
|
12
12
|
props: {
|
|
13
13
|
slots,
|
|
14
|
-
slotProps
|
|
14
|
+
slotProps,
|
|
15
|
+
apiRef
|
|
15
16
|
},
|
|
16
17
|
plugins,
|
|
17
18
|
rootRef
|
|
@@ -25,7 +26,8 @@ const extractPluginParamsFromProps = _ref => {
|
|
|
25
26
|
plugins,
|
|
26
27
|
rootRef,
|
|
27
28
|
slots: slots ?? {},
|
|
28
|
-
slotProps: slotProps ?? {}
|
|
29
|
+
slotProps: slotProps ?? {},
|
|
30
|
+
apiRef
|
|
29
31
|
};
|
|
30
32
|
const otherProps = {};
|
|
31
33
|
Object.keys(props).forEach(propName => {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getActiveElement = void 0;
|
|
7
|
+
const getActiveElement = (root = document) => {
|
|
8
|
+
const activeEl = root.activeElement;
|
|
9
|
+
if (!activeEl) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
if (activeEl.shadowRoot) {
|
|
13
|
+
return getActiveElement(activeEl.shadowRoot);
|
|
14
|
+
}
|
|
15
|
+
return activeEl;
|
|
16
|
+
};
|
|
17
|
+
exports.getActiveElement = getActiveElement;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.6",
|
|
4
4
|
"description": "The community edition of the tree view components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"directory": "packages/x-tree-view"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@babel/runtime": "^7.
|
|
35
|
+
"@babel/runtime": "^7.24.0",
|
|
36
36
|
"@mui/base": "^5.0.0-beta.36",
|
|
37
37
|
"@mui/system": "^5.15.9",
|
|
38
38
|
"@mui/utils": "^5.15.9",
|