@mui/x-tree-view 8.23.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 +111 -1
- package/RichTreeView/RichTreeView.d.ts +1 -1
- package/RichTreeView/RichTreeView.js +34 -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/TreeItemProvider/TreeItemProvider.js +3 -10
- package/esm/RichTreeView/RichTreeView.d.ts +1 -1
- package/esm/RichTreeView/RichTreeView.js +33 -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/TreeItemProvider/TreeItemProvider.js +3 -10
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +1 -1
- 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 +25 -34
- package/esm/hooks/useTreeViewApiRef.d.ts +2 -4
- package/esm/hooks/useTreeViewApiRef.js +3 -2
- 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 +5 -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 -50
- 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/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +29 -17
- 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 +3 -3
- package/esm/internals/plugins/selection/selectors.d.ts +48 -0
- package/esm/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +14 -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 +14 -18
- package/esm/useTreeItem/useTreeItem.types.d.ts +4 -19
- package/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -2
- 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 +2 -4
- package/hooks/useTreeViewApiRef.js +2 -4
- 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 +5 -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} +16 -16
- package/internals/plugins/items/utils.d.ts +43 -0
- package/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -51
- 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 +30 -17
- 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 +13 -13
- package/internals/plugins/selection/selectors.d.ts +48 -0
- package/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +14 -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 +2 -2
- package/useTreeItem/useTreeItem.d.ts +18 -2
- package/useTreeItem/useTreeItem.js +18 -23
- package/useTreeItem/useTreeItem.types.d.ts +4 -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 -223
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -60
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -64
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -204
- 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/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 -231
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -45
- 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 -231
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -60
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -204
- 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 -240
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -45
- 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
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.TREE_VIEW_ROOT_PARENT_ID = void 0;
|
|
7
7
|
exports.buildItemsLookups = buildItemsLookups;
|
|
8
|
-
exports.buildItemsState = buildItemsState;
|
|
9
8
|
exports.isItemDisabled = exports.buildSiblingIndexes = void 0;
|
|
10
9
|
const TREE_VIEW_ROOT_PARENT_ID = exports.TREE_VIEW_ROOT_PARENT_ID = '__TREE_VIEW_ROOT_PARENT_ID__';
|
|
11
10
|
const buildSiblingIndexes = siblings => {
|
|
@@ -48,53 +47,9 @@ const isItemDisabled = (itemMetaLookup, itemId) => {
|
|
|
48
47
|
return false;
|
|
49
48
|
};
|
|
50
49
|
exports.isItemDisabled = isItemDisabled;
|
|
51
|
-
function buildItemsState(parameters) {
|
|
52
|
-
const {
|
|
53
|
-
config,
|
|
54
|
-
items: itemsParam,
|
|
55
|
-
disabledItemsFocusable
|
|
56
|
-
} = parameters;
|
|
57
|
-
const itemMetaLookup = {};
|
|
58
|
-
const itemModelLookup = {};
|
|
59
|
-
const itemOrderedChildrenIdsLookup = {};
|
|
60
|
-
const itemChildrenIndexesLookup = {};
|
|
61
|
-
function processSiblings(items, parentId, depth) {
|
|
62
|
-
const parentIdWithDefault = parentId ?? TREE_VIEW_ROOT_PARENT_ID;
|
|
63
|
-
const {
|
|
64
|
-
metaLookup,
|
|
65
|
-
modelLookup,
|
|
66
|
-
orderedChildrenIds,
|
|
67
|
-
childrenIndexes,
|
|
68
|
-
itemsChildren
|
|
69
|
-
} = buildItemsLookups({
|
|
70
|
-
config,
|
|
71
|
-
items,
|
|
72
|
-
parentId,
|
|
73
|
-
depth,
|
|
74
|
-
isItemExpandable: (item, children) => !!children && children.length > 0,
|
|
75
|
-
otherItemsMetaLookup: itemMetaLookup
|
|
76
|
-
});
|
|
77
|
-
Object.assign(itemMetaLookup, metaLookup);
|
|
78
|
-
Object.assign(itemModelLookup, modelLookup);
|
|
79
|
-
itemOrderedChildrenIdsLookup[parentIdWithDefault] = orderedChildrenIds;
|
|
80
|
-
itemChildrenIndexesLookup[parentIdWithDefault] = childrenIndexes;
|
|
81
|
-
for (const item of itemsChildren) {
|
|
82
|
-
processSiblings(item.children || [], item.id, depth + 1);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
processSiblings(itemsParam, null, 0);
|
|
86
|
-
return {
|
|
87
|
-
disabledItemsFocusable,
|
|
88
|
-
itemMetaLookup,
|
|
89
|
-
itemModelLookup,
|
|
90
|
-
itemOrderedChildrenIdsLookup,
|
|
91
|
-
itemChildrenIndexesLookup,
|
|
92
|
-
domStructure: 'nested'
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
50
|
function buildItemsLookups(parameters) {
|
|
96
51
|
const {
|
|
97
|
-
|
|
52
|
+
storeParameters,
|
|
98
53
|
items,
|
|
99
54
|
parentId,
|
|
100
55
|
depth,
|
|
@@ -106,7 +61,7 @@ function buildItemsLookups(parameters) {
|
|
|
106
61
|
const orderedChildrenIds = [];
|
|
107
62
|
const itemsChildren = [];
|
|
108
63
|
const processItem = item => {
|
|
109
|
-
const id =
|
|
64
|
+
const id = storeParameters.getItemId ? storeParameters.getItemId(item) : item.id;
|
|
110
65
|
checkId({
|
|
111
66
|
id,
|
|
112
67
|
parentId,
|
|
@@ -114,11 +69,11 @@ function buildItemsLookups(parameters) {
|
|
|
114
69
|
itemMetaLookup: otherItemsMetaLookup,
|
|
115
70
|
siblingsMetaLookup: metaLookup
|
|
116
71
|
});
|
|
117
|
-
const label =
|
|
72
|
+
const label = storeParameters.getItemLabel ? storeParameters.getItemLabel(item) : item.label;
|
|
118
73
|
if (label == null) {
|
|
119
74
|
throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'Alternatively, you can use the `getItemLabel` prop to specify a custom label for each item.', 'An item was provided without label in the `items` prop:', JSON.stringify(item)].join('\n'));
|
|
120
75
|
}
|
|
121
|
-
const children = (
|
|
76
|
+
const children = (storeParameters.getItemChildren ? storeParameters.getItemChildren(item) : item.children) || [];
|
|
122
77
|
itemsChildren.push({
|
|
123
78
|
id,
|
|
124
79
|
children
|
|
@@ -130,8 +85,8 @@ function buildItemsLookups(parameters) {
|
|
|
130
85
|
parentId,
|
|
131
86
|
idAttribute: undefined,
|
|
132
87
|
expandable: isItemExpandable(item, children),
|
|
133
|
-
disabled:
|
|
134
|
-
selectable:
|
|
88
|
+
disabled: storeParameters.isItemDisabled ? storeParameters.isItemDisabled(item) : false,
|
|
89
|
+
selectable: storeParameters.isItemSelectionDisabled ? !storeParameters.isItemSelectionDisabled(item) : true,
|
|
135
90
|
depth
|
|
136
91
|
};
|
|
137
92
|
orderedChildrenIds.push(id);
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { TreeViewItemMeta, TreeViewPluginSignature } from "../../models/index.js";
|
|
2
|
-
import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
|
|
3
|
-
import { UseTreeViewKeyboardNavigationSignature } from "../useTreeViewKeyboardNavigation/index.js";
|
|
4
1
|
import { TreeViewItemId } from "../../../models/index.js";
|
|
5
|
-
|
|
2
|
+
import { TreeViewItemMeta } from "../../models/index.js";
|
|
3
|
+
import type { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
|
|
4
|
+
export declare class TreeViewJSXItemsPlugin {
|
|
5
|
+
private store;
|
|
6
|
+
constructor(store: SimpleTreeViewStore<any>);
|
|
6
7
|
/**
|
|
7
8
|
* Insert a new item in the state from a Tree Item component.
|
|
8
9
|
* @param {TreeViewItemMeta} item The meta-information of the item to insert.
|
|
@@ -24,12 +25,4 @@ export interface UseTreeViewItemsInstance {
|
|
|
24
25
|
* @param {TreeViewItemId[]} orderedChildrenIds The ids of the item's children.
|
|
25
26
|
*/
|
|
26
27
|
setJSXItemsOrderedChildrenIds: (parentId: TreeViewItemId | null, orderedChildrenIds: TreeViewItemId[]) => void;
|
|
27
|
-
}
|
|
28
|
-
export interface UseTreeViewJSXItemsParameters {}
|
|
29
|
-
export interface UseTreeViewItemsParametersWithDefaults {}
|
|
30
|
-
export type UseTreeViewJSXItemsSignature = TreeViewPluginSignature<{
|
|
31
|
-
params: UseTreeViewJSXItemsParameters;
|
|
32
|
-
paramsWithDefaults: UseTreeViewItemsParametersWithDefaults;
|
|
33
|
-
instance: UseTreeViewItemsInstance;
|
|
34
|
-
dependencies: [UseTreeViewItemsSignature, UseTreeViewKeyboardNavigationSignature];
|
|
35
|
-
}>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.TreeViewJSXItemsPlugin = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
|
+
var _items = require("../items");
|
|
10
|
+
var _itemPlugin = require("./itemPlugin");
|
|
11
|
+
class TreeViewJSXItemsPlugin {
|
|
12
|
+
constructor(store) {
|
|
13
|
+
this.store = store;
|
|
14
|
+
store.itemPluginManager.register(_itemPlugin.useJSXItemsItemPlugin, _itemPlugin.jsxItemsitemWrapper);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Insert a new item in the state from a Tree Item component.
|
|
19
|
+
* @param {TreeViewItemMeta} item The meta-information of the item to insert.
|
|
20
|
+
* @returns {() => void} A function to remove the item from the state.
|
|
21
|
+
*/
|
|
22
|
+
insertJSXItem = item => {
|
|
23
|
+
if (this.store.state.itemMetaLookup[item.id] != null) {
|
|
24
|
+
throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', `Two items were provided with the same id in the \`items\` prop: "${item.id}"`].join('\n'));
|
|
25
|
+
}
|
|
26
|
+
this.store.update({
|
|
27
|
+
itemMetaLookup: (0, _extends2.default)({}, this.store.state.itemMetaLookup, {
|
|
28
|
+
[item.id]: item
|
|
29
|
+
}),
|
|
30
|
+
// For Simple Tree View, we don't have a proper `item` object, so we create a very basic one.
|
|
31
|
+
itemModelLookup: (0, _extends2.default)({}, this.store.state.itemModelLookup, {
|
|
32
|
+
[item.id]: {
|
|
33
|
+
id: item.id,
|
|
34
|
+
label: item.label ?? ''
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
return () => {
|
|
39
|
+
const newItemMetaLookup = (0, _extends2.default)({}, this.store.state.itemMetaLookup);
|
|
40
|
+
const newItemModelLookup = (0, _extends2.default)({}, this.store.state.itemModelLookup);
|
|
41
|
+
delete newItemMetaLookup[item.id];
|
|
42
|
+
delete newItemModelLookup[item.id];
|
|
43
|
+
this.store.update({
|
|
44
|
+
itemMetaLookup: newItemMetaLookup,
|
|
45
|
+
itemModelLookup: newItemModelLookup
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Updates the `labelMap` to register the first character of the given item's label.
|
|
52
|
+
* This map is used to navigate the tree using type-ahead search.
|
|
53
|
+
* @param {TreeViewItemId} itemId The id of the item to map the label of.
|
|
54
|
+
* @param {string} label The item's label.
|
|
55
|
+
* @returns {() => void} A function to remove the item from the `labelMap`.
|
|
56
|
+
*/
|
|
57
|
+
mapLabelFromJSX = (itemId, label) => {
|
|
58
|
+
this.store.keyboardNavigation.updateLabelMap(labelMap => {
|
|
59
|
+
labelMap[itemId] = label;
|
|
60
|
+
return labelMap;
|
|
61
|
+
});
|
|
62
|
+
return () => {
|
|
63
|
+
this.store.keyboardNavigation.updateLabelMap(labelMap => {
|
|
64
|
+
const newMap = (0, _extends2.default)({}, labelMap);
|
|
65
|
+
delete newMap[itemId];
|
|
66
|
+
return newMap;
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Store the ids of a given item's children in the state.
|
|
73
|
+
* Those ids must be passed in the order they should be rendered.
|
|
74
|
+
* @param {TreeViewItemId | null} parentId The id of the item to store the children of.
|
|
75
|
+
* @param {TreeViewItemId[]} orderedChildrenIds The ids of the item's children.
|
|
76
|
+
*/
|
|
77
|
+
setJSXItemsOrderedChildrenIds = (parentId, orderedChildrenIds) => {
|
|
78
|
+
const parentIdWithDefault = parentId ?? _items.TREE_VIEW_ROOT_PARENT_ID;
|
|
79
|
+
this.store.update({
|
|
80
|
+
itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, this.store.state.itemOrderedChildrenIdsLookup, {
|
|
81
|
+
[parentIdWithDefault]: orderedChildrenIds
|
|
82
|
+
}),
|
|
83
|
+
itemChildrenIndexesLookup: (0, _extends2.default)({}, this.store.state.itemChildrenIndexesLookup, {
|
|
84
|
+
[parentIdWithDefault]: (0, _items.buildSiblingIndexes)(orderedChildrenIds)
|
|
85
|
+
})
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
exports.TreeViewJSXItemsPlugin = TreeViewJSXItemsPlugin;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./TreeViewJSXItemsPlugin.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _TreeViewJSXItemsPlugin = require("./TreeViewJSXItemsPlugin");
|
|
7
|
+
Object.keys(_TreeViewJSXItemsPlugin).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _TreeViewJSXItemsPlugin[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _TreeViewJSXItemsPlugin[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { TreeItemWrapper, TreeViewItemPlugin } from "../../models/index.js";
|
|
2
|
+
import { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
|
|
3
|
+
export declare const useJSXItemsItemPlugin: TreeViewItemPlugin;
|
|
4
|
+
export declare const jsxItemsitemWrapper: TreeItemWrapper<SimpleTreeViewStore<any>>;
|
|
@@ -5,23 +5,23 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.useJSXItemsItemPlugin = exports.jsxItemsitemWrapper = void 0;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _store = require("@mui/x-internals/store");
|
|
11
11
|
var _useMergedRefs = require("@base-ui/utils/useMergedRefs");
|
|
12
12
|
var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
|
|
13
13
|
var _TreeViewProvider = require("../../TreeViewProvider");
|
|
14
14
|
var _TreeViewChildrenItemProvider = require("../../TreeViewProvider/TreeViewChildrenItemProvider");
|
|
15
|
+
var _TreeViewItemDepthContext = require("../../TreeViewItemDepthContext");
|
|
15
16
|
var _useTreeItemUtils = require("../../../hooks/useTreeItemUtils/useTreeItemUtils");
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
const
|
|
17
|
+
var _id = require("../id");
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
const useJSXItemsItemPlugin = ({
|
|
19
20
|
props,
|
|
20
21
|
rootRef,
|
|
21
22
|
contentRef
|
|
22
23
|
}) => {
|
|
23
24
|
const {
|
|
24
|
-
instance,
|
|
25
25
|
store
|
|
26
26
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
27
27
|
const {
|
|
@@ -44,23 +44,18 @@ const useTreeViewJSXItemsItemPlugin = ({
|
|
|
44
44
|
const expandable = (0, _useTreeItemUtils.itemHasChildren)(children);
|
|
45
45
|
const pluginContentRef = React.useRef(null);
|
|
46
46
|
const handleContentRef = (0, _useMergedRefs.useMergedRefs)(pluginContentRef, contentRef);
|
|
47
|
-
const
|
|
47
|
+
const idAttribute = (0, _store.useStore)(store, _id.idSelectors.treeItemIdAttribute, itemId, id);
|
|
48
48
|
|
|
49
49
|
// Prevent any flashing
|
|
50
50
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
|
|
51
|
-
const idAttribute = (0, _useTreeViewId2.generateTreeItemIdAttribute)({
|
|
52
|
-
itemId,
|
|
53
|
-
treeId,
|
|
54
|
-
id
|
|
55
|
-
});
|
|
56
51
|
registerChild(idAttribute, itemId);
|
|
57
52
|
return () => {
|
|
58
53
|
unregisterChild(idAttribute);
|
|
59
54
|
unregisterChild(idAttribute);
|
|
60
55
|
};
|
|
61
|
-
}, [store,
|
|
56
|
+
}, [store, registerChild, unregisterChild, idAttribute, itemId]);
|
|
62
57
|
(0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
|
|
63
|
-
return
|
|
58
|
+
return store.jsxItems.insertJSXItem({
|
|
64
59
|
id: itemId,
|
|
65
60
|
idAttribute: id,
|
|
66
61
|
parentId,
|
|
@@ -68,16 +63,34 @@ const useTreeViewJSXItemsItemPlugin = ({
|
|
|
68
63
|
disabled,
|
|
69
64
|
selectable: !disableSelection
|
|
70
65
|
});
|
|
71
|
-
}, [
|
|
66
|
+
}, [store, parentId, itemId, expandable, disabled, disableSelection, id]);
|
|
72
67
|
React.useEffect(() => {
|
|
73
68
|
if (label) {
|
|
74
|
-
return
|
|
69
|
+
return store.jsxItems.mapLabelFromJSX(itemId, (pluginContentRef.current?.textContent ?? '').toLowerCase());
|
|
75
70
|
}
|
|
76
71
|
return undefined;
|
|
77
|
-
}, [
|
|
72
|
+
}, [store, itemId, label]);
|
|
78
73
|
return {
|
|
79
74
|
contentRef: handleContentRef,
|
|
80
75
|
rootRef
|
|
81
76
|
};
|
|
82
77
|
};
|
|
83
|
-
exports.
|
|
78
|
+
exports.useJSXItemsItemPlugin = useJSXItemsItemPlugin;
|
|
79
|
+
const jsxItemsitemWrapper = ({
|
|
80
|
+
children,
|
|
81
|
+
itemId,
|
|
82
|
+
idAttribute
|
|
83
|
+
}) => {
|
|
84
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
85
|
+
const depthContext = React.useContext(_TreeViewItemDepthContext.TreeViewItemDepthContext);
|
|
86
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewChildrenItemProvider.TreeViewChildrenItemProvider, {
|
|
87
|
+
itemId: itemId,
|
|
88
|
+
idAttribute: idAttribute,
|
|
89
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewItemDepthContext.TreeViewItemDepthContext.Provider, {
|
|
90
|
+
value: depthContext + 1,
|
|
91
|
+
children: children
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
exports.jsxItemsitemWrapper = jsxItemsitemWrapper;
|
|
96
|
+
if (process.env.NODE_ENV !== "production") jsxItemsitemWrapper.displayName = "jsxItemsitemWrapper";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.js";
|
|
2
|
+
type TreeViewLabelMap = {
|
|
3
|
+
[itemId: string]: string;
|
|
4
|
+
};
|
|
5
|
+
export declare class TreeViewKeyboardNavigationPlugin {
|
|
6
|
+
private store;
|
|
7
|
+
private labelMap;
|
|
8
|
+
private typeaheadQuery;
|
|
9
|
+
constructor(store: any);
|
|
10
|
+
private canToggleItemSelection;
|
|
11
|
+
private canToggleItemExpansion;
|
|
12
|
+
private getFirstItemMatchingTypeaheadQuery;
|
|
13
|
+
/**
|
|
14
|
+
* Updates the `labelMap` to add/remove the first character of some item's labels.
|
|
15
|
+
* This map is used to navigate the tree using type-ahead search.
|
|
16
|
+
* This method is only used by the `useTreeViewJSXItems` plugin, otherwise the updates are handled internally.
|
|
17
|
+
* @param {(map: TreeViewLabelMap) => TreeViewLabelMap} updater The function to update the map.
|
|
18
|
+
*/
|
|
19
|
+
updateLabelMap: (callback: (labelMap: TreeViewLabelMap) => TreeViewLabelMap) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Callback fired when a key is pressed on an item.
|
|
22
|
+
* Handles all the keyboard navigation logic.
|
|
23
|
+
* @param {React.KeyboardEvent<HTMLElement> & TreeViewCancellableEvent} event The keyboard event that triggered the callback.
|
|
24
|
+
* @param {TreeViewItemId} itemId The id of the item that the event was triggered on.
|
|
25
|
+
*/
|
|
26
|
+
handleItemKeyDown: (event: React.KeyboardEvent<HTMLElement> & TreeViewCancellableEvent, itemId: TreeViewItemId) => Promise<void>;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TreeViewKeyboardNavigationPlugin = void 0;
|
|
7
|
+
var _expansion = require("../expansion");
|
|
8
|
+
var _items = require("../items");
|
|
9
|
+
var _labelEditing = require("../labelEditing");
|
|
10
|
+
var _selectors = require("../selection/selectors");
|
|
11
|
+
var _tree = require("../../utils/tree");
|
|
12
|
+
const TYPEAHEAD_TIMEOUT = 500;
|
|
13
|
+
class TreeViewKeyboardNavigationPlugin {
|
|
14
|
+
typeaheadQuery = '';
|
|
15
|
+
|
|
16
|
+
// We can't type `store`, otherwise we get the following TS error:
|
|
17
|
+
// 'keyboardNavigation' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
|
|
18
|
+
constructor(store) {
|
|
19
|
+
this.store = store;
|
|
20
|
+
this.labelMap = createLabelMapFromItemMetaLookup(_items.itemsSelectors.itemMetaLookup(this.store.state));
|
|
21
|
+
|
|
22
|
+
// Whenever the itemMetaLookup changes, we need to regen the label map.
|
|
23
|
+
this.store.registerStoreEffect(_items.itemsSelectors.itemMetaLookup, (_, itemMetaLookup) => {
|
|
24
|
+
if (this.store.shouldIgnoreItemsStateUpdate()) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.labelMap = createLabelMapFromItemMetaLookup(itemMetaLookup);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
canToggleItemSelection = itemId => _selectors.selectionSelectors.canItemBeSelected(this.store.state, itemId);
|
|
31
|
+
canToggleItemExpansion = itemId => {
|
|
32
|
+
return !_items.itemsSelectors.isItemDisabled(this.store.state, itemId) && _expansion.expansionSelectors.isItemExpandable(this.store.state, itemId);
|
|
33
|
+
};
|
|
34
|
+
getFirstItemMatchingTypeaheadQuery = (itemId, newKey) => {
|
|
35
|
+
const getNextItem = itemIdToCheck => {
|
|
36
|
+
const nextItemId = (0, _tree.getNextNavigableItem)(this.store.state, itemIdToCheck);
|
|
37
|
+
// We reached the end of the tree, check from the beginning
|
|
38
|
+
if (nextItemId === null) {
|
|
39
|
+
return (0, _tree.getFirstNavigableItem)(this.store.state);
|
|
40
|
+
}
|
|
41
|
+
return nextItemId;
|
|
42
|
+
};
|
|
43
|
+
const getNextMatchingItemId = query => {
|
|
44
|
+
let matchingItemId = null;
|
|
45
|
+
const checkedItems = {};
|
|
46
|
+
// If query length > 1, first check if current item matches
|
|
47
|
+
let currentItemId = query.length > 1 ? itemId : getNextItem(itemId);
|
|
48
|
+
// The "!checkedItems[currentItemId]" condition avoids an infinite loop when there is no matching item.
|
|
49
|
+
while (matchingItemId == null && !checkedItems[currentItemId]) {
|
|
50
|
+
const itemLabel = this.labelMap[currentItemId];
|
|
51
|
+
if (itemLabel?.startsWith(query)) {
|
|
52
|
+
matchingItemId = currentItemId;
|
|
53
|
+
} else {
|
|
54
|
+
checkedItems[currentItemId] = true;
|
|
55
|
+
currentItemId = getNextItem(currentItemId);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return matchingItemId;
|
|
59
|
+
};
|
|
60
|
+
const cleanNewKey = newKey.toLowerCase();
|
|
61
|
+
|
|
62
|
+
// Try matching with accumulated query + new key
|
|
63
|
+
const concatenatedQuery = `${this.typeaheadQuery}${cleanNewKey}`;
|
|
64
|
+
|
|
65
|
+
// check if the entire typed query matches an item
|
|
66
|
+
const concatenatedQueryMatchingItemId = getNextMatchingItemId(concatenatedQuery);
|
|
67
|
+
if (concatenatedQueryMatchingItemId != null) {
|
|
68
|
+
this.typeaheadQuery = concatenatedQuery;
|
|
69
|
+
return concatenatedQueryMatchingItemId;
|
|
70
|
+
}
|
|
71
|
+
const newKeyMatchingItemId = getNextMatchingItemId(cleanNewKey);
|
|
72
|
+
if (newKeyMatchingItemId != null) {
|
|
73
|
+
this.typeaheadQuery = cleanNewKey;
|
|
74
|
+
return newKeyMatchingItemId;
|
|
75
|
+
}
|
|
76
|
+
this.typeaheadQuery = '';
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Updates the `labelMap` to add/remove the first character of some item's labels.
|
|
82
|
+
* This map is used to navigate the tree using type-ahead search.
|
|
83
|
+
* This method is only used by the `useTreeViewJSXItems` plugin, otherwise the updates are handled internally.
|
|
84
|
+
* @param {(map: TreeViewLabelMap) => TreeViewLabelMap} updater The function to update the map.
|
|
85
|
+
*/
|
|
86
|
+
updateLabelMap = callback => {
|
|
87
|
+
this.labelMap = callback(this.labelMap);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// ARIA specification: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/#keyboardinteraction
|
|
91
|
+
/**
|
|
92
|
+
* Callback fired when a key is pressed on an item.
|
|
93
|
+
* Handles all the keyboard navigation logic.
|
|
94
|
+
* @param {React.KeyboardEvent<HTMLElement> & TreeViewCancellableEvent} event The keyboard event that triggered the callback.
|
|
95
|
+
* @param {TreeViewItemId} itemId The id of the item that the event was triggered on.
|
|
96
|
+
*/
|
|
97
|
+
handleItemKeyDown = async (event, itemId) => {
|
|
98
|
+
if (event.defaultMuiPrevented) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (event.altKey || (0, _tree.isTargetInDescendants)(event.target, event.currentTarget)) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const ctrlPressed = event.ctrlKey || event.metaKey;
|
|
105
|
+
const key = event.key;
|
|
106
|
+
const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
|
|
107
|
+
|
|
108
|
+
// eslint-disable-next-line default-case
|
|
109
|
+
switch (true) {
|
|
110
|
+
// Select the item when pressing "Space"
|
|
111
|
+
case key === ' ' && this.canToggleItemSelection(itemId):
|
|
112
|
+
{
|
|
113
|
+
event.preventDefault();
|
|
114
|
+
if (isMultiSelectEnabled && event.shiftKey) {
|
|
115
|
+
this.store.selection.expandSelectionRange(event, itemId);
|
|
116
|
+
} else {
|
|
117
|
+
this.store.selection.setItemSelection({
|
|
118
|
+
event,
|
|
119
|
+
itemId,
|
|
120
|
+
keepExistingSelection: isMultiSelectEnabled,
|
|
121
|
+
shouldBeSelected: undefined
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// If the focused item has children, we expand it.
|
|
128
|
+
// If the focused item has no children, we select it.
|
|
129
|
+
case key === 'Enter':
|
|
130
|
+
{
|
|
131
|
+
if (this.store.labelEditing?.setEditedItem && _labelEditing.labelSelectors.isItemEditable(this.store.state, itemId) && !_labelEditing.labelSelectors.isItemBeingEdited(this.store.state, itemId)) {
|
|
132
|
+
this.store.labelEditing.setEditedItem(itemId);
|
|
133
|
+
} else if (this.canToggleItemExpansion(itemId)) {
|
|
134
|
+
this.store.expansion.setItemExpansion({
|
|
135
|
+
event,
|
|
136
|
+
itemId
|
|
137
|
+
});
|
|
138
|
+
event.preventDefault();
|
|
139
|
+
} else if (this.canToggleItemSelection(itemId)) {
|
|
140
|
+
if (isMultiSelectEnabled) {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
this.store.selection.setItemSelection({
|
|
143
|
+
event,
|
|
144
|
+
itemId,
|
|
145
|
+
keepExistingSelection: true
|
|
146
|
+
});
|
|
147
|
+
} else if (!_selectors.selectionSelectors.isItemSelected(this.store.state, itemId)) {
|
|
148
|
+
this.store.selection.setItemSelection({
|
|
149
|
+
event,
|
|
150
|
+
itemId
|
|
151
|
+
});
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Focus the next focusable item
|
|
159
|
+
case key === 'ArrowDown':
|
|
160
|
+
{
|
|
161
|
+
const nextItem = (0, _tree.getNextNavigableItem)(this.store.state, itemId);
|
|
162
|
+
if (nextItem) {
|
|
163
|
+
event.preventDefault();
|
|
164
|
+
this.store.focus.focusItem(event, nextItem);
|
|
165
|
+
|
|
166
|
+
// Multi select behavior when pressing Shift + ArrowDown
|
|
167
|
+
// Toggles the selection state of the next item
|
|
168
|
+
if (isMultiSelectEnabled && event.shiftKey && this.canToggleItemSelection(nextItem)) {
|
|
169
|
+
this.store.selection.selectItemFromArrowNavigation(event, itemId, nextItem);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Focuses the previous focusable item
|
|
176
|
+
case key === 'ArrowUp':
|
|
177
|
+
{
|
|
178
|
+
const previousItem = (0, _tree.getPreviousNavigableItem)(this.store.state, itemId);
|
|
179
|
+
if (previousItem) {
|
|
180
|
+
event.preventDefault();
|
|
181
|
+
this.store.focus.focusItem(event, previousItem);
|
|
182
|
+
|
|
183
|
+
// Multi select behavior when pressing Shift + ArrowUp
|
|
184
|
+
// Toggles the selection state of the previous item
|
|
185
|
+
if (isMultiSelectEnabled && event.shiftKey && this.canToggleItemSelection(previousItem)) {
|
|
186
|
+
this.store.selection.selectItemFromArrowNavigation(event, itemId, previousItem);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// If the focused item is expanded, we move the focus to its first child
|
|
193
|
+
// If the focused item is collapsed and has children, we expand it
|
|
194
|
+
case key === 'ArrowRight' && !this.store.parameters.isRtl || key === 'ArrowLeft' && this.store.parameters.isRtl:
|
|
195
|
+
{
|
|
196
|
+
if (ctrlPressed) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (_expansion.expansionSelectors.isItemExpanded(this.store.state, itemId)) {
|
|
200
|
+
const nextItemId = (0, _tree.getNextNavigableItem)(this.store.state, itemId);
|
|
201
|
+
if (nextItemId) {
|
|
202
|
+
this.store.focus.focusItem(event, nextItemId);
|
|
203
|
+
event.preventDefault();
|
|
204
|
+
}
|
|
205
|
+
} else if (this.canToggleItemExpansion(itemId)) {
|
|
206
|
+
this.store.expansion.setItemExpansion({
|
|
207
|
+
event,
|
|
208
|
+
itemId
|
|
209
|
+
});
|
|
210
|
+
event.preventDefault();
|
|
211
|
+
}
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// If the focused item is expanded, we collapse it
|
|
216
|
+
// If the focused item is collapsed and has a parent, we move the focus to this parent
|
|
217
|
+
case key === 'ArrowLeft' && !this.store.parameters.isRtl || key === 'ArrowRight' && this.store.parameters.isRtl:
|
|
218
|
+
{
|
|
219
|
+
if (ctrlPressed) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (this.canToggleItemExpansion(itemId) && _expansion.expansionSelectors.isItemExpanded(this.store.state, itemId)) {
|
|
223
|
+
this.store.expansion.setItemExpansion({
|
|
224
|
+
event,
|
|
225
|
+
itemId
|
|
226
|
+
});
|
|
227
|
+
event.preventDefault();
|
|
228
|
+
} else {
|
|
229
|
+
const parent = _items.itemsSelectors.itemParentId(this.store.state, itemId);
|
|
230
|
+
if (parent) {
|
|
231
|
+
this.store.focus.focusItem(event, parent);
|
|
232
|
+
event.preventDefault();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Focuses the first item in the tree
|
|
239
|
+
case key === 'Home':
|
|
240
|
+
{
|
|
241
|
+
// Multi select behavior when pressing Ctrl + Shift + Home
|
|
242
|
+
// Selects the focused item and all items up to the first item.
|
|
243
|
+
if (this.canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
|
|
244
|
+
this.store.selection.selectRangeFromStartToItem(event, itemId);
|
|
245
|
+
} else {
|
|
246
|
+
this.store.focus.focusItem(event, (0, _tree.getFirstNavigableItem)(this.store.state));
|
|
247
|
+
}
|
|
248
|
+
event.preventDefault();
|
|
249
|
+
break;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// Focuses the last item in the tree
|
|
253
|
+
case key === 'End':
|
|
254
|
+
{
|
|
255
|
+
// Multi select behavior when pressing Ctrl + Shirt + End
|
|
256
|
+
// Selects the focused item and all the items down to the last item.
|
|
257
|
+
if (this.canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
|
|
258
|
+
this.store.selection.selectRangeFromItemToEnd(event, itemId);
|
|
259
|
+
} else {
|
|
260
|
+
this.store.focus.focusItem(event, (0, _tree.getLastNavigableItem)(this.store.state));
|
|
261
|
+
}
|
|
262
|
+
event.preventDefault();
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Expand all siblings that are at the same level as the focused item
|
|
267
|
+
case key === '*':
|
|
268
|
+
{
|
|
269
|
+
this.store.expansion.expandAllSiblings(event, itemId);
|
|
270
|
+
event.preventDefault();
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Multi select behavior when pressing Ctrl + a
|
|
275
|
+
// Selects all the items
|
|
276
|
+
case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && isMultiSelectEnabled && _selectors.selectionSelectors.enabled(this.store.state):
|
|
277
|
+
{
|
|
278
|
+
this.store.selection.selectAllNavigableItems(event);
|
|
279
|
+
event.preventDefault();
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Type-ahead
|
|
284
|
+
case !ctrlPressed && !event.shiftKey && isPrintableKey(key):
|
|
285
|
+
{
|
|
286
|
+
this.store.timeoutManager.clearTimeout('typeahead');
|
|
287
|
+
const matchingItem = this.getFirstItemMatchingTypeaheadQuery(itemId, key);
|
|
288
|
+
if (matchingItem != null) {
|
|
289
|
+
this.store.focus.focusItem(event, matchingItem);
|
|
290
|
+
event.preventDefault();
|
|
291
|
+
} else {
|
|
292
|
+
this.typeaheadQuery = '';
|
|
293
|
+
}
|
|
294
|
+
this.store.timeoutManager.startTimeout('typeahead', TYPEAHEAD_TIMEOUT, () => {
|
|
295
|
+
this.typeaheadQuery = '';
|
|
296
|
+
});
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
exports.TreeViewKeyboardNavigationPlugin = TreeViewKeyboardNavigationPlugin;
|
|
303
|
+
function isPrintableKey(string) {
|
|
304
|
+
return !!string && string.length === 1 && !!string.match(/\S/);
|
|
305
|
+
}
|
|
306
|
+
function createLabelMapFromItemMetaLookup(itemMetaLookup) {
|
|
307
|
+
const labelMap = {};
|
|
308
|
+
const processItem = item => {
|
|
309
|
+
labelMap[item.id] = item.label.toLowerCase();
|
|
310
|
+
};
|
|
311
|
+
Object.values(itemMetaLookup).forEach(processItem);
|
|
312
|
+
return labelMap;
|
|
313
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./TreeViewKeyboardNavigationPlugin.js";
|