@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.
- package/CHANGELOG.md +131 -0
- package/RichTreeView/RichTreeView.js +24 -5
- package/SimpleTreeView/SimpleTreeView.js +8 -6
- package/TreeItem/TreeItem.d.ts +2 -0
- package/TreeItem/TreeItem.js +46 -5
- package/TreeItem/TreeItem.types.d.ts +14 -0
- package/TreeItemIcon/TreeItemIcon.js +2 -0
- package/esm/RichTreeView/RichTreeView.js +24 -5
- package/esm/SimpleTreeView/SimpleTreeView.js +8 -6
- package/esm/TreeItem/TreeItem.d.ts +2 -0
- package/esm/TreeItem/TreeItem.js +45 -4
- package/esm/TreeItem/TreeItem.types.d.ts +14 -0
- package/esm/TreeItemIcon/TreeItemIcon.js +2 -0
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +21 -9
- package/esm/hooks/useTreeViewApiRef.d.ts +1 -1
- package/esm/index.js +1 -1
- package/esm/internals/index.d.ts +6 -1
- package/esm/internals/index.js +4 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +13 -0
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +27 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +1 -0
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
- package/esm/internals/utils/selectors.d.ts +7 -0
- package/esm/internals/utils/selectors.js +9 -0
- package/esm/useTreeItem/useTreeItem.d.ts +1 -1
- package/esm/useTreeItem/useTreeItem.js +13 -0
- package/esm/useTreeItem/useTreeItem.types.d.ts +21 -0
- package/esm/utils/cache.d.ts +38 -0
- package/esm/utils/cache.js +31 -0
- package/esm/utils/index.d.ts +1 -0
- package/esm/utils/index.js +1 -0
- package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +22 -10
- package/hooks/useTreeViewApiRef.d.ts +1 -1
- package/index.js +1 -1
- package/internals/index.d.ts +6 -1
- package/internals/index.js +33 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +14 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
- package/internals/plugins/useTreeViewLazyLoading/index.js +5 -0
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +33 -0
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +5 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
- package/internals/utils/selectors.d.ts +7 -0
- package/internals/utils/selectors.js +9 -0
- package/modern/RichTreeView/RichTreeView.js +24 -5
- package/modern/SimpleTreeView/SimpleTreeView.js +8 -6
- package/modern/TreeItem/TreeItem.d.ts +2 -0
- package/modern/TreeItem/TreeItem.js +45 -4
- package/modern/TreeItem/TreeItem.types.d.ts +14 -0
- package/modern/TreeItemIcon/TreeItemIcon.js +2 -0
- package/modern/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -2
- package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +21 -9
- package/modern/hooks/useTreeViewApiRef.d.ts +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/index.d.ts +6 -1
- package/modern/internals/index.js +4 -1
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -12
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +4 -0
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +40 -16
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +157 -16
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +172 -0
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +13 -0
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +49 -0
- package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +16 -7
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -1
- package/modern/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +249 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +27 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +83 -0
- package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +1 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -4
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +12 -12
- package/modern/internals/utils/selectors.d.ts +7 -0
- package/modern/internals/utils/selectors.js +9 -0
- package/modern/useTreeItem/useTreeItem.d.ts +1 -1
- package/modern/useTreeItem/useTreeItem.js +13 -0
- package/modern/useTreeItem/useTreeItem.types.d.ts +21 -0
- package/modern/utils/cache.d.ts +38 -0
- package/modern/utils/cache.js +31 -0
- package/modern/utils/index.d.ts +1 -0
- package/modern/utils/index.js +1 -0
- package/package.json +1 -1
- package/tsconfig.build.tsbuildinfo +1 -1
- package/useTreeItem/useTreeItem.d.ts +1 -1
- package/useTreeItem/useTreeItem.js +13 -0
- package/useTreeItem/useTreeItem.types.d.ts +21 -0
- package/utils/cache.d.ts +38 -0
- package/utils/cache.js +38 -0
- package/utils/index.d.ts +1 -0
- 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` [](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` [](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` [](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` [](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` [](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
|
-
|
|
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
|
-
|
|
110
|
-
|
|
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
|
*/
|
package/TreeItem/TreeItem.d.ts
CHANGED
|
@@ -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>, {}, {}>;
|
package/TreeItem/TreeItem.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
103
|
-
|
|
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>, {}, {}>;
|