@mui/x-tree-view 8.0.0-beta.0 → 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 +77 -0
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
- package/esm/index.js +1 -1
- package/esm/internals/models/itemPlugin.d.ts +3 -3
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +13 -15
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -11
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +16 -21
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -38
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +38 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
- package/esm/internals/utils/selectors.d.ts +1 -1
- package/esm/useTreeItem/useTreeItem.js +11 -17
- package/esm/useTreeItem/useTreeItem.types.d.ts +0 -4
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +7 -13
- package/index.js +1 -1
- package/internals/models/itemPlugin.d.ts +3 -3
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +12 -14
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -12
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +15 -20
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -37
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +39 -2
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
- package/internals/utils/selectors.d.ts +1 -1
- package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
- package/modern/index.js +1 -1
- package/modern/internals/models/itemPlugin.d.ts +3 -3
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +13 -15
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -11
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +16 -21
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -38
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +38 -1
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
- package/modern/internals/utils/selectors.d.ts +1 -1
- package/modern/useTreeItem/useTreeItem.js +11 -17
- package/modern/useTreeItem/useTreeItem.types.d.ts +0 -4
- package/package.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/useTreeItem/useTreeItem.js +11 -17
- package/useTreeItem/useTreeItem.types.d.ts +0 -4
|
@@ -14,17 +14,10 @@ import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeVie
|
|
|
14
14
|
import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
15
15
|
import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
|
|
16
16
|
import { selectorItemExpansionTrigger } from "../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
|
|
17
|
+
import { selectorIsCheckboxSelectionEnabled, selectorIsItemSelectionEnabled } from "../internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js";
|
|
17
18
|
export const useTreeItem = parameters => {
|
|
18
19
|
const {
|
|
19
20
|
runItemPlugins,
|
|
20
|
-
items: {
|
|
21
|
-
onItemClick
|
|
22
|
-
},
|
|
23
|
-
selection: {
|
|
24
|
-
disableSelection,
|
|
25
|
-
checkboxSelection
|
|
26
|
-
},
|
|
27
|
-
label: labelContext,
|
|
28
21
|
instance,
|
|
29
22
|
publicAPI,
|
|
30
23
|
store
|
|
@@ -61,6 +54,8 @@ export const useTreeItem = parameters => {
|
|
|
61
54
|
const handleContentRef = useForkRef(contentRef, contentRefObject);
|
|
62
55
|
const checkboxRef = React.useRef(null);
|
|
63
56
|
const treeId = useSelector(store, selectorTreeViewId);
|
|
57
|
+
const isSelectionEnabledForItem = useSelector(store, selectorIsItemSelectionEnabled, itemId);
|
|
58
|
+
const isCheckboxSelectionEnabled = useSelector(store, selectorIsCheckboxSelectionEnabled);
|
|
64
59
|
const idAttribute = generateTreeItemIdAttribute({
|
|
65
60
|
itemId,
|
|
66
61
|
treeId,
|
|
@@ -70,8 +65,7 @@ export const useTreeItem = parameters => {
|
|
|
70
65
|
const sharedPropsEnhancerParams = {
|
|
71
66
|
rootRefObject,
|
|
72
67
|
contentRefObject,
|
|
73
|
-
interactions
|
|
74
|
-
status
|
|
68
|
+
interactions
|
|
75
69
|
};
|
|
76
70
|
const createRootHandleFocus = otherHandlers => event => {
|
|
77
71
|
otherHandlers.onFocus?.(event);
|
|
@@ -116,14 +110,14 @@ export const useTreeItem = parameters => {
|
|
|
116
110
|
};
|
|
117
111
|
const createContentHandleClick = otherHandlers => event => {
|
|
118
112
|
otherHandlers.onClick?.(event);
|
|
119
|
-
|
|
113
|
+
instance.handleItemClick(event, itemId);
|
|
120
114
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
121
115
|
return;
|
|
122
116
|
}
|
|
123
117
|
if (selectorItemExpansionTrigger(store.value) === 'content') {
|
|
124
118
|
interactions.handleExpansion(event);
|
|
125
119
|
}
|
|
126
|
-
if (!
|
|
120
|
+
if (!isCheckboxSelectionEnabled) {
|
|
127
121
|
interactions.handleSelection(event);
|
|
128
122
|
}
|
|
129
123
|
};
|
|
@@ -159,7 +153,7 @@ export const useTreeItem = parameters => {
|
|
|
159
153
|
if (status.selected) {
|
|
160
154
|
// - each selected node has aria-selected set to true.
|
|
161
155
|
ariaSelected = true;
|
|
162
|
-
} else if (
|
|
156
|
+
} else if (!isSelectionEnabledForItem) {
|
|
163
157
|
// - if the tree contains nodes that are not selectable, aria-selected is not present on those nodes.
|
|
164
158
|
ariaSelected = undefined;
|
|
165
159
|
} else {
|
|
@@ -217,10 +211,10 @@ export const useTreeItem = parameters => {
|
|
|
217
211
|
}, externalProps, {
|
|
218
212
|
onDoubleClick: createLabelHandleDoubleClick(externalEventHandlers)
|
|
219
213
|
});
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
return props;
|
|
214
|
+
const enhancedLabelProps = propsEnhancers.label?.(_extends({}, sharedPropsEnhancerParams, {
|
|
215
|
+
externalEventHandlers
|
|
216
|
+
})) ?? {};
|
|
217
|
+
return _extends({}, enhancedLabelProps, props);
|
|
224
218
|
};
|
|
225
219
|
const getLabelInputProps = (externalProps = {}) => {
|
|
226
220
|
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
@@ -66,10 +66,6 @@ export type UseTreeItemIconContainerSlotProps<ExternalProps = {}> = ExternalProp
|
|
|
66
66
|
export interface UseTreeItemLabelSlotOwnProps {
|
|
67
67
|
children: React.ReactNode;
|
|
68
68
|
onDoubleClick: TreeViewCancellableEventHandler<React.MouseEvent>;
|
|
69
|
-
/**
|
|
70
|
-
* Only defined when the `isItemEditable` experimental feature is enabled.
|
|
71
|
-
*/
|
|
72
|
-
editable?: boolean;
|
|
73
69
|
}
|
|
74
70
|
export type UseTreeItemLabelSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemLabelSlotOwnProps;
|
|
75
71
|
export interface UseTreeItemLabelInputSlotOwnProps {}
|
|
@@ -36,15 +36,12 @@ const useTreeItemUtils = ({
|
|
|
36
36
|
}) => {
|
|
37
37
|
const {
|
|
38
38
|
instance,
|
|
39
|
-
label,
|
|
40
39
|
store,
|
|
41
|
-
selection: {
|
|
42
|
-
multiSelect
|
|
43
|
-
},
|
|
44
40
|
publicAPI
|
|
45
41
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
46
42
|
const isItemExpandable = (0, _useSelector.useSelector)(store, _useTreeViewExpansion.selectorIsItemExpandable, itemId);
|
|
47
43
|
const isLazyLoadingEnabled = (0, _useSelector.useSelector)(store, _useTreeViewLazyLoading.selectorIsLazyLoadingEnabled);
|
|
44
|
+
const isMultiSelectEnabled = (0, _useSelector.useSelector)(store, _useTreeViewSelection.selectorIsMultiSelectEnabled);
|
|
48
45
|
const loading = (0, _useSelector.useSelector)(store, state => isLazyLoadingEnabled ? (0, _useTreeViewLazyLoading.selectorIsItemLoading)(state, itemId) : false);
|
|
49
46
|
const error = (0, _useSelector.useSelector)(store, state => isLazyLoadingEnabled ? Boolean((0, _useTreeViewLazyLoading.selectorGetTreeItemError)(state, itemId)) : false);
|
|
50
47
|
const isExpandable = itemHasChildren(children) || isItemExpandable;
|
|
@@ -52,11 +49,8 @@ const useTreeItemUtils = ({
|
|
|
52
49
|
const isFocused = (0, _useSelector.useSelector)(store, _useTreeViewFocus.selectorIsItemFocused, itemId);
|
|
53
50
|
const isSelected = (0, _useSelector.useSelector)(store, _useTreeViewSelection.selectorIsItemSelected, itemId);
|
|
54
51
|
const isDisabled = (0, _useSelector.useSelector)(store, _useTreeViewItems.selectorIsItemDisabled, itemId);
|
|
55
|
-
const isEditing = (0, _useSelector.useSelector)(store,
|
|
56
|
-
const isEditable = (0, _useSelector.useSelector)(store,
|
|
57
|
-
itemId,
|
|
58
|
-
isItemEditable: label.isItemEditable
|
|
59
|
-
}));
|
|
52
|
+
const isEditing = (0, _useSelector.useSelector)(store, _useTreeViewLabel2.selectorIsItemBeingEdited, itemId);
|
|
53
|
+
const isEditable = (0, _useSelector.useSelector)(store, _useTreeViewLabel2.selectorIsItemEditable, itemId);
|
|
60
54
|
const status = {
|
|
61
55
|
expandable: isExpandable,
|
|
62
56
|
expanded: isExpanded,
|
|
@@ -75,7 +69,7 @@ const useTreeItemUtils = ({
|
|
|
75
69
|
if (!status.focused) {
|
|
76
70
|
instance.focusItem(event, itemId);
|
|
77
71
|
}
|
|
78
|
-
const multiple =
|
|
72
|
+
const multiple = isMultiSelectEnabled && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
79
73
|
|
|
80
74
|
// If already expanded and trying to toggle selection don't close
|
|
81
75
|
if (status.expandable && !(multiple && (0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemId))) {
|
|
@@ -93,7 +87,7 @@ const useTreeItemUtils = ({
|
|
|
93
87
|
if (!status.focused) {
|
|
94
88
|
instance.focusItem(event, itemId);
|
|
95
89
|
}
|
|
96
|
-
const multiple =
|
|
90
|
+
const multiple = isMultiSelectEnabled && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
97
91
|
if (multiple) {
|
|
98
92
|
if (event.shiftKey) {
|
|
99
93
|
instance.expandSelectionRange(event, itemId);
|
|
@@ -114,13 +108,13 @@ const useTreeItemUtils = ({
|
|
|
114
108
|
};
|
|
115
109
|
const handleCheckboxSelection = event => {
|
|
116
110
|
const hasShift = event.nativeEvent.shiftKey;
|
|
117
|
-
if (
|
|
111
|
+
if (isMultiSelectEnabled && hasShift) {
|
|
118
112
|
instance.expandSelectionRange(event, itemId);
|
|
119
113
|
} else {
|
|
120
114
|
instance.setItemSelection({
|
|
121
115
|
event,
|
|
122
116
|
itemId,
|
|
123
|
-
keepExistingSelection:
|
|
117
|
+
keepExistingSelection: isMultiSelectEnabled,
|
|
124
118
|
shouldBeSelected: event.target.checked
|
|
125
119
|
});
|
|
126
120
|
}
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { EventHandlers } from '@mui/utils/types';
|
|
3
|
-
import type { UseTreeItemContentSlotOwnProps, UseTreeItemDragAndDropOverlaySlotOwnProps, UseTreeItemLabelInputSlotOwnProps, UseTreeItemRootSlotOwnProps, UseTreeItemCheckboxSlotOwnProps,
|
|
3
|
+
import type { UseTreeItemContentSlotOwnProps, UseTreeItemDragAndDropOverlaySlotOwnProps, UseTreeItemLabelInputSlotOwnProps, UseTreeItemRootSlotOwnProps, UseTreeItemCheckboxSlotOwnProps, UseTreeItemLabelSlotOwnProps } from '../../useTreeItem';
|
|
4
4
|
import type { UseTreeItemInteractions } from '../../hooks/useTreeItemUtils/useTreeItemUtils';
|
|
5
5
|
import type { TreeItemProps } from '../../TreeItem/TreeItem.types';
|
|
6
6
|
export interface TreeViewItemPluginSlotPropsEnhancerParams {
|
|
@@ -8,7 +8,6 @@ export interface TreeViewItemPluginSlotPropsEnhancerParams {
|
|
|
8
8
|
contentRefObject: React.RefObject<HTMLDivElement | null>;
|
|
9
9
|
externalEventHandlers: EventHandlers;
|
|
10
10
|
interactions: UseTreeItemInteractions;
|
|
11
|
-
status: UseTreeItemStatus;
|
|
12
11
|
}
|
|
13
12
|
type TreeViewItemPluginSlotPropsEnhancer<TSlotProps> = (params: TreeViewItemPluginSlotPropsEnhancerParams) => Partial<TSlotProps>;
|
|
14
13
|
export interface TreeViewItemPluginSlotPropsEnhancers {
|
|
@@ -16,6 +15,7 @@ export interface TreeViewItemPluginSlotPropsEnhancers {
|
|
|
16
15
|
content?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemContentSlotOwnProps>;
|
|
17
16
|
dragAndDropOverlay?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemDragAndDropOverlaySlotOwnProps>;
|
|
18
17
|
labelInput?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemLabelInputSlotOwnProps>;
|
|
18
|
+
label?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemLabelSlotOwnProps>;
|
|
19
19
|
checkbox?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemCheckboxSlotOwnProps>;
|
|
20
20
|
}
|
|
21
21
|
export interface TreeViewItemPluginResponse {
|
|
@@ -31,7 +31,7 @@ export interface TreeViewItemPluginResponse {
|
|
|
31
31
|
* Callback to enhance the slot props of the Tree Item.
|
|
32
32
|
*
|
|
33
33
|
* Not all slots are enabled by default,
|
|
34
|
-
* if a new plugin needs to pass to an
|
|
34
|
+
* if a new plugin needs to pass to an un-configured slot,
|
|
35
35
|
* it just needs to be added to `TreeViewItemPluginSlotPropsEnhancers`
|
|
36
36
|
*/
|
|
37
37
|
propsEnhancers?: TreeViewItemPluginSlotPropsEnhancers;
|
|
@@ -270,11 +270,6 @@ const useTreeViewItems = ({
|
|
|
270
270
|
params.onItemClick(event, itemId);
|
|
271
271
|
}
|
|
272
272
|
});
|
|
273
|
-
const pluginContextValue = React.useMemo(() => ({
|
|
274
|
-
items: {
|
|
275
|
-
onItemClick: handleItemClick
|
|
276
|
-
}
|
|
277
|
-
}), [handleItemClick]);
|
|
278
273
|
return {
|
|
279
274
|
getRootProps: () => ({
|
|
280
275
|
style: {
|
|
@@ -296,9 +291,9 @@ const useTreeViewItems = ({
|
|
|
296
291
|
addItems,
|
|
297
292
|
setTreeViewLoading,
|
|
298
293
|
setTreeViewError,
|
|
299
|
-
removeChildren
|
|
300
|
-
|
|
301
|
-
|
|
294
|
+
removeChildren,
|
|
295
|
+
handleItemClick
|
|
296
|
+
}
|
|
302
297
|
};
|
|
303
298
|
};
|
|
304
299
|
exports.useTreeViewItems = useTreeViewItems;
|
|
@@ -43,10 +43,7 @@ const selectorItemOrderedChildrenIds = exports.selectorItemOrderedChildrenIds =
|
|
|
43
43
|
* @param {TreeViewItemId} itemId The id of the item to get the model of.
|
|
44
44
|
* @returns {R} The model of the item.
|
|
45
45
|
*/
|
|
46
|
-
const selectorItemModel = exports.selectorItemModel = (0, _selectors.createSelector)([selectorTreeViewItemsState, (_, itemId) => itemId], (itemsState, itemId) =>
|
|
47
|
-
const a = itemsState.itemModelLookup[itemId];
|
|
48
|
-
return a;
|
|
49
|
-
});
|
|
46
|
+
const selectorItemModel = exports.selectorItemModel = (0, _selectors.createSelector)([selectorTreeViewItemsState, (_, itemId) => itemId], (itemsState, itemId) => itemsState.itemModelLookup[itemId]);
|
|
50
47
|
|
|
51
48
|
/**
|
|
52
49
|
* Get the meta-information of an item.
|
|
@@ -83,6 +83,12 @@ export interface UseTreeViewItemsInstance<R extends {}> extends Pick<UseTreeView
|
|
|
83
83
|
* @param {Error | null} error The error on the tree view.
|
|
84
84
|
*/
|
|
85
85
|
setTreeViewError: (error: Error | null) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Event handler to fire when the `content` slot of a given Tree Item is clicked.
|
|
88
|
+
* @param {React.MouseEvent} event The DOM event that triggered the change.
|
|
89
|
+
* @param {TreeViewItemId} itemId The id of the item being clicked.
|
|
90
|
+
*/
|
|
91
|
+
handleItemClick: (event: React.MouseEvent, itemId: TreeViewItemId) => void;
|
|
86
92
|
}
|
|
87
93
|
export interface UseTreeViewItemsParameters<R extends {
|
|
88
94
|
children?: R[];
|
|
@@ -188,11 +194,6 @@ export interface UseTreeViewItemsState<R extends {}> {
|
|
|
188
194
|
error: Error | null;
|
|
189
195
|
};
|
|
190
196
|
}
|
|
191
|
-
interface UseTreeViewItemsContextValue {
|
|
192
|
-
items: {
|
|
193
|
-
onItemClick: (event: React.MouseEvent, itemId: string) => void;
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
197
|
export type UseTreeViewItemsSignature = TreeViewPluginSignature<{
|
|
197
198
|
params: UseTreeViewItemsParameters<any>;
|
|
198
199
|
defaultizedParams: UseTreeViewItemsDefaultizedParameters<any>;
|
|
@@ -200,6 +201,5 @@ export type UseTreeViewItemsSignature = TreeViewPluginSignature<{
|
|
|
200
201
|
publicAPI: UseTreeViewItemsPublicAPI<any>;
|
|
201
202
|
events: UseTreeViewItemsEventLookup;
|
|
202
203
|
state: UseTreeViewItemsState<TreeViewDefaultItemModelProperties>;
|
|
203
|
-
contextValue: UseTreeViewItemsContextValue;
|
|
204
204
|
}>;
|
|
205
205
|
export {};
|
|
@@ -66,7 +66,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
66
66
|
}
|
|
67
67
|
return matchingItemId;
|
|
68
68
|
};
|
|
69
|
-
const canToggleItemSelection = itemId =>
|
|
69
|
+
const canToggleItemSelection = itemId => (0, _useTreeViewSelection.selectorIsSelectionEnabled)(store.value) && !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId);
|
|
70
70
|
const canToggleItemExpansion = itemId => {
|
|
71
71
|
return !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId) && (0, _useTreeViewExpansion.selectorIsItemExpandable)(store.value, itemId);
|
|
72
72
|
};
|
|
@@ -81,6 +81,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
81
81
|
}
|
|
82
82
|
const ctrlPressed = event.ctrlKey || event.metaKey;
|
|
83
83
|
const key = event.key;
|
|
84
|
+
const isMultiSelectEnabled = (0, _useTreeViewSelection.selectorIsMultiSelectEnabled)(store.value);
|
|
84
85
|
|
|
85
86
|
// eslint-disable-next-line default-case
|
|
86
87
|
switch (true) {
|
|
@@ -88,14 +89,14 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
88
89
|
case key === ' ' && canToggleItemSelection(itemId):
|
|
89
90
|
{
|
|
90
91
|
event.preventDefault();
|
|
91
|
-
if (
|
|
92
|
+
if (isMultiSelectEnabled && event.shiftKey) {
|
|
92
93
|
instance.expandSelectionRange(event, itemId);
|
|
93
94
|
} else {
|
|
94
95
|
instance.setItemSelection({
|
|
95
96
|
event,
|
|
96
97
|
itemId,
|
|
97
|
-
keepExistingSelection:
|
|
98
|
-
shouldBeSelected:
|
|
98
|
+
keepExistingSelection: isMultiSelectEnabled,
|
|
99
|
+
shouldBeSelected: undefined
|
|
99
100
|
});
|
|
100
101
|
}
|
|
101
102
|
break;
|
|
@@ -105,10 +106,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
105
106
|
// If the focused item has no children, we select it.
|
|
106
107
|
case key === 'Enter':
|
|
107
108
|
{
|
|
108
|
-
if ((0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel) && (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, {
|
|
109
|
-
itemId,
|
|
110
|
-
isItemEditable: params.isItemEditable
|
|
111
|
-
}) && !(0, _useTreeViewLabel2.selectorIsItemBeingEdited)(store.value, itemId)) {
|
|
109
|
+
if ((0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel) && (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, itemId) && !(0, _useTreeViewLabel2.selectorIsItemBeingEdited)(store.value, itemId)) {
|
|
112
110
|
instance.setEditedItemId(itemId);
|
|
113
111
|
} else if (canToggleItemExpansion(itemId)) {
|
|
114
112
|
instance.setItemExpansion({
|
|
@@ -117,7 +115,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
117
115
|
});
|
|
118
116
|
event.preventDefault();
|
|
119
117
|
} else if (canToggleItemSelection(itemId)) {
|
|
120
|
-
if (
|
|
118
|
+
if (isMultiSelectEnabled) {
|
|
121
119
|
event.preventDefault();
|
|
122
120
|
instance.setItemSelection({
|
|
123
121
|
event,
|
|
@@ -145,7 +143,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
145
143
|
|
|
146
144
|
// Multi select behavior when pressing Shift + ArrowDown
|
|
147
145
|
// Toggles the selection state of the next item
|
|
148
|
-
if (
|
|
146
|
+
if (isMultiSelectEnabled && event.shiftKey && canToggleItemSelection(nextItem)) {
|
|
149
147
|
instance.selectItemFromArrowNavigation(event, itemId, nextItem);
|
|
150
148
|
}
|
|
151
149
|
}
|
|
@@ -162,7 +160,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
162
160
|
|
|
163
161
|
// Multi select behavior when pressing Shift + ArrowUp
|
|
164
162
|
// Toggles the selection state of the previous item
|
|
165
|
-
if (
|
|
163
|
+
if (isMultiSelectEnabled && event.shiftKey && canToggleItemSelection(previousItem)) {
|
|
166
164
|
instance.selectItemFromArrowNavigation(event, itemId, previousItem);
|
|
167
165
|
}
|
|
168
166
|
}
|
|
@@ -220,7 +218,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
220
218
|
{
|
|
221
219
|
// Multi select behavior when pressing Ctrl + Shift + Home
|
|
222
220
|
// Selects the focused item and all items up to the first item.
|
|
223
|
-
if (canToggleItemSelection(itemId) &&
|
|
221
|
+
if (canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
|
|
224
222
|
instance.selectRangeFromStartToItem(event, itemId);
|
|
225
223
|
} else {
|
|
226
224
|
instance.focusItem(event, (0, _tree.getFirstNavigableItem)(store.value));
|
|
@@ -234,7 +232,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
234
232
|
{
|
|
235
233
|
// Multi select behavior when pressing Ctrl + Shirt + End
|
|
236
234
|
// Selects the focused item and all the items down to the last item.
|
|
237
|
-
if (canToggleItemSelection(itemId) &&
|
|
235
|
+
if (canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
|
|
238
236
|
instance.selectRangeFromItemToEnd(event, itemId);
|
|
239
237
|
} else {
|
|
240
238
|
instance.focusItem(event, (0, _tree.getLastNavigableItem)(store.value));
|
|
@@ -253,7 +251,7 @@ const useTreeViewKeyboardNavigation = ({
|
|
|
253
251
|
|
|
254
252
|
// Multi select behavior when pressing Ctrl + a
|
|
255
253
|
// Selects all the items
|
|
256
|
-
case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed &&
|
|
254
|
+
case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && isMultiSelectEnabled && (0, _useTreeViewSelection.selectorIsSelectionEnabled)(store.value):
|
|
257
255
|
{
|
|
258
256
|
instance.selectAllNavigableItems(event);
|
|
259
257
|
event.preventDefault();
|
package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts
CHANGED
|
@@ -5,8 +5,6 @@ import { UseTreeViewSelectionSignature } from "../useTreeViewSelection/index.js"
|
|
|
5
5
|
import { UseTreeViewFocusSignature } from "../useTreeViewFocus/index.js";
|
|
6
6
|
import { UseTreeViewExpansionSignature } from "../useTreeViewExpansion/index.js";
|
|
7
7
|
import { TreeViewItemId, TreeViewCancellableEvent } from "../../../models/index.js";
|
|
8
|
-
import { UseTreeViewLabelSignature } from "../useTreeViewLabel/index.js";
|
|
9
|
-
import { UseTreeViewLazyLoadingSignature } from "../useTreeViewLazyLoading/index.js";
|
|
10
8
|
export interface UseTreeViewKeyboardNavigationInstance {
|
|
11
9
|
/**
|
|
12
10
|
* Updates the `firstCharMap` to add/remove the first character of some item's labels.
|
|
@@ -26,7 +24,6 @@ export interface UseTreeViewKeyboardNavigationInstance {
|
|
|
26
24
|
export type UseTreeViewKeyboardNavigationSignature = TreeViewPluginSignature<{
|
|
27
25
|
instance: UseTreeViewKeyboardNavigationInstance;
|
|
28
26
|
dependencies: [UseTreeViewItemsSignature, UseTreeViewSelectionSignature, UseTreeViewFocusSignature, UseTreeViewExpansionSignature];
|
|
29
|
-
optionalDependencies: [UseTreeViewLabelSignature, UseTreeViewLazyLoadingSignature];
|
|
30
27
|
}>;
|
|
31
28
|
export type TreeViewFirstCharMap = {
|
|
32
29
|
[itemId: string]: string;
|
|
@@ -13,33 +13,30 @@ const useTreeViewLabelItemPlugin = ({
|
|
|
13
13
|
props
|
|
14
14
|
}) => {
|
|
15
15
|
const {
|
|
16
|
-
store
|
|
17
|
-
label: {
|
|
18
|
-
isItemEditable
|
|
19
|
-
}
|
|
16
|
+
store
|
|
20
17
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
21
18
|
const {
|
|
22
19
|
label,
|
|
23
20
|
itemId
|
|
24
21
|
} = props;
|
|
25
22
|
const [labelInputValue, setLabelInputValue] = React.useState(label);
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
isItemEditable
|
|
29
|
-
});
|
|
30
|
-
const editing = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemBeingEdited, itemId);
|
|
23
|
+
const isItemEditable = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemEditable, itemId);
|
|
24
|
+
const isItemBeingEdited = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemBeingEdited, itemId);
|
|
31
25
|
React.useEffect(() => {
|
|
32
|
-
if (!
|
|
26
|
+
if (!isItemBeingEdited) {
|
|
33
27
|
setLabelInputValue(label);
|
|
34
28
|
}
|
|
35
|
-
}, [
|
|
29
|
+
}, [isItemBeingEdited, label]);
|
|
36
30
|
return {
|
|
37
31
|
propsEnhancers: {
|
|
32
|
+
label: () => ({
|
|
33
|
+
editable: isItemEditable
|
|
34
|
+
}),
|
|
38
35
|
labelInput: ({
|
|
39
36
|
externalEventHandlers,
|
|
40
37
|
interactions
|
|
41
38
|
}) => {
|
|
42
|
-
if (!
|
|
39
|
+
if (!isItemEditable) {
|
|
43
40
|
return {};
|
|
44
41
|
}
|
|
45
42
|
const handleKeydown = event => {
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.useTreeViewLabel = void 0;
|
|
9
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var
|
|
9
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
11
10
|
var _useTreeViewLabel = require("./useTreeViewLabel.itemPlugin");
|
|
12
11
|
const useTreeViewLabel = ({
|
|
13
12
|
store,
|
|
@@ -15,9 +14,9 @@ const useTreeViewLabel = ({
|
|
|
15
14
|
}) => {
|
|
16
15
|
const setEditedItemId = editedItemId => {
|
|
17
16
|
store.update(prevState => (0, _extends2.default)({}, prevState, {
|
|
18
|
-
label: {
|
|
17
|
+
label: (0, _extends2.default)({}, prevState.label, {
|
|
19
18
|
editedItemId
|
|
20
|
-
}
|
|
19
|
+
})
|
|
21
20
|
}));
|
|
22
21
|
};
|
|
23
22
|
const updateItemLabel = (itemId, label) => {
|
|
@@ -43,11 +42,14 @@ const useTreeViewLabel = ({
|
|
|
43
42
|
params.onItemLabelChange(itemId, label);
|
|
44
43
|
}
|
|
45
44
|
};
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
46
|
+
const isItemEditable = params.isItemEditable;
|
|
47
|
+
store.update(prevState => (0, _extends2.default)({}, prevState, {
|
|
48
|
+
label: (0, _extends2.default)({}, prevState.label, {
|
|
49
|
+
isItemEditable: typeof isItemEditable === 'boolean' ? () => isItemEditable : isItemEditable
|
|
50
|
+
})
|
|
51
|
+
}));
|
|
52
|
+
}, [store, params.isItemEditable]);
|
|
51
53
|
return {
|
|
52
54
|
instance: {
|
|
53
55
|
setEditedItemId,
|
|
@@ -55,8 +57,7 @@ const useTreeViewLabel = ({
|
|
|
55
57
|
},
|
|
56
58
|
publicAPI: {
|
|
57
59
|
updateItemLabel
|
|
58
|
-
}
|
|
59
|
-
contextValue: pluginContextValue
|
|
60
|
+
}
|
|
60
61
|
};
|
|
61
62
|
};
|
|
62
63
|
exports.useTreeViewLabel = useTreeViewLabel;
|
|
@@ -66,8 +67,11 @@ useTreeViewLabel.getDefaultizedParams = ({
|
|
|
66
67
|
}) => (0, _extends2.default)({}, params, {
|
|
67
68
|
isItemEditable: params.isItemEditable ?? false
|
|
68
69
|
});
|
|
69
|
-
useTreeViewLabel.getInitialState = (
|
|
70
|
+
useTreeViewLabel.getInitialState = ({
|
|
71
|
+
isItemEditable
|
|
72
|
+
}) => ({
|
|
70
73
|
label: {
|
|
74
|
+
isItemEditable: typeof isItemEditable === 'boolean' ? () => isItemEditable : isItemEditable,
|
|
71
75
|
editedItemId: null
|
|
72
76
|
}
|
|
73
77
|
});
|
|
@@ -3,36 +3,28 @@ import { TreeViewRootSelector } from "../../utils/selectors.js";
|
|
|
3
3
|
/**
|
|
4
4
|
* Check if an item is editable.
|
|
5
5
|
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
6
|
-
* @param {
|
|
7
|
-
* @param {TreeViewItemId} params.itemId The id of the item to check.
|
|
8
|
-
* @param {((item: any) => boolean) | boolean} params.isItemEditable The function to determine if an item is editable.
|
|
6
|
+
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
9
7
|
* @returns {boolean} `true` if the item is editable, `false` otherwise.
|
|
10
8
|
*/
|
|
11
|
-
export declare const selectorIsItemEditable: ((state: any,
|
|
9
|
+
export declare const selectorIsItemEditable: ((state: any, itemId: string) => boolean) & {
|
|
12
10
|
clearCache: () => void;
|
|
13
11
|
resultsCount: () => number;
|
|
14
12
|
resetResultsCount: () => void;
|
|
15
13
|
} & {
|
|
16
14
|
resultFunc: (resultFuncArgs_0: {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean;
|
|
15
|
+
isItemEditable: (item: any) => boolean;
|
|
16
|
+
editedItemId: string | null;
|
|
17
|
+
} | undefined, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean;
|
|
20
18
|
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean) & {
|
|
19
|
+
isItemEditable: (item: any) => boolean;
|
|
20
|
+
editedItemId: string | null;
|
|
21
|
+
} | undefined, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean) & {
|
|
24
22
|
clearCache: () => void;
|
|
25
23
|
resultsCount: () => number;
|
|
26
24
|
resetResultsCount: () => void;
|
|
27
25
|
};
|
|
28
26
|
lastResult: () => boolean;
|
|
29
|
-
dependencies: [(
|
|
30
|
-
itemId: string;
|
|
31
|
-
isItemEditable: ((item: any) => boolean) | boolean;
|
|
32
|
-
}) => {
|
|
33
|
-
itemId: string;
|
|
34
|
-
isItemEditable: ((item: any) => boolean) | boolean;
|
|
35
|
-
}, (state: any, args: any) => import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>];
|
|
27
|
+
dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>, (state: any, itemId: string) => import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>];
|
|
36
28
|
recomputations: () => number;
|
|
37
29
|
resetRecomputations: () => void;
|
|
38
30
|
dependencyRecomputations: () => number;
|
|
@@ -53,17 +45,19 @@ export declare const selectorIsItemBeingEdited: ((state: any, itemId: string) =>
|
|
|
53
45
|
resetResultsCount: () => void;
|
|
54
46
|
} & {
|
|
55
47
|
resultFunc: (resultFuncArgs_0: {
|
|
48
|
+
isItemEditable: (item: any) => boolean;
|
|
56
49
|
editedItemId: string | null;
|
|
57
|
-
}, resultFuncArgs_1: string) => boolean;
|
|
50
|
+
} | undefined, resultFuncArgs_1: string) => boolean;
|
|
58
51
|
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
52
|
+
isItemEditable: (item: any) => boolean;
|
|
59
53
|
editedItemId: string | null;
|
|
60
|
-
}, resultFuncArgs_1: string) => boolean) & {
|
|
54
|
+
} | undefined, resultFuncArgs_1: string) => boolean) & {
|
|
61
55
|
clearCache: () => void;
|
|
62
56
|
resultsCount: () => number;
|
|
63
57
|
resetResultsCount: () => void;
|
|
64
58
|
};
|
|
65
59
|
lastResult: () => boolean;
|
|
66
|
-
dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature>, (_: any, itemId: string) => string];
|
|
60
|
+
dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>, (_: any, itemId: string) => string];
|
|
67
61
|
recomputations: () => number;
|
|
68
62
|
resetRecomputations: () => void;
|
|
69
63
|
dependencyRecomputations: () => number;
|
|
@@ -11,16 +11,14 @@ const selectorTreeViewLabelState = state => state.label;
|
|
|
11
11
|
/**
|
|
12
12
|
* Check if an item is editable.
|
|
13
13
|
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
14
|
-
* @param {
|
|
15
|
-
* @param {TreeViewItemId} params.itemId The id of the item to check.
|
|
16
|
-
* @param {((item: any) => boolean) | boolean} params.isItemEditable The function to determine if an item is editable.
|
|
14
|
+
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
17
15
|
* @returns {boolean} `true` if the item is editable, `false` otherwise.
|
|
18
16
|
*/
|
|
19
|
-
const selectorIsItemEditable = exports.selectorIsItemEditable = (0, _selectors.createSelector)([
|
|
20
|
-
if (!itemModel || !
|
|
17
|
+
const selectorIsItemEditable = exports.selectorIsItemEditable = (0, _selectors.createSelector)([selectorTreeViewLabelState, (state, itemId) => (0, _useTreeViewItems.selectorItemModel)(state, itemId)], (labelState, itemModel) => {
|
|
18
|
+
if (!itemModel || !labelState) {
|
|
21
19
|
return false;
|
|
22
20
|
}
|
|
23
|
-
return
|
|
21
|
+
return labelState.isItemEditable(itemModel);
|
|
24
22
|
});
|
|
25
23
|
|
|
26
24
|
/**
|
|
@@ -29,4 +27,4 @@ const selectorIsItemEditable = exports.selectorIsItemEditable = (0, _selectors.c
|
|
|
29
27
|
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
30
28
|
* @returns {boolean} `true` if the item is being edited, `false` otherwise.
|
|
31
29
|
*/
|
|
32
|
-
const selectorIsItemBeingEdited = exports.selectorIsItemBeingEdited = (0, _selectors.createSelector)([selectorTreeViewLabelState, (_, itemId) => itemId], (labelState, itemId) => labelState
|
|
30
|
+
const selectorIsItemBeingEdited = exports.selectorIsItemBeingEdited = (0, _selectors.createSelector)([selectorTreeViewLabelState, (_, itemId) => itemId], (labelState, itemId) => labelState?.editedItemId === itemId);
|
|
@@ -38,22 +38,23 @@ export interface UseTreeViewLabelParameters<R extends {}> {
|
|
|
38
38
|
export type UseTreeViewLabelDefaultizedParameters<R extends {}> = DefaultizedProps<UseTreeViewLabelParameters<R>, 'isItemEditable'>;
|
|
39
39
|
export interface UseTreeViewLabelState {
|
|
40
40
|
label: {
|
|
41
|
+
isItemEditable: (item: any) => boolean;
|
|
41
42
|
editedItemId: string | null;
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
|
-
export interface UseTreeViewLabelContextValue {
|
|
45
|
-
label: Pick<UseTreeViewLabelDefaultizedParameters<any>, 'isItemEditable'>;
|
|
46
|
-
}
|
|
47
45
|
export type UseTreeViewLabelSignature = TreeViewPluginSignature<{
|
|
48
46
|
params: UseTreeViewLabelParameters<any>;
|
|
49
47
|
defaultizedParams: UseTreeViewLabelDefaultizedParameters<any>;
|
|
50
48
|
publicAPI: UseTreeViewLabelPublicAPI;
|
|
51
49
|
instance: UseTreeViewLabelInstance;
|
|
52
50
|
state: UseTreeViewLabelState;
|
|
53
|
-
contextValue: UseTreeViewLabelContextValue;
|
|
54
51
|
dependencies: [UseTreeViewItemsSignature];
|
|
55
52
|
}>;
|
|
56
53
|
export interface UseTreeItemLabelInputSlotPropsFromLabelEditing extends TreeItemLabelInputProps {}
|
|
54
|
+
export interface UseTreeItemLabelSlotPropsFromLabelEditing {
|
|
55
|
+
editable?: boolean;
|
|
56
|
+
}
|
|
57
57
|
declare module '@mui/x-tree-view/useTreeItem' {
|
|
58
58
|
interface UseTreeItemLabelInputSlotOwnProps extends UseTreeItemLabelInputSlotPropsFromLabelEditing {}
|
|
59
|
+
interface UseTreeItemLabelSlotOwnProps extends UseTreeItemLabelSlotPropsFromLabelEditing {}
|
|
59
60
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import { TreeViewAnyPluginSignature, TreeViewState } from "../../models/index.js";
|
|
2
1
|
import { TreeViewRootSelector, TreeViewRootSelectorForOptionalPlugin } from "../../utils/selectors.js";
|
|
3
2
|
import { UseTreeViewLazyLoadingSignature } from "./useTreeViewLazyLoading.types.js";
|
|
4
|
-
export type Temp<TSignature extends TreeViewAnyPluginSignature> = <TSignatures extends [], TOptionalSignatures extends [TSignature]>(state: TreeViewState<TSignatures, TOptionalSignatures>) => TSignature['state'][keyof TSignature['state']];
|
|
5
3
|
export declare const selectorDataSourceState: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("./useTreeViewLazyLoading.types").UseTreeViewLazyLoadingState & Partial<{}> & {
|
|
6
4
|
cacheKey: import("../../models").TreeViewStateCacheKey;
|
|
7
5
|
}) => {
|