@mui/x-tree-view 8.22.0 → 8.24.0
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 +312 -0
- package/RichTreeView/RichTreeView.d.ts +1 -1
- package/RichTreeView/RichTreeView.js +41 -28
- package/RichTreeView/RichTreeView.types.d.ts +6 -4
- package/RichTreeView/index.d.ts +1 -3
- package/RichTreeView/index.js +1 -13
- package/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
- package/RichTreeView/useExtractRichTreeViewParameters.js +91 -0
- package/SimpleTreeView/SimpleTreeView.d.ts +1 -1
- package/SimpleTreeView/SimpleTreeView.js +30 -24
- package/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
- package/SimpleTreeView/useExtractSimpleTreeViewParameters.js +78 -0
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.js +9 -2
- package/TreeItemProvider/TreeItemProvider.js +3 -10
- package/esm/RichTreeView/RichTreeView.d.ts +1 -1
- package/esm/RichTreeView/RichTreeView.js +40 -27
- package/esm/RichTreeView/RichTreeView.types.d.ts +6 -4
- package/esm/RichTreeView/index.d.ts +1 -3
- package/esm/RichTreeView/index.js +1 -1
- package/esm/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
- package/esm/RichTreeView/useExtractRichTreeViewParameters.js +83 -0
- package/esm/SimpleTreeView/SimpleTreeView.d.ts +1 -1
- package/esm/SimpleTreeView/SimpleTreeView.js +29 -23
- package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
- package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
- package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.js +70 -0
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItem/TreeItem.js +9 -2
- package/esm/TreeItemProvider/TreeItemProvider.js +3 -10
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -2
- package/esm/hooks/useRichTreeViewApiRef.d.ts +2 -2
- package/esm/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
- package/esm/hooks/useTreeItemModel.d.ts +2 -2
- package/esm/hooks/useTreeItemModel.js +1 -1
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +26 -35
- package/esm/hooks/useTreeViewApiRef.d.ts +3 -5
- package/esm/hooks/useTreeViewApiRef.js +4 -3
- package/esm/index.d.ts +0 -1
- package/esm/index.js +1 -2
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +126 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
- package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +49 -0
- package/esm/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
- package/esm/internals/MinimalTreeViewStore/TimeoutManager.js +39 -0
- package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
- package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +16 -0
- package/esm/internals/MinimalTreeViewStore/index.d.ts +2 -0
- package/esm/internals/MinimalTreeViewStore/index.js +2 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.js +21 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
- package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.js +15 -0
- package/esm/internals/RichTreeViewStore/index.d.ts +3 -0
- package/esm/internals/RichTreeViewStore/index.js +3 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +18 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
- package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +5 -0
- package/esm/internals/SimpleTreeViewStore/index.d.ts +2 -0
- package/esm/internals/SimpleTreeViewStore/index.js +2 -0
- package/esm/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -3
- package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
- package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
- package/esm/internals/TreeViewProvider/TreeViewProvider.js +11 -6
- package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
- package/esm/internals/TreeViewProvider/index.d.ts +1 -1
- package/esm/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
- package/esm/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
- package/esm/internals/components/RichTreeViewItems.js +3 -3
- package/esm/internals/hooks/useTreeViewRootProps.d.ts +287 -0
- package/esm/internals/hooks/useTreeViewRootProps.js +30 -0
- package/esm/internals/hooks/useTreeViewStore.d.ts +10 -0
- package/esm/internals/hooks/useTreeViewStore.js +19 -0
- package/esm/internals/index.d.ts +15 -21
- package/esm/internals/index.js +11 -14
- package/esm/internals/models/events.d.ts +24 -3
- package/esm/internals/models/index.d.ts +2 -3
- package/esm/internals/models/index.js +2 -3
- package/esm/internals/models/itemPlugin.d.ts +9 -0
- package/esm/internals/models/treeView.d.ts +6 -9
- package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
- package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.js +124 -0
- package/esm/internals/plugins/expansion/index.d.ts +2 -0
- package/esm/internals/plugins/expansion/index.js +2 -0
- package/esm/internals/plugins/expansion/selectors.d.ts +27 -0
- package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +5 -5
- package/esm/internals/plugins/expansion/utils.d.ts +5 -0
- package/esm/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
- package/esm/internals/plugins/focus/TreeViewFocusPlugin.js +107 -0
- package/esm/internals/plugins/focus/index.d.ts +2 -0
- package/esm/internals/plugins/focus/index.js +2 -0
- package/esm/internals/plugins/focus/selectors.d.ts +21 -0
- package/esm/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +6 -6
- package/esm/internals/plugins/id/index.d.ts +1 -0
- package/esm/internals/plugins/id/index.js +1 -0
- package/esm/internals/plugins/id/selectors.d.ts +13 -0
- package/esm/internals/plugins/id/selectors.js +18 -0
- package/esm/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
- package/esm/internals/plugins/items/TreeViewItemsPlugin.js +223 -0
- package/esm/internals/plugins/items/index.d.ts +3 -0
- package/esm/internals/plugins/items/index.js +3 -0
- package/esm/internals/plugins/items/selectors.d.ts +60 -0
- package/esm/internals/plugins/items/selectors.js +64 -0
- package/esm/internals/plugins/items/utils.d.ts +43 -0
- package/esm/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -49
- package/esm/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
- package/esm/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +81 -0
- package/esm/internals/plugins/jsxItems/index.d.ts +1 -0
- package/esm/internals/plugins/jsxItems/index.js +1 -0
- package/esm/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
- package/esm/internals/plugins/jsxItems/itemPlugin.js +88 -0
- package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
- package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +306 -0
- package/esm/internals/plugins/keyboardNavigation/index.d.ts +1 -0
- package/esm/internals/plugins/keyboardNavigation/index.js +1 -0
- package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
- package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +50 -0
- package/esm/internals/plugins/labelEditing/index.d.ts +2 -0
- package/esm/internals/plugins/labelEditing/index.js +2 -0
- package/{internals/plugins/useTreeViewLabel → esm/internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
- package/esm/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +2 -2
- package/esm/internals/plugins/labelEditing/selectors.d.ts +15 -0
- package/esm/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
- package/esm/internals/plugins/lazyLoading/index.d.ts +2 -0
- package/esm/internals/plugins/lazyLoading/index.js +2 -0
- package/esm/internals/plugins/lazyLoading/selectors.d.ts +19 -0
- package/esm/internals/plugins/lazyLoading/selectors.js +25 -0
- package/esm/internals/plugins/lazyLoading/types.d.ts +5 -0
- package/esm/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
- package/esm/internals/plugins/selection/TreeViewSelectionPlugin.js +319 -0
- package/esm/internals/plugins/selection/index.d.ts +2 -0
- package/esm/internals/plugins/selection/index.js +2 -0
- package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
- package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +8 -8
- package/esm/internals/plugins/selection/selectors.d.ts +48 -0
- package/esm/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +19 -9
- package/esm/internals/utils/tree.d.ts +8 -10
- package/esm/internals/utils/tree.js +2 -2
- package/esm/models/items.d.ts +5 -2
- package/esm/useTreeItem/useTreeItem.d.ts +18 -2
- package/esm/useTreeItem/useTreeItem.js +15 -19
- package/esm/useTreeItem/useTreeItem.types.d.ts +9 -19
- package/hooks/useApplyPropagationToSelectedItemsOnMount.js +3 -3
- package/hooks/useRichTreeViewApiRef.d.ts +2 -2
- package/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
- package/hooks/useTreeItemModel.d.ts +2 -2
- package/hooks/useTreeItemModel.js +2 -2
- package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +41 -49
- package/hooks/useTreeViewApiRef.d.ts +3 -5
- package/hooks/useTreeViewApiRef.js +3 -5
- package/index.d.ts +0 -1
- package/index.js +1 -22
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +134 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +58 -0
- package/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
- package/internals/MinimalTreeViewStore/TimeoutManager.js +46 -0
- package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
- package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +23 -0
- package/internals/MinimalTreeViewStore/index.d.ts +2 -0
- package/internals/MinimalTreeViewStore/index.js +27 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.js +30 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
- package/internals/RichTreeViewStore/RichTreeViewStore.utils.js +22 -0
- package/internals/RichTreeViewStore/index.d.ts +3 -0
- package/internals/RichTreeViewStore/index.js +38 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +26 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
- package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +11 -0
- package/internals/SimpleTreeViewStore/index.d.ts +2 -0
- package/internals/SimpleTreeViewStore/index.js +27 -0
- package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +3 -4
- package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
- package/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
- package/internals/TreeViewProvider/TreeViewProvider.js +14 -9
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
- package/internals/TreeViewProvider/index.d.ts +1 -1
- package/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
- package/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
- package/internals/components/RichTreeViewItems.js +9 -9
- package/internals/hooks/useTreeViewRootProps.d.ts +287 -0
- package/internals/hooks/useTreeViewRootProps.js +36 -0
- package/internals/hooks/useTreeViewStore.d.ts +10 -0
- package/internals/hooks/useTreeViewStore.js +26 -0
- package/internals/index.d.ts +15 -21
- package/internals/index.js +40 -70
- package/internals/models/events.d.ts +24 -3
- package/internals/models/index.d.ts +2 -3
- package/internals/models/index.js +11 -22
- package/internals/models/itemPlugin.d.ts +9 -0
- package/internals/models/treeView.d.ts +6 -9
- package/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
- package/internals/plugins/expansion/TreeViewExpansionPlugin.js +132 -0
- package/internals/plugins/expansion/index.d.ts +2 -0
- package/internals/plugins/expansion/index.js +27 -0
- package/internals/plugins/expansion/selectors.d.ts +27 -0
- package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +8 -8
- package/internals/plugins/expansion/utils.d.ts +5 -0
- package/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
- package/internals/plugins/focus/TreeViewFocusPlugin.js +114 -0
- package/internals/plugins/focus/index.d.ts +2 -0
- package/internals/plugins/focus/index.js +27 -0
- package/internals/plugins/focus/selectors.d.ts +21 -0
- package/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +9 -9
- package/internals/plugins/id/index.d.ts +1 -0
- package/internals/plugins/id/index.js +16 -0
- package/internals/plugins/id/selectors.d.ts +13 -0
- package/internals/plugins/id/selectors.js +24 -0
- package/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
- package/internals/plugins/items/TreeViewItemsPlugin.js +231 -0
- package/internals/plugins/items/index.d.ts +3 -0
- package/internals/plugins/items/index.js +46 -0
- package/internals/plugins/items/selectors.d.ts +60 -0
- package/internals/plugins/{useTreeViewItems/useTreeViewItems.selectors.js → items/selectors.js} +18 -14
- package/internals/plugins/items/utils.d.ts +43 -0
- package/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -50
- package/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
- package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +89 -0
- package/internals/plugins/jsxItems/index.d.ts +1 -0
- package/internals/plugins/jsxItems/index.js +16 -0
- package/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
- package/internals/plugins/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +35 -20
- package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
- package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +313 -0
- package/internals/plugins/keyboardNavigation/index.d.ts +1 -0
- package/internals/plugins/keyboardNavigation/index.js +16 -0
- package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
- package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +58 -0
- package/internals/plugins/labelEditing/index.d.ts +2 -0
- package/internals/plugins/labelEditing/index.js +27 -0
- package/{esm/internals/plugins/useTreeViewLabel → internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
- package/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +6 -6
- package/internals/plugins/labelEditing/selectors.d.ts +15 -0
- package/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
- package/internals/plugins/lazyLoading/index.d.ts +2 -0
- package/internals/plugins/lazyLoading/index.js +27 -0
- package/internals/plugins/lazyLoading/selectors.d.ts +19 -0
- package/internals/plugins/{useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js → lazyLoading/selectors.js} +11 -6
- package/internals/plugins/lazyLoading/types.d.ts +5 -0
- package/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
- package/internals/plugins/selection/TreeViewSelectionPlugin.js +327 -0
- package/internals/plugins/selection/index.d.ts +2 -0
- package/internals/plugins/selection/index.js +27 -0
- package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
- package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +16 -16
- package/internals/plugins/selection/selectors.d.ts +48 -0
- package/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +19 -9
- package/internals/utils/tree.d.ts +8 -10
- package/internals/utils/tree.js +33 -33
- package/models/items.d.ts +5 -2
- package/package.json +3 -3
- package/useTreeItem/useTreeItem.d.ts +18 -2
- package/useTreeItem/useTreeItem.js +19 -24
- package/useTreeItem/useTreeItem.types.d.ts +9 -19
- package/RichTreeView/RichTreeView.plugins.d.ts +0 -10
- package/RichTreeView/RichTreeView.plugins.js +0 -15
- package/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
- package/SimpleTreeView/SimpleTreeView.plugins.js +0 -15
- package/esm/RichTreeView/RichTreeView.plugins.d.ts +0 -10
- package/esm/RichTreeView/RichTreeView.plugins.js +0 -9
- package/esm/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
- package/esm/SimpleTreeView/SimpleTreeView.plugins.js +0 -9
- package/esm/internals/corePlugins/corePlugins.d.ts +0 -9
- package/esm/internals/corePlugins/corePlugins.js +0 -8
- package/esm/internals/corePlugins/index.d.ts +0 -2
- package/esm/internals/corePlugins/index.js +0 -1
- package/esm/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewId/index.js +0 -2
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -38
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -9
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -26
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -31
- package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -1
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -12
- package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
- package/esm/internals/hooks/useInstanceEventHandler.d.ts +0 -15
- package/esm/internals/hooks/useInstanceEventHandler.js +0 -79
- package/esm/internals/models/helpers.d.ts +0 -7
- package/esm/internals/models/plugin.d.ts +0 -166
- package/esm/internals/models/plugin.js +0 -1
- package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewExpansion/index.js +0 -2
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -149
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
- package/esm/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewFocus/index.js +0 -2
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -113
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
- package/esm/internals/plugins/useTreeViewItems/index.d.ts +0 -4
- package/esm/internals/plugins/useTreeViewItems/index.js +0 -3
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -218
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -56
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -60
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -197
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
- package/esm/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewJSXItems/index.js +0 -1
- package/esm/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewJSXItems/itemPlugin.js +0 -74
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -104
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -1
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -305
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
- package/esm/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewLabel/index.js +0 -2
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -70
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +0 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +0 -20
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -1
- package/esm/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewSelection/index.js +0 -2
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -230
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -40
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -107
- package/esm/internals/useTreeView/index.d.ts +0 -1
- package/esm/internals/useTreeView/index.js +0 -1
- package/esm/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
- package/esm/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -51
- package/esm/internals/useTreeView/useTreeView.d.ts +0 -18
- package/esm/internals/useTreeView/useTreeView.js +0 -102
- package/esm/internals/useTreeView/useTreeView.types.d.ts +0 -20
- package/esm/internals/useTreeView/useTreeView.types.js +0 -1
- package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
- package/esm/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
- package/esm/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -14
- package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
- package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -38
- package/esm/internals/utils/plugins.d.ts +0 -2
- package/esm/internals/utils/plugins.js +0 -4
- package/esm/internals/utils/publishTreeViewEvent.d.ts +0 -5
- package/esm/internals/utils/publishTreeViewEvent.js +0 -3
- package/internals/corePlugins/corePlugins.d.ts +0 -9
- package/internals/corePlugins/corePlugins.js +0 -14
- package/internals/corePlugins/index.d.ts +0 -2
- package/internals/corePlugins/index.js +0 -12
- package/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
- package/internals/corePlugins/useTreeViewId/index.js +0 -19
- package/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -46
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -15
- package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
- package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
- package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -34
- package/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
- package/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -12
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -38
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
- package/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
- package/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -12
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -19
- package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
- package/internals/hooks/useInstanceEventHandler.d.ts +0 -15
- package/internals/hooks/useInstanceEventHandler.js +0 -87
- package/internals/models/helpers.d.ts +0 -7
- package/internals/models/plugin.d.ts +0 -166
- package/internals/models/plugin.js +0 -5
- package/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
- package/internals/plugins/useTreeViewExpansion/index.js +0 -19
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -157
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -5
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
- package/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
- package/internals/plugins/useTreeViewFocus/index.js +0 -19
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -121
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -5
- package/internals/plugins/useTreeViewItems/index.d.ts +0 -4
- package/internals/plugins/useTreeViewItems/index.js +0 -32
- package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -226
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -56
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -197
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -5
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
- package/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
- package/internals/plugins/useTreeViewJSXItems/index.js +0 -12
- package/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -112
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -5
- package/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
- package/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -12
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -312
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -5
- package/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
- package/internals/plugins/useTreeViewLabel/index.js +0 -19
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -78
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -5
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
- package/internals/plugins/useTreeViewLazyLoading/index.js +0 -12
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -5
- package/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
- package/internals/plugins/useTreeViewSelection/index.js +0 -19
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -239
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -40
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -5
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -116
- package/internals/useTreeView/index.d.ts +0 -1
- package/internals/useTreeView/index.js +0 -12
- package/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
- package/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -60
- package/internals/useTreeView/useTreeView.d.ts +0 -18
- package/internals/useTreeView/useTreeView.js +0 -112
- package/internals/useTreeView/useTreeView.types.d.ts +0 -20
- package/internals/useTreeView/useTreeView.types.js +0 -5
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
- package/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
- package/internals/utils/cleanupTracking/CleanupTracking.js +0 -5
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -21
- package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
- package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -45
- package/internals/utils/plugins.d.ts +0 -2
- package/internals/utils/plugins.js +0 -11
- package/internals/utils/publishTreeViewEvent.d.ts +0 -5
- package/internals/utils/publishTreeViewEvent.js +0 -10
- /package/esm/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
- /package/esm/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
- /package/esm/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
- /package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
- /package/esm/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
- /package/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
- /package/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
- /package/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
- /package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
- /package/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export declare class TreeViewSelectionPlugin<Multiple extends boolean | undefined> {
|
|
2
|
+
private store;
|
|
3
|
+
private lastSelectedItem;
|
|
4
|
+
private lastSelectedRange;
|
|
5
|
+
constructor(store: any);
|
|
6
|
+
private setSelectedItems;
|
|
7
|
+
private selectRange;
|
|
8
|
+
buildPublicAPI: () => {
|
|
9
|
+
setItemSelection: ({
|
|
10
|
+
itemId,
|
|
11
|
+
event,
|
|
12
|
+
keepExistingSelection,
|
|
13
|
+
shouldBeSelected
|
|
14
|
+
}: {
|
|
15
|
+
itemId: string;
|
|
16
|
+
event?: React.SyntheticEvent | null;
|
|
17
|
+
shouldBeSelected?: boolean;
|
|
18
|
+
keepExistingSelection?: boolean;
|
|
19
|
+
}) => void;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Select or deselect an item.
|
|
23
|
+
* @param {object} parameters The parameters of the method.
|
|
24
|
+
* @param {TreeViewItemId} parameters.itemId The id of the item to select or deselect.
|
|
25
|
+
* @param {React.SyntheticEvent} parameters.event The DOM event that triggered the change.
|
|
26
|
+
* @param {boolean} parameters.keepExistingSelection If `true`, the other already selected items will remain selected, otherwise, they will be deselected. This parameter is only relevant when `multiSelect` is `true`
|
|
27
|
+
* @param {boolean | undefined} parameters.shouldBeSelected If `true` the item will be selected. If `false` the item will be deselected. If not defined, the item's selection status will be toggled.
|
|
28
|
+
*/
|
|
29
|
+
setItemSelection: ({
|
|
30
|
+
itemId,
|
|
31
|
+
event,
|
|
32
|
+
keepExistingSelection,
|
|
33
|
+
shouldBeSelected
|
|
34
|
+
}: {
|
|
35
|
+
itemId: string;
|
|
36
|
+
event?: React.SyntheticEvent | null;
|
|
37
|
+
shouldBeSelected?: boolean;
|
|
38
|
+
keepExistingSelection?: boolean;
|
|
39
|
+
}) => void;
|
|
40
|
+
/**
|
|
41
|
+
* Select all the navigable items in the tree.
|
|
42
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
43
|
+
*/
|
|
44
|
+
selectAllNavigableItems: (event: React.SyntheticEvent) => void;
|
|
45
|
+
/**
|
|
46
|
+
* Expand the current selection range up to the given item.
|
|
47
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
48
|
+
* @param {TreeViewItemId} itemId The id of the item to expand the selection to.
|
|
49
|
+
*/
|
|
50
|
+
expandSelectionRange: (event: React.SyntheticEvent, itemId: string) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Expand the current selection range from the first navigable item to the given item.
|
|
53
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
54
|
+
* @param {TreeViewItemId} itemId The id of the item up to which the selection range should be expanded.
|
|
55
|
+
*/
|
|
56
|
+
selectRangeFromStartToItem: (event: React.SyntheticEvent, itemId: string) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Expand the current selection range from the given item to the last navigable item.
|
|
59
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
60
|
+
* @param {TreeViewItemId} itemId The id of the item from which the selection range should be expanded.
|
|
61
|
+
*/
|
|
62
|
+
selectRangeFromItemToEnd: (event: React.SyntheticEvent, itemId: string) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Update the selection when navigating with ArrowUp / ArrowDown keys.
|
|
65
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
66
|
+
* @param {TreeViewItemId} currentItemId The id of the active item before the keyboard navigation.
|
|
67
|
+
* @param {TreeViewItemId} nextItemId The id of the active item after the keyboard navigation.
|
|
68
|
+
*/
|
|
69
|
+
selectItemFromArrowNavigation: (event: React.SyntheticEvent, currentItem: string, nextItem: string) => void;
|
|
70
|
+
}
|
|
71
|
+
export declare function getLookupFromArray(array: string[]): {
|
|
72
|
+
[itemId: string]: true;
|
|
73
|
+
};
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TreeViewSelectionPlugin = void 0;
|
|
7
|
+
exports.getLookupFromArray = getLookupFromArray;
|
|
8
|
+
var _empty = require("@base-ui/utils/empty");
|
|
9
|
+
var _items = require("../items");
|
|
10
|
+
var _selectors = require("./selectors");
|
|
11
|
+
var _itemPlugin = require("./itemPlugin");
|
|
12
|
+
var _tree = require("../../utils/tree");
|
|
13
|
+
class TreeViewSelectionPlugin {
|
|
14
|
+
lastSelectedItem = null;
|
|
15
|
+
lastSelectedRange = {};
|
|
16
|
+
|
|
17
|
+
// We can't type `store`, otherwise we get the following TS error:
|
|
18
|
+
// 'selection' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
|
|
19
|
+
constructor(store) {
|
|
20
|
+
this.store = store;
|
|
21
|
+
store.itemPluginManager.register(_itemPlugin.useSelectionItemPlugin, null);
|
|
22
|
+
}
|
|
23
|
+
setSelectedItems = (event, newModel, additionalItemsToPropagate) => {
|
|
24
|
+
const {
|
|
25
|
+
selectionPropagation = _empty.EMPTY_OBJECT,
|
|
26
|
+
selectedItems,
|
|
27
|
+
onItemSelectionToggle,
|
|
28
|
+
onSelectedItemsChange
|
|
29
|
+
} = this.store.parameters;
|
|
30
|
+
const oldModel = _selectors.selectionSelectors.selectedItemsRaw(this.store.state);
|
|
31
|
+
let cleanModel;
|
|
32
|
+
const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
|
|
33
|
+
if (isMultiSelectEnabled && (selectionPropagation.descendants || selectionPropagation.parents)) {
|
|
34
|
+
cleanModel = propagateSelection({
|
|
35
|
+
store: this.store,
|
|
36
|
+
selectionPropagation,
|
|
37
|
+
newModel: newModel,
|
|
38
|
+
oldModel: oldModel,
|
|
39
|
+
additionalItemsToPropagate
|
|
40
|
+
});
|
|
41
|
+
} else {
|
|
42
|
+
cleanModel = newModel;
|
|
43
|
+
}
|
|
44
|
+
if (onItemSelectionToggle) {
|
|
45
|
+
if (isMultiSelectEnabled) {
|
|
46
|
+
const changes = getAddedAndRemovedItems({
|
|
47
|
+
store: this.store,
|
|
48
|
+
newModel: cleanModel,
|
|
49
|
+
oldModel: oldModel
|
|
50
|
+
});
|
|
51
|
+
if (onItemSelectionToggle) {
|
|
52
|
+
changes.added.forEach(itemId => {
|
|
53
|
+
onItemSelectionToggle(event, itemId, true);
|
|
54
|
+
});
|
|
55
|
+
changes.removed.forEach(itemId => {
|
|
56
|
+
onItemSelectionToggle(event, itemId, false);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
} else if (cleanModel !== oldModel) {
|
|
60
|
+
if (oldModel != null) {
|
|
61
|
+
onItemSelectionToggle(event, oldModel, false);
|
|
62
|
+
}
|
|
63
|
+
if (cleanModel != null) {
|
|
64
|
+
onItemSelectionToggle(event, cleanModel, true);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (selectedItems === undefined) {
|
|
69
|
+
this.store.set('selectedItems', cleanModel);
|
|
70
|
+
}
|
|
71
|
+
onSelectedItemsChange?.(event, cleanModel);
|
|
72
|
+
};
|
|
73
|
+
selectRange = (event, [start, end]) => {
|
|
74
|
+
const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
|
|
75
|
+
if (!isMultiSelectEnabled) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
let newSelectedItems = _selectors.selectionSelectors.selectedItems(this.store.state).slice();
|
|
79
|
+
|
|
80
|
+
// If the last selection was a range selection,
|
|
81
|
+
// remove the items that were part of the last range from the model
|
|
82
|
+
if (Object.keys(this.lastSelectedRange).length > 0) {
|
|
83
|
+
newSelectedItems = newSelectedItems.filter(id => !this.lastSelectedRange[id]);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Add to the model the items that are part of the new range and not already part of the model.
|
|
87
|
+
const selectedItemsLookup = getLookupFromArray(newSelectedItems);
|
|
88
|
+
const range = (0, _tree.getNonDisabledItemsInRange)(this.store.state, start, end).filter(id => _selectors.selectionSelectors.isItemSelectable(this.store.state, id));
|
|
89
|
+
const itemsToAddToModel = range.filter(id => !selectedItemsLookup[id]);
|
|
90
|
+
newSelectedItems = newSelectedItems.concat(itemsToAddToModel);
|
|
91
|
+
this.setSelectedItems(event, newSelectedItems);
|
|
92
|
+
this.lastSelectedRange = getLookupFromArray(range);
|
|
93
|
+
};
|
|
94
|
+
buildPublicAPI = () => {
|
|
95
|
+
return {
|
|
96
|
+
setItemSelection: this.setItemSelection
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Select or deselect an item.
|
|
102
|
+
* @param {object} parameters The parameters of the method.
|
|
103
|
+
* @param {TreeViewItemId} parameters.itemId The id of the item to select or deselect.
|
|
104
|
+
* @param {React.SyntheticEvent} parameters.event The DOM event that triggered the change.
|
|
105
|
+
* @param {boolean} parameters.keepExistingSelection If `true`, the other already selected items will remain selected, otherwise, they will be deselected. This parameter is only relevant when `multiSelect` is `true`
|
|
106
|
+
* @param {boolean | undefined} parameters.shouldBeSelected If `true` the item will be selected. If `false` the item will be deselected. If not defined, the item's selection status will be toggled.
|
|
107
|
+
*/
|
|
108
|
+
setItemSelection = ({
|
|
109
|
+
itemId,
|
|
110
|
+
event = null,
|
|
111
|
+
keepExistingSelection = false,
|
|
112
|
+
shouldBeSelected
|
|
113
|
+
}) => {
|
|
114
|
+
if (!_selectors.selectionSelectors.enabled(this.store.state)) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
let newSelected;
|
|
118
|
+
const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
|
|
119
|
+
if (keepExistingSelection) {
|
|
120
|
+
const oldSelected = _selectors.selectionSelectors.selectedItems(this.store.state);
|
|
121
|
+
const isSelectedBefore = _selectors.selectionSelectors.isItemSelected(this.store.state, itemId);
|
|
122
|
+
if (isSelectedBefore && (shouldBeSelected === false || shouldBeSelected == null)) {
|
|
123
|
+
newSelected = oldSelected.filter(id => id !== itemId);
|
|
124
|
+
} else if (!isSelectedBefore && (shouldBeSelected === true || shouldBeSelected == null)) {
|
|
125
|
+
newSelected = [itemId].concat(oldSelected);
|
|
126
|
+
} else {
|
|
127
|
+
newSelected = oldSelected;
|
|
128
|
+
}
|
|
129
|
+
} else {
|
|
130
|
+
// eslint-disable-next-line no-lonely-if
|
|
131
|
+
if (shouldBeSelected === false || shouldBeSelected == null && _selectors.selectionSelectors.isItemSelected(this.store.state, itemId)) {
|
|
132
|
+
newSelected = isMultiSelectEnabled ? [] : null;
|
|
133
|
+
} else {
|
|
134
|
+
newSelected = isMultiSelectEnabled ? [itemId] : itemId;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
this.setSelectedItems(event, newSelected,
|
|
138
|
+
// If shouldBeSelected === selectionSelectors.isItemSelected(store, itemId), we still want to propagate the select.
|
|
139
|
+
// This is useful when the element is in an indeterminate state.
|
|
140
|
+
[itemId]);
|
|
141
|
+
this.lastSelectedItem = itemId;
|
|
142
|
+
this.lastSelectedRange = {};
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Select all the navigable items in the tree.
|
|
147
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
148
|
+
*/
|
|
149
|
+
selectAllNavigableItems = event => {
|
|
150
|
+
const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
|
|
151
|
+
if (!isMultiSelectEnabled) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const navigableItems = (0, _tree.getAllNavigableItems)(this.store.state);
|
|
155
|
+
this.setSelectedItems(event, navigableItems);
|
|
156
|
+
this.lastSelectedRange = getLookupFromArray(navigableItems);
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Expand the current selection range up to the given item.
|
|
161
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
162
|
+
* @param {TreeViewItemId} itemId The id of the item to expand the selection to.
|
|
163
|
+
*/
|
|
164
|
+
expandSelectionRange = (event, itemId) => {
|
|
165
|
+
if (this.lastSelectedItem != null) {
|
|
166
|
+
const [start, end] = (0, _tree.findOrderInTremauxTree)(this.store.state, itemId, this.lastSelectedItem);
|
|
167
|
+
this.selectRange(event, [start, end]);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Expand the current selection range from the first navigable item to the given item.
|
|
173
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
174
|
+
* @param {TreeViewItemId} itemId The id of the item up to which the selection range should be expanded.
|
|
175
|
+
*/
|
|
176
|
+
selectRangeFromStartToItem = (event, itemId) => {
|
|
177
|
+
this.selectRange(event, [(0, _tree.getFirstNavigableItem)(this.store.state), itemId]);
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Expand the current selection range from the given item to the last navigable item.
|
|
182
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
183
|
+
* @param {TreeViewItemId} itemId The id of the item from which the selection range should be expanded.
|
|
184
|
+
*/
|
|
185
|
+
selectRangeFromItemToEnd = (event, itemId) => {
|
|
186
|
+
this.selectRange(event, [itemId, (0, _tree.getLastNavigableItem)(this.store.state)]);
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Update the selection when navigating with ArrowUp / ArrowDown keys.
|
|
191
|
+
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
192
|
+
* @param {TreeViewItemId} currentItemId The id of the active item before the keyboard navigation.
|
|
193
|
+
* @param {TreeViewItemId} nextItemId The id of the active item after the keyboard navigation.
|
|
194
|
+
*/
|
|
195
|
+
selectItemFromArrowNavigation = (event, currentItem, nextItem) => {
|
|
196
|
+
const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
|
|
197
|
+
if (!isMultiSelectEnabled) {
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
let newSelectedItems = _selectors.selectionSelectors.selectedItems(this.store.state).slice();
|
|
201
|
+
if (Object.keys(this.lastSelectedRange).length === 0) {
|
|
202
|
+
newSelectedItems.push(nextItem);
|
|
203
|
+
this.lastSelectedRange = {
|
|
204
|
+
[currentItem]: true,
|
|
205
|
+
[nextItem]: true
|
|
206
|
+
};
|
|
207
|
+
} else {
|
|
208
|
+
if (!this.lastSelectedRange[currentItem]) {
|
|
209
|
+
this.lastSelectedRange = {};
|
|
210
|
+
}
|
|
211
|
+
if (this.lastSelectedRange[nextItem]) {
|
|
212
|
+
newSelectedItems = newSelectedItems.filter(id => id !== currentItem);
|
|
213
|
+
delete this.lastSelectedRange[currentItem];
|
|
214
|
+
} else {
|
|
215
|
+
newSelectedItems.push(nextItem);
|
|
216
|
+
this.lastSelectedRange[nextItem] = true;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
this.setSelectedItems(event, newSelectedItems);
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
exports.TreeViewSelectionPlugin = TreeViewSelectionPlugin;
|
|
223
|
+
function propagateSelection({
|
|
224
|
+
store,
|
|
225
|
+
selectionPropagation,
|
|
226
|
+
newModel,
|
|
227
|
+
oldModel,
|
|
228
|
+
additionalItemsToPropagate
|
|
229
|
+
}) {
|
|
230
|
+
if (!selectionPropagation.descendants && !selectionPropagation.parents) {
|
|
231
|
+
return newModel;
|
|
232
|
+
}
|
|
233
|
+
let shouldRegenerateModel = false;
|
|
234
|
+
const newModelLookup = getLookupFromArray(newModel);
|
|
235
|
+
const changes = getAddedAndRemovedItems({
|
|
236
|
+
store,
|
|
237
|
+
newModel,
|
|
238
|
+
oldModel
|
|
239
|
+
});
|
|
240
|
+
additionalItemsToPropagate?.forEach(itemId => {
|
|
241
|
+
if (newModelLookup[itemId]) {
|
|
242
|
+
if (!changes.added.includes(itemId)) {
|
|
243
|
+
changes.added.push(itemId);
|
|
244
|
+
}
|
|
245
|
+
} else if (!changes.removed.includes(itemId)) {
|
|
246
|
+
changes.removed.push(itemId);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
changes.added.forEach(addedItemId => {
|
|
250
|
+
if (selectionPropagation.descendants) {
|
|
251
|
+
const selectDescendants = itemId => {
|
|
252
|
+
if (itemId !== addedItemId) {
|
|
253
|
+
shouldRegenerateModel = true;
|
|
254
|
+
newModelLookup[itemId] = true;
|
|
255
|
+
}
|
|
256
|
+
_items.itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(selectDescendants);
|
|
257
|
+
};
|
|
258
|
+
selectDescendants(addedItemId);
|
|
259
|
+
}
|
|
260
|
+
if (selectionPropagation.parents) {
|
|
261
|
+
const checkAllDescendantsSelected = itemId => {
|
|
262
|
+
if (!newModelLookup[itemId]) {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
const children = _items.itemsSelectors.itemOrderedChildrenIds(store.state, itemId);
|
|
266
|
+
return children.every(checkAllDescendantsSelected);
|
|
267
|
+
};
|
|
268
|
+
const selectParents = itemId => {
|
|
269
|
+
const parentId = _items.itemsSelectors.itemParentId(store.state, itemId);
|
|
270
|
+
if (parentId == null) {
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
const siblings = _items.itemsSelectors.itemOrderedChildrenIds(store.state, parentId);
|
|
274
|
+
if (siblings.every(checkAllDescendantsSelected)) {
|
|
275
|
+
shouldRegenerateModel = true;
|
|
276
|
+
newModelLookup[parentId] = true;
|
|
277
|
+
selectParents(parentId);
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
selectParents(addedItemId);
|
|
281
|
+
}
|
|
282
|
+
});
|
|
283
|
+
changes.removed.forEach(removedItemId => {
|
|
284
|
+
if (selectionPropagation.parents) {
|
|
285
|
+
let parentId = _items.itemsSelectors.itemParentId(store.state, removedItemId);
|
|
286
|
+
while (parentId != null) {
|
|
287
|
+
if (newModelLookup[parentId]) {
|
|
288
|
+
shouldRegenerateModel = true;
|
|
289
|
+
delete newModelLookup[parentId];
|
|
290
|
+
}
|
|
291
|
+
parentId = _items.itemsSelectors.itemParentId(store.state, parentId);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
if (selectionPropagation.descendants) {
|
|
295
|
+
const deSelectDescendants = itemId => {
|
|
296
|
+
if (itemId !== removedItemId) {
|
|
297
|
+
shouldRegenerateModel = true;
|
|
298
|
+
delete newModelLookup[itemId];
|
|
299
|
+
}
|
|
300
|
+
_items.itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(deSelectDescendants);
|
|
301
|
+
};
|
|
302
|
+
deSelectDescendants(removedItemId);
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
return shouldRegenerateModel ? Object.keys(newModelLookup) : newModel;
|
|
306
|
+
}
|
|
307
|
+
function getAddedAndRemovedItems({
|
|
308
|
+
store,
|
|
309
|
+
oldModel,
|
|
310
|
+
newModel
|
|
311
|
+
}) {
|
|
312
|
+
const newModelMap = new Map();
|
|
313
|
+
newModel.forEach(id => {
|
|
314
|
+
newModelMap.set(id, true);
|
|
315
|
+
});
|
|
316
|
+
return {
|
|
317
|
+
added: newModel.filter(itemId => !_selectors.selectionSelectors.isItemSelected(store.state, itemId)),
|
|
318
|
+
removed: oldModel.filter(itemId => !newModelMap.has(itemId))
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
function getLookupFromArray(array) {
|
|
322
|
+
const lookup = {};
|
|
323
|
+
array.forEach(itemId => {
|
|
324
|
+
lookup[itemId] = true;
|
|
325
|
+
});
|
|
326
|
+
return lookup;
|
|
327
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _TreeViewSelectionPlugin = require("./TreeViewSelectionPlugin");
|
|
7
|
+
Object.keys(_TreeViewSelectionPlugin).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _TreeViewSelectionPlugin[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _TreeViewSelectionPlugin[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _selectors = require("./selectors");
|
|
18
|
+
Object.keys(_selectors).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _selectors[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _selectors[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TreeViewCancellableEventHandler } from "../../../models/index.js";
|
|
3
3
|
import { TreeViewItemPlugin } from "../../models/index.js";
|
|
4
|
-
export declare const
|
|
4
|
+
export declare const useSelectionItemPlugin: TreeViewItemPlugin;
|
|
5
5
|
interface UseTreeItemRootSlotPropsFromSelection {
|
|
6
6
|
'aria-checked': React.AriaAttributes['aria-checked'];
|
|
7
7
|
}
|
|
@@ -3,29 +3,29 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.useSelectionItemPlugin = void 0;
|
|
7
7
|
var _store = require("@mui/x-internals/store");
|
|
8
8
|
var _TreeViewProvider = require("../../TreeViewProvider");
|
|
9
|
-
var
|
|
10
|
-
var
|
|
9
|
+
var _selectors = require("../items/selectors");
|
|
10
|
+
var _selectors2 = require("./selectors");
|
|
11
11
|
const selectorCheckboxSelectionStatus = (0, _store.createSelector)((state, itemId) => {
|
|
12
|
-
if (
|
|
12
|
+
if (_selectors2.selectionSelectors.isItemSelected(state, itemId)) {
|
|
13
13
|
return 'checked';
|
|
14
14
|
}
|
|
15
15
|
let hasSelectedDescendant = false;
|
|
16
16
|
let hasUnSelectedDescendant = false;
|
|
17
17
|
const traverseDescendants = itemToTraverseId => {
|
|
18
18
|
if (itemToTraverseId !== itemId) {
|
|
19
|
-
if (
|
|
19
|
+
if (_selectors2.selectionSelectors.isItemSelected(state, itemToTraverseId)) {
|
|
20
20
|
hasSelectedDescendant = true;
|
|
21
21
|
} else {
|
|
22
22
|
hasUnSelectedDescendant = true;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
_selectors.itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
|
|
26
26
|
};
|
|
27
27
|
traverseDescendants(itemId);
|
|
28
|
-
const shouldSelectBasedOnDescendants =
|
|
28
|
+
const shouldSelectBasedOnDescendants = _selectors2.selectionSelectors.propagationRules(state).parents;
|
|
29
29
|
if (shouldSelectBasedOnDescendants) {
|
|
30
30
|
if (hasSelectedDescendant && hasUnSelectedDescendant) {
|
|
31
31
|
return 'indeterminate';
|
|
@@ -40,7 +40,7 @@ const selectorCheckboxSelectionStatus = (0, _store.createSelector)((state, itemI
|
|
|
40
40
|
}
|
|
41
41
|
return 'empty';
|
|
42
42
|
});
|
|
43
|
-
const
|
|
43
|
+
const useSelectionItemPlugin = ({
|
|
44
44
|
props
|
|
45
45
|
}) => {
|
|
46
46
|
const {
|
|
@@ -49,10 +49,10 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
49
49
|
const {
|
|
50
50
|
store
|
|
51
51
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
52
|
-
const isCheckboxSelectionEnabled = (0, _store.useStore)(store,
|
|
53
|
-
const
|
|
52
|
+
const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _selectors2.selectionSelectors.isCheckboxSelectionEnabled);
|
|
53
|
+
const isFeatureEnabledForItem = (0, _store.useStore)(store, _selectors2.selectionSelectors.isFeatureEnabledForItem, itemId);
|
|
54
|
+
const canItemBeSelected = (0, _store.useStore)(store, _selectors2.selectionSelectors.canItemBeSelected, itemId);
|
|
54
55
|
const selectionStatus = (0, _store.useStore)(store, selectorCheckboxSelectionStatus, itemId);
|
|
55
|
-
const isSelectionEnabledForItem = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
|
|
56
56
|
return {
|
|
57
57
|
propsEnhancers: {
|
|
58
58
|
root: () => {
|
|
@@ -63,7 +63,7 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
63
63
|
ariaChecked = true;
|
|
64
64
|
} else if (selectionStatus === 'indeterminate') {
|
|
65
65
|
ariaChecked = 'mixed';
|
|
66
|
-
} else if (!
|
|
66
|
+
} else if (!canItemBeSelected) {
|
|
67
67
|
// - if the tree contains nodes that are not selectable, aria-checked is not present on those nodes.
|
|
68
68
|
ariaChecked = undefined;
|
|
69
69
|
} else {
|
|
@@ -83,7 +83,7 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
83
83
|
if (event.defaultMuiPrevented) {
|
|
84
84
|
return;
|
|
85
85
|
}
|
|
86
|
-
if (!
|
|
86
|
+
if (!_selectors2.selectionSelectors.canItemBeSelected(store.state, itemId)) {
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
89
|
interactions.handleCheckboxSelection(event);
|
|
@@ -91,8 +91,8 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
91
91
|
return {
|
|
92
92
|
tabIndex: -1,
|
|
93
93
|
onChange: handleChange,
|
|
94
|
-
visible: isCheckboxSelectionEnabled,
|
|
95
|
-
disabled: !
|
|
94
|
+
visible: isCheckboxSelectionEnabled && isFeatureEnabledForItem,
|
|
95
|
+
disabled: !canItemBeSelected,
|
|
96
96
|
checked: selectionStatus === 'checked',
|
|
97
97
|
indeterminate: selectionStatus === 'indeterminate'
|
|
98
98
|
};
|
|
@@ -100,4 +100,4 @@ const useTreeViewSelectionItemPlugin = ({
|
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
102
|
};
|
|
103
|
-
exports.
|
|
103
|
+
exports.useSelectionItemPlugin = useSelectionItemPlugin;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
|
|
2
|
+
export declare const selectionSelectors: {
|
|
3
|
+
/**
|
|
4
|
+
* Gets the selected items as provided to the component.
|
|
5
|
+
*/
|
|
6
|
+
selectedItemsRaw: (state: MinimalTreeViewState<any, any>) => string | readonly string[] | readonly string[] | null;
|
|
7
|
+
/**
|
|
8
|
+
* Gets the selected items as an array.
|
|
9
|
+
*/
|
|
10
|
+
selectedItems: (args_0: MinimalTreeViewState<any, any>) => any[];
|
|
11
|
+
/**
|
|
12
|
+
* Gets the selected items as a Map.
|
|
13
|
+
*/
|
|
14
|
+
selectedItemsMap: (args_0: MinimalTreeViewState<any, any>) => Map<string, true>;
|
|
15
|
+
/**
|
|
16
|
+
* Checks whether selection is enabled.
|
|
17
|
+
*/
|
|
18
|
+
enabled: (state: MinimalTreeViewState<any, any>) => boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Checks whether multi selection is enabled.
|
|
21
|
+
*/
|
|
22
|
+
isMultiSelectEnabled: (state: MinimalTreeViewState<any, any>) => boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Checks whether checkbox selection is enabled.
|
|
25
|
+
*/
|
|
26
|
+
isCheckboxSelectionEnabled: (state: MinimalTreeViewState<any, any>) => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Gets the selection propagation rules.
|
|
29
|
+
*/
|
|
30
|
+
propagationRules: (state: MinimalTreeViewState<any, any>) => import("../../../index.js").TreeViewSelectionPropagation;
|
|
31
|
+
/**
|
|
32
|
+
* Checks whether an item is selected.
|
|
33
|
+
*/
|
|
34
|
+
isItemSelected: (args_0: MinimalTreeViewState<any, any>, itemId: string) => boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Checks whether the selection feature is enabled for an item.
|
|
37
|
+
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
38
|
+
*/
|
|
39
|
+
isFeatureEnabledForItem: (args_0: MinimalTreeViewState<any, any>, _itemId: string) => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
42
|
+
*/
|
|
43
|
+
canItemBeSelected: (args_0: MinimalTreeViewState<any, any>, _itemId: string) => boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Checks whether an item is selectable based on the `isItemSelectionDisabled` prop.
|
|
46
|
+
*/
|
|
47
|
+
isItemSelectable: (state: MinimalTreeViewState<any, any>, itemId: string) => boolean;
|
|
48
|
+
};
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.selectionSelectors = void 0;
|
|
7
7
|
var _store = require("@mui/x-internals/store");
|
|
8
|
-
var
|
|
9
|
-
const selectedItemsSelector = (0, _store.createSelectorMemoized)(state => state.
|
|
8
|
+
var _selectors = require("../items/selectors");
|
|
9
|
+
const selectedItemsSelector = (0, _store.createSelectorMemoized)(state => state.selectedItems, selectedItemsRaw => {
|
|
10
10
|
if (Array.isArray(selectedItemsRaw)) {
|
|
11
11
|
return selectedItemsRaw;
|
|
12
12
|
}
|
|
@@ -22,11 +22,12 @@ const selectedItemsMapSelector = (0, _store.createSelectorMemoized)(selectedItem
|
|
|
22
22
|
});
|
|
23
23
|
return selectedItemsMap;
|
|
24
24
|
});
|
|
25
|
+
const isItemSelectableSelector = (0, _store.createSelector)((state, itemId) => state.itemMetaLookup[itemId]?.selectable ?? true);
|
|
25
26
|
const selectionSelectors = exports.selectionSelectors = {
|
|
26
27
|
/**
|
|
27
28
|
* Gets the selected items as provided to the component.
|
|
28
29
|
*/
|
|
29
|
-
selectedItemsRaw: (0, _store.createSelector)(state => state.
|
|
30
|
+
selectedItemsRaw: (0, _store.createSelector)(state => state.selectedItems),
|
|
30
31
|
/**
|
|
31
32
|
* Gets the selected items as an array.
|
|
32
33
|
*/
|
|
@@ -38,25 +39,34 @@ const selectionSelectors = exports.selectionSelectors = {
|
|
|
38
39
|
/**
|
|
39
40
|
* Checks whether selection is enabled.
|
|
40
41
|
*/
|
|
41
|
-
enabled: (0, _store.createSelector)(state => state.
|
|
42
|
+
enabled: (0, _store.createSelector)(state => !state.disableSelection),
|
|
42
43
|
/**
|
|
43
44
|
* Checks whether multi selection is enabled.
|
|
44
45
|
*/
|
|
45
|
-
isMultiSelectEnabled: (0, _store.createSelector)(state => state.
|
|
46
|
+
isMultiSelectEnabled: (0, _store.createSelector)(state => state.multiSelect),
|
|
46
47
|
/**
|
|
47
48
|
* Checks whether checkbox selection is enabled.
|
|
48
49
|
*/
|
|
49
|
-
isCheckboxSelectionEnabled: (0, _store.createSelector)(state => state.
|
|
50
|
+
isCheckboxSelectionEnabled: (0, _store.createSelector)(state => state.checkboxSelection),
|
|
50
51
|
/**
|
|
51
52
|
* Gets the selection propagation rules.
|
|
52
53
|
*/
|
|
53
|
-
propagationRules: (0, _store.createSelector)(state => state.
|
|
54
|
+
propagationRules: (0, _store.createSelector)(state => state.selectionPropagation),
|
|
54
55
|
/**
|
|
55
56
|
* Checks whether an item is selected.
|
|
56
57
|
*/
|
|
57
58
|
isItemSelected: (0, _store.createSelector)(selectedItemsMapSelector, (selectedItemsMap, itemId) => selectedItemsMap.has(itemId)),
|
|
58
59
|
/**
|
|
59
|
-
* Checks whether
|
|
60
|
+
* Checks whether the selection feature is enabled for an item.
|
|
61
|
+
* Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
|
|
60
62
|
*/
|
|
61
|
-
|
|
63
|
+
isFeatureEnabledForItem: (0, _store.createSelector)(isItemSelectableSelector, state => !state.disableSelection, (isItemSelectable, isSelectionEnabled, _itemId) => isSelectionEnabled && isItemSelectable),
|
|
64
|
+
/**
|
|
65
|
+
* Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
|
|
66
|
+
*/
|
|
67
|
+
canItemBeSelected: (0, _store.createSelector)(_selectors.itemsSelectors.isItemDisabled, isItemSelectableSelector, state => !state.disableSelection, (isItemDisabled, isItemSelectable, isSelectionEnabled, _itemId) => isSelectionEnabled && !isItemDisabled && isItemSelectable),
|
|
68
|
+
/**
|
|
69
|
+
* Checks whether an item is selectable based on the `isItemSelectionDisabled` prop.
|
|
70
|
+
*/
|
|
71
|
+
isItemSelectable: isItemSelectableSelector
|
|
62
72
|
};
|