@mui/x-tree-view-pro 8.0.0-alpha.9 → 8.0.0-beta.1
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 +1523 -0
- package/README.md +1 -1
- package/RichTreeViewPro/RichTreeViewPro.d.ts +5 -5
- package/RichTreeViewPro/RichTreeViewPro.js +101 -89
- package/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +4 -5
- package/RichTreeViewPro/RichTreeViewPro.plugins.js +10 -3
- package/RichTreeViewPro/RichTreeViewPro.types.d.ts +38 -38
- package/RichTreeViewPro/RichTreeViewPro.types.js +5 -1
- package/RichTreeViewPro/index.d.ts +3 -3
- package/RichTreeViewPro/index.js +27 -3
- package/RichTreeViewPro/richTreeViewProClasses.d.ts +3 -3
- package/RichTreeViewPro/richTreeViewProClasses.js +13 -5
- package/esm/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
- package/{node → esm}/RichTreeViewPro/RichTreeViewPro.js +95 -95
- package/esm/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +7 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.plugins.js +6 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.types.d.ts +51 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.types.js +1 -0
- package/esm/RichTreeViewPro/index.d.ts +3 -0
- package/esm/RichTreeViewPro/index.js +3 -0
- package/esm/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
- package/esm/RichTreeViewPro/richTreeViewProClasses.js +6 -0
- package/esm/index.d.ts +12 -0
- package/esm/index.js +22 -0
- package/esm/internals/index.d.ts +1 -0
- package/esm/internals/index.js +1 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/index.js +1 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +3 -0
- package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +13 -22
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +203 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +417 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +50 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +127 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +1 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +37 -0
- package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +21 -31
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +3 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +288 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/utils.d.ts +32 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/utils.js +85 -0
- package/esm/internals/utils/releaseInfo.d.ts +1 -0
- package/esm/internals/utils/releaseInfo.js +13 -0
- package/esm/internals/zero-styled/index.d.ts +3 -0
- package/esm/internals/zero-styled/index.js +7 -0
- package/esm/package.json +1 -0
- package/esm/themeAugmentation/components.d.ts +11 -0
- package/esm/themeAugmentation/index.d.ts +3 -0
- package/esm/themeAugmentation/index.js +0 -0
- package/esm/themeAugmentation/overrides.d.ts +12 -0
- package/esm/themeAugmentation/props.d.ts +10 -0
- package/index.d.ts +2 -2
- package/index.js +147 -15
- package/internals/index.d.ts +1 -1
- package/internals/index.js +12 -1
- package/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -2
- package/internals/plugins/useTreeViewItemsReordering/index.js +12 -1
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +2 -2
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +1 -1
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +22 -13
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +81 -69
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +335 -97
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +30 -9
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +105 -119
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +5 -1
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +28 -15
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +31 -21
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
- package/internals/plugins/useTreeViewLazyLoading/index.js +12 -0
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +3 -0
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +297 -0
- package/internals/plugins/useTreeViewLazyLoading/utils.d.ts +32 -0
- package/internals/plugins/useTreeViewLazyLoading/utils.js +89 -0
- package/internals/utils/releaseInfo.d.ts +1 -1
- package/internals/utils/releaseInfo.js +13 -5
- package/internals/zero-styled/index.d.ts +1 -1
- package/internals/zero-styled/index.js +14 -4
- package/modern/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
- package/modern/RichTreeViewPro/RichTreeViewPro.js +21 -15
- package/modern/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +7 -0
- package/modern/RichTreeViewPro/RichTreeViewPro.plugins.js +2 -1
- package/modern/RichTreeViewPro/RichTreeViewPro.types.d.ts +51 -0
- package/modern/RichTreeViewPro/index.d.ts +3 -0
- package/modern/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
- package/modern/index.d.ts +12 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.d.ts +1 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +3 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +6 -6
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +54 -51
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +417 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +23 -8
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +127 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +37 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +3 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +288 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/utils.d.ts +32 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/utils.js +85 -0
- package/modern/internals/utils/releaseInfo.d.ts +1 -0
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/internals/zero-styled/index.d.ts +3 -0
- package/modern/package.json +1 -0
- package/modern/themeAugmentation/components.d.ts +11 -0
- package/modern/themeAugmentation/index.d.ts +3 -0
- package/modern/themeAugmentation/overrides.d.ts +12 -0
- package/modern/themeAugmentation/props.d.ts +10 -0
- package/package.json +43 -10
- package/themeAugmentation/components.d.ts +1 -3
- package/themeAugmentation/index.d.ts +1 -1
- package/themeAugmentation/index.js +1 -0
- package/themeAugmentation/overrides.d.ts +2 -3
- package/themeAugmentation/props.d.ts +2 -4
- package/tsconfig.build.tsbuildinfo +1 -0
- package/RichTreeViewPro/package.json +0 -6
- package/internals/package.json +0 -6
- package/node/RichTreeViewPro/RichTreeViewPro.plugins.js +0 -11
- package/node/RichTreeViewPro/RichTreeViewPro.types.js +0 -5
- package/node/RichTreeViewPro/index.js +0 -27
- package/node/RichTreeViewPro/richTreeViewProClasses.js +0 -14
- package/node/index.js +0 -154
- package/node/internals/index.js +0 -12
- package/node/internals/plugins/useTreeViewItemsReordering/index.js +0 -12
- package/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +0 -209
- package/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +0 -42
- package/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +0 -5
- package/node/internals/utils/releaseInfo.js +0 -21
- package/node/internals/zero-styled/index.js +0 -17
- package/node/themeAugmentation/index.js +0 -1
- package/themeAugmentation/package.json +0 -6
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.useTreeViewLazyLoading = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var React = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
|
|
12
|
+
var _warning = require("@mui/x-internals/warning");
|
|
13
|
+
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
14
|
+
var _internals = require("@mui/x-tree-view/internals");
|
|
15
|
+
var _utils = require("@mui/x-tree-view/utils");
|
|
16
|
+
var _utils2 = require("./utils");
|
|
17
|
+
const INITIAL_STATE = {
|
|
18
|
+
loading: {},
|
|
19
|
+
errors: {}
|
|
20
|
+
};
|
|
21
|
+
const noopCache = {
|
|
22
|
+
clear: () => {},
|
|
23
|
+
get: () => undefined,
|
|
24
|
+
set: () => {}
|
|
25
|
+
};
|
|
26
|
+
function getCache(cacheProp) {
|
|
27
|
+
if (cacheProp === null) {
|
|
28
|
+
return noopCache;
|
|
29
|
+
}
|
|
30
|
+
return cacheProp ?? new _utils.DataSourceCacheDefault({});
|
|
31
|
+
}
|
|
32
|
+
const useTreeViewLazyLoading = ({
|
|
33
|
+
instance,
|
|
34
|
+
params,
|
|
35
|
+
store
|
|
36
|
+
}) => {
|
|
37
|
+
const isLazyLoadingEnabled = params.dataSource?.getChildrenCount !== undefined;
|
|
38
|
+
const firstRenderRef = React.useRef(true);
|
|
39
|
+
const nestedDataManager = (0, _useLazyRef.default)(() => new _utils2.NestedDataManager(instance)).current;
|
|
40
|
+
const cacheRef = (0, _useLazyRef.default)(() => getCache(params.dataSourceCache));
|
|
41
|
+
const setDataSourceLoading = (0, _useEventCallback.default)((itemId, isLoading) => {
|
|
42
|
+
if (!isLazyLoadingEnabled) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
store.update(prevState => {
|
|
46
|
+
if (!prevState.lazyLoading.dataSource.loading[itemId] && !isLoading) {
|
|
47
|
+
return prevState;
|
|
48
|
+
}
|
|
49
|
+
const loading = (0, _extends2.default)({}, prevState.lazyLoading.dataSource.loading);
|
|
50
|
+
if (isLoading === false) {
|
|
51
|
+
delete loading[itemId];
|
|
52
|
+
} else {
|
|
53
|
+
loading[itemId] = isLoading;
|
|
54
|
+
}
|
|
55
|
+
return (0, _extends2.default)({}, prevState, {
|
|
56
|
+
lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
|
|
57
|
+
dataSource: (0, _extends2.default)({}, prevState.lazyLoading.dataSource, {
|
|
58
|
+
loading
|
|
59
|
+
})
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
const setDataSourceError = (itemId, error) => {
|
|
65
|
+
if (!isLazyLoadingEnabled) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
store.update(prevState => {
|
|
69
|
+
const errors = (0, _extends2.default)({}, prevState.lazyLoading.dataSource.errors);
|
|
70
|
+
if (error === null && errors[itemId] !== undefined) {
|
|
71
|
+
delete errors[itemId];
|
|
72
|
+
} else {
|
|
73
|
+
errors[itemId] = error;
|
|
74
|
+
}
|
|
75
|
+
errors[itemId] = error;
|
|
76
|
+
return (0, _extends2.default)({}, prevState, {
|
|
77
|
+
lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
|
|
78
|
+
dataSource: (0, _extends2.default)({}, prevState.lazyLoading.dataSource, {
|
|
79
|
+
errors
|
|
80
|
+
})
|
|
81
|
+
})
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
const resetDataSourceState = (0, _useEventCallback.default)(() => {
|
|
86
|
+
if (!isLazyLoadingEnabled) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
store.update(prevState => (0, _extends2.default)({}, prevState, {
|
|
90
|
+
lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
|
|
91
|
+
dataSource: INITIAL_STATE
|
|
92
|
+
})
|
|
93
|
+
}));
|
|
94
|
+
});
|
|
95
|
+
const fetchItems = (0, _useEventCallback.default)(async parentIds => {
|
|
96
|
+
if (!isLazyLoadingEnabled) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const getChildrenCount = params.dataSource?.getChildrenCount || (() => 0);
|
|
100
|
+
const getTreeItems = params.dataSource?.getTreeItems;
|
|
101
|
+
if (!getTreeItems) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (parentIds) {
|
|
105
|
+
await nestedDataManager.queue(parentIds);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
nestedDataManager.clear();
|
|
109
|
+
|
|
110
|
+
// reset the state if we are refetching the first visible items
|
|
111
|
+
if ((0, _internals.selectorDataSourceState)(store.value) !== INITIAL_STATE) {
|
|
112
|
+
resetDataSourceState();
|
|
113
|
+
}
|
|
114
|
+
// handle caching here
|
|
115
|
+
const cachedData = cacheRef.current.get('root');
|
|
116
|
+
if (cachedData !== undefined) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// handle loading here
|
|
121
|
+
instance.setTreeViewLoading(true);
|
|
122
|
+
try {
|
|
123
|
+
const getTreeItemsResponse = await getTreeItems();
|
|
124
|
+
|
|
125
|
+
// set caching
|
|
126
|
+
cacheRef.current.set('root', getTreeItemsResponse);
|
|
127
|
+
|
|
128
|
+
// update the items in the state
|
|
129
|
+
instance.addItems({
|
|
130
|
+
items: getTreeItemsResponse,
|
|
131
|
+
depth: 0,
|
|
132
|
+
getChildrenCount
|
|
133
|
+
});
|
|
134
|
+
} catch (error) {
|
|
135
|
+
// set the items to empty
|
|
136
|
+
instance.addItems({
|
|
137
|
+
items: [],
|
|
138
|
+
depth: 0,
|
|
139
|
+
getChildrenCount
|
|
140
|
+
});
|
|
141
|
+
// set error state
|
|
142
|
+
instance.setTreeViewError(error);
|
|
143
|
+
} finally {
|
|
144
|
+
// set loading state
|
|
145
|
+
instance.setTreeViewLoading(false);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
const fetchItemChildren = (0, _useEventCallback.default)(async id => {
|
|
149
|
+
if (!isLazyLoadingEnabled) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const getChildrenCount = params.dataSource?.getChildrenCount || (() => 0);
|
|
153
|
+
const getTreeItems = params.dataSource?.getTreeItems;
|
|
154
|
+
if (!getTreeItems) {
|
|
155
|
+
nestedDataManager.clearPendingRequest(id);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const parent = (0, _internals.selectorItemMeta)(store.value, id);
|
|
159
|
+
if (!parent) {
|
|
160
|
+
nestedDataManager.clearPendingRequest(id);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const depth = parent.depth ? parent.depth + 1 : 1;
|
|
164
|
+
|
|
165
|
+
// handle loading here
|
|
166
|
+
instance.setDataSourceLoading(id, true);
|
|
167
|
+
|
|
168
|
+
// handle caching here
|
|
169
|
+
const cachedData = cacheRef.current.get(id);
|
|
170
|
+
if (cachedData !== undefined && cachedData !== -1) {
|
|
171
|
+
nestedDataManager.setRequestSettled(id);
|
|
172
|
+
instance.addItems({
|
|
173
|
+
items: cachedData,
|
|
174
|
+
depth,
|
|
175
|
+
parentId: id,
|
|
176
|
+
getChildrenCount
|
|
177
|
+
});
|
|
178
|
+
instance.setDataSourceLoading(id, false);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (cachedData === -1) {
|
|
182
|
+
instance.removeChildren(id);
|
|
183
|
+
}
|
|
184
|
+
const existingError = (0, _internals.selectorGetTreeItemError)(store.value, id) ?? null;
|
|
185
|
+
if (existingError) {
|
|
186
|
+
instance.setDataSourceError(id, null);
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const getTreeItemsResponse = await getTreeItems(id);
|
|
190
|
+
nestedDataManager.setRequestSettled(id);
|
|
191
|
+
|
|
192
|
+
// set caching
|
|
193
|
+
cacheRef.current.set(id, getTreeItemsResponse);
|
|
194
|
+
// update the items in the state
|
|
195
|
+
instance.addItems({
|
|
196
|
+
items: getTreeItemsResponse,
|
|
197
|
+
depth,
|
|
198
|
+
parentId: id,
|
|
199
|
+
getChildrenCount
|
|
200
|
+
});
|
|
201
|
+
} catch (error) {
|
|
202
|
+
const childrenFetchError = error;
|
|
203
|
+
// handle errors here
|
|
204
|
+
instance.setDataSourceError(id, childrenFetchError);
|
|
205
|
+
instance.removeChildren(id);
|
|
206
|
+
} finally {
|
|
207
|
+
// unset loading
|
|
208
|
+
instance.setDataSourceLoading(id, false);
|
|
209
|
+
nestedDataManager.setRequestSettled(id);
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
(0, _internals.useInstanceEventHandler)(instance, 'beforeItemToggleExpansion', async eventParameters => {
|
|
213
|
+
if (!isLazyLoadingEnabled || !eventParameters.shouldBeExpanded) {
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
eventParameters.isExpansionPrevented = true;
|
|
217
|
+
await instance.fetchItems([eventParameters.itemId]);
|
|
218
|
+
const fetchErrors = Boolean((0, _internals.selectorGetTreeItemError)(store.value, eventParameters.itemId));
|
|
219
|
+
if (!fetchErrors) {
|
|
220
|
+
instance.applyItemExpansion({
|
|
221
|
+
itemId: eventParameters.itemId,
|
|
222
|
+
shouldBeExpanded: true,
|
|
223
|
+
event: eventParameters.event
|
|
224
|
+
});
|
|
225
|
+
if ((0, _internals.selectorIsItemSelected)(store.value, eventParameters.itemId)) {
|
|
226
|
+
// make sure selection propagation works correctly
|
|
227
|
+
instance.setItemSelection({
|
|
228
|
+
event: eventParameters.event,
|
|
229
|
+
itemId: eventParameters.itemId,
|
|
230
|
+
keepExistingSelection: true,
|
|
231
|
+
shouldBeSelected: true
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
React.useEffect(() => {
|
|
237
|
+
if (isLazyLoadingEnabled && firstRenderRef.current) {
|
|
238
|
+
store.update(prevState => (0, _extends2.default)({}, prevState, {
|
|
239
|
+
lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
|
|
240
|
+
enabled: true
|
|
241
|
+
})
|
|
242
|
+
}));
|
|
243
|
+
if (params.items.length) {
|
|
244
|
+
const getChildrenCount = params.dataSource?.getChildrenCount || (() => 0);
|
|
245
|
+
instance.addItems({
|
|
246
|
+
items: params.items,
|
|
247
|
+
depth: 0,
|
|
248
|
+
getChildrenCount
|
|
249
|
+
});
|
|
250
|
+
} else {
|
|
251
|
+
instance.fetchItems();
|
|
252
|
+
}
|
|
253
|
+
firstRenderRef.current = false;
|
|
254
|
+
}
|
|
255
|
+
}, [instance, params.items, params.dataSource, isLazyLoadingEnabled, store]);
|
|
256
|
+
if (isLazyLoadingEnabled) {
|
|
257
|
+
instance.preventItemUpdates();
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
instance: {
|
|
261
|
+
fetchItemChildren,
|
|
262
|
+
fetchItems,
|
|
263
|
+
setDataSourceLoading,
|
|
264
|
+
setDataSourceError
|
|
265
|
+
},
|
|
266
|
+
publicAPI: {}
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
exports.useTreeViewLazyLoading = useTreeViewLazyLoading;
|
|
270
|
+
useTreeViewLazyLoading.getDefaultizedParams = ({
|
|
271
|
+
params,
|
|
272
|
+
experimentalFeatures
|
|
273
|
+
}) => {
|
|
274
|
+
const canUseFeature = experimentalFeatures?.lazyLoading;
|
|
275
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
276
|
+
if (params.dataSource && !canUseFeature) {
|
|
277
|
+
(0, _warning.warnOnce)(['MUI X: The label editing feature requires the `lazyLoading` experimental feature to be enabled.', 'You can do it by passing `experimentalFeatures={{ lazyLoading: true}}` to the Rich Tree View Pro component.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/lazy-loading/']);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
const defaultDataSource = params?.dataSource ?? {
|
|
281
|
+
getChildrenCount: () => 0,
|
|
282
|
+
getTreeItems: () => Promise.resolve([])
|
|
283
|
+
};
|
|
284
|
+
return (0, _extends2.default)({}, params, {
|
|
285
|
+
dataSource: canUseFeature ? defaultDataSource : {}
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
useTreeViewLazyLoading.getInitialState = () => ({
|
|
289
|
+
lazyLoading: {
|
|
290
|
+
enabled: false,
|
|
291
|
+
dataSource: INITIAL_STATE
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
useTreeViewLazyLoading.params = {
|
|
295
|
+
dataSource: true,
|
|
296
|
+
dataSourceCache: true
|
|
297
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { TreeViewInstance, UseTreeViewLazyLoadingSignature } from '@mui/x-tree-view/internals';
|
|
2
|
+
import { TreeViewItemId } from '@mui/x-tree-view/models';
|
|
3
|
+
export declare enum RequestStatus {
|
|
4
|
+
QUEUED = 0,
|
|
5
|
+
PENDING = 1,
|
|
6
|
+
SETTLED = 2,
|
|
7
|
+
UNKNOWN = 3,
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Plugins that the `NestedDataManager` class can use if they are present, but are not required.
|
|
11
|
+
*/
|
|
12
|
+
export type NestedDataManagerOptionalPlugins = readonly [];
|
|
13
|
+
/**
|
|
14
|
+
* Fetches row children from the server with option to limit the number of concurrent requests
|
|
15
|
+
* Determines the status of a request based on the enum `RequestStatus`
|
|
16
|
+
* Uses `ParentId` to uniquely identify a request
|
|
17
|
+
*/
|
|
18
|
+
export declare class NestedDataManager {
|
|
19
|
+
private pendingRequests;
|
|
20
|
+
private queuedRequests;
|
|
21
|
+
private settledRequests;
|
|
22
|
+
private instance;
|
|
23
|
+
private maxConcurrentRequests;
|
|
24
|
+
constructor(instance: TreeViewInstance<[UseTreeViewLazyLoadingSignature]>, maxConcurrentRequests?: number);
|
|
25
|
+
private processQueue;
|
|
26
|
+
queue: (ids: TreeViewItemId[]) => Promise<void>;
|
|
27
|
+
setRequestSettled: (id: TreeViewItemId) => Promise<void>;
|
|
28
|
+
clear: () => void;
|
|
29
|
+
clearPendingRequest: (id: TreeViewItemId) => Promise<void>;
|
|
30
|
+
getRequestStatus: (id: TreeViewItemId) => RequestStatus;
|
|
31
|
+
getActiveRequestsCount: () => number;
|
|
32
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RequestStatus = exports.NestedDataManager = void 0;
|
|
7
|
+
const MAX_CONCURRENT_REQUESTS = Infinity;
|
|
8
|
+
let RequestStatus = exports.RequestStatus = /*#__PURE__*/function (RequestStatus) {
|
|
9
|
+
RequestStatus[RequestStatus["QUEUED"] = 0] = "QUEUED";
|
|
10
|
+
RequestStatus[RequestStatus["PENDING"] = 1] = "PENDING";
|
|
11
|
+
RequestStatus[RequestStatus["SETTLED"] = 2] = "SETTLED";
|
|
12
|
+
RequestStatus[RequestStatus["UNKNOWN"] = 3] = "UNKNOWN";
|
|
13
|
+
return RequestStatus;
|
|
14
|
+
}({});
|
|
15
|
+
/**
|
|
16
|
+
* Plugins that need to be present in the Tree View in order for the `NestedDataManager` class to work correctly.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Plugins that the `NestedDataManager` class can use if they are present, but are not required.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Fetches row children from the server with option to limit the number of concurrent requests
|
|
23
|
+
* Determines the status of a request based on the enum `RequestStatus`
|
|
24
|
+
* Uses `ParentId` to uniquely identify a request
|
|
25
|
+
*/
|
|
26
|
+
class NestedDataManager {
|
|
27
|
+
constructor(instance, maxConcurrentRequests = MAX_CONCURRENT_REQUESTS) {
|
|
28
|
+
this.pendingRequests = new Set();
|
|
29
|
+
this.queuedRequests = new Set();
|
|
30
|
+
this.settledRequests = new Set();
|
|
31
|
+
this.instance = void 0;
|
|
32
|
+
this.maxConcurrentRequests = void 0;
|
|
33
|
+
this.processQueue = async () => {
|
|
34
|
+
if (this.queuedRequests.size === 0 || this.pendingRequests.size >= this.maxConcurrentRequests) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const loopLength = Math.min(this.maxConcurrentRequests - this.pendingRequests.size, this.queuedRequests.size);
|
|
38
|
+
if (loopLength === 0) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const fetchQueue = Array.from(this.queuedRequests);
|
|
42
|
+
const fetchPromises = [];
|
|
43
|
+
for (let i = 0; i < loopLength; i += 1) {
|
|
44
|
+
const id = fetchQueue[i];
|
|
45
|
+
this.queuedRequests.delete(id);
|
|
46
|
+
this.pendingRequests.add(id);
|
|
47
|
+
fetchPromises.push(this.instance.fetchItemChildren(id));
|
|
48
|
+
}
|
|
49
|
+
await Promise.all(fetchPromises);
|
|
50
|
+
};
|
|
51
|
+
this.queue = async ids => {
|
|
52
|
+
const loadingIds = {};
|
|
53
|
+
ids.forEach(id => {
|
|
54
|
+
this.queuedRequests.add(id);
|
|
55
|
+
loadingIds[id] = true;
|
|
56
|
+
});
|
|
57
|
+
await this.processQueue();
|
|
58
|
+
};
|
|
59
|
+
this.setRequestSettled = async id => {
|
|
60
|
+
this.pendingRequests.delete(id);
|
|
61
|
+
this.settledRequests.add(id);
|
|
62
|
+
await this.processQueue();
|
|
63
|
+
};
|
|
64
|
+
this.clear = () => {
|
|
65
|
+
this.queuedRequests.clear();
|
|
66
|
+
Array.from(this.pendingRequests).forEach(id => this.clearPendingRequest(id));
|
|
67
|
+
};
|
|
68
|
+
this.clearPendingRequest = async id => {
|
|
69
|
+
this.pendingRequests.delete(id);
|
|
70
|
+
await this.processQueue();
|
|
71
|
+
};
|
|
72
|
+
this.getRequestStatus = id => {
|
|
73
|
+
if (this.pendingRequests.has(id)) {
|
|
74
|
+
return RequestStatus.PENDING;
|
|
75
|
+
}
|
|
76
|
+
if (this.queuedRequests.has(id)) {
|
|
77
|
+
return RequestStatus.QUEUED;
|
|
78
|
+
}
|
|
79
|
+
if (this.settledRequests.has(id)) {
|
|
80
|
+
return RequestStatus.SETTLED;
|
|
81
|
+
}
|
|
82
|
+
return RequestStatus.UNKNOWN;
|
|
83
|
+
};
|
|
84
|
+
this.getActiveRequestsCount = () => this.pendingRequests.size + this.queuedRequests.size;
|
|
85
|
+
this.instance = instance;
|
|
86
|
+
this.maxConcurrentRequests = maxConcurrentRequests;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
exports.NestedDataManager = NestedDataManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getReleaseInfo: () => any;
|
|
1
|
+
export declare const getReleaseInfo: () => any;
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getReleaseInfo = void 0;
|
|
8
|
+
var _ponyfillGlobal = _interopRequireDefault(require("@mui/utils/ponyfillGlobal"));
|
|
9
|
+
const getReleaseInfo = () => {
|
|
10
|
+
const releaseInfo = "MTc0MjUxNTIwMDAwMA==";
|
|
4
11
|
if (process.env.NODE_ENV !== 'production') {
|
|
5
12
|
// A simple hack to set the value in the test environment (has no build step).
|
|
6
13
|
// eslint-disable-next-line no-useless-concat
|
|
7
14
|
if (releaseInfo === '__RELEASE' + '_INFO__') {
|
|
8
15
|
// eslint-disable-next-line no-underscore-dangle
|
|
9
|
-
return
|
|
16
|
+
return _ponyfillGlobal.default.__MUI_RELEASE_INFO__;
|
|
10
17
|
}
|
|
11
18
|
}
|
|
12
19
|
return releaseInfo;
|
|
13
|
-
};
|
|
20
|
+
};
|
|
21
|
+
exports.getReleaseInfo = getReleaseInfo;
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
export { styled } from '@mui/material/styles';
|
|
1
|
+
"use strict";
|
|
3
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createUseThemeProps = createUseThemeProps;
|
|
7
|
+
Object.defineProperty(exports, "styled", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _styles.styled;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _styles = require("@mui/material/styles");
|
|
4
14
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
5
|
-
|
|
6
|
-
return useThemeProps;
|
|
15
|
+
function createUseThemeProps(name) {
|
|
16
|
+
return _styles.useThemeProps;
|
|
7
17
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { RichTreeViewProProps } from "./RichTreeViewPro.types.js";
|
|
3
|
+
export declare const RichTreeViewProRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
|
|
4
|
+
ownerState: RichTreeViewProProps<any, any>;
|
|
5
|
+
}, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, keyof React.HTMLAttributes<HTMLUListElement> | keyof React.ClassAttributes<HTMLUListElement>>, {}>;
|
|
6
|
+
type RichTreeViewProComponent = (<R extends {}, Multiple extends boolean | undefined = undefined>(props: RichTreeViewProProps<R, Multiple> & React.RefAttributes<HTMLUListElement>) => React.JSX.Element) & {
|
|
7
|
+
propTypes?: any;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* Demos:
|
|
12
|
+
*
|
|
13
|
+
* - [Tree View](https://mui.com/x/react-tree-view/)
|
|
14
|
+
*
|
|
15
|
+
* API:
|
|
16
|
+
*
|
|
17
|
+
* - [RichTreeView API](https://mui.com/x/api/tree-view/rich-tree-view/)
|
|
18
|
+
*/
|
|
19
|
+
declare const RichTreeViewPro: RichTreeViewProComponent;
|
|
20
|
+
export { RichTreeViewPro };
|
|
@@ -106,8 +106,10 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
106
106
|
getItemDOMElement: PropTypes.func.isRequired,
|
|
107
107
|
getItemOrderedChildrenIds: PropTypes.func.isRequired,
|
|
108
108
|
getItemTree: PropTypes.func.isRequired,
|
|
109
|
-
|
|
109
|
+
getParentId: PropTypes.func.isRequired,
|
|
110
|
+
setIsItemDisabled: PropTypes.func.isRequired,
|
|
110
111
|
setItemExpansion: PropTypes.func.isRequired,
|
|
112
|
+
setItemSelection: PropTypes.func.isRequired,
|
|
111
113
|
updateItemLabel: PropTypes.func.isRequired
|
|
112
114
|
})
|
|
113
115
|
}),
|
|
@@ -130,6 +132,15 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
130
132
|
*/
|
|
131
133
|
classes: PropTypes.object,
|
|
132
134
|
className: PropTypes.string,
|
|
135
|
+
dataSource: PropTypes.shape({
|
|
136
|
+
getChildrenCount: PropTypes.func,
|
|
137
|
+
getTreeItems: PropTypes.func
|
|
138
|
+
}),
|
|
139
|
+
dataSourceCache: PropTypes.shape({
|
|
140
|
+
clear: PropTypes.func.isRequired,
|
|
141
|
+
get: PropTypes.func.isRequired,
|
|
142
|
+
set: PropTypes.func.isRequired
|
|
143
|
+
}),
|
|
133
144
|
/**
|
|
134
145
|
* Expanded item ids.
|
|
135
146
|
* Used when the item's expansion is not controlled.
|
|
@@ -168,8 +179,7 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
168
179
|
* the feature will be fully disabled and any property / method call will not have any effect.
|
|
169
180
|
*/
|
|
170
181
|
experimentalFeatures: PropTypes.shape({
|
|
171
|
-
|
|
172
|
-
labelEditing: PropTypes.bool
|
|
182
|
+
lazyLoading: PropTypes.bool
|
|
173
183
|
}),
|
|
174
184
|
/**
|
|
175
185
|
* Used to determine the id of a given item.
|
|
@@ -202,17 +212,15 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
202
212
|
*/
|
|
203
213
|
isItemDisabled: PropTypes.func,
|
|
204
214
|
/**
|
|
205
|
-
*
|
|
206
|
-
* Make sure to also enable the `labelEditing` experimental feature:
|
|
207
|
-
* `<RichTreeViewPro experimentalFeatures={{ labelEditing: true }} />`.
|
|
208
|
-
* By default, the items are not editable.
|
|
215
|
+
* Determine if a given item can be edited.
|
|
209
216
|
* @template R
|
|
210
217
|
* @param {R} item The item to check.
|
|
211
|
-
* @returns {boolean} `true` if the item
|
|
218
|
+
* @returns {boolean} `true` if the item can be edited.
|
|
219
|
+
* @default () => false
|
|
212
220
|
*/
|
|
213
221
|
isItemEditable: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
|
|
214
222
|
/**
|
|
215
|
-
*
|
|
223
|
+
* Determine if a given item can be reordered.
|
|
216
224
|
* @param {string} itemId The id of the item to check.
|
|
217
225
|
* @returns {boolean} `true` if the item can be reordered.
|
|
218
226
|
* @default () => true
|
|
@@ -227,8 +235,6 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
227
235
|
items: PropTypes.array.isRequired,
|
|
228
236
|
/**
|
|
229
237
|
* If `true`, the reordering of items is enabled.
|
|
230
|
-
* Make sure to also enable the `itemsReordering` experimental feature:
|
|
231
|
-
* `<RichTreeViewPro experimentalFeatures={{ itemsReordering: true }} itemsReordering />`.
|
|
232
238
|
* @default false
|
|
233
239
|
*/
|
|
234
240
|
itemsReordering: PropTypes.bool,
|
|
@@ -239,7 +245,7 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
239
245
|
multiSelect: PropTypes.bool,
|
|
240
246
|
/**
|
|
241
247
|
* Callback fired when Tree Items are expanded/collapsed.
|
|
242
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
248
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
|
|
243
249
|
* @param {array} itemIds The ids of the expanded items.
|
|
244
250
|
*/
|
|
245
251
|
onExpandedItemsChange: PropTypes.func,
|
|
@@ -251,7 +257,7 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
251
257
|
onItemClick: PropTypes.func,
|
|
252
258
|
/**
|
|
253
259
|
* Callback fired when a Tree Item is expanded or collapsed.
|
|
254
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
260
|
+
* @param {React.SyntheticEvent | null} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
|
|
255
261
|
* @param {array} itemId The itemId of the modified item.
|
|
256
262
|
* @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
|
|
257
263
|
*/
|
|
@@ -278,14 +284,14 @@ process.env.NODE_ENV !== "production" ? RichTreeViewPro.propTypes = {
|
|
|
278
284
|
onItemPositionChange: PropTypes.func,
|
|
279
285
|
/**
|
|
280
286
|
* Callback fired when a Tree Item is selected or deselected.
|
|
281
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
287
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
|
|
282
288
|
* @param {array} itemId The itemId of the modified item.
|
|
283
289
|
* @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
|
|
284
290
|
*/
|
|
285
291
|
onItemSelectionToggle: PropTypes.func,
|
|
286
292
|
/**
|
|
287
293
|
* Callback fired when Tree Items are selected/deselected.
|
|
288
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
294
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
|
|
289
295
|
* @param {string[] | string} itemIds The ids of the selected items.
|
|
290
296
|
* When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
|
|
291
297
|
*/
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { UseTreeViewItemsParameters, UseTreeViewExpansionParameters, UseTreeViewSelectionParameters, UseTreeViewFocusParameters, UseTreeViewIconsParameters, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewCorePluginParameters, UseTreeViewLabelParameters, UseTreeViewLazyLoadingParameters } from '@mui/x-tree-view/internals';
|
|
2
|
+
import { UseTreeViewItemsReorderingParameters } from "../internals/plugins/useTreeViewItemsReordering/index.js";
|
|
3
|
+
export declare const RICH_TREE_VIEW_PRO_PLUGINS: readonly [import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewItemsSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewExpansionSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewSelectionSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewFocusSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewKeyboardNavigationSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewIconsSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewLabelSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewLazyLoadingSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("../internals").UseTreeViewItemsReorderingSignature>];
|
|
4
|
+
export type RichTreeViewProPluginSignatures = ConvertPluginsIntoSignatures<typeof RICH_TREE_VIEW_PRO_PLUGINS>;
|
|
5
|
+
export type RichTreeViewProPluginSlots = MergeSignaturesProperty<RichTreeViewProPluginSignatures, 'slots'>;
|
|
6
|
+
export type RichTreeViewProPluginSlotProps = MergeSignaturesProperty<RichTreeViewProPluginSignatures, 'slotProps'>;
|
|
7
|
+
export interface RichTreeViewProPluginParameters<R extends {}, Multiple extends boolean | undefined> extends TreeViewCorePluginParameters, UseTreeViewItemsParameters<R>, UseTreeViewExpansionParameters, UseTreeViewFocusParameters, UseTreeViewSelectionParameters<Multiple>, UseTreeViewIconsParameters, UseTreeViewLabelParameters<R>, UseTreeViewLazyLoadingParameters<R>, UseTreeViewItemsReorderingParameters {}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useTreeViewItems, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons, useTreeViewLabel } from '@mui/x-tree-view/internals';
|
|
2
2
|
import { useTreeViewItemsReordering } from "../internals/plugins/useTreeViewItemsReordering/index.js";
|
|
3
|
-
|
|
3
|
+
import { useTreeViewLazyLoading } from "../internals/plugins/useTreeViewLazyLoading/index.js";
|
|
4
|
+
export const RICH_TREE_VIEW_PRO_PLUGINS = [useTreeViewItems, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewIcons, useTreeViewLabel, useTreeViewLazyLoading, useTreeViewItemsReordering];
|
|
4
5
|
|
|
5
6
|
// We can't infer this type from the plugin, otherwise we would lose the generics.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Theme } from '@mui/material/styles';
|
|
3
|
+
import { SxProps } from '@mui/system/styleFunctionSx';
|
|
4
|
+
import { SlotComponentProps } from '@mui/utils/types';
|
|
5
|
+
import { TreeViewPublicAPI, TreeViewExperimentalFeatures, RichTreeViewItemsSlots, RichTreeViewItemsSlotProps } from '@mui/x-tree-view/internals';
|
|
6
|
+
import { RichTreeViewProClasses } from "./richTreeViewProClasses.js";
|
|
7
|
+
import { RichTreeViewProPluginParameters, RichTreeViewProPluginSlotProps, RichTreeViewProPluginSlots, RichTreeViewProPluginSignatures } from "./RichTreeViewPro.plugins.js";
|
|
8
|
+
export interface RichTreeViewProSlots extends RichTreeViewProPluginSlots, RichTreeViewItemsSlots {
|
|
9
|
+
/**
|
|
10
|
+
* Element rendered at the root.
|
|
11
|
+
* @default RichTreeViewProRoot
|
|
12
|
+
*/
|
|
13
|
+
root?: React.ElementType;
|
|
14
|
+
}
|
|
15
|
+
export interface RichTreeViewProSlotProps<R extends {}, Multiple extends boolean | undefined> extends RichTreeViewProPluginSlotProps, RichTreeViewItemsSlotProps {
|
|
16
|
+
root?: SlotComponentProps<'ul', {}, RichTreeViewProProps<R, Multiple>>;
|
|
17
|
+
}
|
|
18
|
+
export type RichTreeViewProApiRef = React.RefObject<TreeViewPublicAPI<RichTreeViewProPluginSignatures> | undefined>;
|
|
19
|
+
export interface RichTreeViewProPropsBase extends React.HTMLAttributes<HTMLUListElement> {
|
|
20
|
+
className?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Override or extend the styles applied to the component.
|
|
23
|
+
*/
|
|
24
|
+
classes?: Partial<RichTreeViewProClasses>;
|
|
25
|
+
/**
|
|
26
|
+
* The system prop that allows defining system overrides as well as additional CSS styles.
|
|
27
|
+
*/
|
|
28
|
+
sx?: SxProps<Theme>;
|
|
29
|
+
}
|
|
30
|
+
export interface RichTreeViewProProps<R extends {}, Multiple extends boolean | undefined> extends RichTreeViewProPluginParameters<R, Multiple>, RichTreeViewProPropsBase {
|
|
31
|
+
/**
|
|
32
|
+
* Overridable component slots.
|
|
33
|
+
* @default {}
|
|
34
|
+
*/
|
|
35
|
+
slots?: RichTreeViewProSlots;
|
|
36
|
+
/**
|
|
37
|
+
* The props used for each component slot.
|
|
38
|
+
* @default {}
|
|
39
|
+
*/
|
|
40
|
+
slotProps?: RichTreeViewProSlotProps<R, Multiple>;
|
|
41
|
+
/**
|
|
42
|
+
* The ref object that allows Tree View manipulation. Can be instantiated with `useTreeViewApiRef()`.
|
|
43
|
+
*/
|
|
44
|
+
apiRef?: RichTreeViewProApiRef;
|
|
45
|
+
/**
|
|
46
|
+
* Unstable features, breaking changes might be introduced.
|
|
47
|
+
* For each feature, if the flag is not explicitly set to `true`,
|
|
48
|
+
* the feature will be fully disabled and any property / method call will not have any effect.
|
|
49
|
+
*/
|
|
50
|
+
experimentalFeatures?: TreeViewExperimentalFeatures<RichTreeViewProPluginSignatures>;
|
|
51
|
+
}
|