@mui/x-tree-view 8.0.0-beta.0 → 8.0.0-beta.2
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 +171 -0
- package/RichTreeView/RichTreeView.js +17 -5
- package/RichTreeView/richTreeViewClasses.d.ts +2 -4
- package/RichTreeView/richTreeViewClasses.js +1 -1
- package/SimpleTreeView/SimpleTreeView.js +17 -5
- package/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
- package/SimpleTreeView/simpleTreeViewClasses.js +1 -1
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.js +45 -49
- package/TreeItem/index.d.ts +2 -1
- package/TreeItem/index.js +13 -21
- package/TreeItem/treeItemClasses.d.ts +40 -18
- package/TreeItem/treeItemClasses.js +3 -1
- package/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
- package/esm/RichTreeView/RichTreeView.js +17 -5
- package/esm/RichTreeView/richTreeViewClasses.d.ts +2 -4
- package/esm/RichTreeView/richTreeViewClasses.js +1 -1
- package/esm/SimpleTreeView/SimpleTreeView.js +17 -5
- package/esm/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
- package/esm/SimpleTreeView/simpleTreeViewClasses.js +1 -1
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItem/TreeItem.js +45 -49
- package/esm/TreeItem/index.d.ts +2 -1
- package/esm/TreeItem/index.js +1 -1
- package/esm/TreeItem/treeItemClasses.d.ts +40 -18
- package/esm/TreeItem/treeItemClasses.js +3 -1
- package/esm/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
- package/esm/index.js +1 -1
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
- package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
- package/esm/internals/TreeViewProvider/TreeViewContext.js +8 -1
- package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
- package/esm/internals/TreeViewProvider/TreeViewProvider.js +17 -5
- package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
- package/esm/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
- package/esm/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
- package/esm/internals/TreeViewProvider/index.d.ts +1 -1
- package/esm/internals/TreeViewProvider/index.js +1 -1
- package/esm/internals/index.d.ts +2 -1
- package/esm/internals/models/itemPlugin.d.ts +3 -3
- package/esm/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
- package/esm/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
- package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
- package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
- package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
- package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
- 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/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
- 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 +16 -17
- package/esm/useTreeItem/useTreeItem.types.d.ts +9 -4
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +7 -13
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
- package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
- package/internals/TreeViewProvider/TreeViewContext.js +10 -2
- package/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
- package/internals/TreeViewProvider/TreeViewProvider.js +17 -5
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
- package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
- package/internals/TreeViewProvider/TreeViewStyleContext.js +21 -0
- package/internals/TreeViewProvider/index.d.ts +1 -1
- package/internals/TreeViewProvider/index.js +2 -2
- package/internals/index.d.ts +2 -1
- package/internals/models/itemPlugin.d.ts +3 -3
- package/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
- package/internals/plugins/useTreeViewItemCustomization/index.js +12 -0
- package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
- package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +32 -0
- package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
- package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +5 -0
- 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/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
- 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/RichTreeView/RichTreeView.js +17 -5
- package/modern/RichTreeView/richTreeViewClasses.d.ts +2 -4
- package/modern/RichTreeView/richTreeViewClasses.js +1 -1
- package/modern/SimpleTreeView/SimpleTreeView.js +17 -5
- package/modern/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
- package/modern/SimpleTreeView/simpleTreeViewClasses.js +1 -1
- package/modern/TreeItem/TreeItem.d.ts +1 -1
- package/modern/TreeItem/TreeItem.js +45 -49
- package/modern/TreeItem/index.d.ts +2 -1
- package/modern/TreeItem/index.js +1 -1
- package/modern/TreeItem/treeItemClasses.d.ts +40 -18
- package/modern/TreeItem/treeItemClasses.js +3 -1
- package/modern/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
- package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
- package/modern/index.js +1 -1
- package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
- package/modern/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
- package/modern/internals/TreeViewProvider/TreeViewContext.js +8 -1
- package/modern/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
- package/modern/internals/TreeViewProvider/TreeViewProvider.js +17 -5
- package/modern/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
- package/modern/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
- package/modern/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
- package/modern/internals/TreeViewProvider/index.d.ts +1 -1
- package/modern/internals/TreeViewProvider/index.js +1 -1
- package/modern/internals/index.d.ts +2 -1
- package/modern/internals/models/itemPlugin.d.ts +3 -3
- package/modern/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
- package/modern/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
- package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
- package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
- package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
- package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
- 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/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
- 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 +16 -17
- package/modern/useTreeItem/useTreeItem.types.d.ts +9 -4
- package/package.json +2 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/useTreeItem/useTreeItem.js +16 -17
- package/useTreeItem/useTreeItem.types.d.ts +9 -4
- package/esm/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
- package/esm/internals/TreeViewProvider/useTreeViewContext.js +0 -9
- package/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
- package/internals/TreeViewProvider/useTreeViewContext.js +0 -17
- package/modern/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
- package/modern/internals/TreeViewProvider/useTreeViewContext.js +0 -9
|
@@ -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 {
|
|
@@ -195,6 +189,11 @@ export const useTreeItem = parameters => {
|
|
|
195
189
|
onMouseDown: createContentHandleMouseDown(externalEventHandlers),
|
|
196
190
|
status
|
|
197
191
|
});
|
|
192
|
+
['expanded', 'selected', 'focused', 'disabled', 'editing', 'editable'].forEach(key => {
|
|
193
|
+
if (status[key]) {
|
|
194
|
+
props[`data-${key}`] = '';
|
|
195
|
+
}
|
|
196
|
+
});
|
|
198
197
|
const enhancedContentProps = propsEnhancers.content?.(_extends({}, sharedPropsEnhancerParams, {
|
|
199
198
|
externalEventHandlers
|
|
200
199
|
})) ?? {};
|
|
@@ -217,10 +216,10 @@ export const useTreeItem = parameters => {
|
|
|
217
216
|
}, externalProps, {
|
|
218
217
|
onDoubleClick: createLabelHandleDoubleClick(externalEventHandlers)
|
|
219
218
|
});
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
return props;
|
|
219
|
+
const enhancedLabelProps = propsEnhancers.label?.(_extends({}, sharedPropsEnhancerParams, {
|
|
220
|
+
externalEventHandlers
|
|
221
|
+
})) ?? {};
|
|
222
|
+
return _extends({}, enhancedLabelProps, props);
|
|
224
223
|
};
|
|
225
224
|
const getLabelInputProps = (externalProps = {}) => {
|
|
226
225
|
const externalEventHandlers = extractEventHandlers(externalProps);
|
|
@@ -55,7 +55,16 @@ export interface UseTreeItemContentSlotPropsFromUseTreeItem {
|
|
|
55
55
|
onClick: TreeViewCancellableEventHandler<React.MouseEvent>;
|
|
56
56
|
onMouseDown: TreeViewCancellableEventHandler<React.MouseEvent>;
|
|
57
57
|
ref: React.RefCallback<HTMLDivElement> | null;
|
|
58
|
+
/**
|
|
59
|
+
* @deprecated Will be removed in the next major version. Please use the data-attrs instead.
|
|
60
|
+
*/
|
|
58
61
|
status: UseTreeItemStatus;
|
|
62
|
+
'data-expanded'?: '';
|
|
63
|
+
'data-selected'?: '';
|
|
64
|
+
'data-focused'?: '';
|
|
65
|
+
'data-disabled'?: '';
|
|
66
|
+
'data-editing'?: '';
|
|
67
|
+
'data-editable'?: '';
|
|
59
68
|
}
|
|
60
69
|
export interface UseTreeItemContentSlotOwnProps extends UseTreeItemContentSlotPropsFromUseTreeItem {}
|
|
61
70
|
export type UseTreeItemContentSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemContentSlotOwnProps;
|
|
@@ -66,10 +75,6 @@ export type UseTreeItemIconContainerSlotProps<ExternalProps = {}> = ExternalProp
|
|
|
66
75
|
export interface UseTreeItemLabelSlotOwnProps {
|
|
67
76
|
children: React.ReactNode;
|
|
68
77
|
onDoubleClick: TreeViewCancellableEventHandler<React.MouseEvent>;
|
|
69
|
-
/**
|
|
70
|
-
* Only defined when the `isItemEditable` experimental feature is enabled.
|
|
71
|
-
*/
|
|
72
|
-
editable?: boolean;
|
|
73
78
|
}
|
|
74
79
|
export type UseTreeItemLabelSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemLabelSlotOwnProps;
|
|
75
80
|
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
|
@@ -9,7 +9,7 @@ exports.TreeViewChildrenItemContext = void 0;
|
|
|
9
9
|
exports.TreeViewChildrenItemProvider = TreeViewChildrenItemProvider;
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
var
|
|
12
|
+
var _TreeViewContext = require("./TreeViewContext");
|
|
13
13
|
var _utils = require("../utils/utils");
|
|
14
14
|
var _useTreeViewItems = require("../plugins/useTreeViewItems/useTreeViewItems.selectors");
|
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -27,7 +27,7 @@ function TreeViewChildrenItemProvider(props) {
|
|
|
27
27
|
instance,
|
|
28
28
|
store,
|
|
29
29
|
rootRef
|
|
30
|
-
} = (0,
|
|
30
|
+
} = (0, _TreeViewContext.useTreeViewContext)();
|
|
31
31
|
const childrenIdAttrToIdRef = React.useRef(new Map());
|
|
32
32
|
React.useEffect(() => {
|
|
33
33
|
if (!rootRef.current) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
2
3
|
import { TreeViewContextValue } from "./TreeViewProvider.types.js";
|
|
3
4
|
/**
|
|
4
5
|
* @ignore - internal component.
|
|
5
6
|
*/
|
|
6
|
-
export declare const TreeViewContext: React.Context<TreeViewContextValue<any> | null>;
|
|
7
|
+
export declare const TreeViewContext: React.Context<TreeViewContextValue<any> | null>;
|
|
8
|
+
export declare const useTreeViewContext: <TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []>() => TreeViewContextValue<TSignatures, TOptionalSignatures>;
|
|
@@ -4,7 +4,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.TreeViewContext = void 0;
|
|
7
|
+
exports.useTreeViewContext = exports.TreeViewContext = void 0;
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
/**
|
|
10
10
|
* @ignore - internal component.
|
|
@@ -12,4 +12,12 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
12
12
|
const TreeViewContext = exports.TreeViewContext = /*#__PURE__*/React.createContext(null);
|
|
13
13
|
if (process.env.NODE_ENV !== 'production') {
|
|
14
14
|
TreeViewContext.displayName = 'TreeViewContext';
|
|
15
|
-
}
|
|
15
|
+
}
|
|
16
|
+
const useTreeViewContext = () => {
|
|
17
|
+
const context = React.useContext(TreeViewContext);
|
|
18
|
+
if (context == null) {
|
|
19
|
+
throw new Error(['MUI X: Could not find the Tree View context.', 'It looks like you rendered your component outside of a SimpleTreeView or RichTreeView parent component.', 'This can also happen if you are bundling multiple versions of the Tree View.'].join('\n'));
|
|
20
|
+
}
|
|
21
|
+
return context;
|
|
22
|
+
};
|
|
23
|
+
exports.useTreeViewContext = useTreeViewContext;
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { TreeViewProviderProps } from "./TreeViewProvider.types.js";
|
|
3
3
|
import { TreeViewAnyPluginSignature } from "../models/index.js";
|
|
4
4
|
/**
|
|
5
|
-
* Sets up the contexts for the underlying
|
|
5
|
+
* Sets up the contexts for the underlying Tree Item components.
|
|
6
6
|
*
|
|
7
7
|
* @ignore - do not document.
|
|
8
8
|
*/
|
|
@@ -7,21 +7,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.TreeViewProvider = TreeViewProvider;
|
|
8
8
|
var React = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _TreeViewContext = require("./TreeViewContext");
|
|
10
|
+
var _TreeViewStyleContext = require("./TreeViewStyleContext");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
const EMPTY_OBJECT = {};
|
|
13
|
+
|
|
11
14
|
/**
|
|
12
|
-
* Sets up the contexts for the underlying
|
|
15
|
+
* Sets up the contexts for the underlying Tree Item components.
|
|
13
16
|
*
|
|
14
17
|
* @ignore - do not document.
|
|
15
18
|
*/
|
|
16
19
|
function TreeViewProvider(props) {
|
|
17
20
|
const {
|
|
18
|
-
|
|
21
|
+
contextValue,
|
|
22
|
+
classes = EMPTY_OBJECT,
|
|
19
23
|
children
|
|
20
24
|
} = props;
|
|
25
|
+
|
|
26
|
+
// TODO: Add the icons to this context and drop useTreeViewIcons
|
|
27
|
+
const styleContextValue = React.useMemo(() => ({
|
|
28
|
+
classes
|
|
29
|
+
}), [classes]);
|
|
21
30
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewContext.TreeViewContext.Provider, {
|
|
22
|
-
value:
|
|
23
|
-
children:
|
|
24
|
-
|
|
31
|
+
value: contextValue,
|
|
32
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewStyleContext.TreeViewStyleContext.Provider, {
|
|
33
|
+
value: styleContextValue,
|
|
34
|
+
children: contextValue.wrapRoot({
|
|
35
|
+
children
|
|
36
|
+
})
|
|
25
37
|
})
|
|
26
38
|
});
|
|
27
39
|
}
|
|
@@ -3,6 +3,7 @@ import { MergeSignaturesProperty, TreeItemWrapper, TreeRootWrapper, TreeViewAnyP
|
|
|
3
3
|
import { TreeViewStore } from "../utils/TreeViewStore.js";
|
|
4
4
|
import { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
|
|
5
5
|
import type { TreeItemProps } from '../../TreeItem/TreeItem.types';
|
|
6
|
+
import { TreeViewClasses } from "./TreeViewStyleContext.js";
|
|
6
7
|
export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
|
|
7
8
|
export type TreeViewContextValue<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'contextValue'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'contextValue'>> & {
|
|
8
9
|
instance: TreeViewInstance<TSignatures, TOptionalSignatures>;
|
|
@@ -14,6 +15,7 @@ export type TreeViewContextValue<TSignatures extends readonly TreeViewAnyPluginS
|
|
|
14
15
|
runItemPlugins: TreeViewItemPluginsRunner;
|
|
15
16
|
};
|
|
16
17
|
export interface TreeViewProviderProps<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
|
|
17
|
-
|
|
18
|
+
contextValue: TreeViewContextValue<TSignatures>;
|
|
18
19
|
children: React.ReactNode;
|
|
20
|
+
classes: Partial<TreeViewClasses> | undefined;
|
|
19
21
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface TreeViewClasses {
|
|
3
|
+
/** Styles applied to the root element. */
|
|
4
|
+
root: string;
|
|
5
|
+
/** Styles applied to the item's root element. */
|
|
6
|
+
item: string;
|
|
7
|
+
/** Styles applied to the item's content element. */
|
|
8
|
+
itemContent: string;
|
|
9
|
+
/** Styles applied to the item's transition element. */
|
|
10
|
+
itemGroupTransition: string;
|
|
11
|
+
/** Styles applied to the item's icon container element icon. */
|
|
12
|
+
itemIconContainer: string;
|
|
13
|
+
/** Styles applied to the item's label element. */
|
|
14
|
+
itemLabel: string;
|
|
15
|
+
/** Styles applied to the item's label input element (visible only when editing is enabled). */
|
|
16
|
+
itemLabelInput: string;
|
|
17
|
+
/** Styles applied to the item's checkbox element. */
|
|
18
|
+
itemCheckbox: string;
|
|
19
|
+
/** Styles applied to the item's drag and drop overlay element. */
|
|
20
|
+
itemDragAndDropOverlay: string;
|
|
21
|
+
/** Styles applied to the item's error icon element */
|
|
22
|
+
itemErrorIcon: string;
|
|
23
|
+
/** Styles applied to the item's loading icon element */
|
|
24
|
+
itemLoadingIcon: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TreeViewStyleContextValue {
|
|
27
|
+
classes: Partial<TreeViewClasses>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* @ignore - internal component.
|
|
31
|
+
*/
|
|
32
|
+
export declare const TreeViewStyleContext: React.Context<TreeViewStyleContextValue>;
|
|
33
|
+
export declare const useTreeViewStyleContext: () => TreeViewStyleContextValue;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useTreeViewStyleContext = exports.TreeViewStyleContext = void 0;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
/**
|
|
10
|
+
* @ignore - internal component.
|
|
11
|
+
*/
|
|
12
|
+
const TreeViewStyleContext = exports.TreeViewStyleContext = /*#__PURE__*/React.createContext({
|
|
13
|
+
classes: {}
|
|
14
|
+
});
|
|
15
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
16
|
+
TreeViewStyleContext.displayName = 'TreeViewStyleContext';
|
|
17
|
+
}
|
|
18
|
+
const useTreeViewStyleContext = () => {
|
|
19
|
+
return React.useContext(TreeViewStyleContext);
|
|
20
|
+
};
|
|
21
|
+
exports.useTreeViewStyleContext = useTreeViewStyleContext;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { TreeViewProvider } from "./TreeViewProvider.js";
|
|
2
|
-
export { useTreeViewContext } from "./
|
|
2
|
+
export { useTreeViewContext } from "./TreeViewContext.js";
|
|
3
3
|
export type { TreeViewProviderProps, TreeViewContextValue, TreeViewItemPluginsRunner } from './TreeViewProvider.types';
|
|
@@ -12,8 +12,8 @@ Object.defineProperty(exports, "TreeViewProvider", {
|
|
|
12
12
|
Object.defineProperty(exports, "useTreeViewContext", {
|
|
13
13
|
enumerable: true,
|
|
14
14
|
get: function () {
|
|
15
|
-
return
|
|
15
|
+
return _TreeViewContext.useTreeViewContext;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
var _TreeViewProvider = require("./TreeViewProvider");
|
|
19
|
-
var
|
|
19
|
+
var _TreeViewContext = require("./TreeViewContext");
|
package/internals/index.d.ts
CHANGED
|
@@ -30,4 +30,5 @@ export { useTreeViewJSXItems } from "./plugins/useTreeViewJSXItems/index.js";
|
|
|
30
30
|
export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters } from './plugins/useTreeViewJSXItems';
|
|
31
31
|
export { createSelector } from "./utils/selectors.js";
|
|
32
32
|
export { isTargetInDescendants } from "./utils/tree.js";
|
|
33
|
-
export { TreeViewStore } from "./utils/TreeViewStore.js";
|
|
33
|
+
export { TreeViewStore } from "./utils/TreeViewStore.js";
|
|
34
|
+
export type { TreeViewClasses } from './TreeViewProvider/TreeViewStyleContext';
|
|
@@ -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;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useTreeViewItemCustomization", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _useTreeViewItemCustomization.useTreeViewItemCustomization;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _useTreeViewItemCustomization = require("./useTreeViewItemCustomization");
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useTreeViewItemCustomization = void 0;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
|
+
const useTreeViewItemCustomization = ({
|
|
10
|
+
slots,
|
|
11
|
+
slotProps
|
|
12
|
+
}) => {
|
|
13
|
+
const pluginContextValue = React.useMemo(() => ({
|
|
14
|
+
icons: {
|
|
15
|
+
slots: {
|
|
16
|
+
collapseIcon: slots.collapseIcon,
|
|
17
|
+
expandIcon: slots.expandIcon,
|
|
18
|
+
endIcon: slots.endIcon
|
|
19
|
+
},
|
|
20
|
+
slotProps: {
|
|
21
|
+
collapseIcon: slotProps.collapseIcon,
|
|
22
|
+
expandIcon: slotProps.expandIcon,
|
|
23
|
+
endIcon: slotProps.endIcon
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}), [slots.collapseIcon, slots.expandIcon, slots.endIcon, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon]);
|
|
27
|
+
return {
|
|
28
|
+
contextValue: pluginContextValue
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
exports.useTreeViewItemCustomization = useTreeViewItemCustomization;
|
|
32
|
+
useTreeViewItemCustomization.params = {};
|
package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { SlotComponentProps } from '@mui/utils/types';
|
|
3
|
+
import { TreeViewPluginSignature } from "../../models/index.js";
|
|
4
|
+
import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
|
|
5
|
+
import { UseTreeViewSelectionSignature } from "../useTreeViewSelection/index.js";
|
|
6
|
+
export interface UseTreeViewItemCustomizationParameters {}
|
|
7
|
+
export type UseTreeViewItemCustomizationDefaultizedParameters = UseTreeViewItemCustomizationParameters;
|
|
8
|
+
interface UseTreeViewItemCustomizationSlots {
|
|
9
|
+
/**
|
|
10
|
+
* The default icon used to collapse the item.
|
|
11
|
+
*/
|
|
12
|
+
collapseIcon?: React.ElementType;
|
|
13
|
+
/**
|
|
14
|
+
* The default icon used to expand the item.
|
|
15
|
+
*/
|
|
16
|
+
expandIcon?: React.ElementType;
|
|
17
|
+
/**
|
|
18
|
+
* The default icon displayed next to an end item.
|
|
19
|
+
* This is applied to all Tree Items and can be overridden by the TreeItem `icon` slot prop.
|
|
20
|
+
*/
|
|
21
|
+
endIcon?: React.ElementType;
|
|
22
|
+
}
|
|
23
|
+
interface UseTreeViewItemCustomizationSlotProps {
|
|
24
|
+
collapseIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
25
|
+
expandIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
26
|
+
endIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
27
|
+
}
|
|
28
|
+
interface UseTreeViewItemCustomizationContextValue {
|
|
29
|
+
icons: {
|
|
30
|
+
slots: UseTreeViewItemCustomizationSlots;
|
|
31
|
+
slotProps: UseTreeViewItemCustomizationSlotProps;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export type UseTreeViewItemCustomizationSignature = TreeViewPluginSignature<{
|
|
35
|
+
params: UseTreeViewItemCustomizationParameters;
|
|
36
|
+
defaultizedParams: UseTreeViewItemCustomizationDefaultizedParameters;
|
|
37
|
+
contextValue: UseTreeViewItemCustomizationContextValue;
|
|
38
|
+
slots: UseTreeViewItemCustomizationSlots;
|
|
39
|
+
slotProps: UseTreeViewItemCustomizationSlotProps;
|
|
40
|
+
dependencies: [UseTreeViewItemsSignature, UseTreeViewSelectionSignature];
|
|
41
|
+
}>;
|
|
42
|
+
export {};
|
|
@@ -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 {};
|