@mui/x-tree-view 8.0.0-alpha.13 → 8.0.0-alpha.14

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 (120) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/RichTreeView/RichTreeView.js +24 -5
  3. package/SimpleTreeView/SimpleTreeView.js +8 -6
  4. package/TreeItem/TreeItem.d.ts +2 -0
  5. package/TreeItem/TreeItem.js +46 -5
  6. package/TreeItem/TreeItem.types.d.ts +14 -0
  7. package/TreeItemIcon/TreeItemIcon.js +2 -0
  8. package/esm/RichTreeView/RichTreeView.js +24 -5
  9. package/esm/SimpleTreeView/SimpleTreeView.js +8 -6
  10. package/esm/TreeItem/TreeItem.d.ts +2 -0
  11. package/esm/TreeItem/TreeItem.js +45 -4
  12. package/esm/TreeItem/TreeItem.types.d.ts +14 -0
  13. package/esm/TreeItemIcon/TreeItemIcon.js +2 -0
  14. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
  15. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +21 -9
  16. package/esm/hooks/useTreeViewApiRef.d.ts +1 -1
  17. package/esm/index.js +1 -1
  18. package/esm/internals/index.d.ts +6 -1
  19. package/esm/internals/index.js +4 -1
  20. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
  21. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
  22. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
  23. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
  24. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
  25. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +13 -0
  26. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
  27. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
  28. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
  29. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
  30. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  31. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
  32. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
  33. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +27 -0
  34. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
  35. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +1 -0
  36. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
  37. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
  38. package/esm/internals/utils/selectors.d.ts +7 -0
  39. package/esm/internals/utils/selectors.js +9 -0
  40. package/esm/useTreeItem/useTreeItem.d.ts +1 -1
  41. package/esm/useTreeItem/useTreeItem.js +13 -0
  42. package/esm/useTreeItem/useTreeItem.types.d.ts +21 -0
  43. package/esm/utils/cache.d.ts +38 -0
  44. package/esm/utils/cache.js +31 -0
  45. package/esm/utils/index.d.ts +1 -0
  46. package/esm/utils/index.js +1 -0
  47. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
  48. package/hooks/useTreeItemUtils/useTreeItemUtils.js +22 -10
  49. package/hooks/useTreeViewApiRef.d.ts +1 -1
  50. package/index.js +1 -1
  51. package/internals/index.d.ts +6 -1
  52. package/internals/index.js +33 -0
  53. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
  54. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
  55. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
  56. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
  57. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
  58. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +14 -1
  59. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
  60. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
  61. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
  62. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
  63. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  64. package/internals/plugins/useTreeViewLazyLoading/index.js +5 -0
  65. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
  66. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +33 -0
  67. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
  68. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +5 -0
  69. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
  70. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
  71. package/internals/utils/selectors.d.ts +7 -0
  72. package/internals/utils/selectors.js +9 -0
  73. package/modern/RichTreeView/RichTreeView.js +24 -5
  74. package/modern/SimpleTreeView/SimpleTreeView.js +8 -6
  75. package/modern/TreeItem/TreeItem.d.ts +2 -0
  76. package/modern/TreeItem/TreeItem.js +45 -4
  77. package/modern/TreeItem/TreeItem.types.d.ts +14 -0
  78. package/modern/TreeItemIcon/TreeItemIcon.js +2 -0
  79. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
  80. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +21 -9
  81. package/modern/hooks/useTreeViewApiRef.d.ts +1 -1
  82. package/modern/index.js +1 -1
  83. package/modern/internals/index.d.ts +6 -1
  84. package/modern/internals/index.js +4 -1
  85. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
  86. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
  87. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
  88. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
  89. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
  90. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +13 -0
  91. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
  92. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
  93. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
  94. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
  95. package/modern/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  96. package/modern/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
  97. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
  98. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +27 -0
  99. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
  100. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +1 -0
  101. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
  102. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
  103. package/modern/internals/utils/selectors.d.ts +7 -0
  104. package/modern/internals/utils/selectors.js +9 -0
  105. package/modern/useTreeItem/useTreeItem.d.ts +1 -1
  106. package/modern/useTreeItem/useTreeItem.js +13 -0
  107. package/modern/useTreeItem/useTreeItem.types.d.ts +21 -0
  108. package/modern/utils/cache.d.ts +38 -0
  109. package/modern/utils/cache.js +31 -0
  110. package/modern/utils/index.d.ts +1 -0
  111. package/modern/utils/index.js +1 -0
  112. package/package.json +1 -1
  113. package/tsconfig.build.tsbuildinfo +1 -1
  114. package/useTreeItem/useTreeItem.d.ts +1 -1
  115. package/useTreeItem/useTreeItem.js +13 -0
  116. package/useTreeItem/useTreeItem.types.d.ts +21 -0
  117. package/utils/cache.d.ts +38 -0
  118. package/utils/cache.js +38 -0
  119. package/utils/index.d.ts +1 -0
  120. package/utils/index.js +16 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,137 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.0.0-alpha.14
