@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
|
@@ -10,55 +10,67 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
10
10
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _useSlotProps2 = _interopRequireDefault(require("@mui/utils/useSlotProps"));
|
|
13
|
+
var _fastObjectShallowCompare = require("@mui/x-internals/fastObjectShallowCompare");
|
|
13
14
|
var _TreeItem = require("../../TreeItem");
|
|
15
|
+
var _useSelector = require("../hooks/useSelector");
|
|
16
|
+
var _useTreeViewItems = require("../plugins/useTreeViewItems/useTreeViewItems.selectors");
|
|
17
|
+
var _TreeViewProvider = require("../TreeViewProvider");
|
|
14
18
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
19
|
const _excluded = ["ownerState"];
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const RichTreeViewItemsContext = /*#__PURE__*/React.createContext(null);
|
|
21
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
22
|
+
RichTreeViewItemsContext.displayName = 'RichTreeViewItemsProvider';
|
|
23
|
+
}
|
|
24
|
+
const WrappedTreeItem = /*#__PURE__*/React.memo(function WrappedTreeItem({
|
|
25
|
+
itemSlot,
|
|
26
|
+
itemSlotProps,
|
|
27
|
+
itemId
|
|
23
28
|
}) {
|
|
24
|
-
const
|
|
29
|
+
const renderItemForRichTreeView = React.useContext(RichTreeViewItemsContext);
|
|
30
|
+
const {
|
|
31
|
+
store
|
|
32
|
+
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
33
|
+
const itemMeta = (0, _useSelector.useSelector)(store, _useTreeViewItems.selectorItemMeta, itemId);
|
|
34
|
+
const children = (0, _useSelector.useSelector)(store, _useTreeViewItems.selectorItemOrderedChildrenIds, itemId);
|
|
35
|
+
const Item = itemSlot ?? _TreeItem.TreeItem;
|
|
25
36
|
const _useSlotProps = (0, _useSlotProps2.default)({
|
|
26
37
|
elementType: Item,
|
|
27
|
-
externalSlotProps:
|
|
38
|
+
externalSlotProps: itemSlotProps,
|
|
28
39
|
additionalProps: {
|
|
29
|
-
|
|
30
|
-
id,
|
|
31
|
-
|
|
40
|
+
label: itemMeta?.label,
|
|
41
|
+
id: itemMeta?.idAttribute,
|
|
42
|
+
itemId
|
|
32
43
|
},
|
|
33
44
|
ownerState: {
|
|
34
45
|
itemId,
|
|
35
|
-
label
|
|
46
|
+
label: itemMeta?.label
|
|
36
47
|
}
|
|
37
48
|
}),
|
|
38
49
|
itemProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded);
|
|
39
|
-
const children = React.useMemo(() => itemsToRender ? /*#__PURE__*/(0, _jsxRuntime.jsx)(RichTreeViewItems, {
|
|
40
|
-
itemsToRender: itemsToRender,
|
|
41
|
-
slots: slots,
|
|
42
|
-
slotProps: slotProps
|
|
43
|
-
}) : null, [itemsToRender, slots, slotProps]);
|
|
44
50
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Item, (0, _extends2.default)({}, itemProps, {
|
|
45
|
-
children: children
|
|
51
|
+
children: children?.map(renderItemForRichTreeView)
|
|
46
52
|
}));
|
|
47
|
-
}
|
|
53
|
+
}, _fastObjectShallowCompare.fastObjectShallowCompare);
|
|
48
54
|
function RichTreeViewItems(props) {
|
|
49
55
|
const {
|
|
50
|
-
itemsToRender,
|
|
51
56
|
slots,
|
|
52
57
|
slotProps
|
|
53
58
|
} = props;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
const {
|
|
60
|
+
store
|
|
61
|
+
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
62
|
+
const itemSlot = slots?.item;
|
|
63
|
+
const itemSlotProps = slotProps?.item;
|
|
64
|
+
const items = (0, _useSelector.useSelector)(store, _useTreeViewItems.selectorItemOrderedChildrenIds, null);
|
|
65
|
+
const renderItem = React.useCallback(itemId => {
|
|
66
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(WrappedTreeItem, {
|
|
67
|
+
itemSlot: itemSlot,
|
|
68
|
+
itemSlotProps: itemSlotProps,
|
|
69
|
+
itemId: itemId
|
|
70
|
+
}, itemId);
|
|
71
|
+
}, [itemSlot, itemSlotProps]);
|
|
72
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(RichTreeViewItemsContext.Provider, {
|
|
73
|
+
value: renderItem,
|
|
74
|
+
children: items.map(renderItem)
|
|
63
75
|
});
|
|
64
76
|
}
|
|
@@ -8,32 +8,30 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports.useTreeViewId = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
|
-
var
|
|
11
|
+
var _useSelector = require("../../hooks/useSelector");
|
|
12
|
+
var _useTreeViewId = require("./useTreeViewId.selectors");
|
|
13
|
+
var _useTreeViewId2 = require("./useTreeViewId.utils");
|
|
12
14
|
const useTreeViewId = ({
|
|
13
15
|
params,
|
|
14
|
-
|
|
15
|
-
setState
|
|
16
|
+
store
|
|
16
17
|
}) => {
|
|
17
18
|
React.useEffect(() => {
|
|
18
|
-
|
|
19
|
-
if (
|
|
19
|
+
store.update(prevState => {
|
|
20
|
+
if (params.id === prevState.id.providedTreeId && prevState.id.treeId !== undefined) {
|
|
20
21
|
return prevState;
|
|
21
22
|
}
|
|
22
23
|
return (0, _extends2.default)({}, prevState, {
|
|
23
24
|
id: (0, _extends2.default)({}, prevState.id, {
|
|
24
|
-
treeId: params.id ?? (0,
|
|
25
|
+
treeId: params.id ?? (0, _useTreeViewId2.createTreeViewDefaultId)()
|
|
25
26
|
})
|
|
26
27
|
});
|
|
27
28
|
});
|
|
28
|
-
}, [
|
|
29
|
-
const treeId =
|
|
29
|
+
}, [store, params.id]);
|
|
30
|
+
const treeId = (0, _useSelector.useSelector)(store, _useTreeViewId.selectorTreeViewId);
|
|
30
31
|
return {
|
|
31
32
|
getRootProps: () => ({
|
|
32
33
|
id: treeId
|
|
33
|
-
})
|
|
34
|
-
contextValue: {
|
|
35
|
-
treeId
|
|
36
|
-
}
|
|
34
|
+
})
|
|
37
35
|
};
|
|
38
36
|
};
|
|
39
37
|
exports.useTreeViewId = useTreeViewId;
|
|
@@ -44,6 +42,7 @@ useTreeViewId.getInitialState = ({
|
|
|
44
42
|
id
|
|
45
43
|
}) => ({
|
|
46
44
|
id: {
|
|
47
|
-
treeId:
|
|
45
|
+
treeId: undefined,
|
|
46
|
+
providedTreeId: id
|
|
48
47
|
}
|
|
49
48
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectorTreeViewId = void 0;
|
|
7
|
+
var _selectors = require("../../utils/selectors");
|
|
8
|
+
const selectorTreeViewIdState = state => state.id;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get the id attribute of the tree view.
|
|
12
|
+
* @param {TreeViewState<[UseTreeViewIdSignature]>} state The state of the tree view.
|
|
13
|
+
* @returns {string} The id attribute of the tree view.
|
|
14
|
+
*/
|
|
15
|
+
const selectorTreeViewId = exports.selectorTreeViewId = (0, _selectors.createSelector)(selectorTreeViewIdState, idState => idState.treeId);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useSelector = void 0;
|
|
7
|
+
var _withSelector = require("use-sync-external-store/with-selector");
|
|
8
|
+
const defaultCompare = Object.is;
|
|
9
|
+
const useSelector = (store, selector, args = undefined, equals = defaultCompare) => {
|
|
10
|
+
const selectorWithArgs = state => selector(state, args);
|
|
11
|
+
return (0, _withSelector.useSyncExternalStoreWithSelector)(store.subscribe, store.getSnapshot, store.getSnapshot, selectorWithArgs, equals);
|
|
12
|
+
};
|
|
13
|
+
exports.useSelector = useSelector;
|
package/node/internals/index.js
CHANGED
|
@@ -21,24 +21,66 @@ Object.defineProperty(exports, "TreeViewProvider", {
|
|
|
21
21
|
return _TreeViewProvider.TreeViewProvider;
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
|
+
Object.defineProperty(exports, "TreeViewStore", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _TreeViewStore.TreeViewStore;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
24
30
|
Object.defineProperty(exports, "buildSiblingIndexes", {
|
|
25
31
|
enumerable: true,
|
|
26
32
|
get: function () {
|
|
27
33
|
return _useTreeViewItems.buildSiblingIndexes;
|
|
28
34
|
}
|
|
29
35
|
});
|
|
36
|
+
Object.defineProperty(exports, "createSelector", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _selectors.createSelector;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
30
42
|
Object.defineProperty(exports, "isTargetInDescendants", {
|
|
31
43
|
enumerable: true,
|
|
32
44
|
get: function () {
|
|
33
45
|
return _tree.isTargetInDescendants;
|
|
34
46
|
}
|
|
35
47
|
});
|
|
48
|
+
Object.defineProperty(exports, "selectorItemIndex", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _useTreeViewItems2.selectorItemIndex;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "selectorItemMeta", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _useTreeViewItems2.selectorItemMeta;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "selectorItemMetaLookup", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _useTreeViewItems2.selectorItemMetaLookup;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "selectorItemOrderedChildrenIds", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _useTreeViewItems2.selectorItemOrderedChildrenIds;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
36
72
|
Object.defineProperty(exports, "unstable_resetCleanupTracking", {
|
|
37
73
|
enumerable: true,
|
|
38
74
|
get: function () {
|
|
39
75
|
return _useInstanceEventHandler.unstable_resetCleanupTracking;
|
|
40
76
|
}
|
|
41
77
|
});
|
|
78
|
+
Object.defineProperty(exports, "useSelector", {
|
|
79
|
+
enumerable: true,
|
|
80
|
+
get: function () {
|
|
81
|
+
return _useSelector.useSelector;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
42
84
|
Object.defineProperty(exports, "useTreeView", {
|
|
43
85
|
enumerable: true,
|
|
44
86
|
get: function () {
|
|
@@ -103,12 +145,16 @@ var _useTreeView = require("./useTreeView");
|
|
|
103
145
|
var _TreeViewProvider = require("./TreeViewProvider");
|
|
104
146
|
var _RichTreeViewItems = require("./components/RichTreeViewItems");
|
|
105
147
|
var _useInstanceEventHandler = require("./hooks/useInstanceEventHandler");
|
|
148
|
+
var _useSelector = require("./hooks/useSelector");
|
|
106
149
|
var _useTreeViewExpansion = require("./plugins/useTreeViewExpansion");
|
|
107
150
|
var _useTreeViewSelection = require("./plugins/useTreeViewSelection");
|
|
108
151
|
var _useTreeViewFocus = require("./plugins/useTreeViewFocus");
|
|
109
152
|
var _useTreeViewKeyboardNavigation = require("./plugins/useTreeViewKeyboardNavigation");
|
|
110
153
|
var _useTreeViewIcons = require("./plugins/useTreeViewIcons");
|
|
111
154
|
var _useTreeViewItems = require("./plugins/useTreeViewItems");
|
|
155
|
+
var _useTreeViewItems2 = require("./plugins/useTreeViewItems/useTreeViewItems.selectors");
|
|
112
156
|
var _useTreeViewLabel = require("./plugins/useTreeViewLabel");
|
|
113
157
|
var _useTreeViewJSXItems = require("./plugins/useTreeViewJSXItems");
|
|
114
|
-
var
|
|
158
|
+
var _selectors = require("./utils/selectors");
|
|
159
|
+
var _tree = require("./utils/tree");
|
|
160
|
+
var _TreeViewStore = require("./utils/TreeViewStore");
|
|
@@ -9,30 +9,35 @@ exports.useTreeViewExpansion = void 0;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
12
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
|
|
13
|
+
var _useTreeViewExpansion = require("./useTreeViewExpansion.selectors");
|
|
14
|
+
var _useTreeViewExpansion2 = require("./useTreeViewExpansion.utils");
|
|
15
|
+
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
12
16
|
const useTreeViewExpansion = ({
|
|
13
17
|
instance,
|
|
18
|
+
store,
|
|
14
19
|
params,
|
|
15
|
-
models
|
|
20
|
+
models,
|
|
21
|
+
experimentalFeatures
|
|
16
22
|
}) => {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
const isTreeViewEditable = Boolean(params.isItemEditable) && !!experimentalFeatures.labelEditing;
|
|
24
|
+
(0, _useEnhancedEffect.default)(() => {
|
|
25
|
+
store.update(prevState => (0, _extends2.default)({}, prevState, {
|
|
26
|
+
expansion: {
|
|
27
|
+
expandedItemsMap: (0, _useTreeViewExpansion2.createExpandedItemsMap)(models.expandedItems.value)
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
}, [store, models.expandedItems.value]);
|
|
24
31
|
const setExpandedItems = (event, value) => {
|
|
25
32
|
params.onExpandedItemsChange?.(event, value);
|
|
26
33
|
models.expandedItems.setControlledValue(value);
|
|
27
34
|
};
|
|
28
|
-
const isItemExpanded = React.useCallback(itemId => expandedItemsMap.has(itemId), [expandedItemsMap]);
|
|
29
|
-
const isItemExpandable = React.useCallback(itemId => !!instance.getItemMeta(itemId)?.expandable, [instance]);
|
|
30
35
|
const toggleItemExpansion = (0, _useEventCallback.default)((event, itemId) => {
|
|
31
|
-
const isExpandedBefore =
|
|
36
|
+
const isExpandedBefore = (0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemId);
|
|
32
37
|
instance.setItemExpansion(event, itemId, !isExpandedBefore);
|
|
33
38
|
});
|
|
34
39
|
const setItemExpansion = (0, _useEventCallback.default)((event, itemId, isExpanded) => {
|
|
35
|
-
const isExpandedBefore =
|
|
40
|
+
const isExpandedBefore = (0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemId);
|
|
36
41
|
if (isExpandedBefore === isExpanded) {
|
|
37
42
|
return;
|
|
38
43
|
}
|
|
@@ -48,9 +53,12 @@ const useTreeViewExpansion = ({
|
|
|
48
53
|
setExpandedItems(event, newExpanded);
|
|
49
54
|
});
|
|
50
55
|
const expandAllSiblings = (event, itemId) => {
|
|
51
|
-
const itemMeta =
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
const itemMeta = (0, _useTreeViewItems.selectorItemMeta)(store.value, itemId);
|
|
57
|
+
if (itemMeta == null) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const siblings = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(store.value, itemMeta.parentId);
|
|
61
|
+
const diff = siblings.filter(child => (0, _useTreeViewExpansion.selectorIsItemExpandable)(store.value, child) && !(0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, child));
|
|
54
62
|
const newExpanded = models.expandedItems.value.concat(diff);
|
|
55
63
|
if (diff.length > 0) {
|
|
56
64
|
if (params.onItemExpansionToggle) {
|
|
@@ -65,27 +73,26 @@ const useTreeViewExpansion = ({
|
|
|
65
73
|
if (params.expansionTrigger) {
|
|
66
74
|
return params.expansionTrigger;
|
|
67
75
|
}
|
|
68
|
-
if (
|
|
76
|
+
if (isTreeViewEditable) {
|
|
69
77
|
return 'iconContainer';
|
|
70
78
|
}
|
|
71
79
|
return 'content';
|
|
72
|
-
}, [params.expansionTrigger,
|
|
80
|
+
}, [params.expansionTrigger, isTreeViewEditable]);
|
|
81
|
+
const pluginContextValue = React.useMemo(() => ({
|
|
82
|
+
expansion: {
|
|
83
|
+
expansionTrigger
|
|
84
|
+
}
|
|
85
|
+
}), [expansionTrigger]);
|
|
73
86
|
return {
|
|
74
87
|
publicAPI: {
|
|
75
88
|
setItemExpansion
|
|
76
89
|
},
|
|
77
90
|
instance: {
|
|
78
|
-
isItemExpanded,
|
|
79
|
-
isItemExpandable,
|
|
80
91
|
setItemExpansion,
|
|
81
92
|
toggleItemExpansion,
|
|
82
93
|
expandAllSiblings
|
|
83
94
|
},
|
|
84
|
-
contextValue:
|
|
85
|
-
expansion: {
|
|
86
|
-
expansionTrigger
|
|
87
|
-
}
|
|
88
|
-
}
|
|
95
|
+
contextValue: pluginContextValue
|
|
89
96
|
};
|
|
90
97
|
};
|
|
91
98
|
exports.useTreeViewExpansion = useTreeViewExpansion;
|
|
@@ -100,6 +107,11 @@ useTreeViewExpansion.getDefaultizedParams = ({
|
|
|
100
107
|
}) => (0, _extends2.default)({}, params, {
|
|
101
108
|
defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_ITEMS
|
|
102
109
|
});
|
|
110
|
+
useTreeViewExpansion.getInitialState = params => ({
|
|
111
|
+
expansion: {
|
|
112
|
+
expandedItemsMap: (0, _useTreeViewExpansion2.createExpandedItemsMap)(params.expandedItems === undefined ? params.defaultExpandedItems : params.expandedItems)
|
|
113
|
+
}
|
|
114
|
+
});
|
|
103
115
|
useTreeViewExpansion.params = {
|
|
104
116
|
expandedItems: true,
|
|
105
117
|
defaultExpandedItems: true,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectorIsItemExpanded = exports.selectorIsItemExpandable = void 0;
|
|
7
|
+
var _selectors = require("../../utils/selectors");
|
|
8
|
+
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
9
|
+
const selectorExpansion = state => state.expansion;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Check if an item is expanded.
|
|
13
|
+
* @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
|
|
14
|
+
* @returns {boolean} `true` if the item is expanded, `false` otherwise.
|
|
15
|
+
*/
|
|
16
|
+
const selectorIsItemExpanded = exports.selectorIsItemExpanded = (0, _selectors.createSelector)([selectorExpansion, (_, itemId) => itemId], (expansionState, itemId) => expansionState.expandedItemsMap.has(itemId));
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Check if an item is expandable.
|
|
20
|
+
* @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
|
|
21
|
+
* @returns {boolean} `true` if the item is expandable, `false` otherwise.
|
|
22
|
+
*/
|
|
23
|
+
const selectorIsItemExpandable = exports.selectorIsItemExpandable = (0, _selectors.createSelector)([_useTreeViewItems.selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createExpandedItemsMap = void 0;
|
|
7
|
+
const createExpandedItemsMap = expandedItems => {
|
|
8
|
+
const expandedItemsMap = new Map();
|
|
9
|
+
expandedItems.forEach(id => {
|
|
10
|
+
expandedItemsMap.set(id, true);
|
|
11
|
+
});
|
|
12
|
+
return expandedItemsMap;
|
|
13
|
+
};
|
|
14
|
+
exports.createExpandedItemsMap = createExpandedItemsMap;
|
|
@@ -9,46 +9,56 @@ exports.useTreeViewFocus = void 0;
|
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var React = _interopRequireWildcard(require("react"));
|
|
11
11
|
var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
|
|
12
|
-
var _ownerDocument = _interopRequireDefault(require("@mui/utils/ownerDocument"));
|
|
13
12
|
var _useInstanceEventHandler = require("../../hooks/useInstanceEventHandler");
|
|
14
|
-
var _utils = require("../../utils/utils");
|
|
15
13
|
var _tree = require("../../utils/tree");
|
|
16
14
|
var _useTreeViewSelection = require("../useTreeViewSelection/useTreeViewSelection.utils");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
const itemMeta = instance.getItemMeta(itemId);
|
|
23
|
-
return itemMeta && (itemMeta.parentId == null || instance.isItemExpanded(itemMeta.parentId));
|
|
24
|
-
});
|
|
25
|
-
if (tabbableItemId == null) {
|
|
26
|
-
tabbableItemId = (0, _tree.getFirstNavigableItem)(instance);
|
|
27
|
-
}
|
|
28
|
-
return tabbableItemId;
|
|
29
|
-
};
|
|
15
|
+
var _useTreeViewFocus = require("./useTreeViewFocus.selectors");
|
|
16
|
+
var _useTreeViewExpansion = require("../useTreeViewExpansion/useTreeViewExpansion.selectors");
|
|
17
|
+
var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
|
|
30
18
|
const useTreeViewFocus = ({
|
|
31
19
|
instance,
|
|
32
20
|
params,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
models,
|
|
36
|
-
rootRef
|
|
21
|
+
store,
|
|
22
|
+
models
|
|
37
23
|
}) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
24
|
+
React.useEffect(() => {
|
|
25
|
+
let defaultFocusableItemId = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value).find(itemId => {
|
|
26
|
+
if (!(0, _useTreeViewItems.selectorCanItemBeFocused)(store.value, itemId)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const itemMeta = (0, _useTreeViewItems.selectorItemMeta)(store.value, itemId);
|
|
30
|
+
return itemMeta && (itemMeta.parentId == null || (0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemMeta.parentId));
|
|
31
|
+
});
|
|
32
|
+
if (defaultFocusableItemId == null) {
|
|
33
|
+
defaultFocusableItemId = (0, _tree.getFirstNavigableItem)(store.value) ?? null;
|
|
45
34
|
}
|
|
35
|
+
store.update(prevState => {
|
|
36
|
+
if (defaultFocusableItemId === prevState.focus.defaultFocusableItemId) {
|
|
37
|
+
return prevState;
|
|
38
|
+
}
|
|
39
|
+
return (0, _extends2.default)({}, prevState, {
|
|
40
|
+
focus: (0, _extends2.default)({}, prevState.focus, {
|
|
41
|
+
defaultFocusableItemId
|
|
42
|
+
})
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}, [store, models.selectedItems.value]);
|
|
46
|
+
const setFocusedItemId = (0, _useEventCallback.default)(itemId => {
|
|
47
|
+
store.update(prevState => {
|
|
48
|
+
const focusedItemId = (0, _useTreeViewFocus.selectorFocusedItemId)(prevState);
|
|
49
|
+
if (focusedItemId === itemId) {
|
|
50
|
+
return prevState;
|
|
51
|
+
}
|
|
52
|
+
return (0, _extends2.default)({}, prevState, {
|
|
53
|
+
focus: (0, _extends2.default)({}, prevState.focus, {
|
|
54
|
+
focusedItemId: itemId
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
});
|
|
46
58
|
});
|
|
47
|
-
const isTreeViewFocused = React.useCallback(() => !!rootRef.current && rootRef.current.contains((0, _utils.getActiveElement)((0, _ownerDocument.default)(rootRef.current))), [rootRef]);
|
|
48
|
-
const isItemFocused = React.useCallback(itemId => state.focusedItemId === itemId && isTreeViewFocused(), [state.focusedItemId, isTreeViewFocused]);
|
|
49
59
|
const isItemVisible = itemId => {
|
|
50
|
-
const itemMeta =
|
|
51
|
-
return itemMeta && (itemMeta.parentId == null ||
|
|
60
|
+
const itemMeta = (0, _useTreeViewItems.selectorItemMeta)(store.value, itemId);
|
|
61
|
+
return itemMeta && (itemMeta.parentId == null || (0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemMeta.parentId));
|
|
52
62
|
};
|
|
53
63
|
const innerFocusItem = (event, itemId) => {
|
|
54
64
|
const itemElement = instance.getItemDOMElement(itemId);
|
|
@@ -67,23 +77,25 @@ const useTreeViewFocus = ({
|
|
|
67
77
|
}
|
|
68
78
|
});
|
|
69
79
|
const removeFocusedItem = (0, _useEventCallback.default)(() => {
|
|
70
|
-
|
|
80
|
+
const focusedItemId = (0, _useTreeViewFocus.selectorFocusedItemId)(store.value);
|
|
81
|
+
if (focusedItemId == null) {
|
|
71
82
|
return;
|
|
72
83
|
}
|
|
73
|
-
const itemMeta =
|
|
84
|
+
const itemMeta = (0, _useTreeViewItems.selectorItemMeta)(store.value, focusedItemId);
|
|
74
85
|
if (itemMeta) {
|
|
75
|
-
const itemElement = instance.getItemDOMElement(
|
|
86
|
+
const itemElement = instance.getItemDOMElement(focusedItemId);
|
|
76
87
|
if (itemElement) {
|
|
77
88
|
itemElement.blur();
|
|
78
89
|
}
|
|
79
90
|
}
|
|
80
91
|
setFocusedItemId(null);
|
|
81
92
|
});
|
|
82
|
-
const canItemBeTabbed = itemId => itemId === defaultFocusableItemId;
|
|
83
93
|
(0, _useInstanceEventHandler.useInstanceEventHandler)(instance, 'removeItem', ({
|
|
84
94
|
id
|
|
85
95
|
}) => {
|
|
86
|
-
|
|
96
|
+
const focusedItemId = (0, _useTreeViewFocus.selectorFocusedItemId)(store.value);
|
|
97
|
+
const defaultFocusableItemId = (0, _useTreeViewFocus.selectorDefaultFocusableItemId)(store.value);
|
|
98
|
+
if (focusedItemId === id && defaultFocusableItemId != null) {
|
|
87
99
|
innerFocusItem(null, defaultFocusableItemId);
|
|
88
100
|
}
|
|
89
101
|
});
|
|
@@ -94,20 +106,27 @@ const useTreeViewFocus = ({
|
|
|
94
106
|
}
|
|
95
107
|
|
|
96
108
|
// if the event bubbled (which is React specific) we don't want to steal focus
|
|
97
|
-
|
|
109
|
+
const defaultFocusableItemId = (0, _useTreeViewFocus.selectorDefaultFocusableItemId)(store.value);
|
|
110
|
+
if (event.target === event.currentTarget && defaultFocusableItemId != null) {
|
|
98
111
|
innerFocusItem(event, defaultFocusableItemId);
|
|
99
112
|
}
|
|
100
113
|
};
|
|
114
|
+
const createRootHandleBlur = otherHandlers => event => {
|
|
115
|
+
otherHandlers.onBlur?.(event);
|
|
116
|
+
if (event.defaultMuiPrevented) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
setFocusedItemId(null);
|
|
120
|
+
};
|
|
101
121
|
return {
|
|
102
122
|
getRootProps: otherHandlers => ({
|
|
103
|
-
onFocus: createRootHandleFocus(otherHandlers)
|
|
123
|
+
onFocus: createRootHandleFocus(otherHandlers),
|
|
124
|
+
onBlur: createRootHandleBlur(otherHandlers)
|
|
104
125
|
}),
|
|
105
126
|
publicAPI: {
|
|
106
127
|
focusItem
|
|
107
128
|
},
|
|
108
129
|
instance: {
|
|
109
|
-
isItemFocused,
|
|
110
|
-
canItemBeTabbed,
|
|
111
130
|
focusItem,
|
|
112
131
|
removeFocusedItem
|
|
113
132
|
}
|
|
@@ -115,7 +134,10 @@ const useTreeViewFocus = ({
|
|
|
115
134
|
};
|
|
116
135
|
exports.useTreeViewFocus = useTreeViewFocus;
|
|
117
136
|
useTreeViewFocus.getInitialState = () => ({
|
|
118
|
-
|
|
137
|
+
focus: {
|
|
138
|
+
focusedItemId: null,
|
|
139
|
+
defaultFocusableItemId: null
|
|
140
|
+
}
|
|
119
141
|
});
|
|
120
142
|
useTreeViewFocus.params = {
|
|
121
143
|
onItemFocus: true
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectorIsItemTheDefaultFocusableItem = exports.selectorIsItemFocused = exports.selectorFocusedItemId = exports.selectorDefaultFocusableItemId = void 0;
|
|
7
|
+
var _selectors = require("../../utils/selectors");
|
|
8
|
+
const selectorTreeViewFocusState = state => state.focus;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Get the item that should be sequentially focusable (usually with the Tab key).
|
|
12
|
+
* At any point in time, there is a single item that can be sequentially focused in the Tree View.
|
|
13
|
+
* This item is the first selected item (that is both visible and navigable), if any, or the first navigable item if no item is selected.
|
|
14
|
+
* @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
|
|
15
|
+
* @returns {TreeViewItemId | null} The id of the item that should be sequentially focusable.
|
|
16
|
+
*/
|
|
17
|
+
const selectorDefaultFocusableItemId = exports.selectorDefaultFocusableItemId = (0, _selectors.createSelector)(selectorTreeViewFocusState, focus => focus.defaultFocusableItemId);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Check if an item is the default focusable item.
|
|
21
|
+
* @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
|
|
22
|
+
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
23
|
+
* @returns {boolean} `true` if the item is the default focusable item, `false` otherwise.
|
|
24
|
+
*/
|
|
25
|
+
const selectorIsItemTheDefaultFocusableItem = exports.selectorIsItemTheDefaultFocusableItem = (0, _selectors.createSelector)([selectorDefaultFocusableItemId, (_, itemId) => itemId], (defaultFocusableItemId, itemId) => defaultFocusableItemId === itemId);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Get the id of the item that is currently focused.
|
|
29
|
+
* @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
|
|
30
|
+
* @returns {TreeViewItemId | null} The id of the item that is currently focused.
|
|
31
|
+
*/
|
|
32
|
+
const selectorFocusedItemId = exports.selectorFocusedItemId = (0, _selectors.createSelector)(selectorTreeViewFocusState, focus => focus.focusedItemId);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Check if an item is focused.
|
|
36
|
+
* @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
|
|
37
|
+
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
38
|
+
* @returns {boolean} `true` if the item is focused, `false` otherwise.
|
|
39
|
+
*/
|
|
40
|
+
const selectorIsItemFocused = exports.selectorIsItemFocused = (0, _selectors.createSelector)([selectorFocusedItemId, (_, itemId) => itemId], (focusedItemId, itemId) => focusedItemId === itemId);
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.useTreeViewIcons = void 0;
|
|
8
|
+
var React = _interopRequireWildcard(require("react"));
|
|
7
9
|
const useTreeViewIcons = ({
|
|
8
10
|
slots,
|
|
9
11
|
slotProps
|
|
10
12
|
}) => {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
endIcon: slotProps.endIcon
|
|
23
|
-
}
|
|
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
24
|
}
|
|
25
25
|
}
|
|
26
|
+
}), [slots.collapseIcon, slots.expandIcon, slots.endIcon, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon]);
|
|
27
|
+
return {
|
|
28
|
+
contextValue: pluginContextValue
|
|
26
29
|
};
|
|
27
30
|
};
|
|
28
31
|
exports.useTreeViewIcons = useTreeViewIcons;
|