@mui/x-tree-view 8.0.0-alpha.1 → 8.0.0-alpha.10

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.
Files changed (52) hide show
  1. package/CHANGELOG.md +1903 -231
  2. package/README.md +1 -1
  3. package/RichTreeView/RichTreeView.types.d.ts +3 -3
  4. package/SimpleTreeView/SimpleTreeView.types.d.ts +3 -3
  5. package/TreeItem/TreeItem.d.ts +1 -1
  6. package/TreeItem/TreeItem.types.d.ts +1 -1
  7. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
  8. package/TreeItemIcon/TreeItemIcon.types.d.ts +1 -1
  9. package/TreeItemProvider/TreeItemProvider.d.ts +2 -4
  10. package/TreeItemProvider/TreeItemProvider.js +13 -11
  11. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +4 -4
  12. package/hooks/useTreeViewApiRef.d.ts +2 -1
  13. package/index.js +1 -1
  14. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +1 -1
  15. package/internals/components/RichTreeViewItems.d.ts +1 -1
  16. package/internals/hooks/useInstanceEventHandler.js +1 -1
  17. package/internals/models/itemPlugin.d.ts +3 -3
  18. package/internals/models/plugin.d.ts +3 -3
  19. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +23 -24
  20. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +66 -10
  21. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +8 -1
  22. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +1 -5
  23. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +3 -0
  24. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +12 -0
  25. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +1 -1
  26. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +252 -84
  27. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +26 -8
  28. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +13 -16
  29. package/internals/useTreeView/useTreeView.d.ts +1 -1
  30. package/internals/useTreeView/useTreeView.types.d.ts +2 -2
  31. package/internals/useTreeView/useTreeViewBuildContext.d.ts +1 -1
  32. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
  33. package/modern/TreeItemProvider/TreeItemProvider.js +13 -11
  34. package/modern/index.js +1 -1
  35. package/modern/internals/hooks/useInstanceEventHandler.js +1 -1
  36. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +23 -24
  37. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +8 -1
  38. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +12 -0
  39. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +13 -16
  40. package/modern/useTreeItem/useTreeItem.js +3 -5
  41. package/node/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +2 -2
  42. package/node/TreeItemProvider/TreeItemProvider.js +13 -10
  43. package/node/index.js +1 -1
  44. package/node/internals/hooks/useInstanceEventHandler.js +1 -1
  45. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +22 -24
  46. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +9 -2
  47. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +15 -2
  48. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +13 -16
  49. package/node/useTreeItem/useTreeItem.js +3 -5
  50. package/package.json +5 -5
  51. package/useTreeItem/useTreeItem.js +3 -5
  52. package/useTreeItem/useTreeItem.types.d.ts +1 -1
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createExpandedItemsMap = void 0;
6
+ exports.getExpansionTrigger = exports.createExpandedItemsMap = void 0;
7
7
  const createExpandedItemsMap = expandedItems => {
8
8
  const expandedItemsMap = new Map();
9
9
  expandedItems.forEach(id => {
@@ -11,4 +11,17 @@ const createExpandedItemsMap = expandedItems => {
11
11
  });
12
12
  return expandedItemsMap;
13
13
  };
14
- exports.createExpandedItemsMap = createExpandedItemsMap;
14
+ exports.createExpandedItemsMap = createExpandedItemsMap;
15
+ const getExpansionTrigger = ({
16
+ isItemEditable,
17
+ expansionTrigger
18
+ }) => {
19
+ if (expansionTrigger) {
20
+ return expansionTrigger;
21
+ }
22
+ if (isItemEditable) {
23
+ return 'iconContainer';
24
+ }
25
+ return 'content';
26
+ };
27
+ exports.getExpansionTrigger = getExpansionTrigger;
@@ -9,19 +9,18 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
  var _TreeViewProvider = require("../../TreeViewProvider");
10
10
  var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
11
11
  var _useTreeViewSelection = require("./useTreeViewSelection.selectors");
12
- function getCheckboxStatus({
12
+ var _useSelector = require("../../hooks/useSelector");
13
+ function selectorItemCheckboxStatus(state, {
13
14
  itemId,
14
- store,
15
- selectionPropagation,
16
- selected
15
+ selectionPropagation
17
16
  }) {
18
- if (selected) {
17
+ if ((0, _useTreeViewSelection.selectorIsItemSelected)(state, itemId)) {
19
18
  return {
20
19
  indeterminate: false,
21
20
  checked: true
22
21
  };
23
22
  }
24
- const children = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(store.value, itemId);
23
+ const children = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, itemId);
25
24
  if (children.length === 0) {
26
25
  return {
27
26
  indeterminate: false,
@@ -32,18 +31,18 @@ function getCheckboxStatus({
32
31
  let hasUnSelectedDescendant = false;
33
32
  const traverseDescendants = itemToTraverseId => {
34
33
  if (itemToTraverseId !== itemId) {
35
- if ((0, _useTreeViewSelection.selectorIsItemSelected)(store.value, itemToTraverseId)) {
34
+ if ((0, _useTreeViewSelection.selectorIsItemSelected)(state, itemToTraverseId)) {
36
35
  hasSelectedDescendant = true;
37
36
  } else {
38
37
  hasUnSelectedDescendant = true;
39
38
  }
40
39
  }
41
- (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(store.value, itemToTraverseId).forEach(traverseDescendants);
40
+ (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, itemToTraverseId).forEach(traverseDescendants);
42
41
  };
43
42
  traverseDescendants(itemId);
44
43
  return {
45
- indeterminate: hasSelectedDescendant && hasUnSelectedDescendant || !hasUnSelectedDescendant && !selected,
46
- checked: selectionPropagation.parents ? hasSelectedDescendant : selected
44
+ indeterminate: hasSelectedDescendant && hasUnSelectedDescendant || !hasUnSelectedDescendant,
45
+ checked: selectionPropagation.parents ? hasSelectedDescendant : false
47
46
  };
48
47
  }
49
48
  const useTreeViewSelectionItemPlugin = ({
@@ -60,6 +59,10 @@ const useTreeViewSelectionItemPlugin = ({
60
59
  selectionPropagation
61
60
  }
62
61
  } = (0, _TreeViewProvider.useTreeViewContext)();
62
+ const checkboxStatus = (0, _useSelector.useSelector)(store, selectorItemCheckboxStatus, {
63
+ itemId,
64
+ selectionPropagation
65
+ }, (a, b) => a.checked === b.checked && a.indeterminate === b.indeterminate);
63
66
  return {
64
67
  propsEnhancers: {
65
68
  checkbox: ({
@@ -77,12 +80,6 @@ const useTreeViewSelectionItemPlugin = ({
77
80
  }
78
81
  interactions.handleCheckboxSelection(event);
79
82
  };
80
- const checkboxStatus = getCheckboxStatus({
81
- store,
82
- itemId,
83
- selectionPropagation,
84
- selected: status.selected
85
- });
86
83
  return (0, _extends2.default)({
87
84
  visible: checkboxSelection,
88
85
  disabled: disableSelection || status.disabled,
@@ -20,6 +20,7 @@ var _useTreeViewFocus = require("../internals/plugins/useTreeViewFocus/useTreeVi
20
20
  var _useTreeViewId = require("../internals/corePlugins/useTreeViewId/useTreeViewId.utils");
21
21
  var _useTreeViewItems = require("../internals/plugins/useTreeViewItems/useTreeViewItems.selectors");
22
22
  var _useTreeViewId2 = require("../internals/corePlugins/useTreeViewId/useTreeViewId.selectors");
23
+ var _useTreeViewExpansion = require("../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors");
23
24
  const useTreeItem = parameters => {
24
25
  const {
25
26
  runItemPlugins,
@@ -30,9 +31,6 @@ const useTreeItem = parameters => {
30
31
  disableSelection,
31
32
  checkboxSelection
32
33
  },
33
- expansion: {
34
- expansionTrigger
35
- },
36
34
  label: labelContext,
37
35
  instance,
38
36
  publicAPI,
@@ -129,7 +127,7 @@ const useTreeItem = parameters => {
129
127
  if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
130
128
  return;
131
129
  }
132
- if (expansionTrigger === 'content') {
130
+ if ((0, _useTreeViewExpansion.selectorItemExpansionTrigger)(store.value) === 'content') {
133
131
  interactions.handleExpansion(event);
134
132
  }
135
133
  if (!checkboxSelection) {
@@ -152,7 +150,7 @@ const useTreeItem = parameters => {
152
150
  if (event.defaultMuiPrevented) {
153
151
  return;
154
152
  }
155
- if (expansionTrigger === 'iconContainer') {
153
+ if ((0, _useTreeViewExpansion.selectorItemExpansionTrigger)(store.value) === 'iconContainer') {
156
154
  interactions.handleExpansion(event);
157
155
  }
158
156
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "8.0.0-alpha.1",
3
+ "version": "8.0.0-alpha.10",
4
4
  "description": "The community edition of the Tree View components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -33,15 +33,15 @@
33
33
  "directory": "packages/x-tree-view"
34
34
  },
35
35
  "dependencies": {
36
- "@babel/runtime": "^7.26.0",
36
+ "@babel/runtime": "^7.26.7",
37
37
  "@mui/utils": "^5.16.6 || ^6.0.0",
38
- "@types/react-transition-group": "^4.4.11",
38
+ "@types/react-transition-group": "^4.4.12",
39
39
  "clsx": "^2.1.1",
40
40
  "prop-types": "^15.8.1",
41
41
  "react-transition-group": "^4.4.5",
42
42
  "reselect": "^5.1.1",
43
- "use-sync-external-store": "^1.2.2",
44
- "@mui/x-internals": "8.0.0-alpha.1"
43
+ "use-sync-external-store": "^1.4.0",
44
+ "@mui/x-internals": "8.0.0-alpha.10"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",
@@ -13,6 +13,7 @@ import { selectorIsItemTheDefaultFocusableItem } from "../internals/plugins/useT
13
13
  import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
14
14
  import { selectorCanItemBeFocused } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
15
15
  import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
16
+ import { selectorItemExpansionTrigger } from "../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
16
17
  export const useTreeItem = parameters => {
17
18
  const {
18
19
  runItemPlugins,
@@ -23,9 +24,6 @@ export const useTreeItem = parameters => {
23
24
  disableSelection,
24
25
  checkboxSelection
25
26
  },
26
- expansion: {
27
- expansionTrigger
28
- },
29
27
  label: labelContext,
30
28
  instance,
31
29
  publicAPI,
@@ -122,7 +120,7 @@ export const useTreeItem = parameters => {
122
120
  if (event.defaultMuiPrevented || checkboxRef.current?.contains(event.target)) {
123
121
  return;
124
122
  }
125
- if (expansionTrigger === 'content') {
123
+ if (selectorItemExpansionTrigger(store.value) === 'content') {
126
124
  interactions.handleExpansion(event);
127
125
  }
128
126
  if (!checkboxSelection) {
@@ -145,7 +143,7 @@ export const useTreeItem = parameters => {
145
143
  if (event.defaultMuiPrevented) {
146
144
  return;
147
145
  }
148
- if (expansionTrigger === 'iconContainer') {
146
+ if (selectorItemExpansionTrigger(store.value) === 'iconContainer') {
149
147
  interactions.handleExpansion(event);
150
148
  }
151
149
  };
@@ -78,7 +78,7 @@ export interface UseTreeItemLabelInputSlotOwnProps {
78
78
  }
79
79
  export type UseTreeItemLabelInputSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemLabelInputSlotOwnProps;
80
80
  export interface UseTreeItemCheckboxSlotOwnProps {
81
- ref: React.RefObject<HTMLButtonElement>;
81
+ ref: React.RefObject<HTMLButtonElement | null>;
82
82
  }
83
83
  export type UseTreeItemCheckboxSlotProps<ExternalProps = {}> = ExternalProps & UseTreeItemCheckboxSlotOwnProps;
84
84
  export interface UseTreeItemGroupTransitionSlotOwnProps {