9
+
10
+ _Mar 7, 2025_
11
+
12
+ We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🚀📊 New Pro Chart: It is now possible to create Funnel charts—perfect for visualizing conversions, sales pipelines and more!
15
+ <img width="418" alt="Screenshot 2025-01-31 at 12 22 31" src="https://github.com/user-attachments/assets/8cd26821-5f11-46bf-a9bb-34d212880a47" />
16
+ - 🎁 The first iteration of the radar chart is available. Features and refinements will be added in the coming weeks.
17
+ - 🛠️ New and improved [Toolbar component](https://next.mui.com/x/react-data-grid/components/toolbar/) for the data grid
18
+ - 🐞 Bugfixes
19
+
20
+ Special thanks go out to the community member for their valuable contributions:
21
+ @vadimka123.
22
+
23
+ Following are all team members who have contributed to this release:
24
+ @alexfauquette, @arminmeh, @bernardobelchior, @cherniavskii, @flaviendelangle, @JCQuintas, @KenanYusuf, @LukasTy, @michelengelen, @noraleonte, @oliviertassinari.
25
+
26
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
27
+
28
+ ### Data Grid
29
+
30
+ #### Breaking changes
31
+
32
+ - The density selector has been removed from the toolbar. It is still possible to set the density programmatically via the `density` prop. A density selector can be added to a custom toolbar passed to `slots.toolbar`. See [Toolbar component—Settings menu](https://next.mui.com/x/react-data-grid/components/toolbar/#settings-menu) for an example.
33
+ - The quick filter is now shown in the toolbar by default. Use `slotProps={{ toolbar: { showQuickFilter: false } }}` to hide it.
34
+ - The `<GridSaveAltIcon />` icon is not exported anymore. Import `SaveAlt` from `@mui/icons-material` instead.
35
+
36
+ #### `@mui/x-data-grid@8.0.0-alpha.14`
37
+
38
+ - [DataGrid] Fix `aria-hidden` console error when scrollbar is dragged (#16829) @arminmeh
39
+ - [DataGrid] Fix scroll jump with dynamic row height (#16763) @cherniavskii
40
+ - [DataGrid] New `<Toolbar />` component (#14611) @KenanYusuf
41
+ - [DataGrid] Use new toolbar by default (#16814) @KenanYusuf
42
+ - [DataGrid] Remove the quick filtering on a given column (#16738) @vadimka123
43
+
44
+ #### `@mui/x-data-grid-pro@8.0.0-alpha.14` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
45
+
46
+ Same changes as in `@mui/x-data-grid@8.0.0-alpha.14`.
47
+
48
+ #### `@mui/x-data-grid-premium@8.0.0-alpha.14` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
49
+
50
+ Same changes as in `@mui/x-data-grid-pro@8.0.0-alpha.14`.
51
+
52
+ ### Date and Time Pickers
53
+
54
+ #### Breaking changes
55
+
56
+ - All Date Time Picker variants now use Digital Clock for time editing.
57
+ - Stop passing invalid date to `onChange` when the date is partially filled — [Learn more](https://next.mui.com/x/migration/migration-pickers-v7/#treat-partially-filled-date-as-null-in-onchange).
58
+
59
+ #### `@mui/x-date-pickers@8.0.0-alpha.14`
60
+
61
+ - [DateTimePicker] Use Digital Clock in all component variants (#16678) @LukasTy
62
+ - [fields] Always use `props.value` as the source of truth when defined (#15875) @flaviendelangle
63
+ - [fields] Fix Fields aria relationship with `helperText` (#16821) @LukasTy
64
+ - [pickers] Add `TValidationProps` generic to the `PickerManager` interface (#16832) @flaviendelangle
65
+ - [pickers] Fix `edge` property setting in different button position cases (#16838) @LukasTy
66
+ - [pickers] Fix typo in JSDoc (#16831) @flaviendelangle
67
+ - [pickers] Refactor the files in the `usePicker` folder (#16680) @flaviendelangle
68
+
69
+ #### `@mui/x-date-pickers-pro@8.0.0-alpha.14` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
70
+
71
+ Same changes as in `@mui/x-date-pickers@8.0.0-alpha.14`.
72
+
73
+ ### Charts
74
+
75
+ #### `@mui/x-charts@8.0.0-alpha.14`
76
+
77
+ - [charts] Fix `undefined` behaving differently from missing value for axis size (#16844) @bernardobelchior
78
+ - [charts] Fix x-axis text anchor default when language is RTL (#16836) @bernardobelchior
79
+ - [charts] Add Radar chart (#16406) @alexfauquette
80
+ - [charts] Move series default color generation in the series config (#16752) @alexfauquette
81
+ - [charts] Render axis title within axis size (#16730) @bernardobelchior
82
+ - [charts] Split `defaultizeAxis` function into two (#16745) @bernardobelchior
83
+ - [charts] Warn if axes data don't have enough elements (#16830) @alexfauquette
84
+ - [charts] XAxis: Add defaults for `textAnchor` and `dominantBaseline` based on `angle` (#16817) @bernardobelchior
85
+
86
+ #### `@mui/x-charts-pro@8.0.0-alpha.14` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
87
+
88
+ Same changes as in `@mui/x-charts@8.0.0-alpha.14`, plus:
89
+
90
+ - [charts] Add Funnel chart (#14804) @JCQuintas
91
+
92
+ ### Tree View
93
+
94
+ #### Breaking changes
95
+
96
+ - The `selectItem` method has been renamed `setItemSelection`:
97
+
98
+ ```diff
99
+ const { publicAPI } = useTreeItemUtils();
100
+
101
+ const handleSelectItem() {
102
+ - publicAPI.selectItem({ event, itemId: props.itemId, shouldBeSelected: true })
103
+ + publicAPI.setItemSelection({ event, itemId: props.itemId, shouldBeSelected: true })
104
+ }
105
+ ```
106
+
107
+ - The `setItemExpansion` method now receives a single object instead of a list of parameters:
108
+
109
+ ```diff
110
+ const { publicAPI } = useTreeItemUtils();
111
+
112
+ const handleExpandItem() {
113
+ - publicAPI.setItemExpansion(event, props.itemId, true)
114
+ + publicAPI.setItemExpansion({ event, itemId: props.itemId, shouldBeExpanded: true })
115
+ }
116
+ ```
117
+
118
+ #### `@mui/x-tree-view@8.0.0-alpha.14`
119
+
120
+ - [TreeView] Clean the expansion and selection API methods (#16795) @flaviendelangle
121
+
122
+ #### `@mui/x-tree-view-pro@8.0.0-alpha.14` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
123
+
124
+ Same changes as in `@mui/x-tree-view@8.0.0-alpha.14`.
125
+
126
+ ### Docs
127
+
128
+ - [docs] Fix padding package install on mobile (#16794) @oliviertassinari
129
+ - [docs] Typo fixes (#16835) @alexfauquette
130
+
131
+ ### Core
132
+
133
+ - [code-infra] Fix console warning in telemetry package (#16816) @JCQuintas
134
+ - [code-infra] Split date-picker test files (#16825) @JCQuintas
135
+ - [infra] Replace PR label check workflow with reusable version (#16762) @michelengelen
136
+ - [infra] Update label in priority-support issue template (#16767) @michelengelen
137
+ - [test] Add timeout to flaky screenshot tests (#16852) @LukasTy
138
+
8
139
  ## 8.0.0-alpha.13
9
140
 
10
141
  _Feb 28, 2025_
@@ -10,6 +10,8 @@ exports.RichTreeViewRoot = exports.RichTreeView = void 0;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
14
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
13
15
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14
16
  var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps"));
15
17
  var _warning = require("@mui/x-internals/warning");
@@ -19,6 +21,8 @@ var _useTreeView = require("../internals/useTreeView");
19
21
  var _TreeViewProvider = require("../internals/TreeViewProvider");
20
22
  var _RichTreeView = require("./RichTreeView.plugins");
21
23
  var _RichTreeViewItems = require("../internals/components/RichTreeViewItems");
24
+ var _useSelector = require("../internals/hooks/useSelector");
25
+ var _useTreeViewItems = require("../internals/plugins/useTreeViewItems/useTreeViewItems.selectors");
22
26
  var _jsxRuntime = require("react/jsx-runtime");
23
27
  const useThemeProps = (0, _zeroStyled.createUseThemeProps)('MuiRichTreeView');
24
28
  const useUtilityClasses = ownerState => {
@@ -69,6 +73,8 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
69
73
  rootRef: ref,
70
74
  props
71
75
  });
76
+ const isLoading = (0, _useSelector.useSelector)(contextValue.store, _useTreeViewItems.selectorIsTreeViewLoading);
77
+ const treeViewError = (0, _useSelector.useSelector)(contextValue.store, _useTreeViewItems.selectorGetTreeViewError);
72
78
  const {
73
79
  slots,
74
80
  slotProps
@@ -82,6 +88,17 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
82
88
  getSlotProps: getRootProps,
83
89
  ownerState: props
84
90
  });
91
+ if (isLoading) {
92
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
93
+ children: "Loading..."
94
+ });
95
+ }
96
+ if (treeViewError) {
97
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
98
+ severity: "error",
99
+ children: treeViewError.message
100
+ });
101
+ }
85
102
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, {
86
103
  value: contextValue,
87
104
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, (0, _extends2.default)({}, rootProps, {
@@ -107,8 +124,10 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
107
124
  getItemDOMElement: _propTypes.default.func.isRequired,
108
125
  getItemOrderedChildrenIds: _propTypes.default.func.isRequired,
109
126
  getItemTree: _propTypes.default.func.isRequired,
110
- selectItem: _propTypes.default.func.isRequired,
127
+ getParentId: _propTypes.default.func.isRequired,
128
+ setIsItemDisabled: _propTypes.default.func.isRequired,
111
129
  setItemExpansion: _propTypes.default.func.isRequired,
130
+ setItemSelection: _propTypes.default.func.isRequired,
112
131
  updateItemLabel: _propTypes.default.func.isRequired
113
132
  })
114
133
  }),
@@ -212,7 +231,7 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
212
231
  multiSelect: _propTypes.default.bool,
213
232
  /**
214
233
  * Callback fired when Tree Items are expanded/collapsed.
215
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
234
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
216
235
  * @param {array} itemIds The ids of the expanded items.
217
236
  */
218
237
  onExpandedItemsChange: _propTypes.default.func,
@@ -224,7 +243,7 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
224
243
  onItemClick: _propTypes.default.func,
225
244
  /**
226
245
  * Callback fired when a Tree Item is expanded or collapsed.
227
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
246
+ * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
228
247
  * @param {array} itemId The itemId of the modified item.
229
248
  * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
230
249
  */
@@ -243,14 +262,14 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
243
262
  onItemLabelChange: _propTypes.default.func,
244
263
  /**
245
264
  * Callback fired when a Tree Item is selected or deselected.
246
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
265
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
247
266
  * @param {array} itemId The itemId of the modified item.
248
267
  * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
249
268
  */
250
269
  onItemSelectionToggle: _propTypes.default.func,
251
270
  /**
252
271
  * Callback fired when Tree Items are selected/deselected.
253
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
272
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
254
273
  * @param {string[] | string} itemIds The ids of the selected items.
255
274
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
256
275
  */
@@ -106,8 +106,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
106
106
  getItemDOMElement: _propTypes.default.func.isRequired,
107
107
  getItemOrderedChildrenIds: _propTypes.default.func.isRequired,
108
108
  getItemTree: _propTypes.default.func.isRequired,
109
- selectItem: _propTypes.default.func.isRequired,
110
- setItemExpansion: _propTypes.default.func.isRequired
109
+ getParentId: _propTypes.default.func.isRequired,
110
+ setIsItemDisabled: _propTypes.default.func.isRequired,
111
+ setItemExpansion: _propTypes.default.func.isRequired,
112
+ setItemSelection: _propTypes.default.func.isRequired
111
113
  })
112
114
  }),
113
115
  /**
@@ -180,7 +182,7 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
180
182
  multiSelect: _propTypes.default.bool,
181
183
  /**
182
184
  * Callback fired when Tree Items are expanded/collapsed.
183
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
185
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
184
186
  * @param {array} itemIds The ids of the expanded items.
185
187
  */
186
188
  onExpandedItemsChange: _propTypes.default.func,
@@ -192,7 +194,7 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
192
194
  onItemClick: _propTypes.default.func,
193
195
  /**
194
196
  * Callback fired when a Tree Item is expanded or collapsed.
195
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
197
+ * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
196
198
  * @param {array} itemId The itemId of the modified item.
197
199
  * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
198
200
  */
@@ -205,14 +207,14 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
205
207
  onItemFocus: _propTypes.default.func,
206
208
  /**
207
209
  * Callback fired when a Tree Item is selected or deselected.
208
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
210
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
209
211
  * @param {array} itemId The itemId of the modified item.
210
212
  * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
211
213
  */
212
214
  onItemSelectionToggle: _propTypes.default.func,
213
215
  /**
214
216
  * Callback fired when Tree Items are selected/deselected.
215
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
217
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
216
218
  * @param {string[] | string} itemIds The ids of the selected items.
217
219
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
218
220
  */
@@ -11,6 +11,8 @@ export declare const TreeItemLabel: import("@emotion/styled").StyledComponent<im
11
11
  }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
12
12
  export declare const TreeItemIconContainer: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
13
13
  export declare const TreeItemGroupTransition: import("@emotion/styled").StyledComponent<Pick<import("@mui/material").CollapseProps, keyof import("@mui/material").CollapseProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
14
+ export declare const TreeItemErrorContainer: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
15
+ export declare const TreeItemLoadingContainer: import("@emotion/styled").StyledComponent<Pick<import("@mui/material").CircularProgressProps, keyof import("@mui/material").CircularProgressProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
14
16
  export declare const TreeItemCheckbox: import("@emotion/styled").StyledComponent<Pick<Omit<CheckboxProps & {
15
17
  visible?: boolean;
16
18
  }, "ref"> & React.RefAttributes<HTMLButtonElement>, "hidden" | "visible" | "color" | "content" | "size" | "style" | "icon" | "translate" | "disabled" | "form" | "slot" | "title" | "action" | "checked" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "readOnly" | "required" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "component" | "sx" | "classes" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "checkedIcon" | "inputProps" | "inputRef" | "indeterminate" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
@@ -6,12 +6,13 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.TreeItemRoot = exports.TreeItemLabel = exports.TreeItemIconContainer = exports.TreeItemGroupTransition = exports.TreeItemContent = exports.TreeItemCheckbox = exports.TreeItem = void 0;
9
+ exports.TreeItemRoot = exports.TreeItemLoadingContainer = exports.TreeItemLabel = exports.TreeItemIconContainer = exports.TreeItemGroupTransition = exports.TreeItemErrorContainer = exports.TreeItemContent = exports.TreeItemCheckbox = exports.TreeItem = void 0;
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _propTypes = _interopRequireDefault(require("prop-types"));
14
14
  var _clsx = _interopRequireDefault(require("clsx"));
15
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
15
16
  var _unsupportedProp = _interopRequireDefault(require("@mui/utils/unsupportedProp"));
16
17
  var _styles = require("@mui/material/styles");
17
18
  var _Collapse = _interopRequireDefault(require("@mui/material/Collapse"));
@@ -139,6 +140,7 @@ const TreeItemIconContainer = exports.TreeItemIconContainer = (0, _zeroStyled.st
139
140
  display: 'flex',
140
141
  flexShrink: 0,
141
142
  justifyContent: 'center',
143
+ position: 'relative',
142
144
  '& svg': {
143
145
  fontSize: 18
144
146
  }
@@ -151,6 +153,25 @@ const TreeItemGroupTransition = exports.TreeItemGroupTransition = (0, _zeroStyle
151
153
  margin: 0,
152
154
  padding: 0
153
155
  });
156
+ const TreeItemErrorContainer = exports.TreeItemErrorContainer = (0, _zeroStyled.styled)('div', {
157
+ name: 'MuiTreeItem',
158
+ slot: 'ErrorIcon',
159
+ overridesResolver: (props, styles) => styles.errorIcon
160
+ })({
161
+ position: 'absolute',
162
+ right: -3,
163
+ width: 7,
164
+ height: 7,
165
+ borderRadius: '50%',
166
+ backgroundColor: 'red'
167
+ });
168
+ const TreeItemLoadingContainer = exports.TreeItemLoadingContainer = (0, _zeroStyled.styled)(_CircularProgress.default, {
169
+ name: 'MuiTreeItem',
170
+ slot: 'LoadingIcon',
171
+ overridesResolver: (props, styles) => styles.loadingIcon
172
+ })({
173
+ color: 'text.primary'
174
+ });
154
175
  const TreeItemCheckbox = exports.TreeItemCheckbox = (0, _zeroStyled.styled)(/*#__PURE__*/React.forwardRef((props, ref) => {
155
176
  const {
156
177
  visible
@@ -187,7 +208,9 @@ const useUtilityClasses = ownerState => {
187
208
  label: ['label'],
188
209
  groupTransition: ['groupTransition'],
189
210
  labelInput: ['labelInput'],
190
- dragAndDropOverlay: ['dragAndDropOverlay']
211
+ dragAndDropOverlay: ['dragAndDropOverlay'],
212
+ errorIcon: ['errorIcon'],
213
+ loadingIcon: ['loadingIcon']
191
214
  };
192
215
  return (0, _composeClasses.default)(slots, _treeItemClasses.getTreeItemUtilityClass, classes);
193
216
  };
@@ -226,6 +249,8 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
226
249
  getGroupTransitionProps,
227
250
  getLabelInputProps,
228
251
  getDragAndDropOverlayProps,
252
+ getErrorContainerProps,
253
+ getLoadingContainerProps,
229
254
  status
230
255
  } = (0, _useTreeItem.useTreeItem)({
231
256
  id,
@@ -304,15 +329,31 @@ const TreeItem = exports.TreeItem = /*#__PURE__*/React.forwardRef(function TreeI
304
329
  ownerState: {},
305
330
  className: classes.dragAndDropOverlay
306
331
  });
332
+ const ErrorIcon = slots.errorIcon ?? TreeItemErrorContainer;
333
+ const errorContainerProps = (0, _useSlotProps.default)({
334
+ elementType: ErrorIcon,
335
+ getSlotProps: getErrorContainerProps,
336
+ externalSlotProps: slotProps.errorIcon,
337
+ ownerState: {},
338
+ className: classes.errorIcon
339
+ });
340
+ const LoadingIcon = slots.loadingIcon ?? TreeItemLoadingContainer;
341
+ const loadingContainerProps = (0, _useSlotProps.default)({
342
+ elementType: LoadingIcon,
343
+ getSlotProps: getLoadingContainerProps,
344
+ externalSlotProps: slotProps.loadingIcon,
345
+ ownerState: {},
346
+ className: classes.loadingIcon
347
+ });
307
348
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItemProvider.TreeItemProvider, (0, _extends2.default)({}, getContextProviderProps(), {
308
349
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(Root, (0, _extends2.default)({}, rootProps, {
309
350
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(Content, (0, _extends2.default)({}, contentProps, {
310
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(IconContainer, (0, _extends2.default)({}, iconContainerProps, {
311
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItemIcon.TreeItemIcon, {
351
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(IconContainer, (0, _extends2.default)({}, iconContainerProps, {
352
+ children: [status.error && /*#__PURE__*/(0, _jsxRuntime.jsx)(ErrorIcon, (0, _extends2.default)({}, errorContainerProps)), status.loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(LoadingIcon, (0, _extends2.default)({}, loadingContainerProps)) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeItemIcon.TreeItemIcon, {
312
353
  status: status,
313
354
  slots: slots,
314
355
  slotProps: slotProps
315
- })
356
+ })]
316
357
  })), /*#__PURE__*/(0, _jsxRuntime.jsx)(Checkbox, (0, _extends2.default)({}, checkboxProps)), status.editing ? /*#__PURE__*/(0, _jsxRuntime.jsx)(LabelInput, (0, _extends2.default)({}, labelInputProps)) : /*#__PURE__*/(0, _jsxRuntime.jsx)(Label, (0, _extends2.default)({}, labelProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(DragAndDropOverlay, (0, _extends2.default)({}, dragAndDropOverlayProps))]
317
358
  })), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItemGroupTransition, (0, _extends2.default)({
318
359
  as: GroupTransition
@@ -49,6 +49,18 @@ export interface TreeItemSlots extends TreeItemIconSlots {
49
49
  * @default TreeItemDragAndDropOverlay
50
50
  */
51
51
  dragAndDropOverlay?: React.ElementType;
52
+ /**
53
+ * The component that is rendered when the item is in an error state.
54
+ * Warning: This slot is only useful when using the `<RichTreeViewPro />` component is lazy loading is enabled.
55
+ * @default TreeItemErrorContainer
56
+ */
57
+ errorIcon?: React.ElementType;
58
+ /**
59
+ * The component that is rendered when the item is in an loading state.
60
+ * Warning: This slot is only useful when using the `<RichTreeViewPro />` component is lazy loading is enabled.
61
+ * @default TreeItemLoadingContainer
62
+ */
63
+ loadingIcon?: React.ElementType;
52
64
  }
53
65
  export interface TreeItemSlotProps extends TreeItemIconSlotProps {
54
66
  root?: SlotComponentProps<'li', {}, {}>;
@@ -59,6 +71,8 @@ export interface TreeItemSlotProps extends TreeItemIconSlotProps {
59
71
  label?: SlotComponentProps<'div', {}, {}>;
60
72
  labelInput?: SlotComponentProps<'input', {}, {}>;
61
73
  dragAndDropOverlay?: SlotComponentProps<'div', {}, {}>;
74
+ errorIcon?: SlotComponentProps<'div', {}, {}>;
75
+ loadingIcon?: SlotComponentProps<'div', {}, {}>;
62
76
  }
63
77
  export interface TreeItemProps extends Omit<UseTreeItemParameters, 'rootRef'>, Omit<React.HTMLAttributes<HTMLLIElement>, 'onFocus'> {
64
78
  className?: string;
@@ -70,9 +70,11 @@ process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes = {
70
70
  disabled: _propTypes.default.bool.isRequired,
71
71
  editable: _propTypes.default.bool.isRequired,
72
72
  editing: _propTypes.default.bool.isRequired,
73
+ error: _propTypes.default.bool.isRequired,
73
74
  expandable: _propTypes.default.bool.isRequired,
74
75
  expanded: _propTypes.default.bool.isRequired,
75
76
  focused: _propTypes.default.bool.isRequired,
77
+ loading: _propTypes.default.bool.isRequired,
76
78
  selected: _propTypes.default.bool.isRequired
77
79
  }).isRequired
78
80
  } : void 0;
@@ -3,6 +3,8 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
+ import Alert from '@mui/material/Alert';
7
+ import Typography from '@mui/material/Typography';
6
8
  import composeClasses from '@mui/utils/composeClasses';
7
9
  import useSlotProps from '@mui/utils/useSlotProps';
8
10
  import { warnOnce } from '@mui/x-internals/warning';
@@ -12,6 +14,8 @@ import { useTreeView } from "../internals/useTreeView/index.js";
12
14
  import { TreeViewProvider } from "../internals/TreeViewProvider/index.js";
13
15
  import { RICH_TREE_VIEW_PLUGINS } from "./RichTreeView.plugins.js";
14
16
  import { RichTreeViewItems } from "../internals/components/RichTreeViewItems.js";
17
+ import { useSelector } from "../internals/hooks/useSelector.js";
18
+ import { selectorGetTreeViewError, selectorIsTreeViewLoading } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
15
19
  import { jsx as _jsx } from "react/jsx-runtime";
16
20
  const useThemeProps = createUseThemeProps('MuiRichTreeView');
17
21
  const useUtilityClasses = ownerState => {
@@ -62,6 +66,8 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
62
66
  rootRef: ref,
63
67
  props
64
68
  });
69
+ const isLoading = useSelector(contextValue.store, selectorIsTreeViewLoading);
70
+ const treeViewError = useSelector(contextValue.store, selectorGetTreeViewError);
65
71
  const {
66
72
  slots,
67
73
  slotProps
@@ -75,6 +81,17 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
75
81
  getSlotProps: getRootProps,
76
82
  ownerState: props
77
83
  });
84
+ if (isLoading) {
85
+ return /*#__PURE__*/_jsx(Typography, {
86
+ children: "Loading..."
87
+ });
88
+ }
89
+ if (treeViewError) {
90
+ return /*#__PURE__*/_jsx(Alert, {
91
+ severity: "error",
92
+ children: treeViewError.message
93
+ });
94
+ }
78
95
  return /*#__PURE__*/_jsx(TreeViewProvider, {
79
96
  value: contextValue,
80
97
  children: /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {
@@ -100,8 +117,10 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
100
117
  getItemDOMElement: PropTypes.func.isRequired,
101
118
  getItemOrderedChildrenIds: PropTypes.func.isRequired,
102
119
  getItemTree: PropTypes.func.isRequired,
103
- selectItem: PropTypes.func.isRequired,
120
+ getParentId: PropTypes.func.isRequired,
121
+ setIsItemDisabled: PropTypes.func.isRequired,
104
122
  setItemExpansion: PropTypes.func.isRequired,
123
+ setItemSelection: PropTypes.func.isRequired,
105
124
  updateItemLabel: PropTypes.func.isRequired
106
125
  })
107
126
  }),
@@ -205,7 +224,7 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
205
224
  multiSelect: PropTypes.bool,
206
225
  /**
207
226
  * Callback fired when Tree Items are expanded/collapsed.
208
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
227
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
209
228
  * @param {array} itemIds The ids of the expanded items.
210
229
  */
211
230
  onExpandedItemsChange: PropTypes.func,
@@ -217,7 +236,7 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
217
236
  onItemClick: PropTypes.func,
218
237
  /**
219
238
  * Callback fired when a Tree Item is expanded or collapsed.
220
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
239
+ * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
221
240
  * @param {array} itemId The itemId of the modified item.
222
241
  * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
223
242
  */
@@ -236,14 +255,14 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes = {
236
255
  onItemLabelChange: PropTypes.func,
237
256
  /**
238
257
  * Callback fired when a Tree Item is selected or deselected.
239
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
258
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
240
259
  * @param {array} itemId The itemId of the modified item.
241
260
  * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
242
261
  */
243
262
  onItemSelectionToggle: PropTypes.func,
244
263
  /**
245
264
  * Callback fired when Tree Items are selected/deselected.
246
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
265
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
247
266
  * @param {string[] | string} itemIds The ids of the selected items.
248
267
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
249
268
  */
@@ -99,8 +99,10 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
99
99
  getItemDOMElement: PropTypes.func.isRequired,
100
100
  getItemOrderedChildrenIds: PropTypes.func.isRequired,
101
101
  getItemTree: PropTypes.func.isRequired,
102
- selectItem: PropTypes.func.isRequired,
103
- setItemExpansion: PropTypes.func.isRequired
102
+ getParentId: PropTypes.func.isRequired,
103
+ setIsItemDisabled: PropTypes.func.isRequired,
104
+ setItemExpansion: PropTypes.func.isRequired,
105
+ setItemSelection: PropTypes.func.isRequired
104
106
  })
105
107
  }),
106
108
  /**
@@ -173,7 +175,7 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
173
175
  multiSelect: PropTypes.bool,
174
176
  /**
175
177
  * Callback fired when Tree Items are expanded/collapsed.
176
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
178
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
177
179
  * @param {array} itemIds The ids of the expanded items.
178
180
  */
179
181
  onExpandedItemsChange: PropTypes.func,
@@ -185,7 +187,7 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
185
187
  onItemClick: PropTypes.func,
186
188
  /**
187
189
  * Callback fired when a Tree Item is expanded or collapsed.
188
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
190
+ * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method.
189
191
  * @param {array} itemId The itemId of the modified item.
190
192
  * @param {array} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed.
191
193
  */
@@ -198,14 +200,14 @@ process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = {
198
200
  onItemFocus: PropTypes.func,
199
201
  /**
200
202
  * Callback fired when a Tree Item is selected or deselected.
201
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
203
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
202
204
  * @param {array} itemId The itemId of the modified item.
203
205
  * @param {array} isSelected `true` if the item has just been selected, `false` if it has just been deselected.
204
206
  */
205
207
  onItemSelectionToggle: PropTypes.func,
206
208
  /**
207
209
  * Callback fired when Tree Items are selected/deselected.
208
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
210
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method.
209
211
  * @param {string[] | string} itemIds The ids of the selected items.
210
212
  * When `multiSelect` is `true`, this is an array of strings; when false (default) a string.
211
213
  */
@@ -11,6 +11,8 @@ export declare const TreeItemLabel: import("@emotion/styled").StyledComponent<im
11
11
  }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
12
12
  export declare const TreeItemIconContainer: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
13
13
  export declare const TreeItemGroupTransition: import("@emotion/styled").StyledComponent<Pick<import("@mui/material").CollapseProps, keyof import("@mui/material").CollapseProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
14
+ export declare const TreeItemErrorContainer: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.ClassAttributes<HTMLDivElement> | keyof React.HTMLAttributes<HTMLDivElement>>, {}>;
15
+ export declare const TreeItemLoadingContainer: import("@emotion/styled").StyledComponent<Pick<import("@mui/material").CircularProgressProps, keyof import("@mui/material").CircularProgressProps> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
14
16
  export declare const TreeItemCheckbox: import("@emotion/styled").StyledComponent<Pick<Omit<CheckboxProps & {
15
17
  visible?: boolean;
16
18
  }, "ref"> & React.RefAttributes<HTMLButtonElement>, "hidden" | "visible" | "color" | "content" | "size" | "style" | "icon" | "translate" | "disabled" | "form" | "slot" | "title" | "action" | "checked" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "name" | "readOnly" | "required" | "value" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoCapitalize" | "autoFocus" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "enterKeyHint" | "id" | "lang" | "nonce" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "popover" | "popoverTargetAction" | "popoverTarget" | "inert" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onToggle" | "onBeforeToggle" | "onTransitionCancel" | "onTransitionCancelCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "onTransitionRun" | "onTransitionRunCapture" | "onTransitionStart" | "onTransitionStartCapture" | "component" | "sx" | "classes" | "centerRipple" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "disableFocusRipple" | "edge" | "checkedIcon" | "inputProps" | "inputRef" | "indeterminate" | "indeterminateIcon" | keyof React.RefAttributes<HTMLButtonElement>> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;