@mui/x-tree-view 7.22.1 → 8.0.0-alpha.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 +486 -11
- package/README.md +4 -4
- package/RichTreeView/RichTreeView.js +22 -5
- package/RichTreeView/RichTreeView.types.d.ts +4 -17
- package/SimpleTreeView/SimpleTreeView.js +21 -3
- package/TreeItem/TreeItem.d.ts +20 -2
- package/TreeItem/TreeItem.js +241 -371
- package/TreeItem/TreeItem.types.d.ts +52 -85
- package/TreeItem/index.d.ts +1 -4
- package/TreeItem/index.js +2 -4
- package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +7 -0
- package/{modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
- package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts} +1 -1
- package/TreeItemDragAndDropOverlay/index.d.ts +2 -0
- package/TreeItemDragAndDropOverlay/index.js +1 -0
- package/{TreeItem2LabelInput → TreeItemDragAndDropOverlay}/package.json +1 -1
- package/TreeItemIcon/TreeItemIcon.d.ts +7 -0
- package/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
- package/{TreeItem2Icon/TreeItem2Icon.types.d.ts → TreeItemIcon/TreeItemIcon.types.d.ts} +7 -7
- package/TreeItemIcon/index.d.ts +2 -0
- package/TreeItemIcon/index.js +1 -0
- package/{useTreeItem2 → TreeItemIcon}/package.json +1 -1
- package/TreeItemLabelInput/TreeItemLabelInput.d.ts +5 -0
- package/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/{TreeItem2LabelInput/TreeItem2LabelInput.types.d.ts → TreeItemLabelInput/TreeItemLabelInput.types.d.ts} +1 -1
- package/TreeItemLabelInput/index.d.ts +2 -0
- package/TreeItemLabelInput/index.js +1 -0
- package/{TreeItem2Provider → TreeItemLabelInput}/package.json +1 -1
- package/TreeItemProvider/TreeItemProvider.d.ts +9 -0
- package/TreeItemProvider/TreeItemProvider.js +43 -0
- package/{TreeItem2Provider/TreeItem2Provider.types.d.ts → TreeItemProvider/TreeItemProvider.types.d.ts} +2 -1
- package/TreeItemProvider/index.d.ts +2 -0
- package/TreeItemProvider/index.js +1 -0
- package/{TreeItem2Icon → TreeItemProvider}/package.json +1 -1
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +2 -1
- package/hooks/useTreeItemModel.d.ts +2 -0
- package/hooks/useTreeItemModel.js +11 -0
- package/hooks/useTreeItemUtils/index.d.ts +1 -0
- package/hooks/useTreeItemUtils/index.js +1 -0
- package/hooks/{useTreeItem2Utils/useTreeItem2Utils.d.ts → useTreeItemUtils/useTreeItemUtils.d.ts} +13 -12
- package/{modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js → hooks/useTreeItemUtils/useTreeItemUtils.js} +36 -18
- package/index.d.ts +5 -7
- package/index.js +6 -8
- package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +3 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +2 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
- package/internals/TreeViewProvider/TreeViewProvider.js +1 -2
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +5 -2
- package/internals/components/RichTreeViewItems.d.ts +3 -6
- package/internals/components/RichTreeViewItems.js +42 -30
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +36 -0
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
- package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +1 -5
- package/internals/hooks/useSelector.d.ts +4 -0
- package/internals/hooks/useSelector.js +6 -0
- package/internals/index.d.ts +6 -1
- package/internals/index.js +5 -1
- package/internals/models/helpers.d.ts +0 -2
- package/internals/models/itemPlugin.d.ts +13 -10
- package/internals/models/plugin.d.ts +20 -8
- package/internals/models/treeView.d.ts +6 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +124 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +8 -15
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +1 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +182 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -16
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
- package/internals/plugins/useTreeViewItems/index.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -100
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +718 -0
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +16 -55
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +1 -1
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +74 -0
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +13 -29
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +2 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +88 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +79 -43
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +32 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +39 -9
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +20 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +105 -0
- package/internals/useTreeView/useTreeView.js +30 -17
- package/internals/useTreeView/useTreeView.types.d.ts +1 -2
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +3 -1
- package/internals/useTreeView/useTreeViewBuildContext.js +24 -18
- package/internals/utils/TreeViewStore.d.ts +12 -0
- package/internals/utils/TreeViewStore.js +24 -0
- package/internals/utils/selectors.d.ts +9 -0
- package/internals/utils/selectors.js +37 -0
- package/internals/utils/tree.d.ts +8 -8
- package/internals/utils/tree.js +51 -43
- package/models/items.d.ts +7 -2
- package/modern/RichTreeView/RichTreeView.js +22 -5
- package/modern/SimpleTreeView/SimpleTreeView.js +21 -3
- package/modern/TreeItem/TreeItem.js +241 -371
- package/modern/TreeItem/index.js +2 -4
- package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
- package/modern/TreeItemDragAndDropOverlay/index.js +1 -0
- package/modern/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
- package/modern/TreeItemIcon/index.js +1 -0
- package/modern/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/modern/TreeItemLabelInput/index.js +1 -0
- package/modern/TreeItemProvider/TreeItemProvider.js +43 -0
- package/modern/TreeItemProvider/index.js +1 -0
- package/modern/hooks/index.js +2 -1
- package/modern/hooks/useTreeItemModel.js +11 -0
- package/modern/hooks/useTreeItemUtils/index.js +1 -0
- package/{hooks/useTreeItem2Utils/useTreeItem2Utils.js → modern/hooks/useTreeItemUtils/useTreeItemUtils.js} +36 -18
- package/modern/index.js +6 -8
- package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
- package/modern/internals/TreeViewProvider/TreeViewProvider.js +1 -2
- package/modern/internals/components/RichTreeViewItems.js +42 -30
- package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
- package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
- package/modern/internals/hooks/useSelector.js +6 -0
- package/modern/internals/index.js +5 -1
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
- package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -100
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
- package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
- package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +88 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +79 -43
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +105 -0
- package/modern/internals/useTreeView/useTreeView.js +30 -17
- package/modern/internals/useTreeView/useTreeViewBuildContext.js +24 -18
- package/modern/internals/utils/TreeViewStore.js +24 -0
- package/modern/internals/utils/selectors.js +37 -0
- package/modern/internals/utils/tree.js +51 -43
- package/modern/useTreeItem/index.js +1 -0
- package/modern/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +45 -51
- package/node/RichTreeView/RichTreeView.js +22 -5
- package/node/SimpleTreeView/SimpleTreeView.js +21 -3
- package/node/TreeItem/TreeItem.js +242 -372
- package/node/TreeItem/index.js +38 -16
- package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +7 -6
- package/node/TreeItemDragAndDropOverlay/index.js +12 -0
- package/node/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +4 -3
- package/node/TreeItemIcon/index.js +12 -0
- package/node/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
- package/node/TreeItemLabelInput/index.js +12 -0
- package/node/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +22 -6
- package/node/TreeItemProvider/index.js +12 -0
- package/node/hooks/index.js +10 -3
- package/node/hooks/useTreeItemModel.js +17 -0
- package/node/hooks/useTreeItemUtils/index.js +12 -0
- package/node/hooks/{useTreeItem2Utils/useTreeItem2Utils.js → useTreeItemUtils/useTreeItemUtils.js} +37 -19
- package/node/index.js +18 -42
- package/node/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
- package/node/internals/TreeViewProvider/TreeViewProvider.js +1 -2
- package/node/internals/components/RichTreeViewItems.js +42 -30
- package/node/internals/corePlugins/useTreeViewId/useTreeViewId.js +12 -13
- package/node/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +15 -0
- package/node/internals/hooks/useSelector.js +13 -0
- package/node/internals/index.js +47 -1
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +23 -0
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +14 -0
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +40 -0
- package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +16 -13
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +60 -102
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +109 -0
- package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +30 -27
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
- package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
- package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
- package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +32 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +96 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +78 -42
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +15 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +109 -2
- package/node/internals/useTreeView/useTreeView.js +30 -17
- package/node/internals/useTreeView/useTreeViewBuildContext.js +25 -18
- package/node/internals/utils/TreeViewStore.js +31 -0
- package/node/internals/utils/selectors.js +44 -0
- package/node/internals/utils/tree.js +51 -43
- package/node/useTreeItem/index.js +12 -0
- package/node/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +46 -53
- package/package.json +7 -5
- package/themeAugmentation/components.d.ts +0 -10
- package/themeAugmentation/overrides.d.ts +0 -3
- package/themeAugmentation/props.d.ts +1 -5
- package/useTreeItem/index.d.ts +2 -0
- package/useTreeItem/index.js +1 -0
- package/{TreeItem2 → useTreeItem}/package.json +1 -1
- package/useTreeItem/useTreeItem.d.ts +2 -0
- package/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +45 -51
- package/{useTreeItem2/useTreeItem2.types.d.ts → useTreeItem/useTreeItem.types.d.ts} +51 -58
- package/TreeItem/TreeItemContent.d.ts +0 -61
- package/TreeItem/TreeItemContent.js +0 -146
- package/TreeItem/useTreeItemState.d.ts +0 -21
- package/TreeItem/useTreeItemState.js +0 -143
- package/TreeItem2/TreeItem2.d.ts +0 -34
- package/TreeItem2/TreeItem2.js +0 -387
- package/TreeItem2/TreeItem2.types.d.ts +0 -92
- package/TreeItem2/index.d.ts +0 -2
- package/TreeItem2/index.js +0 -1
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +0 -7
- package/TreeItem2DragAndDropOverlay/index.d.ts +0 -2
- package/TreeItem2DragAndDropOverlay/index.js +0 -1
- package/TreeItem2DragAndDropOverlay/package.json +0 -6
- package/TreeItem2Icon/TreeItem2Icon.d.ts +0 -7
- package/TreeItem2Icon/index.d.ts +0 -2
- package/TreeItem2Icon/index.js +0 -1
- package/TreeItem2LabelInput/TreeItem2LabelInput.d.ts +0 -5
- package/TreeItem2LabelInput/index.d.ts +0 -2
- package/TreeItem2LabelInput/index.js +0 -1
- package/TreeItem2Provider/TreeItem2Provider.d.ts +0 -6
- package/TreeItem2Provider/TreeItem2Provider.js +0 -26
- package/TreeItem2Provider/index.d.ts +0 -2
- package/TreeItem2Provider/index.js +0 -1
- package/TreeView/TreeView.d.ts +0 -21
- package/TreeView/TreeView.js +0 -211
- package/TreeView/TreeView.types.d.ts +0 -9
- package/TreeView/index.d.ts +0 -3
- package/TreeView/index.js +0 -3
- package/TreeView/package.json +0 -6
- package/TreeView/treeViewClasses.d.ts +0 -7
- package/TreeView/treeViewClasses.js +0 -6
- package/hooks/useTreeItem2Utils/index.d.ts +0 -1
- package/hooks/useTreeItem2Utils/index.js +0 -1
- package/modern/TreeItem/TreeItemContent.js +0 -146
- package/modern/TreeItem/useTreeItemState.js +0 -143
- package/modern/TreeItem2/TreeItem2.js +0 -387
- package/modern/TreeItem2/index.js +0 -1
- package/modern/TreeItem2DragAndDropOverlay/index.js +0 -1
- package/modern/TreeItem2Icon/index.js +0 -1
- package/modern/TreeItem2LabelInput/index.js +0 -1
- package/modern/TreeItem2Provider/TreeItem2Provider.js +0 -26
- package/modern/TreeItem2Provider/TreeItem2Provider.types.js +0 -1
- package/modern/TreeItem2Provider/index.js +0 -1
- package/modern/TreeView/TreeView.js +0 -211
- package/modern/TreeView/TreeView.types.js +0 -1
- package/modern/TreeView/index.js +0 -3
- package/modern/TreeView/treeViewClasses.js +0 -6
- package/modern/hooks/useTreeItem2Utils/index.js +0 -1
- package/modern/useTreeItem2/index.js +0 -4
- package/modern/useTreeItem2/useTreeItem2.types.js +0 -1
- package/node/TreeItem/TreeItemContent.js +0 -153
- package/node/TreeItem/useTreeItemState.js +0 -148
- package/node/TreeItem2/TreeItem2.js +0 -394
- package/node/TreeItem2/index.js +0 -48
- package/node/TreeItem2DragAndDropOverlay/index.js +0 -12
- package/node/TreeItem2Icon/index.js +0 -12
- package/node/TreeItem2LabelInput/index.js +0 -12
- package/node/TreeItem2Provider/index.js +0 -12
- package/node/TreeView/TreeView.js +0 -217
- package/node/TreeView/TreeView.types.js +0 -5
- package/node/TreeView/index.js +0 -27
- package/node/TreeView/treeViewClasses.js +0 -14
- package/node/hooks/useTreeItem2Utils/index.js +0 -12
- package/node/useTreeItem2/index.js +0 -10
- package/node/useTreeItem2/useTreeItem2.types.js +0 -5
- package/useTreeItem2/index.d.ts +0 -3
- package/useTreeItem2/index.js +0 -4
- package/useTreeItem2/useTreeItem2.d.ts +0 -2
- package/useTreeItem2/useTreeItem2.types.js +0 -1
- /package/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/{TreeItem2Provider/TreeItem2Provider.types.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/{TreeView/TreeView.types.js → modern/TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/modern/{TreeItem2/TreeItem2.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/modern/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/modern/{TreeItem2Icon/TreeItem2Icon.types.js → useTreeItem/useTreeItem.types.js} +0 -0
- /package/node/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
- /package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
- /package/node/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
- /package/node/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
- /package/node/{TreeItem2Provider/TreeItem2Provider.types.js → useTreeItem/useTreeItem.types.js} +0 -0
- /package/{modern/TreeItem2LabelInput/TreeItem2LabelInput.types.js → useTreeItem/useTreeItem.types.js} +0 -0
package/modern/TreeItem/index.js
CHANGED
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
export { TreeItem } from "./TreeItem.js";
|
|
2
|
-
export * from "./treeItemClasses.js";
|
|
3
|
-
export * from "./useTreeItemState.js";
|
|
4
|
-
export { TreeItemContent } from "./TreeItemContent.js";
|
|
1
|
+
export { TreeItem, TreeItemRoot, TreeItemContent, TreeItemIconContainer, TreeItemGroupTransition, TreeItemCheckbox, TreeItemLabel } from "./TreeItem.js";
|
|
2
|
+
export * from "./treeItemClasses.js";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
@@ -5,8 +7,8 @@ import { alpha } from '@mui/material/styles';
|
|
|
5
7
|
import { shouldForwardProp } from '@mui/system';
|
|
6
8
|
import { styled } from "../internals/zero-styled/index.js";
|
|
7
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
-
const
|
|
9
|
-
name: '
|
|
10
|
+
const TreeItemDragAndDropOverlayRoot = styled('div', {
|
|
11
|
+
name: 'MuiTreeItemDragAndDropOverlay',
|
|
10
12
|
slot: 'Root',
|
|
11
13
|
overridesResolver: (props, styles) => styles.root,
|
|
12
14
|
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'action'
|
|
@@ -55,13 +57,13 @@ const TreeItem2DragAndDropOverlayRoot = styled('div', {
|
|
|
55
57
|
}
|
|
56
58
|
}]
|
|
57
59
|
}));
|
|
58
|
-
function
|
|
60
|
+
function TreeItemDragAndDropOverlay(props) {
|
|
59
61
|
if (props.action == null) {
|
|
60
62
|
return null;
|
|
61
63
|
}
|
|
62
|
-
return /*#__PURE__*/_jsx(
|
|
64
|
+
return /*#__PURE__*/_jsx(TreeItemDragAndDropOverlayRoot, _extends({}, props));
|
|
63
65
|
}
|
|
64
|
-
process.env.NODE_ENV !== "production" ?
|
|
66
|
+
process.env.NODE_ENV !== "production" ? TreeItemDragAndDropOverlay.propTypes = {
|
|
65
67
|
// ----------------------------- Warning --------------------------------
|
|
66
68
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
67
69
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -69,4 +71,4 @@ process.env.NODE_ENV !== "production" ? TreeItem2DragAndDropOverlay.propTypes =
|
|
|
69
71
|
action: PropTypes.oneOf(['make-child', 'move-to-parent', 'reorder-above', 'reorder-below']),
|
|
70
72
|
style: PropTypes.object
|
|
71
73
|
} : void 0;
|
|
72
|
-
export {
|
|
74
|
+
export { TreeItemDragAndDropOverlay };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItemDragAndDropOverlay } from "./TreeItemDragAndDropOverlay.js";
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
@@ -6,7 +8,7 @@ import useSlotProps from '@mui/utils/useSlotProps';
|
|
|
6
8
|
import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
|
|
7
9
|
import { TreeViewCollapseIcon, TreeViewExpandIcon } from "../icons/index.js";
|
|
8
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
function
|
|
11
|
+
function TreeItemIcon(props) {
|
|
10
12
|
const {
|
|
11
13
|
slots,
|
|
12
14
|
slotProps,
|
|
@@ -42,7 +44,7 @@ function TreeItem2Icon(props) {
|
|
|
42
44
|
}
|
|
43
45
|
return /*#__PURE__*/_jsx(Icon, _extends({}, iconProps));
|
|
44
46
|
}
|
|
45
|
-
process.env.NODE_ENV !== "production" ?
|
|
47
|
+
process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes = {
|
|
46
48
|
// ----------------------------- Warning --------------------------------
|
|
47
49
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
48
50
|
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
@@ -67,4 +69,4 @@ process.env.NODE_ENV !== "production" ? TreeItem2Icon.propTypes = {
|
|
|
67
69
|
selected: PropTypes.bool.isRequired
|
|
68
70
|
}).isRequired
|
|
69
71
|
} : void 0;
|
|
70
|
-
export {
|
|
72
|
+
export { TreeItemIcon };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItemIcon } from "./TreeItemIcon.js";
|
|
@@ -4,8 +4,8 @@ import { styled } from "../internals/zero-styled/index.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* @ignore - internal component.
|
|
6
6
|
*/
|
|
7
|
-
const
|
|
8
|
-
name: '
|
|
7
|
+
const TreeItemLabelInput = styled('input', {
|
|
8
|
+
name: 'MuiTreeItem',
|
|
9
9
|
slot: 'LabelInput',
|
|
10
10
|
overridesResolver: (props, styles) => styles.labelInput
|
|
11
11
|
})(({
|
|
@@ -21,4 +21,4 @@ const TreeItem2LabelInput = styled('input', {
|
|
|
21
21
|
outline: `1px solid ${theme.palette.primary.main}`
|
|
22
22
|
}
|
|
23
23
|
}));
|
|
24
|
-
export {
|
|
24
|
+
export { TreeItemLabelInput };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItemLabelInput } from "./TreeItemLabelInput.js";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
|
|
3
|
+
import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
|
|
4
|
+
import { useSelector } from "../internals/hooks/useSelector.js";
|
|
5
|
+
import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @ignore - internal component.
|
|
9
|
+
*/
|
|
10
|
+
function TreeItemProvider(props) {
|
|
11
|
+
const {
|
|
12
|
+
children,
|
|
13
|
+
itemId,
|
|
14
|
+
id
|
|
15
|
+
} = props;
|
|
16
|
+
const {
|
|
17
|
+
wrapItem,
|
|
18
|
+
instance,
|
|
19
|
+
store
|
|
20
|
+
} = useTreeViewContext();
|
|
21
|
+
const treeId = useSelector(store, selectorTreeViewId);
|
|
22
|
+
const idAttribute = generateTreeItemIdAttribute({
|
|
23
|
+
itemId,
|
|
24
|
+
treeId,
|
|
25
|
+
id
|
|
26
|
+
});
|
|
27
|
+
return wrapItem({
|
|
28
|
+
children,
|
|
29
|
+
itemId,
|
|
30
|
+
instance,
|
|
31
|
+
idAttribute
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
TreeItemProvider.propTypes = {
|
|
35
|
+
// ----------------------------- Warning --------------------------------
|
|
36
|
+
// | These PropTypes are generated from the TypeScript type definitions |
|
|
37
|
+
// | To update them edit the TypeScript types and run "pnpm proptypes" |
|
|
38
|
+
// ----------------------------------------------------------------------
|
|
39
|
+
children: PropTypes.node,
|
|
40
|
+
id: PropTypes.string,
|
|
41
|
+
itemId: PropTypes.string.isRequired
|
|
42
|
+
};
|
|
43
|
+
export { TreeItemProvider };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItemProvider } from "./TreeItemProvider.js";
|
package/modern/hooks/index.js
CHANGED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
|
|
4
|
+
import { useSelector } from "../internals/hooks/useSelector.js";
|
|
5
|
+
import { selectorItemModel } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
6
|
+
export const useTreeItemModel = itemId => {
|
|
7
|
+
const {
|
|
8
|
+
store
|
|
9
|
+
} = useTreeViewContext();
|
|
10
|
+
return useSelector(store, selectorItemModel, itemId);
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTreeItemUtils } from "./useTreeItemUtils.js";
|
|
@@ -1,40 +1,59 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
1
3
|
import { useTreeViewContext } from "../../internals/TreeViewProvider/index.js";
|
|
2
4
|
import { useTreeViewLabel } from "../../internals/plugins/useTreeViewLabel/index.js";
|
|
3
5
|
import { hasPlugin } from "../../internals/utils/plugins.js";
|
|
6
|
+
import { useSelector } from "../../internals/hooks/useSelector.js";
|
|
7
|
+
import { selectorIsItemExpanded } from "../../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
|
|
8
|
+
import { selectorIsItemFocused } from "../../internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js";
|
|
9
|
+
import { selectorIsItemDisabled } from "../../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
10
|
+
import { selectorIsItemSelected } from "../../internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js";
|
|
11
|
+
import { selectorIsItemBeingEdited, selectorIsItemEditable } from "../../internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js";
|
|
4
12
|
|
|
5
13
|
/**
|
|
6
|
-
* Plugins that need to be present in the Tree View in order for `
|
|
14
|
+
* Plugins that need to be present in the Tree View in order for `useTreeItemUtils` to work correctly.
|
|
7
15
|
*/
|
|
8
16
|
|
|
9
17
|
/**
|
|
10
|
-
* Plugins that `
|
|
18
|
+
* Plugins that `useTreeItemUtils` can use if they are present, but are not required.
|
|
11
19
|
*/
|
|
12
20
|
|
|
13
|
-
const isItemExpandable = reactChildren => {
|
|
21
|
+
export const isItemExpandable = reactChildren => {
|
|
14
22
|
if (Array.isArray(reactChildren)) {
|
|
15
23
|
return reactChildren.length > 0 && reactChildren.some(isItemExpandable);
|
|
16
24
|
}
|
|
17
25
|
return Boolean(reactChildren);
|
|
18
26
|
};
|
|
19
|
-
export const
|
|
27
|
+
export const useTreeItemUtils = ({
|
|
20
28
|
itemId,
|
|
21
29
|
children
|
|
22
30
|
}) => {
|
|
23
31
|
const {
|
|
24
32
|
instance,
|
|
33
|
+
label,
|
|
34
|
+
store,
|
|
25
35
|
selection: {
|
|
26
36
|
multiSelect
|
|
27
37
|
},
|
|
28
38
|
publicAPI
|
|
29
39
|
} = useTreeViewContext();
|
|
40
|
+
const isExpanded = useSelector(store, selectorIsItemExpanded, itemId);
|
|
41
|
+
const isFocused = useSelector(store, selectorIsItemFocused, itemId);
|
|
42
|
+
const isSelected = useSelector(store, selectorIsItemSelected, itemId);
|
|
43
|
+
const isDisabled = useSelector(store, selectorIsItemDisabled, itemId);
|
|
44
|
+
const isEditing = useSelector(store, state => label == null ? false : selectorIsItemBeingEdited(state, itemId));
|
|
45
|
+
const isEditable = useSelector(store, state => label == null ? false : selectorIsItemEditable(state, {
|
|
46
|
+
itemId,
|
|
47
|
+
isItemEditable: label.isItemEditable
|
|
48
|
+
}));
|
|
30
49
|
const status = {
|
|
31
50
|
expandable: isItemExpandable(children),
|
|
32
|
-
expanded:
|
|
33
|
-
focused:
|
|
34
|
-
selected:
|
|
35
|
-
disabled:
|
|
36
|
-
editing:
|
|
37
|
-
editable:
|
|
51
|
+
expanded: isExpanded,
|
|
52
|
+
focused: isFocused,
|
|
53
|
+
selected: isSelected,
|
|
54
|
+
disabled: isDisabled,
|
|
55
|
+
editing: isEditing,
|
|
56
|
+
editable: isEditable
|
|
38
57
|
};
|
|
39
58
|
const handleExpansion = event => {
|
|
40
59
|
if (status.disabled) {
|
|
@@ -46,7 +65,7 @@ export const useTreeItem2Utils = ({
|
|
|
46
65
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
47
66
|
|
|
48
67
|
// If already expanded and trying to toggle selection don't close
|
|
49
|
-
if (status.expandable && !(multiple &&
|
|
68
|
+
if (status.expandable && !(multiple && selectorIsItemExpanded(store.value, itemId))) {
|
|
50
69
|
instance.toggleItemExpansion(event, itemId);
|
|
51
70
|
}
|
|
52
71
|
};
|
|
@@ -93,15 +112,15 @@ export const useTreeItem2Utils = ({
|
|
|
93
112
|
if (!hasPlugin(instance, useTreeViewLabel)) {
|
|
94
113
|
return;
|
|
95
114
|
}
|
|
96
|
-
if (
|
|
97
|
-
if (
|
|
115
|
+
if (isEditable) {
|
|
116
|
+
if (isEditing) {
|
|
98
117
|
instance.setEditedItemId(null);
|
|
99
118
|
} else {
|
|
100
119
|
instance.setEditedItemId(itemId);
|
|
101
120
|
}
|
|
102
121
|
}
|
|
103
122
|
};
|
|
104
|
-
const handleSaveItemLabel = (event,
|
|
123
|
+
const handleSaveItemLabel = (event, newLabel) => {
|
|
105
124
|
if (!hasPlugin(instance, useTreeViewLabel)) {
|
|
106
125
|
return;
|
|
107
126
|
}
|
|
@@ -109,9 +128,8 @@ export const useTreeItem2Utils = ({
|
|
|
109
128
|
// As a side effect of `instance.focusItem` called here and in `handleCancelItemLabelEditing` the `labelInput` is blurred
|
|
110
129
|
// The `onBlur` event is triggered, which calls `handleSaveItemLabel` again.
|
|
111
130
|
// To avoid creating an unwanted behavior we need to check if the item is being edited before calling `updateItemLabel`
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
instance.updateItemLabel(itemId, label);
|
|
131
|
+
if (selectorIsItemBeingEdited(store.value, itemId)) {
|
|
132
|
+
instance.updateItemLabel(itemId, newLabel);
|
|
115
133
|
toggleItemEditing();
|
|
116
134
|
instance.focusItem(event, itemId);
|
|
117
135
|
}
|
|
@@ -120,7 +138,7 @@ export const useTreeItem2Utils = ({
|
|
|
120
138
|
if (!hasPlugin(instance, useTreeViewLabel)) {
|
|
121
139
|
return;
|
|
122
140
|
}
|
|
123
|
-
if (
|
|
141
|
+
if (selectorIsItemBeingEdited(store.value, itemId)) {
|
|
124
142
|
toggleItemEditing();
|
|
125
143
|
instance.focusItem(event, itemId);
|
|
126
144
|
}
|
package/modern/index.js
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-tree-view
|
|
2
|
+
* @mui/x-tree-view v8.0.0-alpha.1
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
// Tree View
|
|
9
|
-
export * from "./TreeView/index.js";
|
|
10
9
|
export * from "./SimpleTreeView/index.js";
|
|
11
10
|
export * from "./RichTreeView/index.js";
|
|
12
11
|
|
|
13
12
|
// Tree Item
|
|
14
13
|
export * from "./TreeItem/index.js";
|
|
15
|
-
export * from "./
|
|
16
|
-
export * from "./
|
|
17
|
-
export * from "./
|
|
18
|
-
export * from "./
|
|
19
|
-
export * from "./
|
|
20
|
-
export * from "./TreeItem2LabelInput/index.js";
|
|
14
|
+
export * from "./useTreeItem/index.js";
|
|
15
|
+
export * from "./TreeItemIcon/index.js";
|
|
16
|
+
export * from "./TreeItemProvider/index.js";
|
|
17
|
+
export * from "./TreeItemDragAndDropOverlay/index.js";
|
|
18
|
+
export * from "./TreeItemLabelInput/index.js";
|
|
21
19
|
export { unstable_resetCleanupTracking } from "./internals/hooks/useInstanceEventHandler.js";
|
|
22
20
|
export * from "./models/index.js";
|
|
23
21
|
export * from "./icons/index.js";
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { useTreeViewContext } from "./useTreeViewContext.js";
|
|
4
4
|
import { escapeOperandAttributeSelector } from "../utils/utils.js";
|
|
5
|
-
import {
|
|
5
|
+
import { selectorItemOrderedChildrenIds } from "../plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
7
|
export const TreeViewChildrenItemContext = /*#__PURE__*/React.createContext(null);
|
|
8
8
|
if (process.env.NODE_ENV !== 'production') {
|
|
@@ -11,11 +11,12 @@ if (process.env.NODE_ENV !== 'production') {
|
|
|
11
11
|
export function TreeViewChildrenItemProvider(props) {
|
|
12
12
|
const {
|
|
13
13
|
children,
|
|
14
|
-
itemId = null
|
|
14
|
+
itemId = null,
|
|
15
|
+
idAttribute
|
|
15
16
|
} = props;
|
|
16
17
|
const {
|
|
17
18
|
instance,
|
|
18
|
-
|
|
19
|
+
store,
|
|
19
20
|
rootRef
|
|
20
21
|
} = useTreeViewContext();
|
|
21
22
|
const childrenIdAttrToIdRef = React.useRef(new Map());
|
|
@@ -23,25 +24,8 @@ export function TreeViewChildrenItemProvider(props) {
|
|
|
23
24
|
if (!rootRef.current) {
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
idAttr = rootRef.current.id;
|
|
29
|
-
} else {
|
|
30
|
-
// Undefined during 1st render
|
|
31
|
-
const itemMeta = instance.getItemMeta(itemId);
|
|
32
|
-
if (itemMeta !== undefined) {
|
|
33
|
-
idAttr = generateTreeItemIdAttribute({
|
|
34
|
-
itemId,
|
|
35
|
-
treeId,
|
|
36
|
-
id: itemMeta.idAttribute
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (idAttr == null) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const previousChildrenIds = instance.getItemOrderedChildrenIds(itemId ?? null) ?? [];
|
|
44
|
-
const escapedIdAttr = escapeOperandAttributeSelector(idAttr);
|
|
27
|
+
const previousChildrenIds = selectorItemOrderedChildrenIds(store.value, itemId ?? null) ?? [];
|
|
28
|
+
const escapedIdAttr = escapeOperandAttributeSelector(idAttribute ?? rootRef.current.id);
|
|
45
29
|
const childrenElements = rootRef.current.querySelectorAll(`${itemId == null ? '' : `*[id="${escapedIdAttr}"] `}[role="treeitem"]:not(*[id="${escapedIdAttr}"] [role="treeitem"] [role="treeitem"])`);
|
|
46
30
|
const childrenIds = Array.from(childrenElements).map(child => childrenIdAttrToIdRef.current.get(child.id));
|
|
47
31
|
const hasChanged = childrenIds.length !== previousChildrenIds.length || childrenIds.some((childId, index) => childId !== previousChildrenIds[index]);
|
|
@@ -3,54 +3,66 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
|
|
|
3
3
|
const _excluded = ["ownerState"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import useSlotProps from '@mui/utils/useSlotProps';
|
|
6
|
+
import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';
|
|
6
7
|
import { TreeItem } from "../../TreeItem/index.js";
|
|
8
|
+
import { useSelector } from "../hooks/useSelector.js";
|
|
9
|
+
import { selectorItemMeta, selectorItemOrderedChildrenIds } from "../plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
10
|
+
import { useTreeViewContext } from "../TreeViewProvider/index.js";
|
|
7
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
const RichTreeViewItemsContext = /*#__PURE__*/React.createContext(null);
|
|
13
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
14
|
+
RichTreeViewItemsContext.displayName = 'RichTreeViewItemsProvider';
|
|
15
|
+
}
|
|
16
|
+
const WrappedTreeItem = /*#__PURE__*/React.memo(function WrappedTreeItem({
|
|
17
|
+
itemSlot,
|
|
18
|
+
itemSlotProps,
|
|
19
|
+
itemId
|
|
15
20
|
}) {
|
|
16
|
-
const
|
|
21
|
+
const renderItemForRichTreeView = React.useContext(RichTreeViewItemsContext);
|
|
22
|
+
const {
|
|
23
|
+
store
|
|
24
|
+
} = useTreeViewContext();
|
|
25
|
+
const itemMeta = useSelector(store, selectorItemMeta, itemId);
|
|
26
|
+
const children = useSelector(store, selectorItemOrderedChildrenIds, itemId);
|
|
27
|
+
const Item = itemSlot ?? TreeItem;
|
|
17
28
|
const _useSlotProps = useSlotProps({
|
|
18
29
|
elementType: Item,
|
|
19
|
-
externalSlotProps:
|
|
30
|
+
externalSlotProps: itemSlotProps,
|
|
20
31
|
additionalProps: {
|
|
21
|
-
|
|
22
|
-
id,
|
|
23
|
-
|
|
32
|
+
label: itemMeta?.label,
|
|
33
|
+
id: itemMeta?.idAttribute,
|
|
34
|
+
itemId
|
|
24
35
|
},
|
|
25
36
|
ownerState: {
|
|
26
37
|
itemId,
|
|
27
|
-
label
|
|
38
|
+
label: itemMeta?.label
|
|
28
39
|
}
|
|
29
40
|
}),
|
|
30
41
|
itemProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
|
|
31
|
-
const children = React.useMemo(() => itemsToRender ? /*#__PURE__*/_jsx(RichTreeViewItems, {
|
|
32
|
-
itemsToRender: itemsToRender,
|
|
33
|
-
slots: slots,
|
|
34
|
-
slotProps: slotProps
|
|
35
|
-
}) : null, [itemsToRender, slots, slotProps]);
|
|
36
42
|
return /*#__PURE__*/_jsx(Item, _extends({}, itemProps, {
|
|
37
|
-
children: children
|
|
43
|
+
children: children?.map(renderItemForRichTreeView)
|
|
38
44
|
}));
|
|
39
|
-
}
|
|
45
|
+
}, fastObjectShallowCompare);
|
|
40
46
|
export function RichTreeViewItems(props) {
|
|
41
47
|
const {
|
|
42
|
-
itemsToRender,
|
|
43
48
|
slots,
|
|
44
49
|
slotProps
|
|
45
50
|
} = props;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
const {
|
|
52
|
+
store
|
|
53
|
+
} = useTreeViewContext();
|
|
54
|
+
const itemSlot = slots?.item;
|
|
55
|
+
const itemSlotProps = slotProps?.item;
|
|
56
|
+
const items = useSelector(store, selectorItemOrderedChildrenIds, null);
|
|
57
|
+
const renderItem = React.useCallback(itemId => {
|
|
58
|
+
return /*#__PURE__*/_jsx(WrappedTreeItem, {
|
|
59
|
+
itemSlot: itemSlot,
|
|
60
|
+
itemSlotProps: itemSlotProps,
|
|
61
|
+
itemId: itemId
|
|
62
|
+
}, itemId);
|
|
63
|
+
}, [itemSlot, itemSlotProps]);
|
|
64
|
+
return /*#__PURE__*/_jsx(RichTreeViewItemsContext.Provider, {
|
|
65
|
+
value: renderItem,
|
|
66
|
+
children: items.map(renderItem)
|
|
55
67
|
});
|
|
56
68
|
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { useSelector } from "../../hooks/useSelector.js";
|
|
4
|
+
import { selectorTreeViewId } from "./useTreeViewId.selectors.js";
|
|
3
5
|
import { createTreeViewDefaultId } from "./useTreeViewId.utils.js";
|
|
4
6
|
export const useTreeViewId = ({
|
|
5
7
|
params,
|
|
6
|
-
|
|
7
|
-
setState
|
|
8
|
+
store
|
|
8
9
|
}) => {
|
|
9
10
|
React.useEffect(() => {
|
|
10
|
-
|
|
11
|
-
if (
|
|
11
|
+
store.update(prevState => {
|
|
12
|
+
if (params.id === prevState.id.providedTreeId && prevState.id.treeId !== undefined) {
|
|
12
13
|
return prevState;
|
|
13
14
|
}
|
|
14
15
|
return _extends({}, prevState, {
|
|
@@ -17,15 +18,12 @@ export const useTreeViewId = ({
|
|
|
17
18
|
})
|
|
18
19
|
});
|
|
19
20
|
});
|
|
20
|
-
}, [
|
|
21
|
-
const treeId =
|
|
21
|
+
}, [store, params.id]);
|
|
22
|
+
const treeId = useSelector(store, selectorTreeViewId);
|
|
22
23
|
return {
|
|
23
24
|
getRootProps: () => ({
|
|
24
25
|
id: treeId
|
|
25
|
-
})
|
|
26
|
-
contextValue: {
|
|
27
|
-
treeId
|
|
28
|
-
}
|
|
26
|
+
})
|
|
29
27
|
};
|
|
30
28
|
};
|
|
31
29
|
useTreeViewId.params = {
|
|
@@ -35,6 +33,7 @@ useTreeViewId.getInitialState = ({
|
|
|
35
33
|
id
|
|
36
34
|
}) => ({
|
|
37
35
|
id: {
|
|
38
|
-
treeId:
|
|
36
|
+
treeId: undefined,
|
|
37
|
+
providedTreeId: id
|
|
39
38
|
}
|
|
40
39
|
});
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createSelector } from "../../utils/selectors.js";
|
|
2
|
+
const selectorTreeViewIdState = state => state.id;
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Get the id attribute of the tree view.
|
|
6
|
+
* @param {TreeViewState<[UseTreeViewIdSignature]>} state The state of the tree view.
|
|
7
|
+
* @returns {string} The id attribute of the tree view.
|
|
8
|
+
*/
|
|
9
|
+
export const selectorTreeViewId = createSelector(selectorTreeViewIdState, idState => idState.treeId);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector';
|
|
2
|
+
const defaultCompare = Object.is;
|
|
3
|
+
export const useSelector = (store, selector, args = undefined, equals = defaultCompare) => {
|
|
4
|
+
const selectorWithArgs = state => selector(state, args);
|
|
5
|
+
return useSyncExternalStoreWithSelector(store.subscribe, store.getSnapshot, store.getSnapshot, selectorWithArgs, equals);
|
|
6
|
+
};
|
|
@@ -2,6 +2,7 @@ export { useTreeView } from "./useTreeView/index.js";
|
|
|
2
2
|
export { TreeViewProvider, useTreeViewContext } from "./TreeViewProvider/index.js";
|
|
3
3
|
export { RichTreeViewItems } from "./components/RichTreeViewItems.js";
|
|
4
4
|
export { unstable_resetCleanupTracking } from "./hooks/useInstanceEventHandler.js";
|
|
5
|
+
export { useSelector } from "./hooks/useSelector.js";
|
|
5
6
|
|
|
6
7
|
// Core plugins
|
|
7
8
|
|
|
@@ -12,6 +13,9 @@ export { useTreeViewFocus } from "./plugins/useTreeViewFocus/index.js";
|
|
|
12
13
|
export { useTreeViewKeyboardNavigation } from "./plugins/useTreeViewKeyboardNavigation/index.js";
|
|
13
14
|
export { useTreeViewIcons } from "./plugins/useTreeViewIcons/index.js";
|
|
14
15
|
export { useTreeViewItems, buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "./plugins/useTreeViewItems/index.js";
|
|
16
|
+
export { selectorItemMetaLookup, selectorItemMeta, selectorItemIndex, selectorItemOrderedChildrenIds } from "./plugins/useTreeViewItems/useTreeViewItems.selectors.js";
|
|
15
17
|
export { useTreeViewLabel } from "./plugins/useTreeViewLabel/index.js";
|
|
16
18
|
export { useTreeViewJSXItems } from "./plugins/useTreeViewJSXItems/index.js";
|
|
17
|
-
export {
|
|
19
|
+
export { createSelector } from "./utils/selectors.js";
|
|
20
|
+
export { isTargetInDescendants } from "./utils/tree.js";
|
|
21
|
+
export { TreeViewStore } from "./utils/TreeViewStore.js";
|