@mui/x-tree-view 8.0.0-alpha.4 → 8.0.0-alpha.5
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 +103 -0
- package/index.js +1 -1
- package/internals/models/plugin.d.ts +1 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +23 -24
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +36 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +8 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +1 -5
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +3 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +12 -0
- package/modern/index.js +1 -1
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +23 -24
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +8 -1
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +12 -0
- package/modern/useTreeItem/useTreeItem.js +3 -5
- package/node/index.js +1 -1
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +22 -24
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +9 -2
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +15 -2
- package/node/useTreeItem/useTreeItem.js +3 -5
- package/package.json +3 -3
- package/useTreeItem/useTreeItem.js +3 -5
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,108 @@
|
|
|
5
5
|
All notable changes to this project will be documented in this file.
|
|
6
6
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
7
7
|
|
|
8
|
+
## 8.0.0-alpha.5
|
|
9
|
+
|
|
10
|
+
_Dec 19, 2024_
|
|
11
|
+
|
|
12
|
+
We'd like to offer a big thanks to the 9 contributors who made this release possible. Here are some highlights ✨:
|
|
13
|
+
|
|
14
|
+
- 🌍 Improve Korean (ko-KR) locale on the Data Grid
|
|
15
|
+
- 🐞 Bugfixes
|
|
16
|
+
|
|
17
|
+
Special thanks go out to the community contributors who have helped make this release possible:
|
|
18
|
+
@good-jinu, @k-rajat19.
|
|
19
|
+
Following are all team members who have contributed to this release:
|
|
20
|
+
@alexfauquette, @cherniavskii, @flaviendelangle, @KenanYusuf, @LukasTy, @MBilalShafi, @romgrk.
|
|
21
|
+
|
|
22
|
+
<!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
|
|
23
|
+
|
|
24
|
+
### Data Grid
|
|
25
|
+
|
|
26
|
+
#### Breaking changes
|
|
27
|
+
|
|
28
|
+
- Passing additional props (like `data-*`, `aria-*`) directly on the Data Grid component is no longer supported. To pass the props, use `slotProps`.
|
|
29
|
+
|
|
30
|
+
- For `.root` element, use `slotProps.root`.
|
|
31
|
+
- For `.main` element (the one with `role="grid"`), use `slotProps.main`.
|
|
32
|
+
|
|
33
|
+
- `detailPanelExpandedRowIds` and `onDetailPanelExpandedRowIdsChange` props use a [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instead of an array:
|
|
34
|
+
|
|
35
|
+
```diff
|
|
36
|
+
-detailPanelExpandedRowIds?: GridRowId[];
|
|
37
|
+
+detailPanelExpandedRowIds?: Set<GridRowId>;
|
|
38
|
+
|
|
39
|
+
-onDetailPanelExpandedRowIdsChange?: (ids: GridRowId[], details: GridCallbackDetails) => void;
|
|
40
|
+
+onDetailPanelExpandedRowIdsChange?: (ids: Set<GridRowId>, details: GridCallbackDetails) => void;
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- `apiRef.current.getExpandedDetailPanels` and `apiRef.current.setExpandedDetailPanels` methods receive and return a [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instead of an array.
|
|
44
|
+
- `gridDetailPanelExpandedRowIdsSelector` returns a [`Set`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) instead of an array.
|
|
45
|
+
- `gridDetailPanelExpandedRowsHeightCacheSelector` was removed.
|
|
46
|
+
|
|
47
|
+
#### `@mui/x-data-grid@8.0.0-alpha.5`
|
|
48
|
+
|
|
49
|
+
- [DataGrid] Consider `columnGroupHeaderHeight` prop in `getTotalHeaderHeight` method (#15915) @k-rajat19
|
|
50
|
+
- [DataGrid] Fix autosizing with virtualized columns (#15116) @k-rajat19
|
|
51
|
+
- [DataGrid] Move `<Badge />` to leaf import (#15879) @romgrk
|
|
52
|
+
- [DataGrid] Move `<ListItemText />` and `<ListItemIcon />` to leaf import (#15869) @romgrk
|
|
53
|
+
- [DataGrid] Remove the Joy UI demo (#15913) @romgrk
|
|
54
|
+
- [DataGrid] Update quick filter input variant (#15909) @KenanYusuf
|
|
55
|
+
- [DataGrid] Use `slotProps` to forward props to `.main` and `.root` elements (#15870) @MBilalShafi
|
|
56
|
+
- [l10n] Improve Korean(ko-KR) locale (#15878) @good-jinu
|
|
57
|
+
|
|
58
|
+
#### `@mui/x-data-grid-pro@8.0.0-alpha.5` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
59
|
+
|
|
60
|
+
Same changes as in `@mui/x-data-grid@8.0.0-alpha.5`, plus:
|
|
61
|
+
|
|
62
|
+
- [DataGridPro] Use `Set` for `detailPanelExpandedRowIds` (#15835) @cherniavskii
|
|
63
|
+
|
|
64
|
+
#### `@mui/x-data-grid-premium@8.0.0-alpha.5` [](https://mui.com/r/x-premium-svg-link 'Premium plan')
|
|
65
|
+
|
|
66
|
+
Same changes as in `@mui/x-data-grid-pro@8.0.0-alpha.5`.
|
|
67
|
+
|
|
68
|
+
### Date and Time Pickers
|
|
69
|
+
|
|
70
|
+
#### Breaking changes
|
|
71
|
+
|
|
72
|
+
- The `<PickersMonth />` component has been moved inside the Month Calendar component — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#month-calendar).
|
|
73
|
+
|
|
74
|
+
- The `<PickersYear />` component has been moved inside the Year Calendar component — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#year-calendar).
|
|
75
|
+
|
|
76
|
+
#### `@mui/x-date-pickers@8.0.0-alpha.5`
|
|
77
|
+
|
|
78
|
+
- [pickers] Add verification to disable skipped hours in spring forward DST (#15849) @flaviendelangle
|
|
79
|
+
- [pickers] Remove `PickersMonth` and `PickersYear` from the theme and remove the `div` wrapping each button (#15806) @flaviendelangle
|
|
80
|
+
- [pickers] Use the new `ownerState` object on the `<PickersTextField />` component (#15863) @flaviendelangle
|
|
81
|
+
|
|
82
|
+
#### `@mui/x-date-pickers-pro@8.0.0-alpha.5` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
83
|
+
|
|
84
|
+
Same changes as in `@mui/x-date-pickers@8.0.0-alpha.5`.
|
|
85
|
+
|
|
86
|
+
### Charts
|
|
87
|
+
|
|
88
|
+
#### `@mui/x-charts@8.0.0-alpha.5`
|
|
89
|
+
|
|
90
|
+
- [charts] Fix `<ScatterChart />` value type if `null` (#15917) @alexfauquette
|
|
91
|
+
|
|
92
|
+
#### `@mui/x-charts-pro@8.0.0-alpha.5` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
93
|
+
|
|
94
|
+
Same changes as in `@mui/x-charts@8.0.0-alpha.5`.
|
|
95
|
+
|
|
96
|
+
### Tree View
|
|
97
|
+
|
|
98
|
+
#### `@mui/x-tree-view@8.0.0-alpha.5`
|
|
99
|
+
|
|
100
|
+
No changes since `@mui/x-tree-view-pro@v8.0.0-alpha.4`.
|
|
101
|
+
|
|
102
|
+
#### `@mui/x-tree-view-pro@8.0.0-alpha.5` [](https://mui.com/r/x-pro-svg-link 'Pro plan')
|
|
103
|
+
|
|
104
|
+
Same changes as in `@mui/x-tree-view@8.0.0-alpha.5`.
|
|
105
|
+
|
|
106
|
+
### Core
|
|
107
|
+
|
|
108
|
+
- [code-infra] Remove `@mui/material-nextjs` dependency (#15925) @LukasTy
|
|
109
|
+
|
|
8
110
|
## 8.0.0-alpha.4
|
|
9
111
|
|
|
10
112
|
_Dec 13, 2024_
|
|
@@ -39,6 +141,7 @@ Following are all team members who have contributed to this release:
|
|
|
39
141
|
-const output = useGridSelector(apiRef, selector, equals)
|
|
40
142
|
+const output = useGridSelector(apiRef, selector, arguments, equals)
|
|
41
143
|
```
|
|
144
|
+
|
|
42
145
|
- The default variant for text fields and selects in the filter panel has been changed to `outlined`.
|
|
43
146
|
- The "row spanning" feature is now stable.
|
|
44
147
|
```diff
|
package/index.js
CHANGED
|
@@ -118,7 +118,7 @@ type TreeViewRequiredPlugins<TSignature extends TreeViewAnyPluginSignature> = [
|
|
|
118
118
|
];
|
|
119
119
|
type PluginPropertyWithDependencies<TSignature extends TreeViewAnyPluginSignature, TProperty extends keyof TreeViewAnyPluginSignature> = TSignature[TProperty] & MergeSignaturesProperty<TreeViewRequiredPlugins<TSignature>, TProperty> & Partial<MergeSignaturesProperty<TSignature['optionalDependencies'], TProperty>>;
|
|
120
120
|
export type TreeViewUsedParams<TSignature extends TreeViewAnyPluginSignature> = PluginPropertyWithDependencies<TSignature, 'params'>;
|
|
121
|
-
type TreeViewUsedDefaultizedParams<TSignature extends TreeViewAnyPluginSignature> = PluginPropertyWithDependencies<TSignature, 'defaultizedParams'>;
|
|
121
|
+
export type TreeViewUsedDefaultizedParams<TSignature extends TreeViewAnyPluginSignature> = PluginPropertyWithDependencies<TSignature, 'defaultizedParams'>;
|
|
122
122
|
export type TreeViewUsedInstance<TSignature extends TreeViewAnyPluginSignature> = PluginPropertyWithDependencies<TSignature, 'instance'> & {
|
|
123
123
|
/**
|
|
124
124
|
* Private property only defined in TypeScript to be able to access the plugin signature from the instance object.
|
|
@@ -1,25 +1,38 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import * as React from 'react';
|
|
3
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
3
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
5
4
|
import { selectorIsItemExpandable, selectorIsItemExpanded } from "./useTreeViewExpansion.selectors.js";
|
|
6
|
-
import { createExpandedItemsMap } from "./useTreeViewExpansion.utils.js";
|
|
5
|
+
import { createExpandedItemsMap, getExpansionTrigger } from "./useTreeViewExpansion.utils.js";
|
|
7
6
|
import { selectorItemMeta, selectorItemOrderedChildrenIds } from "../useTreeViewItems/useTreeViewItems.selectors.js";
|
|
8
7
|
export const useTreeViewExpansion = ({
|
|
9
8
|
instance,
|
|
10
9
|
store,
|
|
11
10
|
params,
|
|
12
|
-
models
|
|
13
|
-
experimentalFeatures
|
|
11
|
+
models
|
|
14
12
|
}) => {
|
|
15
|
-
const isTreeViewEditable = Boolean(params.isItemEditable) && !!experimentalFeatures.labelEditing;
|
|
16
13
|
useEnhancedEffect(() => {
|
|
17
14
|
store.update(prevState => _extends({}, prevState, {
|
|
18
|
-
expansion: {
|
|
15
|
+
expansion: _extends({}, prevState.expansion, {
|
|
19
16
|
expandedItemsMap: createExpandedItemsMap(models.expandedItems.value)
|
|
20
|
-
}
|
|
17
|
+
})
|
|
21
18
|
}));
|
|
22
19
|
}, [store, models.expandedItems.value]);
|
|
20
|
+
useEnhancedEffect(() => {
|
|
21
|
+
store.update(prevState => {
|
|
22
|
+
const newExpansionTrigger = getExpansionTrigger({
|
|
23
|
+
isItemEditable: params.isItemEditable,
|
|
24
|
+
expansionTrigger: params.expansionTrigger
|
|
25
|
+
});
|
|
26
|
+
if (prevState.expansion.expansionTrigger === newExpansionTrigger) {
|
|
27
|
+
return prevState;
|
|
28
|
+
}
|
|
29
|
+
return _extends({}, prevState, {
|
|
30
|
+
expansion: _extends({}, prevState.expansion, {
|
|
31
|
+
expansionTrigger: newExpansionTrigger
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}, [store, params.isItemEditable, params.expansionTrigger]);
|
|
23
36
|
const setExpandedItems = (event, value) => {
|
|
24
37
|
params.onExpandedItemsChange?.(event, value);
|
|
25
38
|
models.expandedItems.setControlledValue(value);
|
|
@@ -61,20 +74,6 @@ export const useTreeViewExpansion = ({
|
|
|
61
74
|
setExpandedItems(event, newExpanded);
|
|
62
75
|
}
|
|
63
76
|
};
|
|
64
|
-
const expansionTrigger = React.useMemo(() => {
|
|
65
|
-
if (params.expansionTrigger) {
|
|
66
|
-
return params.expansionTrigger;
|
|
67
|
-
}
|
|
68
|
-
if (isTreeViewEditable) {
|
|
69
|
-
return 'iconContainer';
|
|
70
|
-
}
|
|
71
|
-
return 'content';
|
|
72
|
-
}, [params.expansionTrigger, isTreeViewEditable]);
|
|
73
|
-
const pluginContextValue = React.useMemo(() => ({
|
|
74
|
-
expansion: {
|
|
75
|
-
expansionTrigger
|
|
76
|
-
}
|
|
77
|
-
}), [expansionTrigger]);
|
|
78
77
|
return {
|
|
79
78
|
publicAPI: {
|
|
80
79
|
setItemExpansion
|
|
@@ -83,8 +82,7 @@ export const useTreeViewExpansion = ({
|
|
|
83
82
|
setItemExpansion,
|
|
84
83
|
toggleItemExpansion,
|
|
85
84
|
expandAllSiblings
|
|
86
|
-
}
|
|
87
|
-
contextValue: pluginContextValue
|
|
85
|
+
}
|
|
88
86
|
};
|
|
89
87
|
};
|
|
90
88
|
useTreeViewExpansion.models = {
|
|
@@ -100,7 +98,8 @@ useTreeViewExpansion.getDefaultizedParams = ({
|
|
|
100
98
|
});
|
|
101
99
|
useTreeViewExpansion.getInitialState = params => ({
|
|
102
100
|
expansion: {
|
|
103
|
-
expandedItemsMap: createExpandedItemsMap(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems)
|
|
101
|
+
expandedItemsMap: createExpandedItemsMap(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems),
|
|
102
|
+
expansionTrigger: getExpansionTrigger(params)
|
|
104
103
|
}
|
|
105
104
|
});
|
|
106
105
|
useTreeViewExpansion.params = {
|
|
@@ -12,9 +12,11 @@ export declare const selectorIsItemExpanded: ((state: any, itemId: string) => bo
|
|
|
12
12
|
} & {
|
|
13
13
|
resultFunc: (resultFuncArgs_0: {
|
|
14
14
|
expandedItemsMap: Map<string, true>;
|
|
15
|
+
expansionTrigger: "content" | "iconContainer";
|
|
15
16
|
}, resultFuncArgs_1: string) => boolean;
|
|
16
17
|
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
17
18
|
expandedItemsMap: Map<string, true>;
|
|
19
|
+
expansionTrigger: "content" | "iconContainer";
|
|
18
20
|
}, resultFuncArgs_1: string) => boolean) & {
|
|
19
21
|
clearCache: () => void;
|
|
20
22
|
resultsCount: () => number;
|
|
@@ -142,3 +144,37 @@ export declare const selectorIsItemExpandable: ((state: any, itemId: string | nu
|
|
|
142
144
|
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
143
145
|
memoize: typeof import("reselect").weakMapMemoize;
|
|
144
146
|
};
|
|
147
|
+
/**
|
|
148
|
+
* Get the slot that triggers the item's expansion when clicked.
|
|
149
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
150
|
+
* @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
|
|
151
|
+
*/
|
|
152
|
+
export declare const selectorItemExpansionTrigger: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("./useTreeViewExpansion.types").UseTreeViewExpansionState & Partial<{}> & {
|
|
153
|
+
cacheKey: import("../../models").TreeViewStateCacheKey;
|
|
154
|
+
}) => "content" | "iconContainer") & {
|
|
155
|
+
clearCache: () => void;
|
|
156
|
+
resultsCount: () => number;
|
|
157
|
+
resetResultsCount: () => void;
|
|
158
|
+
} & {
|
|
159
|
+
resultFunc: (resultFuncArgs_0: {
|
|
160
|
+
expandedItemsMap: Map<string, true>;
|
|
161
|
+
expansionTrigger: "content" | "iconContainer";
|
|
162
|
+
}) => "content" | "iconContainer";
|
|
163
|
+
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
164
|
+
expandedItemsMap: Map<string, true>;
|
|
165
|
+
expansionTrigger: "content" | "iconContainer";
|
|
166
|
+
}) => "content" | "iconContainer") & {
|
|
167
|
+
clearCache: () => void;
|
|
168
|
+
resultsCount: () => number;
|
|
169
|
+
resetResultsCount: () => void;
|
|
170
|
+
};
|
|
171
|
+
lastResult: () => "content" | "iconContainer";
|
|
172
|
+
dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
|
|
173
|
+
recomputations: () => number;
|
|
174
|
+
resetRecomputations: () => void;
|
|
175
|
+
dependencyRecomputations: () => number;
|
|
176
|
+
resetDependencyRecomputations: () => void;
|
|
177
|
+
} & {
|
|
178
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
179
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
180
|
+
};
|
|
@@ -14,4 +14,11 @@ export const selectorIsItemExpanded = createSelector([selectorExpansion, (_, ite
|
|
|
14
14
|
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
15
15
|
* @returns {boolean} `true` if the item is expandable, `false` otherwise.
|
|
16
16
|
*/
|
|
17
|
-
export const selectorIsItemExpandable = createSelector([selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
17
|
+
export const selectorIsItemExpandable = createSelector([selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Get the slot that triggers the item's expansion when clicked.
|
|
21
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
22
|
+
* @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
|
|
23
|
+
*/
|
|
24
|
+
export const selectorItemExpansionTrigger = createSelector([selectorExpansion], expansionState => expansionState.expansionTrigger);
|
|
@@ -63,11 +63,9 @@ export type UseTreeViewExpansionDefaultizedParameters = DefaultizedProps<UseTree
|
|
|
63
63
|
export interface UseTreeViewExpansionState {
|
|
64
64
|
expansion: {
|
|
65
65
|
expandedItemsMap: Map<string, true>;
|
|
66
|
+
expansionTrigger: 'content' | 'iconContainer';
|
|
66
67
|
};
|
|
67
68
|
}
|
|
68
|
-
interface UseTreeViewExpansionContextValue {
|
|
69
|
-
expansion: Pick<UseTreeViewExpansionParameters, 'expansionTrigger'>;
|
|
70
|
-
}
|
|
71
69
|
export type UseTreeViewExpansionSignature = TreeViewPluginSignature<{
|
|
72
70
|
params: UseTreeViewExpansionParameters;
|
|
73
71
|
defaultizedParams: UseTreeViewExpansionDefaultizedParameters;
|
|
@@ -75,8 +73,6 @@ export type UseTreeViewExpansionSignature = TreeViewPluginSignature<{
|
|
|
75
73
|
publicAPI: UseTreeViewExpansionPublicAPI;
|
|
76
74
|
modelNames: 'expandedItems';
|
|
77
75
|
state: UseTreeViewExpansionState;
|
|
78
|
-
contextValue: UseTreeViewExpansionContextValue;
|
|
79
76
|
dependencies: [UseTreeViewItemsSignature];
|
|
80
77
|
optionalDependencies: [UseTreeViewLabelSignature];
|
|
81
78
|
}>;
|
|
82
|
-
export {};
|
|
@@ -1 +1,4 @@
|
|
|
1
|
+
import { TreeViewUsedDefaultizedParams } from '../../models';
|
|
2
|
+
import { UseTreeViewExpansionSignature } from './useTreeViewExpansion.types';
|
|
1
3
|
export declare const createExpandedItemsMap: (expandedItems: string[]) => Map<string, true>;
|
|
4
|
+
export declare const getExpansionTrigger: ({ isItemEditable, expansionTrigger, }: Pick<TreeViewUsedDefaultizedParams<UseTreeViewExpansionSignature>, "isItemEditable" | "expansionTrigger">) => "content" | "iconContainer";
|
|
@@ -4,4 +4,16 @@ export const createExpandedItemsMap = expandedItems => {
|
|
|
4
4
|
expandedItemsMap.set(id, true);
|
|
5
5
|
});
|
|
6
6
|
return expandedItemsMap;
|
|
7
|
+
};
|
|
8
|
+
export const getExpansionTrigger = ({
|
|
9
|
+
isItemEditable,
|
|
10
|
+
expansionTrigger
|
|
11
|
+
}) => {
|
|
12
|
+
if (expansionTrigger) {
|
|
13
|
+
return expansionTrigger;
|
|
14
|
+
}
|
|
15
|
+
if (isItemEditable) {
|
|
16
|
+
return 'iconContainer';
|
|
17
|
+
}
|
|
18
|
+
return 'content';
|
|
7
19
|
};
|
package/modern/index.js
CHANGED
|
@@ -1,25 +1,38 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
-
import * as React from 'react';
|
|
3
2
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
3
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
5
4
|
import { selectorIsItemExpandable, selectorIsItemExpanded } from "./useTreeViewExpansion.selectors.js";
|
|
6
|
-
import { createExpandedItemsMap } from "./useTreeViewExpansion.utils.js";
|
|
5
|
+
import { createExpandedItemsMap, getExpansionTrigger } from "./useTreeViewExpansion.utils.js";
|
|
7
6
|
import { selectorItemMeta, selectorItemOrderedChildrenIds } from "../useTreeViewItems/useTreeViewItems.selectors.js";
|
|
8
7
|
export const useTreeViewExpansion = ({
|
|
9
8
|
instance,
|
|
10
9
|
store,
|
|
11
10
|
params,
|
|
12
|
-
models
|
|
13
|
-
experimentalFeatures
|
|
11
|
+
models
|
|
14
12
|
}) => {
|
|
15
|
-
const isTreeViewEditable = Boolean(params.isItemEditable) && !!experimentalFeatures.labelEditing;
|
|
16
13
|
useEnhancedEffect(() => {
|
|
17
14
|
store.update(prevState => _extends({}, prevState, {
|
|
18
|
-
expansion: {
|
|
15
|
+
expansion: _extends({}, prevState.expansion, {
|
|
19
16
|
expandedItemsMap: createExpandedItemsMap(models.expandedItems.value)
|
|
20
|
-
}
|
|
17
|
+
})
|
|
21
18
|
}));
|
|
22
19
|
}, [store, models.expandedItems.value]);
|
|
20
|
+
useEnhancedEffect(() => {
|
|
21
|
+
store.update(prevState => {
|
|
22
|
+
const newExpansionTrigger = getExpansionTrigger({
|
|
23
|
+
isItemEditable: params.isItemEditable,
|
|
24
|
+
expansionTrigger: params.expansionTrigger
|
|
25
|
+
});
|
|
26
|
+
if (prevState.expansion.expansionTrigger === newExpansionTrigger) {
|
|
27
|
+
return prevState;
|
|
28
|
+
}
|
|
29
|
+
return _extends({}, prevState, {
|
|
30
|
+
expansion: _extends({}, prevState.expansion, {
|
|
31
|
+
expansionTrigger: newExpansionTrigger
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
}, [store, params.isItemEditable, params.expansionTrigger]);
|
|
23
36
|
const setExpandedItems = (event, value) => {
|
|
24
37
|
params.onExpandedItemsChange?.(event, value);
|
|
25
38
|
models.expandedItems.setControlledValue(value);
|
|
@@ -61,20 +74,6 @@ export const useTreeViewExpansion = ({
|
|
|
61
74
|
setExpandedItems(event, newExpanded);
|
|
62
75
|
}
|
|
63
76
|
};
|
|
64
|
-
const expansionTrigger = React.useMemo(() => {
|
|
65
|
-
if (params.expansionTrigger) {
|
|
66
|
-
return params.expansionTrigger;
|
|
67
|
-
}
|
|
68
|
-
if (isTreeViewEditable) {
|
|
69
|
-
return 'iconContainer';
|
|
70
|
-
}
|
|
71
|
-
return 'content';
|
|
72
|
-
}, [params.expansionTrigger, isTreeViewEditable]);
|
|
73
|
-
const pluginContextValue = React.useMemo(() => ({
|
|
74
|
-
expansion: {
|
|
75
|
-
expansionTrigger
|
|
76
|
-
}
|
|
77
|
-
}), [expansionTrigger]);
|
|
78
77
|
return {
|
|
79
78
|
publicAPI: {
|
|
80
79
|
setItemExpansion
|
|
@@ -83,8 +82,7 @@ export const useTreeViewExpansion = ({
|
|
|
83
82
|
setItemExpansion,
|
|
84
83
|
toggleItemExpansion,
|
|
85
84
|
expandAllSiblings
|
|
86
|
-
}
|
|
87
|
-
contextValue: pluginContextValue
|
|
85
|
+
}
|
|
88
86
|
};
|
|
89
87
|
};
|
|
90
88
|
useTreeViewExpansion.models = {
|
|
@@ -100,7 +98,8 @@ useTreeViewExpansion.getDefaultizedParams = ({
|
|
|
100
98
|
});
|
|
101
99
|
useTreeViewExpansion.getInitialState = params => ({
|
|
102
100
|
expansion: {
|
|
103
|
-
expandedItemsMap: createExpandedItemsMap(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems)
|
|
101
|
+
expandedItemsMap: createExpandedItemsMap(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems),
|
|
102
|
+
expansionTrigger: getExpansionTrigger(params)
|
|
104
103
|
}
|
|
105
104
|
});
|
|
106
105
|
useTreeViewExpansion.params = {
|
|
@@ -14,4 +14,11 @@ export const selectorIsItemExpanded = createSelector([selectorExpansion, (_, ite
|
|
|
14
14
|
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
15
15
|
* @returns {boolean} `true` if the item is expandable, `false` otherwise.
|
|
16
16
|
*/
|
|
17
|
-
export const selectorIsItemExpandable = createSelector([selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
17
|
+
export const selectorIsItemExpandable = createSelector([selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Get the slot that triggers the item's expansion when clicked.
|
|
21
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
22
|
+
* @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
|
|
23
|
+
*/
|
|
24
|
+
export const selectorItemExpansionTrigger = createSelector([selectorExpansion], expansionState => expansionState.expansionTrigger);
|
|
@@ -4,4 +4,16 @@ export const createExpandedItemsMap = expandedItems => {
|
|
|
4
4
|
expandedItemsMap.set(id, true);
|
|
5
5
|
});
|
|
6
6
|
return expandedItemsMap;
|
|
7
|
+
};
|
|
8
|
+
export const getExpansionTrigger = ({
|
|
9
|
+
isItemEditable,
|
|
10
|
+
expansionTrigger
|
|
11
|
+
}) => {
|
|
12
|
+
if (expansionTrigger) {
|
|
13
|
+
return expansionTrigger;
|
|
14
|
+
}
|
|
15
|
+
if (isItemEditable) {
|
|
16
|
+
return 'iconContainer';
|
|
17
|
+
}
|
|
18
|
+
return 'content';
|
|
7
19
|
};
|
|
@@ -13,6 +13,7 @@ import { selectorIsItemTheDefaultFocusableItem } from "../internals/plugins/useT
|
|
|
13
13
|
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
14
14
|
import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
15
15
|
import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
|
|
16
|
+
import { selectorItemExpansionTrigger } from "../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
|
|
16
17
|
export const useTreeItem = parameters => {
|
|
17
18
|
const {
|
|
18
19
|
runItemPlugins,
|
|
@@ -23,9 +24,6 @@ export const useTreeItem = parameters => {
|
|
|
23
24
|
disableSelection,
|
|
24
25
|
checkboxSelection
|
|
25
26
|
},
|
|
26
|
-
expansion: {
|
|
27
|
-
expansionTrigger
|
|
28
|
-
},
|
|
29
27
|
label: labelContext,
|
|
30
28
|
instance,
|
|
31
29
|
publicAPI,
|
|
@@ -122,7 +120,7 @@ export const useTreeItem = parameters => {
|
|
|
122
120
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
123
121
|
return;
|
|
124
122
|
}
|
|
125
|
-
if (
|
|
123
|
+
if (selectorItemExpansionTrigger(store.value) === 'content') {
|
|
126
124
|
interactions.handleExpansion(event);
|
|
127
125
|
}
|
|
128
126
|
if (!checkboxSelection) {
|
|
@@ -145,7 +143,7 @@ export const useTreeItem = parameters => {
|
|
|
145
143
|
if (event.defaultMuiPrevented) {
|
|
146
144
|
return;
|
|
147
145
|
}
|
|
148
|
-
if (
|
|
146
|
+
if (selectorItemExpansionTrigger(store.value) === 'iconContainer') {
|
|
149
147
|
interactions.handleExpansion(event);
|
|
150
148
|
}
|
|
151
149
|
};
|
package/node/index.js
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
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.useTreeViewExpansion = void 0;
|
|
9
8
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var React = _interopRequireWildcard(require("react"));
|
|
11
9
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
12
10
|
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
13
11
|
var _useTreeViewExpansion = require("./useTreeViewExpansion.selectors");
|
|
@@ -17,17 +15,31 @@ const useTreeViewExpansion = ({
|
|
|
17
15
|
instance,
|
|
18
16
|
store,
|
|
19
17
|
params,
|
|
20
|
-
models
|
|
21
|
-
experimentalFeatures
|
|
18
|
+
models
|
|
22
19
|
}) => {
|
|
23
|
-
const isTreeViewEditable = Boolean(params.isItemEditable) && !!experimentalFeatures.labelEditing;
|
|
24
20
|
(0, _useEnhancedEffect.default)(() => {
|
|
25
21
|
store.update(prevState => (0, _extends2.default)({}, prevState, {
|
|
26
|
-
expansion: {
|
|
22
|
+
expansion: (0, _extends2.default)({}, prevState.expansion, {
|
|
27
23
|
expandedItemsMap: (0, _useTreeViewExpansion2.createExpandedItemsMap)(models.expandedItems.value)
|
|
28
|
-
}
|
|
24
|
+
})
|
|
29
25
|
}));
|
|
30
26
|
}, [store, models.expandedItems.value]);
|
|
27
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
28
|
+
store.update(prevState => {
|
|
29
|
+
const newExpansionTrigger = (0, _useTreeViewExpansion2.getExpansionTrigger)({
|
|
30
|
+
isItemEditable: params.isItemEditable,
|
|
31
|
+
expansionTrigger: params.expansionTrigger
|
|
32
|
+
});
|
|
33
|
+
if (prevState.expansion.expansionTrigger === newExpansionTrigger) {
|
|
34
|
+
return prevState;
|
|
35
|
+
}
|
|
36
|
+
return (0, _extends2.default)({}, prevState, {
|
|
37
|
+
expansion: (0, _extends2.default)({}, prevState.expansion, {
|
|
38
|
+
expansionTrigger: newExpansionTrigger
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}, [store, params.isItemEditable, params.expansionTrigger]);
|
|
31
43
|
const setExpandedItems = (event, value) => {
|
|
32
44
|
params.onExpandedItemsChange?.(event, value);
|
|
33
45
|
models.expandedItems.setControlledValue(value);
|
|
@@ -69,20 +81,6 @@ const useTreeViewExpansion = ({
|
|
|
69
81
|
setExpandedItems(event, newExpanded);
|
|
70
82
|
}
|
|
71
83
|
};
|
|
72
|
-
const expansionTrigger = React.useMemo(() => {
|
|
73
|
-
if (params.expansionTrigger) {
|
|
74
|
-
return params.expansionTrigger;
|
|
75
|
-
}
|
|
76
|
-
if (isTreeViewEditable) {
|
|
77
|
-
return 'iconContainer';
|
|
78
|
-
}
|
|
79
|
-
return 'content';
|
|
80
|
-
}, [params.expansionTrigger, isTreeViewEditable]);
|
|
81
|
-
const pluginContextValue = React.useMemo(() => ({
|
|
82
|
-
expansion: {
|
|
83
|
-
expansionTrigger
|
|
84
|
-
}
|
|
85
|
-
}), [expansionTrigger]);
|
|
86
84
|
return {
|
|
87
85
|
publicAPI: {
|
|
88
86
|
setItemExpansion
|
|
@@ -91,8 +89,7 @@ const useTreeViewExpansion = ({
|
|
|
91
89
|
setItemExpansion,
|
|
92
90
|
toggleItemExpansion,
|
|
93
91
|
expandAllSiblings
|
|
94
|
-
}
|
|
95
|
-
contextValue: pluginContextValue
|
|
92
|
+
}
|
|
96
93
|
};
|
|
97
94
|
};
|
|
98
95
|
exports.useTreeViewExpansion = useTreeViewExpansion;
|
|
@@ -109,7 +106,8 @@ useTreeViewExpansion.getDefaultizedParams = ({
|
|
|
109
106
|
});
|
|
110
107
|
useTreeViewExpansion.getInitialState = params => ({
|
|
111
108
|
expansion: {
|
|
112
|
-
expandedItemsMap: (0, _useTreeViewExpansion2.createExpandedItemsMap)(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems)
|
|
109
|
+
expandedItemsMap: (0, _useTreeViewExpansion2.createExpandedItemsMap)(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems),
|
|
110
|
+
expansionTrigger: (0, _useTreeViewExpansion2.getExpansionTrigger)(params)
|
|
113
111
|
}
|
|
114
112
|
});
|
|
115
113
|
useTreeViewExpansion.params = {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.selectorIsItemExpanded = exports.selectorIsItemExpandable = void 0;
|
|
6
|
+
exports.selectorItemExpansionTrigger = exports.selectorIsItemExpanded = exports.selectorIsItemExpandable = void 0;
|
|
7
7
|
var _selectors = require("../../utils/selectors");
|
|
8
8
|
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
9
9
|
const selectorExpansion = state => state.expansion;
|
|
@@ -20,4 +20,11 @@ const selectorIsItemExpanded = exports.selectorIsItemExpanded = (0, _selectors.c
|
|
|
20
20
|
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
21
21
|
* @returns {boolean} `true` if the item is expandable, `false` otherwise.
|
|
22
22
|
*/
|
|
23
|
-
const selectorIsItemExpandable = exports.selectorIsItemExpandable = (0, _selectors.createSelector)([_useTreeViewItems.selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
23
|
+
const selectorIsItemExpandable = exports.selectorIsItemExpandable = (0, _selectors.createSelector)([_useTreeViewItems.selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Get the slot that triggers the item's expansion when clicked.
|
|
27
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
28
|
+
* @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
|
|
29
|
+
*/
|
|
30
|
+
const selectorItemExpansionTrigger = exports.selectorItemExpansionTrigger = (0, _selectors.createSelector)([selectorExpansion], expansionState => expansionState.expansionTrigger);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.createExpandedItemsMap = void 0;
|
|
6
|
+
exports.getExpansionTrigger = exports.createExpandedItemsMap = void 0;
|
|
7
7
|
const createExpandedItemsMap = expandedItems => {
|
|
8
8
|
const expandedItemsMap = new Map();
|
|
9
9
|
expandedItems.forEach(id => {
|
|
@@ -11,4 +11,17 @@ const createExpandedItemsMap = expandedItems => {
|
|
|
11
11
|
});
|
|
12
12
|
return expandedItemsMap;
|
|
13
13
|
};
|
|
14
|
-
exports.createExpandedItemsMap = createExpandedItemsMap;
|
|
14
|
+
exports.createExpandedItemsMap = createExpandedItemsMap;
|
|
15
|
+
const getExpansionTrigger = ({
|
|
16
|
+
isItemEditable,
|
|
17
|
+
expansionTrigger
|
|
18
|
+
}) => {
|
|
19
|
+
if (expansionTrigger) {
|
|
20
|
+
return expansionTrigger;
|
|
21
|
+
}
|
|
22
|
+
if (isItemEditable) {
|
|
23
|
+
return 'iconContainer';
|
|
24
|
+
}
|
|
25
|
+
return 'content';
|
|
26
|
+
};
|
|
27
|
+
exports.getExpansionTrigger = getExpansionTrigger;
|
|
@@ -20,6 +20,7 @@ var _useTreeViewFocus = require("../internals/plugins/useTreeViewFocus/useTreeVi
|
|
|
20
20
|
var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
|
|
21
21
|
var _useTreeViewItems = require("../internals/plugins/useTreeViewItems/useTreeViewItems.selectors");
|
|
22
22
|
var _useTreeViewId2 = require("../internals/corePlugins/useTreeViewId/useTreeViewId.selectors");
|
|
23
|
+
var _useTreeViewExpansion = require("../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors");
|
|
23
24
|
const useTreeItem = parameters => {
|
|
24
25
|
const {
|
|
25
26
|
runItemPlugins,
|
|
@@ -30,9 +31,6 @@ const useTreeItem = parameters => {
|
|
|
30
31
|
disableSelection,
|
|
31
32
|
checkboxSelection
|
|
32
33
|
},
|
|
33
|
-
expansion: {
|
|
34
|
-
expansionTrigger
|
|
35
|
-
},
|
|
36
34
|
label: labelContext,
|
|
37
35
|
instance,
|
|
38
36
|
publicAPI,
|
|
@@ -129,7 +127,7 @@ const useTreeItem = parameters => {
|
|
|
129
127
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
130
128
|
return;
|
|
131
129
|
}
|
|
132
|
-
if (
|
|
130
|
+
if ((0, _useTreeViewExpansion.selectorItemExpansionTrigger)(store.value) === 'content') {
|
|
133
131
|
interactions.handleExpansion(event);
|
|
134
132
|
}
|
|
135
133
|
if (!checkboxSelection) {
|
|
@@ -152,7 +150,7 @@ const useTreeItem = parameters => {
|
|
|
152
150
|
if (event.defaultMuiPrevented) {
|
|
153
151
|
return;
|
|
154
152
|
}
|
|
155
|
-
if (
|
|
153
|
+
if ((0, _useTreeViewExpansion.selectorItemExpansionTrigger)(store.value) === 'iconContainer') {
|
|
156
154
|
interactions.handleExpansion(event);
|
|
157
155
|
}
|
|
158
156
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mui/x-tree-view",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
3
|
+
"version": "8.0.0-alpha.5",
|
|
4
4
|
"description": "The community edition of the Tree View components (MUI X).",
|
|
5
5
|
"author": "MUI Team",
|
|
6
6
|
"main": "./node/index.js",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@babel/runtime": "^7.26.0",
|
|
37
37
|
"@mui/utils": "^5.16.6 || ^6.0.0",
|
|
38
|
-
"@types/react-transition-group": "^4.4.
|
|
38
|
+
"@types/react-transition-group": "^4.4.12",
|
|
39
39
|
"clsx": "^2.1.1",
|
|
40
40
|
"prop-types": "^15.8.1",
|
|
41
41
|
"react-transition-group": "^4.4.5",
|
|
42
42
|
"reselect": "^5.1.1",
|
|
43
43
|
"use-sync-external-store": "^1.4.0",
|
|
44
|
-
"@mui/x-internals": "8.0.0-alpha.
|
|
44
|
+
"@mui/x-internals": "8.0.0-alpha.5"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@emotion/react": "^11.9.0",
|
|
@@ -13,6 +13,7 @@ import { selectorIsItemTheDefaultFocusableItem } from "../internals/plugins/useT
|
|
|
13
13
|
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
14
14
|
import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
15
15
|
import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
|
|
16
|
+
import { selectorItemExpansionTrigger } from "../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
|
|
16
17
|
export const useTreeItem = parameters => {
|
|
17
18
|
const {
|
|
18
19
|
runItemPlugins,
|
|
@@ -23,9 +24,6 @@ export const useTreeItem = parameters => {
|
|
|
23
24
|
disableSelection,
|
|
24
25
|
checkboxSelection
|
|
25
26
|
},
|
|
26
|
-
expansion: {
|
|
27
|
-
expansionTrigger
|
|
28
|
-
},
|
|
29
27
|
label: labelContext,
|
|
30
28
|
instance,
|
|
31
29
|
publicAPI,
|
|
@@ -122,7 +120,7 @@ export const useTreeItem = parameters => {
|
|
|
122
120
|
if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
|
|
123
121
|
return;
|
|
124
122
|
}
|
|
125
|
-
if (
|
|
123
|
+
if (selectorItemExpansionTrigger(store.value) === 'content') {
|
|
126
124
|
interactions.handleExpansion(event);
|
|
127
125
|
}
|
|
128
126
|
if (!checkboxSelection) {
|
|
@@ -145,7 +143,7 @@ export const useTreeItem = parameters => {
|
|
|
145
143
|
if (event.defaultMuiPrevented) {
|
|
146
144
|
return;
|
|
147
145
|
}
|
|
148
|
-
if (
|
|
146
|
+
if (selectorItemExpansionTrigger(store.value) === 'iconContainer') {
|
|
149
147
|
interactions.handleExpansion(event);
|
|
150
148
|
}
|
|
151
149
|
};
|