@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
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { DefaultizedProps } from '@mui/x-internals/types';
|
|
2
|
-
import { TreeViewPluginSignature, UseTreeViewItemsSignature } from '@mui/x-tree-view/internals';
|
|
3
|
-
import { TreeViewItemId, TreeViewItemsReorderingAction } from '@mui/x-tree-view/models';
|
|
4
|
-
export interface UseTreeViewItemsReorderingInstance {
|
|
5
|
-
/**
|
|
6
|
-
* Get the valid reordering action if a given item is the target of the ongoing reordering.
|
|
7
|
-
* @param {TreeViewItemId} itemId The id of the item to get the action of.
|
|
8
|
-
* @returns {TreeViewItemItemReorderingValidActions} The valid actions for the item.
|
|
9
|
-
*/
|
|
10
|
-
getDroppingTargetValidActions: (itemId: TreeViewItemId) => TreeViewItemItemReorderingValidActions;
|
|
11
|
-
/**
|
|
12
|
-
* Start a reordering for the given item.
|
|
13
|
-
* @param {TreeViewItemId} itemId The id of the item to start the reordering for.
|
|
14
|
-
*/
|
|
15
|
-
startDraggingItem: (itemId: TreeViewItemId) => void;
|
|
16
|
-
/**
|
|
17
|
-
* Complete the reordering of a given item.
|
|
18
|
-
* @param {TreeViewItemId} itemId The id of the item to complete the reordering for.
|
|
19
|
-
*/
|
|
20
|
-
completeDraggingItem: (itemId: TreeViewItemId) => void;
|
|
21
|
-
/**
|
|
22
|
-
* Cancel the current reordering operation and reset the state.
|
|
23
|
-
*/
|
|
24
|
-
cancelDraggingItem: () => void;
|
|
25
|
-
/**
|
|
26
|
-
* Set the new target item for the ongoing reordering.
|
|
27
|
-
* The action will be determined based on the position of the cursor inside the target and the valid actions for this target.
|
|
28
|
-
* @param {object} params The params describing the new target item.
|
|
29
|
-
* @param {TreeViewItemId} params.itemId The id of the new target item.
|
|
30
|
-
* @param {TreeViewItemItemReorderingValidActions} params.validActions The valid actions for the new target item.
|
|
31
|
-
* @param {number} params.targetHeight The height of the target item.
|
|
32
|
-
* @param {number} params.cursorY The Y coordinate of the mouse cursor.
|
|
33
|
-
* @param {number} params.cursorX The X coordinate of the mouse cursor.
|
|
34
|
-
* @param {HTMLDivElement} params.contentElement The DOM element rendered for the content slot.
|
|
35
|
-
*/
|
|
36
|
-
setDragTargetItem: (params: {
|
|
37
|
-
itemId: TreeViewItemId;
|
|
38
|
-
validActions: TreeViewItemItemReorderingValidActions;
|
|
39
|
-
targetHeight: number;
|
|
40
|
-
cursorY: number;
|
|
41
|
-
cursorX: number;
|
|
42
|
-
contentElement: HTMLDivElement;
|
|
43
|
-
}) => void;
|
|
44
|
-
}
|
|
45
|
-
export interface TreeViewItemReorderPosition {
|
|
46
|
-
parentId: TreeViewItemId | null;
|
|
47
|
-
index: number;
|
|
48
|
-
}
|
|
49
|
-
export type TreeViewItemItemReorderingValidActions = { [key in TreeViewItemsReorderingAction]?: TreeViewItemReorderPosition };
|
|
50
|
-
export interface UseTreeViewItemsReorderingParameters {
|
|
51
|
-
/**
|
|
52
|
-
* If `true`, the reordering of items is enabled.
|
|
53
|
-
* @default false
|
|
54
|
-
*/
|
|
55
|
-
itemsReordering?: boolean;
|
|
56
|
-
/**
|
|
57
|
-
* Determine if a given item can be reordered.
|
|
58
|
-
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
59
|
-
* @returns {boolean} `true` if the item can be reordered.
|
|
60
|
-
* @default () => true
|
|
61
|
-
*/
|
|
62
|
-
isItemReorderable?: (itemId: TreeViewItemId) => boolean;
|
|
63
|
-
/**
|
|
64
|
-
* Used to determine if a given item can move to some new position.
|
|
65
|
-
* @param {object} parameters The params describing the item re-ordering.
|
|
66
|
-
* @param {TreeViewItemId} parameters.itemId The id of the item that is being moved to a new position.
|
|
67
|
-
* @param {TreeViewItemReorderPosition} parameters.oldPosition The old position of the item.
|
|
68
|
-
* @param {TreeViewItemReorderPosition} parameters.newPosition The new position of the item.
|
|
69
|
-
* @returns {boolean} `true` if the item can move to the new position.
|
|
70
|
-
*/
|
|
71
|
-
canMoveItemToNewPosition?: (parameters: {
|
|
72
|
-
itemId: TreeViewItemId;
|
|
73
|
-
oldPosition: TreeViewItemReorderPosition;
|
|
74
|
-
newPosition: TreeViewItemReorderPosition;
|
|
75
|
-
}) => boolean;
|
|
76
|
-
/**
|
|
77
|
-
* Callback fired when a Tree Item is moved in the tree.
|
|
78
|
-
* @param {object} parameters The params describing the item re-ordering.
|
|
79
|
-
* @param {TreeViewItemId} parameters.itemId The id of the item moved.
|
|
80
|
-
* @param {TreeViewItemReorderPosition} parameters.oldPosition The old position of the item.
|
|
81
|
-
* @param {TreeViewItemReorderPosition} parameters.newPosition The new position of the item.
|
|
82
|
-
*/
|
|
83
|
-
onItemPositionChange?: (parameters: {
|
|
84
|
-
itemId: TreeViewItemId;
|
|
85
|
-
oldPosition: TreeViewItemReorderPosition;
|
|
86
|
-
newPosition: TreeViewItemReorderPosition;
|
|
87
|
-
}) => void;
|
|
88
|
-
}
|
|
89
|
-
export type UseTreeViewItemsReorderingParametersWithDefaults = DefaultizedProps<UseTreeViewItemsReorderingParameters, 'itemsReordering'>;
|
|
90
|
-
export interface UseTreeViewItemsReorderingState {
|
|
91
|
-
itemsReordering: {
|
|
92
|
-
isItemReorderable: (itemId: TreeViewItemId) => boolean;
|
|
93
|
-
currentReorder: {
|
|
94
|
-
draggedItemId: TreeViewItemId;
|
|
95
|
-
targetItemId: TreeViewItemId;
|
|
96
|
-
newPosition: TreeViewItemReorderPosition | null;
|
|
97
|
-
action: TreeViewItemsReorderingAction | null;
|
|
98
|
-
} | null;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
export type UseTreeViewItemsReorderingSignature = TreeViewPluginSignature<{
|
|
102
|
-
params: UseTreeViewItemsReorderingParameters;
|
|
103
|
-
paramsWithDefaults: UseTreeViewItemsReorderingParametersWithDefaults;
|
|
104
|
-
instance: UseTreeViewItemsReorderingInstance;
|
|
105
|
-
state: UseTreeViewItemsReorderingState;
|
|
106
|
-
dependencies: [UseTreeViewItemsSignature];
|
|
107
|
-
}>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { useTreeViewLazyLoading } from "./useTreeViewLazyLoading.js";
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
Object.defineProperty(exports, "useTreeViewLazyLoading", {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: function () {
|
|
9
|
-
return _useTreeViewLazyLoading.useTreeViewLazyLoading;
|
|
10
|
-
}
|
|
11
|
-
});
|
|
12
|
-
var _useTreeViewLazyLoading = require("./useTreeViewLazyLoading");
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
'use client';
|
|
3
|
-
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
exports.useTreeViewLazyLoading = void 0;
|
|
10
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
-
var React = _interopRequireWildcard(require("react"));
|
|
12
|
-
var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
|
|
13
|
-
var _useStableCallback = require("@base-ui/utils/useStableCallback");
|
|
14
|
-
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
15
|
-
var _internals = require("@mui/x-tree-view/internals");
|
|
16
|
-
var _utils = require("@mui/x-tree-view/utils");
|
|
17
|
-
var _utils2 = require("./utils");
|
|
18
|
-
const INITIAL_STATE = {
|
|
19
|
-
loading: {},
|
|
20
|
-
errors: {}
|
|
21
|
-
};
|
|
22
|
-
const useTreeViewLazyLoading = ({
|
|
23
|
-
instance,
|
|
24
|
-
params,
|
|
25
|
-
store
|
|
26
|
-
}) => {
|
|
27
|
-
const nestedDataManager = (0, _useRefWithInit.useRefWithInit)(() => new _utils2.NestedDataManager(instance)).current;
|
|
28
|
-
const cache = (0, _useRefWithInit.useRefWithInit)(() => params.dataSourceCache ?? new _utils.DataSourceCacheDefault({})).current;
|
|
29
|
-
const setDataSourceLoading = (0, _useStableCallback.useStableCallback)((itemId, isLoading) => {
|
|
30
|
-
if (!params.dataSource) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const itemIdWithDefault = itemId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
|
|
34
|
-
if (_internals.lazyLoadingSelectors.isItemLoading(store.state, itemIdWithDefault) === isLoading) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
const loading = (0, _extends2.default)({}, store.state.lazyLoading.dataSource.loading);
|
|
38
|
-
if (isLoading === false) {
|
|
39
|
-
delete loading[itemIdWithDefault];
|
|
40
|
-
} else {
|
|
41
|
-
loading[itemIdWithDefault] = isLoading;
|
|
42
|
-
}
|
|
43
|
-
store.set('lazyLoading', (0, _extends2.default)({}, store.state.lazyLoading, {
|
|
44
|
-
dataSource: (0, _extends2.default)({}, store.state.lazyLoading.dataSource, {
|
|
45
|
-
loading
|
|
46
|
-
})
|
|
47
|
-
}));
|
|
48
|
-
});
|
|
49
|
-
const setDataSourceError = (0, _useStableCallback.useStableCallback)((itemId, error) => {
|
|
50
|
-
if (!params.dataSource) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (_internals.lazyLoadingSelectors.itemError(store.state, itemId) === error) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
const stateId = itemId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
|
|
57
|
-
const errors = (0, _extends2.default)({}, store.state.lazyLoading.dataSource.errors);
|
|
58
|
-
if (error === null && errors[stateId] !== undefined) {
|
|
59
|
-
delete errors[stateId];
|
|
60
|
-
} else {
|
|
61
|
-
errors[stateId] = error;
|
|
62
|
-
}
|
|
63
|
-
store.set('lazyLoading', (0, _extends2.default)({}, store.state.lazyLoading, {
|
|
64
|
-
dataSource: (0, _extends2.default)({}, store.state.lazyLoading.dataSource, {
|
|
65
|
-
errors
|
|
66
|
-
})
|
|
67
|
-
}));
|
|
68
|
-
});
|
|
69
|
-
const fetchItems = (0, _useStableCallback.useStableCallback)(async parentIds => nestedDataManager.queue(parentIds));
|
|
70
|
-
const fetchItemChildren = (0, _useStableCallback.useStableCallback)(async ({
|
|
71
|
-
itemId,
|
|
72
|
-
forceRefresh
|
|
73
|
-
}) => {
|
|
74
|
-
if (!params.dataSource) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const {
|
|
78
|
-
getChildrenCount,
|
|
79
|
-
getTreeItems
|
|
80
|
-
} = params.dataSource;
|
|
81
|
-
// clear the request if the item is not in the tree
|
|
82
|
-
if (itemId != null && !_internals.itemsSelectors.itemMeta(store.state, itemId)) {
|
|
83
|
-
nestedDataManager.clearPendingRequest(itemId);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// reset the state if we are fetching the root items
|
|
88
|
-
if (itemId == null && _internals.lazyLoadingSelectors.dataSource(store.state) !== INITIAL_STATE) {
|
|
89
|
-
store.set('lazyLoading', (0, _extends2.default)({}, store.state.lazyLoading, {
|
|
90
|
-
dataSource: INITIAL_STATE
|
|
91
|
-
}));
|
|
92
|
-
}
|
|
93
|
-
const cacheKey = itemId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
|
|
94
|
-
if (!forceRefresh) {
|
|
95
|
-
// reads from the value from the cache
|
|
96
|
-
const cachedData = cache.get(cacheKey);
|
|
97
|
-
if (cachedData !== undefined && cachedData !== -1) {
|
|
98
|
-
if (itemId != null) {
|
|
99
|
-
nestedDataManager.setRequestSettled(itemId);
|
|
100
|
-
}
|
|
101
|
-
instance.setItemChildren({
|
|
102
|
-
items: cachedData,
|
|
103
|
-
parentId: itemId,
|
|
104
|
-
getChildrenCount
|
|
105
|
-
});
|
|
106
|
-
instance.setDataSourceLoading(itemId, false);
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// set the item loading status to true
|
|
111
|
-
instance.setDataSourceLoading(itemId, true);
|
|
112
|
-
if (cachedData === -1) {
|
|
113
|
-
instance.removeChildren(itemId);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// reset existing error if any
|
|
118
|
-
if (_internals.lazyLoadingSelectors.itemError(store.state, itemId)) {
|
|
119
|
-
instance.setDataSourceError(itemId, null);
|
|
120
|
-
}
|
|
121
|
-
try {
|
|
122
|
-
let response;
|
|
123
|
-
if (itemId == null) {
|
|
124
|
-
response = await getTreeItems();
|
|
125
|
-
} else {
|
|
126
|
-
response = await getTreeItems(itemId);
|
|
127
|
-
nestedDataManager.setRequestSettled(itemId);
|
|
128
|
-
}
|
|
129
|
-
// save the response in the cache
|
|
130
|
-
cache.set(cacheKey, response);
|
|
131
|
-
// update the items in the state
|
|
132
|
-
instance.setItemChildren({
|
|
133
|
-
items: response,
|
|
134
|
-
parentId: itemId,
|
|
135
|
-
getChildrenCount
|
|
136
|
-
});
|
|
137
|
-
} catch (error) {
|
|
138
|
-
const childrenFetchError = error;
|
|
139
|
-
// set the item error in the state
|
|
140
|
-
instance.setDataSourceError(itemId, childrenFetchError);
|
|
141
|
-
if (forceRefresh) {
|
|
142
|
-
instance.removeChildren(itemId);
|
|
143
|
-
}
|
|
144
|
-
} finally {
|
|
145
|
-
// set the item loading status to false
|
|
146
|
-
instance.setDataSourceLoading(itemId, false);
|
|
147
|
-
if (itemId != null) {
|
|
148
|
-
nestedDataManager.setRequestSettled(itemId);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
const updateItemChildren = (0, _useStableCallback.useStableCallback)(itemId => {
|
|
153
|
-
return instance.fetchItemChildren({
|
|
154
|
-
itemId,
|
|
155
|
-
forceRefresh: true
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
(0, _internals.useInstanceEventHandler)(instance, 'beforeItemToggleExpansion', async eventParameters => {
|
|
159
|
-
if (!params.dataSource || !eventParameters.shouldBeExpanded) {
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// prevent the default expansion behavior
|
|
164
|
-
eventParameters.isExpansionPrevented = true;
|
|
165
|
-
await instance.fetchItems([eventParameters.itemId]);
|
|
166
|
-
const hasError = _internals.lazyLoadingSelectors.itemHasError(store.state, eventParameters.itemId);
|
|
167
|
-
if (!hasError) {
|
|
168
|
-
instance.applyItemExpansion({
|
|
169
|
-
itemId: eventParameters.itemId,
|
|
170
|
-
shouldBeExpanded: true,
|
|
171
|
-
event: eventParameters.event
|
|
172
|
-
});
|
|
173
|
-
if (_internals.selectionSelectors.isItemSelected(store.state, eventParameters.itemId)) {
|
|
174
|
-
// make sure selection propagation works correctly
|
|
175
|
-
instance.setItemSelection({
|
|
176
|
-
event: eventParameters.event,
|
|
177
|
-
itemId: eventParameters.itemId,
|
|
178
|
-
keepExistingSelection: true,
|
|
179
|
-
shouldBeSelected: true
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
useLazyLoadOnMount({
|
|
185
|
-
instance,
|
|
186
|
-
params,
|
|
187
|
-
store
|
|
188
|
-
});
|
|
189
|
-
if (params.dataSource) {
|
|
190
|
-
instance.preventItemUpdates();
|
|
191
|
-
}
|
|
192
|
-
return {
|
|
193
|
-
instance: {
|
|
194
|
-
fetchItemChildren,
|
|
195
|
-
fetchItems,
|
|
196
|
-
updateItemChildren,
|
|
197
|
-
setDataSourceLoading,
|
|
198
|
-
setDataSourceError
|
|
199
|
-
},
|
|
200
|
-
publicAPI: {
|
|
201
|
-
updateItemChildren
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
};
|
|
205
|
-
exports.useTreeViewLazyLoading = useTreeViewLazyLoading;
|
|
206
|
-
useTreeViewLazyLoading.getInitialState = () => ({
|
|
207
|
-
lazyLoading: {
|
|
208
|
-
enabled: false,
|
|
209
|
-
dataSource: INITIAL_STATE
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
useTreeViewLazyLoading.params = {
|
|
213
|
-
dataSource: true,
|
|
214
|
-
dataSourceCache: true
|
|
215
|
-
};
|
|
216
|
-
function useLazyLoadOnMount({
|
|
217
|
-
instance,
|
|
218
|
-
params,
|
|
219
|
-
store
|
|
220
|
-
}) {
|
|
221
|
-
const firstRenderRef = React.useRef(true);
|
|
222
|
-
(0, _useEnhancedEffect.default)(() => {
|
|
223
|
-
if (!params.dataSource || !firstRenderRef.current) {
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
firstRenderRef.current = false;
|
|
227
|
-
store.set('lazyLoading', (0, _extends2.default)({}, store.state.lazyLoading, {
|
|
228
|
-
enabled: true
|
|
229
|
-
}));
|
|
230
|
-
async function fetchAllExpandedItems() {
|
|
231
|
-
async function fetchChildrenIfExpanded(parentIds) {
|
|
232
|
-
const expandedItems = parentIds.filter(id => _internals.expansionSelectors.isItemExpanded(store.state, id));
|
|
233
|
-
if (expandedItems.length > 0) {
|
|
234
|
-
const itemsToLazyLoad = expandedItems.filter(id => _internals.itemsSelectors.itemOrderedChildrenIds(store.state, id).length === 0);
|
|
235
|
-
if (itemsToLazyLoad.length > 0) {
|
|
236
|
-
await instance.fetchItems(itemsToLazyLoad);
|
|
237
|
-
}
|
|
238
|
-
const childrenIds = expandedItems.flatMap(id => _internals.itemsSelectors.itemOrderedChildrenIds(store.state, id));
|
|
239
|
-
await fetchChildrenIfExpanded(childrenIds);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if (params.items.length) {
|
|
243
|
-
const newlyExpandableItems = getExpandableItemsFromDataSource(store, params.dataSource);
|
|
244
|
-
if (newlyExpandableItems.length > 0) {
|
|
245
|
-
instance.addExpandableItems(newlyExpandableItems);
|
|
246
|
-
}
|
|
247
|
-
} else {
|
|
248
|
-
await instance.fetchItemChildren({
|
|
249
|
-
itemId: null
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
await fetchChildrenIfExpanded(_internals.itemsSelectors.itemOrderedChildrenIds(store.state, null));
|
|
253
|
-
}
|
|
254
|
-
fetchAllExpandedItems();
|
|
255
|
-
}, [instance, params.items, params.dataSource, store]);
|
|
256
|
-
}
|
|
257
|
-
function getExpandableItemsFromDataSource(store, dataSource) {
|
|
258
|
-
return Object.values(store.state.items.itemMetaLookup).filter(itemMeta => !itemMeta.expandable && dataSource.getChildrenCount(store.state.items.itemModelLookup[itemMeta.id]) !== 0).map(item => item.id);
|
|
259
|
-
}
|
|
File without changes
|
/package/esm/internals/plugins/{useTreeViewItemsReordering → itemsReordering}/itemPlugin.d.ts
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|