@mui/x-tree-view-pro 8.23.0 → 8.24.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 +111 -1
- package/RichTreeViewPro/RichTreeViewPro.js +32 -29
- package/RichTreeViewPro/RichTreeViewPro.types.d.ts +6 -5
- package/RichTreeViewPro/index.d.ts +1 -2
- package/RichTreeViewPro/useExtractRichTreeViewProParameters.d.ts +294 -0
- package/RichTreeViewPro/useExtractRichTreeViewProParameters.js +107 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.js +32 -29
- package/esm/RichTreeViewPro/RichTreeViewPro.types.d.ts +6 -5
- package/esm/RichTreeViewPro/index.d.ts +1 -2
- package/esm/RichTreeViewPro/useExtractRichTreeViewProParameters.d.ts +294 -0
- package/esm/RichTreeViewPro/useExtractRichTreeViewProParameters.js +99 -0
- package/esm/hooks/useRichTreeViewProApiRef.d.ts +2 -2
- package/esm/index.d.ts +0 -1
- package/esm/index.js +1 -2
- package/esm/internals/RichTreeViewProStore/RichTreeViewProStore.d.ts +49 -0
- package/esm/internals/RichTreeViewProStore/RichTreeViewProStore.js +15 -0
- package/esm/internals/RichTreeViewProStore/RichTreeViewProStore.types.d.ts +69 -0
- package/esm/internals/RichTreeViewProStore/RichTreeViewProStore.utils.d.ts +3 -0
- package/esm/internals/RichTreeViewProStore/RichTreeViewProStore.utils.js +18 -0
- package/esm/internals/RichTreeViewProStore/index.d.ts +2 -0
- package/esm/internals/RichTreeViewProStore/index.js +2 -0
- package/esm/internals/plugins/itemsReordering/TreeViewItemsReorderingPlugin.d.ts +53 -0
- package/esm/internals/plugins/itemsReordering/TreeViewItemsReorderingPlugin.js +180 -0
- package/esm/internals/plugins/itemsReordering/index.d.ts +3 -0
- package/esm/internals/plugins/itemsReordering/index.js +3 -0
- package/esm/internals/plugins/{useTreeViewItemsReordering → itemsReordering}/itemPlugin.js +6 -7
- package/esm/internals/plugins/itemsReordering/selectors.d.ts +29 -0
- package/esm/internals/plugins/{useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js → itemsReordering/selectors.js} +4 -4
- package/esm/internals/plugins/itemsReordering/types.d.ts +6 -0
- package/{internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts → esm/internals/plugins/itemsReordering/utils.d.ts} +7 -7
- package/esm/internals/plugins/{useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js → itemsReordering/utils.js} +2 -2
- package/esm/internals/plugins/lazyLoading/TreeViewLazyLoadingPlugin.d.ts +51 -0
- package/esm/internals/plugins/lazyLoading/TreeViewLazyLoadingPlugin.js +230 -0
- package/esm/internals/plugins/lazyLoading/index.d.ts +2 -0
- package/esm/internals/plugins/lazyLoading/index.js +2 -0
- package/esm/internals/plugins/lazyLoading/types.d.ts +21 -0
- package/esm/internals/plugins/lazyLoading/types.js +1 -0
- package/{internals/plugins/useTreeViewLazyLoading → esm/internals/plugins/lazyLoading}/utils.d.ts +3 -7
- package/esm/internals/plugins/{useTreeViewLazyLoading → lazyLoading}/utils.js +3 -11
- package/hooks/useRichTreeViewProApiRef.d.ts +2 -2
- package/index.d.ts +0 -1
- package/index.js +1 -23
- package/internals/RichTreeViewProStore/RichTreeViewProStore.d.ts +49 -0
- package/internals/RichTreeViewProStore/RichTreeViewProStore.js +23 -0
- package/internals/RichTreeViewProStore/RichTreeViewProStore.types.d.ts +69 -0
- package/internals/RichTreeViewProStore/RichTreeViewProStore.utils.d.ts +3 -0
- package/internals/RichTreeViewProStore/RichTreeViewProStore.utils.js +25 -0
- package/internals/RichTreeViewProStore/index.d.ts +2 -0
- package/internals/RichTreeViewProStore/index.js +27 -0
- package/internals/plugins/itemsReordering/TreeViewItemsReorderingPlugin.d.ts +53 -0
- package/internals/plugins/itemsReordering/TreeViewItemsReorderingPlugin.js +188 -0
- package/internals/plugins/itemsReordering/index.d.ts +3 -0
- package/internals/plugins/itemsReordering/index.js +27 -0
- package/internals/plugins/{useTreeViewItemsReordering → itemsReordering}/itemPlugin.js +9 -10
- package/internals/plugins/itemsReordering/selectors.d.ts +29 -0
- package/internals/plugins/{useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js → itemsReordering/selectors.js} +4 -4
- package/internals/plugins/itemsReordering/types.d.ts +6 -0
- package/{esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts → internals/plugins/itemsReordering/utils.d.ts} +7 -7
- package/internals/plugins/{useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js → itemsReordering/utils.js} +2 -2
- package/internals/plugins/lazyLoading/TreeViewLazyLoadingPlugin.d.ts +51 -0
- package/internals/plugins/lazyLoading/TreeViewLazyLoadingPlugin.js +238 -0
- package/internals/plugins/lazyLoading/index.d.ts +2 -0
- package/internals/plugins/lazyLoading/index.js +27 -0
- package/internals/plugins/lazyLoading/types.d.ts +21 -0
- package/internals/plugins/lazyLoading/types.js +5 -0
- package/{esm/internals/plugins/useTreeViewLazyLoading → internals/plugins/lazyLoading}/utils.d.ts +3 -7
- package/internals/plugins/{useTreeViewLazyLoading → lazyLoading}/utils.js +3 -9
- package/package.json +4 -4
- package/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +0 -5
- package/RichTreeViewPro/RichTreeViewPro.plugins.js +0 -12
- package/esm/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +0 -5
- package/esm/RichTreeViewPro/RichTreeViewPro.plugins.js +0 -6
- package/esm/internals/index.d.ts +0 -1
- package/esm/internals/plugins/useTreeViewItemsReordering/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewItemsReordering/index.js +0 -2
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +0 -196
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +0 -30
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +0 -107
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +0 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +0 -251
- package/internals/index.d.ts +0 -1
- package/internals/plugins/useTreeViewItemsReordering/index.d.ts +0 -3
- package/internals/plugins/useTreeViewItemsReordering/index.js +0 -19
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +0 -3
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +0 -205
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +0 -30
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +0 -107
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -1
- package/internals/plugins/useTreeViewLazyLoading/index.js +0 -12
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +0 -2
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +0 -259
- /package/esm/internals/{index.js → RichTreeViewProStore/RichTreeViewProStore.types.js} +0 -0
- /package/esm/internals/plugins/{useTreeViewItemsReordering → itemsReordering}/itemPlugin.d.ts +0 -0
- /package/esm/internals/plugins/{useTreeViewItemsReordering/useTreeViewItemsReordering.types.js → itemsReordering/types.js} +0 -0
- /package/internals/{index.js → RichTreeViewProStore/RichTreeViewProStore.types.js} +0 -0
- /package/internals/plugins/{useTreeViewItemsReordering → itemsReordering}/itemPlugin.d.ts +0 -0
- /package/internals/plugins/{useTreeViewItemsReordering/useTreeViewItemsReordering.types.js → itemsReordering/types.js} +0 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.TreeViewLazyLoadingPlugin = exports.TREE_VIEW_LAZY_LOADED_ITEMS_INITIAL_STATE = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _internals = require("@mui/x-tree-view/internals");
|
|
10
|
+
var _utils = require("@mui/x-tree-view/utils");
|
|
11
|
+
var _utils2 = require("./utils");
|
|
12
|
+
const TREE_VIEW_LAZY_LOADED_ITEMS_INITIAL_STATE = exports.TREE_VIEW_LAZY_LOADED_ITEMS_INITIAL_STATE = {
|
|
13
|
+
loading: {},
|
|
14
|
+
errors: {}
|
|
15
|
+
};
|
|
16
|
+
class TreeViewLazyLoadingPlugin {
|
|
17
|
+
nestedDataManager = new _utils2.NestedDataManager(this);
|
|
18
|
+
constructor(store) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
this.cache = store.parameters.dataSourceCache ?? new _utils.DataSourceCacheDefault({});
|
|
21
|
+
if (store.parameters.dataSource != null) {
|
|
22
|
+
this.init();
|
|
23
|
+
store.subscribeEvent('beforeItemToggleExpansion', this.handleBeforeItemToggleExpansion);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
init = () => {
|
|
27
|
+
const store = this.store;
|
|
28
|
+
// eslint-disable-next-line consistent-this
|
|
29
|
+
const plugin = this;
|
|
30
|
+
const fetchAllExpandedItems = async () => {
|
|
31
|
+
async function fetchChildrenIfExpanded(parentIds) {
|
|
32
|
+
const expandedItems = parentIds.filter(id => _internals.expansionSelectors.isItemExpanded(store.state, id));
|
|
33
|
+
if (expandedItems.length > 0) {
|
|
34
|
+
const itemsToLazyLoad = expandedItems.filter(id => _internals.itemsSelectors.itemOrderedChildrenIds(store.state, id).length === 0);
|
|
35
|
+
if (itemsToLazyLoad.length > 0) {
|
|
36
|
+
await plugin.fetchItems(itemsToLazyLoad);
|
|
37
|
+
}
|
|
38
|
+
const childrenIds = expandedItems.flatMap(id => _internals.itemsSelectors.itemOrderedChildrenIds(store.state, id));
|
|
39
|
+
await fetchChildrenIfExpanded(childrenIds);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (store.parameters.items.length) {
|
|
43
|
+
const newlyExpandableItems = getExpandableItemsFromDataSource(store, store.parameters.dataSource);
|
|
44
|
+
if (newlyExpandableItems.length > 0) {
|
|
45
|
+
store.expansion.addExpandableItems(newlyExpandableItems);
|
|
46
|
+
}
|
|
47
|
+
} else {
|
|
48
|
+
await plugin.fetchItemChildren({
|
|
49
|
+
itemId: null
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
await fetchChildrenIfExpanded(_internals.itemsSelectors.itemOrderedChildrenIds(store.state, null));
|
|
53
|
+
};
|
|
54
|
+
fetchAllExpandedItems();
|
|
55
|
+
};
|
|
56
|
+
handleBeforeItemToggleExpansion = async (eventParameters, event) => {
|
|
57
|
+
if (!this.store.parameters.dataSource || !eventParameters.shouldBeExpanded) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// prevent the default expansion behavior
|
|
62
|
+
eventParameters.isExpansionPrevented = true;
|
|
63
|
+
await this.fetchItems([eventParameters.itemId]);
|
|
64
|
+
const hasError = _internals.lazyLoadingSelectors.itemHasError(this.store.state, eventParameters.itemId);
|
|
65
|
+
if (!hasError) {
|
|
66
|
+
this.store.expansion.applyItemExpansion({
|
|
67
|
+
itemId: eventParameters.itemId,
|
|
68
|
+
shouldBeExpanded: true,
|
|
69
|
+
event
|
|
70
|
+
});
|
|
71
|
+
if (_internals.selectionSelectors.isItemSelected(this.store.state, eventParameters.itemId)) {
|
|
72
|
+
// make sure selection propagation works correctly
|
|
73
|
+
this.store.selection.setItemSelection({
|
|
74
|
+
event,
|
|
75
|
+
itemId: eventParameters.itemId,
|
|
76
|
+
keepExistingSelection: true,
|
|
77
|
+
shouldBeSelected: true
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
setItemLoading = (itemId, isLoading) => {
|
|
83
|
+
if (!this.store.parameters.dataSource || !this.store.state.lazyLoadedItems) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (_internals.lazyLoadingSelectors.isItemLoading(this.store.state, itemId) === isLoading) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const itemIdWithDefault = itemId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
|
|
90
|
+
const loading = (0, _extends2.default)({}, this.store.state.lazyLoadedItems.loading);
|
|
91
|
+
if (isLoading === false) {
|
|
92
|
+
delete loading[itemIdWithDefault];
|
|
93
|
+
} else {
|
|
94
|
+
loading[itemIdWithDefault] = isLoading;
|
|
95
|
+
}
|
|
96
|
+
this.store.set('lazyLoadedItems', (0, _extends2.default)({}, this.store.state.lazyLoadedItems, {
|
|
97
|
+
loading
|
|
98
|
+
}));
|
|
99
|
+
};
|
|
100
|
+
setItemError = (itemId, error) => {
|
|
101
|
+
if (!this.store.parameters.dataSource || !this.store.state.lazyLoadedItems) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (_internals.lazyLoadingSelectors.itemError(this.store.state, itemId) === error) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const itemIdWithDefault = itemId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
|
|
108
|
+
const errors = (0, _extends2.default)({}, this.store.state.lazyLoadedItems.errors);
|
|
109
|
+
if (error === null && errors[itemIdWithDefault] !== undefined) {
|
|
110
|
+
delete errors[itemIdWithDefault];
|
|
111
|
+
} else {
|
|
112
|
+
errors[itemIdWithDefault] = error;
|
|
113
|
+
}
|
|
114
|
+
this.store.set('lazyLoadedItems', (0, _extends2.default)({}, this.store.state.lazyLoadedItems, {
|
|
115
|
+
errors
|
|
116
|
+
}));
|
|
117
|
+
};
|
|
118
|
+
buildPublicAPI = () => {
|
|
119
|
+
return {
|
|
120
|
+
updateItemChildren: this.updateItemChildren
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Method used for fetching multiple items concurrently.
|
|
126
|
+
* Only relevant for lazy-loaded tree views.
|
|
127
|
+
*
|
|
128
|
+
* @param {TreeViewItemId[]} parentIds The ids of the items to fetch the children of.
|
|
129
|
+
* @returns {Promise<void>} The promise resolved when the items are fetched.
|
|
130
|
+
*/
|
|
131
|
+
fetchItems = parentIds => this.nestedDataManager.queue(parentIds);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Method used for updating an item's children.
|
|
135
|
+
* Only relevant for lazy-loaded tree views.
|
|
136
|
+
*
|
|
137
|
+
* @param {TreeViewItemId | null} itemId The id of the item to update the children of. If null is passed, it will update the root's children.
|
|
138
|
+
* @returns {Promise<void>} The promise resolved when the items are fetched.
|
|
139
|
+
*/
|
|
140
|
+
updateItemChildren = itemId => this.fetchItemChildren({
|
|
141
|
+
itemId,
|
|
142
|
+
forceRefresh: true
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Method used for fetching an item's children.
|
|
147
|
+
* Only relevant for lazy-loaded tree views.
|
|
148
|
+
*
|
|
149
|
+
* @param {object} parameters The parameters of the method.
|
|
150
|
+
* @param {TreeViewItemId} parameters.itemId The The id of the item to fetch the children of.
|
|
151
|
+
* @param {boolean} [parameters.forceRefresh] Whether to force a refresh of the children when the cache already contains some data.
|
|
152
|
+
* @returns {Promise<void>} The promise resolved when the items are fetched.
|
|
153
|
+
*/
|
|
154
|
+
fetchItemChildren = async ({
|
|
155
|
+
itemId,
|
|
156
|
+
forceRefresh
|
|
157
|
+
}) => {
|
|
158
|
+
if (!this.store.parameters.dataSource) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const {
|
|
162
|
+
getChildrenCount,
|
|
163
|
+
getTreeItems
|
|
164
|
+
} = this.store.parameters.dataSource;
|
|
165
|
+
// clear the request if the item is not in the tree
|
|
166
|
+
if (itemId != null && !_internals.itemsSelectors.itemMeta(this.store.state, itemId)) {
|
|
167
|
+
this.nestedDataManager.clearPendingRequest(itemId);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// reset the state if we are fetching the root items
|
|
172
|
+
if (itemId == null && !_internals.lazyLoadingSelectors.isEmpty(this.store.state)) {
|
|
173
|
+
this.store.set('lazyLoadedItems', TREE_VIEW_LAZY_LOADED_ITEMS_INITIAL_STATE);
|
|
174
|
+
}
|
|
175
|
+
const cacheKey = itemId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
|
|
176
|
+
if (!forceRefresh) {
|
|
177
|
+
// reads from the value from the cache
|
|
178
|
+
const cachedData = this.cache.get(cacheKey);
|
|
179
|
+
if (cachedData !== undefined && cachedData !== -1) {
|
|
180
|
+
if (itemId != null) {
|
|
181
|
+
this.nestedDataManager.setRequestSettled(itemId);
|
|
182
|
+
}
|
|
183
|
+
this.store.items.setItemChildren({
|
|
184
|
+
items: cachedData,
|
|
185
|
+
parentId: itemId,
|
|
186
|
+
getChildrenCount
|
|
187
|
+
});
|
|
188
|
+
this.setItemLoading(itemId, false);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// set the item loading status to true
|
|
193
|
+
this.setItemLoading(itemId, true);
|
|
194
|
+
if (cachedData === -1) {
|
|
195
|
+
this.store.items.removeChildren(itemId);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// reset existing error if any
|
|
200
|
+
if (_internals.lazyLoadingSelectors.itemError(this.store.state, itemId)) {
|
|
201
|
+
this.setItemError(itemId, null);
|
|
202
|
+
}
|
|
203
|
+
try {
|
|
204
|
+
let response;
|
|
205
|
+
if (itemId == null) {
|
|
206
|
+
response = await getTreeItems();
|
|
207
|
+
} else {
|
|
208
|
+
response = await getTreeItems(itemId);
|
|
209
|
+
this.nestedDataManager.setRequestSettled(itemId);
|
|
210
|
+
}
|
|
211
|
+
// save the response in the cache
|
|
212
|
+
this.cache.set(cacheKey, response);
|
|
213
|
+
// update the items in the state
|
|
214
|
+
this.store.items.setItemChildren({
|
|
215
|
+
items: response,
|
|
216
|
+
parentId: itemId,
|
|
217
|
+
getChildrenCount
|
|
218
|
+
});
|
|
219
|
+
} catch (error) {
|
|
220
|
+
const childrenFetchError = error;
|
|
221
|
+
// set the item error in the state
|
|
222
|
+
this.setItemError(itemId, childrenFetchError);
|
|
223
|
+
if (forceRefresh) {
|
|
224
|
+
this.store.items.removeChildren(itemId);
|
|
225
|
+
}
|
|
226
|
+
} finally {
|
|
227
|
+
// set the item loading status to false
|
|
228
|
+
this.setItemLoading(itemId, false);
|
|
229
|
+
if (itemId != null) {
|
|
230
|
+
this.nestedDataManager.setRequestSettled(itemId);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
exports.TreeViewLazyLoadingPlugin = TreeViewLazyLoadingPlugin;
|
|
236
|
+
function getExpandableItemsFromDataSource(store, dataSource) {
|
|
237
|
+
return Object.values(store.state.itemMetaLookup).filter(itemMeta => !itemMeta.expandable && dataSource.getChildrenCount(store.state.itemModelLookup[itemMeta.id]) !== 0).map(item => item.id);
|
|
238
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _TreeViewLazyLoadingPlugin = require("./TreeViewLazyLoadingPlugin");
|
|
7
|
+
Object.keys(_TreeViewLazyLoadingPlugin).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _TreeViewLazyLoadingPlugin[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _TreeViewLazyLoadingPlugin[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _types = require("./types");
|
|
18
|
+
Object.keys(_types).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _types[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _types[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { TreeViewItemId } from '@mui/x-tree-view/models';
|
|
2
|
+
export type DataSource<R extends {}> = {
|
|
3
|
+
/**
|
|
4
|
+
* Used to determine the number of children the item has.
|
|
5
|
+
* Only relevant for lazy-loaded trees.
|
|
6
|
+
*
|
|
7
|
+
* @template R
|
|
8
|
+
* @param {R} item The item to check.
|
|
9
|
+
* @returns {number} The number of children.
|
|
10
|
+
*/
|
|
11
|
+
getChildrenCount: (item: R) => number;
|
|
12
|
+
/**
|
|
13
|
+
* Method used for fetching the items.
|
|
14
|
+
* Only relevant for lazy-loaded tree views.
|
|
15
|
+
*
|
|
16
|
+
* @template R
|
|
17
|
+
* @param {TreeViewItemId} parentId The id of the item the children belong to.
|
|
18
|
+
* @returns { Promise<R[]>} The children of the item.
|
|
19
|
+
*/
|
|
20
|
+
getTreeItems: (parentId?: TreeViewItemId) => Promise<R[]>;
|
|
21
|
+
};
|
package/{esm/internals/plugins/useTreeViewLazyLoading → internals/plugins/lazyLoading}/utils.d.ts
RENAMED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
import { TreeViewInstance, UseTreeViewLazyLoadingSignature } from '@mui/x-tree-view/internals';
|
|
2
1
|
import { TreeViewItemId } from '@mui/x-tree-view/models';
|
|
2
|
+
import { TreeViewLazyLoadingPlugin } from "./TreeViewLazyLoadingPlugin.js";
|
|
3
3
|
export declare enum RequestStatus {
|
|
4
4
|
QUEUED = 0,
|
|
5
5
|
PENDING = 1,
|
|
6
6
|
SETTLED = 2,
|
|
7
7
|
UNKNOWN = 3,
|
|
8
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
9
|
/**
|
|
14
10
|
* Fetches row children from the server with option to limit the number of concurrent requests
|
|
15
11
|
* Determines the status of a request based on the enum `RequestStatus`
|
|
@@ -19,9 +15,9 @@ export declare class NestedDataManager {
|
|
|
19
15
|
private pendingRequests;
|
|
20
16
|
private queuedRequests;
|
|
21
17
|
private settledRequests;
|
|
22
|
-
private
|
|
18
|
+
private lazyLoadingPlugin;
|
|
23
19
|
private maxConcurrentRequests;
|
|
24
|
-
constructor(
|
|
20
|
+
constructor(lazyLoadingPlugin: TreeViewLazyLoadingPlugin, maxConcurrentRequests?: number);
|
|
25
21
|
private processQueue;
|
|
26
22
|
queue: (ids: TreeViewItemId[]) => Promise<void>;
|
|
27
23
|
setRequestSettled: (id: TreeViewItemId) => Promise<void>;
|
|
@@ -12,12 +12,6 @@ let RequestStatus = exports.RequestStatus = /*#__PURE__*/function (RequestStatus
|
|
|
12
12
|
RequestStatus[RequestStatus["UNKNOWN"] = 3] = "UNKNOWN";
|
|
13
13
|
return RequestStatus;
|
|
14
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
15
|
/**
|
|
22
16
|
* Fetches row children from the server with option to limit the number of concurrent requests
|
|
23
17
|
* Determines the status of a request based on the enum `RequestStatus`
|
|
@@ -27,8 +21,8 @@ class NestedDataManager {
|
|
|
27
21
|
pendingRequests = new Set();
|
|
28
22
|
queuedRequests = new Set();
|
|
29
23
|
settledRequests = new Set();
|
|
30
|
-
constructor(
|
|
31
|
-
this.
|
|
24
|
+
constructor(lazyLoadingPlugin, maxConcurrentRequests = MAX_CONCURRENT_REQUESTS) {
|
|
25
|
+
this.lazyLoadingPlugin = lazyLoadingPlugin;
|
|
32
26
|
this.maxConcurrentRequests = maxConcurrentRequests;
|
|
33
27
|
}
|
|
34
28
|
processQueue = async () => {
|
|
@@ -45,7 +39,7 @@ class NestedDataManager {
|
|
|
45
39
|
const id = fetchQueue[i];
|
|
46
40
|
this.queuedRequests.delete(id);
|
|
47
41
|
this.pendingRequests.add(id);
|
|
48
|
-
fetchPromises.push(this.
|
|
42
|
+
fetchPromises.push(this.lazyLoadingPlugin.fetchItemChildren({
|
|
49
43
|
itemId: id
|
|
50
44
|
}));
|
|
51
45
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view-pro",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.24.0",
|
|
4
4
|
"author": "MUI Team",
|
|
5
5
|
"description": "The Pro plan edition of the MUI X Tree View components.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"react-transition-group": "^4.4.5",
|
|
41
41
|
"reselect": "^5.1.1",
|
|
42
42
|
"use-sync-external-store": "^1.6.0",
|
|
43
|
-
"@mui/x-internals": "8.
|
|
44
|
-
"@mui/x-
|
|
45
|
-
"@mui/x-
|
|
43
|
+
"@mui/x-internals": "8.24.0",
|
|
44
|
+
"@mui/x-tree-view": "8.24.0",
|
|
45
|
+
"@mui/x-license": "8.24.0"
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
48
|
"@emotion/react": "^11.9.0",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { UseTreeViewItemsParameters, UseTreeViewExpansionParameters, UseTreeViewSelectionParameters, UseTreeViewFocusParameters, ConvertPluginsIntoSignatures, 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").UseTreeViewLabelSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewLazyLoadingSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("../internals/index.js").UseTreeViewItemsReorderingSignature>];
|
|
4
|
-
export type RichTreeViewProPluginSignatures = ConvertPluginsIntoSignatures<typeof RICH_TREE_VIEW_PRO_PLUGINS>;
|
|
5
|
-
export interface RichTreeViewProPluginParameters<R extends {}, Multiple extends boolean | undefined> extends TreeViewCorePluginParameters, UseTreeViewItemsParameters<R>, UseTreeViewExpansionParameters, UseTreeViewFocusParameters, UseTreeViewSelectionParameters<Multiple>, UseTreeViewLabelParameters<R>, UseTreeViewLazyLoadingParameters<R>, UseTreeViewItemsReorderingParameters {}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.RICH_TREE_VIEW_PRO_PLUGINS = void 0;
|
|
7
|
-
var _internals = require("@mui/x-tree-view/internals");
|
|
8
|
-
var _useTreeViewItemsReordering = require("../internals/plugins/useTreeViewItemsReordering");
|
|
9
|
-
var _useTreeViewLazyLoading = require("../internals/plugins/useTreeViewLazyLoading");
|
|
10
|
-
const RICH_TREE_VIEW_PRO_PLUGINS = exports.RICH_TREE_VIEW_PRO_PLUGINS = [_internals.useTreeViewItems, _internals.useTreeViewExpansion, _internals.useTreeViewSelection, _internals.useTreeViewFocus, _internals.useTreeViewKeyboardNavigation, _internals.useTreeViewLabel, _useTreeViewLazyLoading.useTreeViewLazyLoading, _useTreeViewItemsReordering.useTreeViewItemsReordering];
|
|
11
|
-
|
|
12
|
-
// We can't infer this type from the plugin, otherwise we would lose the generics.
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { UseTreeViewItemsParameters, UseTreeViewExpansionParameters, UseTreeViewSelectionParameters, UseTreeViewFocusParameters, ConvertPluginsIntoSignatures, 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").UseTreeViewLabelSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("@mui/x-tree-view/internals").UseTreeViewLazyLoadingSignature>, import("@mui/x-tree-view/internals").TreeViewPlugin<import("../internals/index.js").UseTreeViewItemsReorderingSignature>];
|
|
4
|
-
export type RichTreeViewProPluginSignatures = ConvertPluginsIntoSignatures<typeof RICH_TREE_VIEW_PRO_PLUGINS>;
|
|
5
|
-
export interface RichTreeViewProPluginParameters<R extends {}, Multiple extends boolean | undefined> extends TreeViewCorePluginParameters, UseTreeViewItemsParameters<R>, UseTreeViewExpansionParameters, UseTreeViewFocusParameters, UseTreeViewSelectionParameters<Multiple>, UseTreeViewLabelParameters<R>, UseTreeViewLazyLoadingParameters<R>, UseTreeViewItemsReorderingParameters {}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { useTreeViewItems, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewLabel } from '@mui/x-tree-view/internals';
|
|
2
|
-
import { useTreeViewItemsReordering } from "../internals/plugins/useTreeViewItemsReordering/index.js";
|
|
3
|
-
import { useTreeViewLazyLoading } from "../internals/plugins/useTreeViewLazyLoading/index.js";
|
|
4
|
-
export const RICH_TREE_VIEW_PRO_PLUGINS = [useTreeViewItems, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewLabel, useTreeViewLazyLoading, useTreeViewItemsReordering];
|
|
5
|
-
|
|
6
|
-
// We can't infer this type from the plugin, otherwise we would lose the generics.
|
package/esm/internals/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { UseTreeViewItemsReorderingSignature } from "./plugins/useTreeViewItemsReordering/index.js";
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { useTreeViewItemsReordering } from "./useTreeViewItemsReordering.js";
|
|
2
|
-
export type { UseTreeViewItemsReorderingSignature, UseTreeViewItemsReorderingParameters, UseTreeViewItemsReorderingParametersWithDefaults, TreeViewItemReorderPosition } from "./useTreeViewItemsReordering.types.js";
|
|
3
|
-
export { itemsReorderingSelectors } from "./useTreeViewItemsReordering.selectors.js";
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import * as React from 'react';
|
|
3
|
-
import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
|
|
4
|
-
import { itemsSelectors, labelSelectors } from '@mui/x-tree-view/internals';
|
|
5
|
-
import { chooseActionToApply, isAncestor, moveItemInTree } from "./useTreeViewItemsReordering.utils.js";
|
|
6
|
-
import { useTreeViewItemsReorderingItemPlugin } from "./itemPlugin.js";
|
|
7
|
-
import { itemsReorderingSelectors } from "./useTreeViewItemsReordering.selectors.js";
|
|
8
|
-
export const useTreeViewItemsReordering = ({
|
|
9
|
-
params,
|
|
10
|
-
store
|
|
11
|
-
}) => {
|
|
12
|
-
const getDroppingTargetValidActions = React.useCallback(itemId => {
|
|
13
|
-
const currentReorder = itemsReorderingSelectors.currentReorder(store.state);
|
|
14
|
-
if (!currentReorder) {
|
|
15
|
-
throw new Error('There is no ongoing reordering.');
|
|
16
|
-
}
|
|
17
|
-
if (itemId === currentReorder.draggedItemId) {
|
|
18
|
-
return {};
|
|
19
|
-
}
|
|
20
|
-
const canMoveItemToNewPosition = params.canMoveItemToNewPosition;
|
|
21
|
-
const targetItemMeta = itemsSelectors.itemMeta(store.state, itemId);
|
|
22
|
-
const targetItemIndex = itemsSelectors.itemIndex(store.state, targetItemMeta.id);
|
|
23
|
-
const draggedItemMeta = itemsSelectors.itemMeta(store.state, currentReorder.draggedItemId);
|
|
24
|
-
const draggedItemIndex = itemsSelectors.itemIndex(store.state, draggedItemMeta.id);
|
|
25
|
-
const isTargetLastSibling = targetItemIndex === itemsSelectors.itemOrderedChildrenIds(store.state, targetItemMeta.parentId).length - 1;
|
|
26
|
-
const oldPosition = {
|
|
27
|
-
parentId: draggedItemMeta.parentId,
|
|
28
|
-
index: draggedItemIndex
|
|
29
|
-
};
|
|
30
|
-
const checkIfPositionIsValid = positionAfterAction => {
|
|
31
|
-
let isValid;
|
|
32
|
-
// If the new position is equal to the old one, we don't want to show any dropping UI.
|
|
33
|
-
if (positionAfterAction.parentId === oldPosition.parentId && positionAfterAction.index === oldPosition.index) {
|
|
34
|
-
isValid = false;
|
|
35
|
-
} else if (canMoveItemToNewPosition) {
|
|
36
|
-
isValid = canMoveItemToNewPosition({
|
|
37
|
-
itemId: currentReorder.draggedItemId,
|
|
38
|
-
oldPosition,
|
|
39
|
-
newPosition: positionAfterAction
|
|
40
|
-
});
|
|
41
|
-
} else {
|
|
42
|
-
isValid = true;
|
|
43
|
-
}
|
|
44
|
-
return isValid;
|
|
45
|
-
};
|
|
46
|
-
const positionsAfterAction = {
|
|
47
|
-
'make-child': {
|
|
48
|
-
parentId: targetItemMeta.id,
|
|
49
|
-
index: 0
|
|
50
|
-
},
|
|
51
|
-
'reorder-above': {
|
|
52
|
-
parentId: targetItemMeta.parentId,
|
|
53
|
-
index: targetItemMeta.parentId === draggedItemMeta.parentId && targetItemIndex > draggedItemIndex ? targetItemIndex - 1 : targetItemIndex
|
|
54
|
-
},
|
|
55
|
-
'reorder-below': !targetItemMeta.expandable || isTargetLastSibling ? {
|
|
56
|
-
parentId: targetItemMeta.parentId,
|
|
57
|
-
index: targetItemMeta.parentId === draggedItemMeta.parentId && targetItemIndex > draggedItemIndex ? targetItemIndex : targetItemIndex + 1
|
|
58
|
-
} : null,
|
|
59
|
-
'move-to-parent': targetItemMeta.parentId == null ? null : {
|
|
60
|
-
parentId: targetItemMeta.parentId,
|
|
61
|
-
index: itemsSelectors.itemOrderedChildrenIds(store.state, targetItemMeta.parentId).length
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
const validActions = {};
|
|
65
|
-
Object.keys(positionsAfterAction).forEach(action => {
|
|
66
|
-
const positionAfterAction = positionsAfterAction[action];
|
|
67
|
-
if (positionAfterAction != null && checkIfPositionIsValid(positionAfterAction)) {
|
|
68
|
-
validActions[action] = positionAfterAction;
|
|
69
|
-
}
|
|
70
|
-
});
|
|
71
|
-
return validActions;
|
|
72
|
-
}, [store, params.canMoveItemToNewPosition]);
|
|
73
|
-
const startDraggingItem = React.useCallback(itemId => {
|
|
74
|
-
const isItemBeingEdited = labelSelectors.isItemBeingEdited(store.state, itemId);
|
|
75
|
-
if (isItemBeingEdited) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
store.set('itemsReordering', _extends({}, store.state.itemsReordering, {
|
|
79
|
-
currentReorder: {
|
|
80
|
-
targetItemId: itemId,
|
|
81
|
-
draggedItemId: itemId,
|
|
82
|
-
action: null,
|
|
83
|
-
newPosition: null
|
|
84
|
-
}
|
|
85
|
-
}));
|
|
86
|
-
}, [store]);
|
|
87
|
-
const cancelDraggingItem = React.useCallback(() => {
|
|
88
|
-
const currentReorder = itemsReorderingSelectors.currentReorder(store.state);
|
|
89
|
-
if (currentReorder == null) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
store.set('itemsReordering', _extends({}, store.state.itemsReordering, {
|
|
93
|
-
currentReorder: null
|
|
94
|
-
}));
|
|
95
|
-
}, [store]);
|
|
96
|
-
const completeDraggingItem = React.useCallback(itemId => {
|
|
97
|
-
const currentReorder = itemsReorderingSelectors.currentReorder(store.state);
|
|
98
|
-
if (currentReorder == null || currentReorder.draggedItemId !== itemId) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (currentReorder.draggedItemId === currentReorder.targetItemId || currentReorder.action == null || currentReorder.newPosition == null) {
|
|
102
|
-
store.set('itemsReordering', _extends({}, store.state.itemsReordering, {
|
|
103
|
-
currentReorder: null
|
|
104
|
-
}));
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
const draggedItemMeta = itemsSelectors.itemMeta(store.state, currentReorder.draggedItemId);
|
|
108
|
-
const oldPosition = {
|
|
109
|
-
parentId: draggedItemMeta.parentId,
|
|
110
|
-
index: itemsSelectors.itemIndex(store.state, draggedItemMeta.id)
|
|
111
|
-
};
|
|
112
|
-
const newPosition = currentReorder.newPosition;
|
|
113
|
-
store.update({
|
|
114
|
-
itemsReordering: _extends({}, store.state.itemsReordering, {
|
|
115
|
-
currentReorder: null
|
|
116
|
-
}),
|
|
117
|
-
items: moveItemInTree({
|
|
118
|
-
itemToMoveId: itemId,
|
|
119
|
-
newPosition,
|
|
120
|
-
oldPosition,
|
|
121
|
-
prevState: store.state.items
|
|
122
|
-
})
|
|
123
|
-
});
|
|
124
|
-
const onItemPositionChange = params.onItemPositionChange;
|
|
125
|
-
onItemPositionChange?.({
|
|
126
|
-
itemId,
|
|
127
|
-
newPosition,
|
|
128
|
-
oldPosition
|
|
129
|
-
});
|
|
130
|
-
}, [store, params.onItemPositionChange]);
|
|
131
|
-
const setDragTargetItem = React.useCallback(({
|
|
132
|
-
itemId,
|
|
133
|
-
validActions,
|
|
134
|
-
targetHeight,
|
|
135
|
-
cursorY,
|
|
136
|
-
cursorX,
|
|
137
|
-
contentElement
|
|
138
|
-
}) => {
|
|
139
|
-
const prevItemReorder = store.state.itemsReordering.currentReorder;
|
|
140
|
-
if (prevItemReorder == null || isAncestor(store, itemId, prevItemReorder.draggedItemId)) {
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
const action = chooseActionToApply({
|
|
144
|
-
itemChildrenIndentation: params.itemChildrenIndentation,
|
|
145
|
-
validActions,
|
|
146
|
-
targetHeight,
|
|
147
|
-
targetDepth: store.state.items.itemMetaLookup[itemId].depth,
|
|
148
|
-
cursorY,
|
|
149
|
-
cursorX,
|
|
150
|
-
contentElement
|
|
151
|
-
});
|
|
152
|
-
const newPosition = action == null ? null : validActions[action];
|
|
153
|
-
if (prevItemReorder.targetItemId === itemId && prevItemReorder.action === action && prevItemReorder.newPosition?.parentId === newPosition?.parentId && prevItemReorder.newPosition?.index === newPosition?.index) {
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
store.set('itemsReordering', _extends({}, store.state.itemsReordering, {
|
|
157
|
-
currentReorder: _extends({}, prevItemReorder, {
|
|
158
|
-
targetItemId: itemId,
|
|
159
|
-
newPosition,
|
|
160
|
-
action
|
|
161
|
-
})
|
|
162
|
-
}));
|
|
163
|
-
}, [store, params.itemChildrenIndentation]);
|
|
164
|
-
useIsoLayoutEffect(() => {
|
|
165
|
-
store.set('itemsReordering', _extends({}, store.state.itemsReordering, {
|
|
166
|
-
isItemReorderable: params.itemsReordering ? params.isItemReorderable ?? (() => true) : () => false
|
|
167
|
-
}));
|
|
168
|
-
}, [store, params.itemsReordering, params.isItemReorderable]);
|
|
169
|
-
return {
|
|
170
|
-
instance: {
|
|
171
|
-
getDroppingTargetValidActions,
|
|
172
|
-
startDraggingItem,
|
|
173
|
-
cancelDraggingItem,
|
|
174
|
-
completeDraggingItem,
|
|
175
|
-
setDragTargetItem
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
};
|
|
179
|
-
useTreeViewItemsReordering.itemPlugin = useTreeViewItemsReorderingItemPlugin;
|
|
180
|
-
useTreeViewItemsReordering.applyDefaultValuesToParams = ({
|
|
181
|
-
params
|
|
182
|
-
}) => _extends({}, params, {
|
|
183
|
-
itemsReordering: params.itemsReordering ?? false
|
|
184
|
-
});
|
|
185
|
-
useTreeViewItemsReordering.getInitialState = params => ({
|
|
186
|
-
itemsReordering: {
|
|
187
|
-
currentReorder: null,
|
|
188
|
-
isItemReorderable: params.itemsReordering ? params.isItemReorderable ?? (() => true) : () => false
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
useTreeViewItemsReordering.params = {
|
|
192
|
-
itemsReordering: true,
|
|
193
|
-
isItemReorderable: true,
|
|
194
|
-
canMoveItemToNewPosition: true,
|
|
195
|
-
onItemPositionChange: true
|
|
196
|
-
};
|
package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { TreeViewState } from '@mui/x-tree-view/internals';
|
|
2
|
-
import { TreeViewItemId } from '@mui/x-tree-view/models';
|
|
3
|
-
import { UseTreeViewItemsReorderingSignature } from "./useTreeViewItemsReordering.types.js";
|
|
4
|
-
export declare const itemsReorderingSelectors: {
|
|
5
|
-
/**
|
|
6
|
-
* Gets the properties of the current reordering.
|
|
7
|
-
*/
|
|
8
|
-
currentReorder: (state: TreeViewState<[UseTreeViewItemsReorderingSignature]>) => {
|
|
9
|
-
draggedItemId: TreeViewItemId;
|
|
10
|
-
targetItemId: TreeViewItemId;
|
|
11
|
-
newPosition: import("./useTreeViewItemsReordering.types.js").TreeViewItemReorderPosition | null;
|
|
12
|
-
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
13
|
-
} | null;
|
|
14
|
-
/**
|
|
15
|
-
* Gets the properties of the dragged item.
|
|
16
|
-
*/
|
|
17
|
-
draggedItemProperties: (args_0: import("@mui/x-tree-view/internals/corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("@mui/x-tree-view/internals").UseTreeViewItemsState<import("@mui/x-tree-view").TreeViewDefaultItemModelProperties> & Partial<{}>, itemId: string) => {
|
|
18
|
-
newPosition: import("./useTreeViewItemsReordering.types.js").TreeViewItemReorderPosition | null;
|
|
19
|
-
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction;
|
|
20
|
-
targetDepth: number;
|
|
21
|
-
} | null;
|
|
22
|
-
/**
|
|
23
|
-
* Checks whether an item is being dragged.
|
|
24
|
-
*/
|
|
25
|
-
isDragging: (state: TreeViewState<[UseTreeViewItemsReorderingSignature]>) => boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Checks whether an item can be reordered.
|
|
28
|
-
*/
|
|
29
|
-
canItemBeReordered: (args_0: import("@mui/x-tree-view/internals/corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("./useTreeViewItemsReordering.types.js").UseTreeViewItemsReorderingState & Partial<{}>, itemId: string) => boolean;
|
|
30
|
-
};
|