@mui/x-tree-view 9.12.0 → 9.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/RichTreeView/RichTreeView.js +30 -25
  3. package/RichTreeView/RichTreeView.mjs +30 -25
  4. package/RichTreeView/RichTreeView.types.d.mts +27 -1
  5. package/RichTreeView/RichTreeView.types.d.ts +27 -1
  6. package/RichTreeView/richTreeViewClasses.d.mts +4 -1
  7. package/RichTreeView/richTreeViewClasses.d.ts +4 -1
  8. package/RichTreeView/richTreeViewClasses.js +1 -1
  9. package/RichTreeView/richTreeViewClasses.mjs +1 -1
  10. package/RichTreeView/useExtractRichTreeViewParameters.d.mts +1 -0
  11. package/RichTreeView/useExtractRichTreeViewParameters.d.ts +1 -0
  12. package/RichTreeView/useExtractRichTreeViewParameters.js +6 -3
  13. package/RichTreeView/useExtractRichTreeViewParameters.mjs +6 -3
  14. package/SimpleTreeView/simpleTreeViewClasses.d.mts +1 -1
  15. package/SimpleTreeView/simpleTreeViewClasses.d.ts +1 -1
  16. package/TreeItem/TreeItem.js +2 -1
  17. package/TreeItem/TreeItem.mjs +2 -1
  18. package/TreeItemLoader/TreeItemLoader.d.mts +20 -0
  19. package/TreeItemLoader/TreeItemLoader.d.ts +20 -0
  20. package/TreeItemLoader/TreeItemLoader.js +152 -0
  21. package/TreeItemLoader/TreeItemLoader.mjs +146 -0
  22. package/TreeItemLoader/TreeItemLoader.types.d.mts +36 -0
  23. package/TreeItemLoader/TreeItemLoader.types.d.ts +36 -0
  24. package/TreeItemLoader/TreeItemLoader.types.js +5 -0
  25. package/TreeItemLoader/TreeItemLoader.types.mjs +1 -0
  26. package/TreeItemLoader/TreeItemLoaderContext.d.mts +24 -0
  27. package/TreeItemLoader/TreeItemLoaderContext.d.ts +24 -0
  28. package/TreeItemLoader/TreeItemLoaderContext.js +22 -0
  29. package/TreeItemLoader/TreeItemLoaderContext.mjs +16 -0
  30. package/TreeItemLoader/index.d.mts +3 -0
  31. package/TreeItemLoader/index.d.ts +3 -0
  32. package/TreeItemLoader/index.js +34 -0
  33. package/TreeItemLoader/index.mjs +2 -0
  34. package/TreeItemLoader/treeItemLoaderClasses.d.mts +13 -0
  35. package/TreeItemLoader/treeItemLoaderClasses.d.ts +13 -0
  36. package/TreeItemLoader/treeItemLoaderClasses.js +14 -0
  37. package/TreeItemLoader/treeItemLoaderClasses.mjs +6 -0
  38. package/index.d.mts +1 -0
  39. package/index.d.ts +1 -0
  40. package/index.js +12 -1
  41. package/index.mjs +2 -1
  42. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +2 -2
  43. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.mjs +3 -3
  44. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.mts +4 -0
  45. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +4 -0
  46. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.mts +1 -2
  47. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +1 -2
  48. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +2 -9
  49. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.mjs +2 -7
  50. package/internals/TreeViewProvider/TreeViewProvider.js +7 -3
  51. package/internals/TreeViewProvider/TreeViewProvider.mjs +7 -3
  52. package/internals/TreeViewProvider/TreeViewProvider.types.d.mts +3 -3
  53. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  54. package/internals/TreeViewProvider/TreeViewStyleContext.d.mts +30 -2
  55. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +30 -2
  56. package/internals/TreeViewProvider/TreeViewStyleContext.js +12 -0
  57. package/internals/TreeViewProvider/TreeViewStyleContext.mjs +13 -0
  58. package/internals/components/RichTreeViewItems.js +59 -2
  59. package/internals/components/RichTreeViewItems.mjs +59 -2
  60. package/internals/components/RichTreeViewLoading.d.mts +97 -0
  61. package/internals/components/RichTreeViewLoading.d.ts +97 -0
  62. package/internals/components/RichTreeViewLoading.js +171 -0
  63. package/internals/components/RichTreeViewLoading.mjs +160 -0
  64. package/internals/constants.d.mts +6 -0
  65. package/internals/constants.d.ts +6 -0
  66. package/internals/constants.js +12 -0
  67. package/internals/constants.mjs +6 -0
  68. package/internals/hooks/useTreeViewStore.d.mts +1 -1
  69. package/internals/hooks/useTreeViewStore.d.ts +1 -1
  70. package/internals/hooks/useTreeViewStore.js +7 -3
  71. package/internals/hooks/useTreeViewStore.mjs +7 -3
  72. package/internals/index.d.mts +2 -0
  73. package/internals/index.d.ts +2 -0
  74. package/internals/index.js +13 -0
  75. package/internals/index.mjs +1 -0
  76. package/internals/plugins/expansion/selectors.d.mts +3 -2
  77. package/internals/plugins/expansion/selectors.d.ts +3 -2
  78. package/internals/plugins/expansion/selectors.js +4 -4
  79. package/internals/plugins/expansion/selectors.mjs +5 -5
  80. package/internals/plugins/focus/selectors.d.mts +3 -2
  81. package/internals/plugins/focus/selectors.d.ts +3 -2
  82. package/internals/plugins/focus/selectors.js +3 -3
  83. package/internals/plugins/focus/selectors.mjs +4 -4
  84. package/internals/plugins/id/selectors.d.mts +6 -3
  85. package/internals/plugins/id/selectors.d.ts +6 -3
  86. package/internals/plugins/id/selectors.js +4 -5
  87. package/internals/plugins/id/selectors.mjs +4 -5
  88. package/internals/plugins/items/selectors.d.mts +9 -8
  89. package/internals/plugins/items/selectors.d.ts +9 -8
  90. package/internals/plugins/items/selectors.js +15 -16
  91. package/internals/plugins/items/selectors.mjs +15 -16
  92. package/internals/plugins/labelEditing/selectors.d.mts +3 -2
  93. package/internals/plugins/labelEditing/selectors.d.ts +3 -2
  94. package/internals/plugins/labelEditing/selectors.js +6 -5
  95. package/internals/plugins/labelEditing/selectors.mjs +6 -5
  96. package/internals/plugins/lazyLoading/selectors.d.mts +9 -3
  97. package/internals/plugins/lazyLoading/selectors.d.ts +9 -3
  98. package/internals/plugins/lazyLoading/selectors.js +10 -6
  99. package/internals/plugins/lazyLoading/selectors.mjs +10 -6
  100. package/internals/plugins/lazyLoading/types.d.mts +5 -1
  101. package/internals/plugins/lazyLoading/types.d.ts +5 -1
  102. package/internals/plugins/selection/selectors.d.mts +15 -9
  103. package/internals/plugins/selection/selectors.d.ts +15 -9
  104. package/internals/plugins/selection/selectors.js +12 -12
  105. package/internals/plugins/selection/selectors.mjs +13 -13
  106. package/package.json +19 -7
  107. package/useTreeItem/useTreeItem.js +3 -3
  108. package/useTreeItem/useTreeItem.mjs +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,157 @@
1
1
  # Changelog
2
2
 
3
+ ## 9.13.0
4
+
5
+ <!-- generated comparing v9.12.0..master -->
6
+
7
+ _Sep 4, 2026_
8
+
9
+ We'd like to extend a big thank you to the 14 contributors who made this release possible. Here are some highlights ✨:
10
+
11
+ - 🦮 Improve keyboard navigation features of the Charts.
12
+ - 🎨 Improved customization of the edit event dialog in the `EventCalendar`
13
+ - 🐞 Bugfixes
14
+ - 📚 Documentation improvements
15
+
16
+ Special thanks go out to these community members for their valuable contributions:
17
+ @Anexus5919, @jvskriubakken, @mustafajw07, @roychan1
18
+
19
+ The following team members contributed to this release:
20
+ @brijeshb42, @flaviendelangle, @hasdfa, @Janpot, @JCQuintas, @LukasTy, @michelengelen, @noraleonte, @rita-codes, @silviuaavram
21
+
22
+ ### Data Grid
23
+
24
+ #### `@mui/x-data-grid@9.13.0`
25
+
26
+ - [DataGrid] Call `onValueChange` after `setEditCellValue` in edit cells (#23417) @michelengelen
27
+ - [DataGrid] Add support for replacing rows instead of merging updates (#23323) @jvskriubakken
28
+ - [DataGrid] Always render `rowHeader` in virtualized setups (#23386) @silviuaavram
29
+ - [DataGrid] Export `ToolbarRoot` (#23322) @JCQuintas
30
+ - [DataGrid] Fix `rowsPerPage` selector appearing when `autoPageSize` is enabled and `pageSize` is one of `pageSizeOptions` (#23401) @roychan1
31
+ - [DataGrid] Fix row tree reset when a data source grid becomes visible (#23288) @JCQuintas
32
+
33
+ #### `@mui/x-data-grid-pro@9.13.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
34
+
35
+ Same changes as in `@mui/x-data-grid@9.13.0`, plus:
36
+
37
+ - [DataGridPro] Remove rows deleted server-side on nested lazy loading revalidation (#23320) @JCQuintas
38
+ - [DataGridPro] Stop `disableDebounce` from reaching the DOM in multi select filter (#23445) @JCQuintas
39
+
40
+ #### `@mui/x-data-grid-premium@9.13.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
41
+
42
+ Same changes as in `@mui/x-data-grid-pro@9.13.0`, plus:
43
+
44
+ - [DataGridPremium] Refine cell selection and speed up clipboard copy (#23473) @michelengelen
45
+ - [DataGridPremium] Select all cells with Ctrl+A (#23415) @michelengelen
46
+
47
+ ### Date and Time Pickers
48
+
49
+ #### `@mui/x-date-pickers@9.13.0`
50
+
51
+ Internal changes.
52
+
53
+ #### `@mui/x-date-pickers-pro@9.13.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
54
+
55
+ Same changes as in `@mui/x-date-pickers@9.13.0`.
56
+
57
+ ### Charts
58
+
59
+ #### `@mui/x-charts@9.13.0`
60
+
61
+ - [charts] Activate the focused axis with Enter/Space (#23219) @JCQuintas
62
+ - [charts] Add keyboard zoom and pan (#23369) @JCQuintas
63
+ - [charts] Fix line mark position under browser zoom in Safari (#23387) @noraleonte
64
+ - [charts] Fix y axis tick labels shortened near the top of the chart (#23435) @JCQuintas
65
+ - [charts] Focus the clicked item on radar charts (#23287) @JCQuintas
66
+ - [charts] Stop text measurements leaking into each other (#23430) @JCQuintas
67
+
68
+ #### `@mui/x-charts-pro@9.13.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
69
+
70
+ Same changes as in `@mui/x-charts@9.13.0`.
71
+
72
+ #### `@mui/x-charts-premium@9.13.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
73
+
74
+ Same changes as in `@mui/x-charts-pro@9.13.0`.
75
+
76
+ ### Tree View
77
+
78
+ #### `@mui/x-tree-view@9.13.0`
79
+
80
+ - [tree view] Add `loading` prop and customizable loading UI (#22251) @michelengelen
81
+ - [tree view] Reduce selector bundle size (#23412) @flaviendelangle
82
+ - [tree view] Remove dead UI from community component (#23487) @noraleonte
83
+ - [tree view] Remove unused dependencies (#23488) @noraleonte
84
+ - [tree view] Use `useId` for the default tree id (#23341) @Anexus5919
85
+
86
+ #### `@mui/x-tree-view-pro@9.13.0` [![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-tree-view@9.13.0`.
89
+
90
+ ### Scheduler
91
+
92
+ #### `@mui/x-scheduler@9.0.0-beta.11`
93
+
94
+ - [scheduler] Absorb un-acted `ResizeObserver` deliveries after rendering the timeline (#23444) @rita-codes
95
+ - [scheduler] Add `EventContextMenu` with Edit and Delete actions (#23379) @mustafajw07
96
+ - [scheduler] Add aria-hidden to collapsed side panel and refactor landmark structure (#23425) @mustafajw07
97
+ - [scheduler] Add the `eventDialogGeneralTab` slot (#23338) @rita-codes
98
+ - [scheduler] Fix the un-awaited act warning in the event dialog slot test (#23446) @JCQuintas
99
+ - [scheduler] Improve timeline event layout performance (#23364) @flaviendelangle
100
+ - [scheduler] Keep `aria-expanded` present when ViewSwitcher and PreferencesMenu menus are closed (#23427) @mustafajw07
101
+ - [scheduler] Make the event dialog General-tab building blocks public (#23398) @rita-codes
102
+ - [scheduler] Migrate to the pragmatic-drag-and-drop v3 entry points (#23442) @rita-codes
103
+ - [scheduler] Reduce selector bundle size (#23413) @flaviendelangle
104
+ - [scheduler] Reuse processed events between updates (#23363) @flaviendelangle
105
+ - [scheduler] Add `aria-expanded` and `aria-controls` to side panel toggle button (#23402) @mustafajw07
106
+
107
+ #### `@mui/x-scheduler-premium@9.0.0-beta.11` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
108
+
109
+ Same changes as in `@mui/x-scheduler@9.0.0-beta.11`, plus:
110
+
111
+ - [scheduler-premium] Dependencies - Keep event drags working over the arrow hit-areas (#23441) @rita-codes
112
+ - [scheduler-premium] Dependencies - Reject dependencies that would create a cycle (#23389) @rita-codes
113
+ - [scheduler-premium] Key recurring `exDates` on their data-timezone day (#23467) @rita-codes
114
+
115
+ ### Codemod
116
+
117
+ #### `@mui/x-codemod@9.13.0`
118
+
119
+ Internal changes.
120
+
121
+ ### Docs
122
+
123
+ - [docs] Add synchronized tooltip and crosshair demo to charts (#23368) @JCQuintas
124
+ - [docs] Add sticky headers recipe to `RichTreeView` customization (#22908) @michelengelen
125
+ - [docs] Pin the visible date of the scheduler preferences demos (#23432) @rita-codes
126
+ - [docs] Star-prefix bare :where() dark-mode selectors (#23419) @Janpot
127
+ - [docs] Consolidate demo data into shared dataset files (#23496) @michelengelen
128
+
129
+ ### Core
130
+
131
+ - [code-infra] Consume shared commands from code-infra orb (#23485) @brijeshb42
132
+ - [code-infra] Move the shared spy helpers off Sinon (#23466) @JCQuintas
133
+ - [code-infra] Point the support validator link at frontend-public (#23422) @Janpot
134
+ - [code-infra] Reduce per-page memory in the browser test suite (#23424) @Janpot
135
+ - [code-infra] Remove Sinon (#23476) @JCQuintas
136
+ - [code-infra] Remove the explicit `styled-components` dependency (#23479) @LukasTy
137
+ - [code-infra] Replace the mechanical sinon `spy()` usages with `vi.fn()` (#23443) @JCQuintas
138
+ - [code-infra] Replace the sinon `spy(fn)` usages with `vi.fn(fn)` (#23460) @JCQuintas
139
+ - [code-infra] Replace the sinon spy types with the Vitest ones (#23464) @JCQuintas
140
+ - [code-infra] Replace the sinon spy-on-object calls with `vi.spyOn` (#23474) @JCQuintas
141
+ - [code-infra] Replace the sinon stubs with Vitest mocks (#23472) @JCQuintas
142
+ - [code-infra] Run TypeScript 7 alongside the TS6 JS API (#23471) @brijeshb42
143
+ - [code-infra] Trim the shared browser test setup graph (#23426) @LukasTy
144
+ - [code-infra] Update CircleCI orb (#23418) @JCQuintas
145
+ - [code-infra] Use explicit vitest imports in test files (#23375) @michelengelen
146
+
147
+ ### Miscellaneous
148
+
149
+ - [chat] Enforce top-level type imports (#23037) @Janpot
150
+ - [chat] Fix global preload error from the `remend` import (#23263) @hasdfa
151
+ - [ci] Add Claude PR review via mui-public reusable workflow (#23423) @Janpot
152
+ - [telemetry] Fix get-context test leaking mock from sender test (#23447) @JCQuintas
153
+ - [test] Fail the regression run when a webfont does not load (#23376) @LukasTy
154
+
3
155
  ## 9.12.0
4
156
 
5
157
  _Aug 21, 2026_
@@ -11,16 +11,13 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _useMergedRefs = require("@base-ui/utils/useMergedRefs");
14
- var _store = require("@mui/x-internals/store");
15
- var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
16
- var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
17
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
18
15
  var _warning = require("@mui/x-internals/warning");
19
16
  var _richTreeViewClasses = require("./richTreeViewClasses");
20
17
  var _zeroStyled = require("../internals/zero-styled");
21
18
  var _TreeViewProvider = require("../internals/TreeViewProvider");
22
19
  var _RichTreeViewItems = require("../internals/components/RichTreeViewItems");
23
- var _lazyLoading = require("../internals/plugins/lazyLoading");
20
+ var _RichTreeViewLoading = require("../internals/components/RichTreeViewLoading");
24
21
  var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext");
25
22
  var _useExtractRichTreeViewParameters = require("./useExtractRichTreeViewParameters");
26
23
  var _items = require("../internals/plugins/items");
@@ -41,9 +38,10 @@ const useUtilityClasses = ownerState => {
41
38
  itemIconContainer: ['itemIconContainer'],
42
39
  itemLabel: ['itemLabel'],
43
40
  itemLabelInput: ['itemLabelInput'],
44
- itemCheckbox: ['itemCheckbox']
41
+ itemCheckbox: ['itemCheckbox'],
45
42
  // itemDragAndDropOverlay: ['itemDragAndDropOverlay'], => feature not available on this component
46
43
  // itemErrorIcon: ['itemErrorIcon'], => feature not available on this component
44
+ itemLoader: ['itemLoader']
47
45
  };
48
46
  return (0, _composeClasses.default)(slots, _richTreeViewClasses.getRichTreeViewUtilityClass, classes);
49
47
  }, [classes]);
@@ -83,7 +81,8 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
83
81
  slotProps,
84
82
  apiRef,
85
83
  parameters,
86
- forwardedProps
84
+ forwardedProps,
85
+ loading
87
86
  } = (0, _useExtractRichTreeViewParameters.useExtractRichTreeViewParameters)(props);
88
87
 
89
88
  // Context hooks
@@ -93,26 +92,33 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
93
92
  const ref = React.useRef(null);
94
93
  const handleRef = (0, _useMergedRefs.useMergedRefs)(forwardedRef, ref);
95
94
 
96
- // Selector hooks
97
- const isLoading = (0, _store.useStore)(store, _lazyLoading.lazyLoadingSelectors.isItemLoading, null);
98
- const error = (0, _store.useStore)(store, _lazyLoading.lazyLoadingSelectors.itemError, null);
99
-
100
95
  // Feature hooks
101
96
  const classes = useUtilityClasses(props);
102
97
  const slots = React.useMemo(() => (0, _extends2.default)({
103
98
  root: RichTreeViewRoot
104
99
  }, inSlots), [inSlots]);
105
- if (isLoading) {
106
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
107
- children: "Loading\u2026"
100
+ let content;
101
+ if (loading) {
102
+ content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_RichTreeViewLoading.RichTreeViewLoading, {
103
+ store: store,
104
+ slots: slots,
105
+ slotProps: slotProps,
106
+ ownerState: props,
107
+ forwardedProps: forwardedProps,
108
+ rootRef: handleRef,
109
+ classes: classes
108
110
  });
109
- }
110
- if (error) {
111
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
112
- severity: "error",
113
- children: error.message
111
+ } else {
112
+ content = /*#__PURE__*/(0, _jsxRuntime.jsx)(_RichTreeViewItems.RichTreeViewItems, {
113
+ slots: slots,
114
+ slotProps: slotProps,
115
+ forwardedProps: forwardedProps,
116
+ ownerState: props,
117
+ rootRef: handleRef
114
118
  });
115
119
  }
120
+
121
+ // The provider must mount in the loading state too, so `apiRef` is initialized on mount.
116
122
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, {
117
123
  store: store,
118
124
  classes: classes,
@@ -122,13 +128,7 @@ const RichTreeView = exports.RichTreeView = /*#__PURE__*/React.forwardRef(functi
122
128
  rootRef: ref,
123
129
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewItemDepthContext.TreeViewItemDepthContext.Provider, {
124
130
  value: _items.itemsSelectors.itemDepth,
125
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_RichTreeViewItems.RichTreeViewItems, {
126
- slots: slots,
127
- slotProps: slotProps,
128
- forwardedProps: forwardedProps,
129
- ownerState: props,
130
- rootRef: handleRef
131
- })
131
+ children: content
132
132
  })
133
133
  });
134
134
  });
@@ -275,6 +275,11 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes /* remove-proptyp
275
275
  */
276
276
  itemHeight: _propTypes.default.number,
277
277
  items: _propTypes.default.array.isRequired,
278
+ /**
279
+ * If `true`, a loading UI is displayed instead of the tree items.
280
+ * @default false
281
+ */
282
+ loading: _propTypes.default.bool,
278
283
  /**
279
284
  * Whether multiple items can be selected.
280
285
  * @default false
@@ -4,16 +4,13 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import { useMergedRefs } from '@base-ui/utils/useMergedRefs';
7
- import { useStore } from '@mui/x-internals/store';
8
- import Alert from '@mui/material/Alert';
9
- import Typography from '@mui/material/Typography';
10
7
  import composeClasses from '@mui/utils/composeClasses';
11
8
  import { warnOnce } from '@mui/x-internals/warning';
12
9
  import { getRichTreeViewUtilityClass } from "./richTreeViewClasses.mjs";
13
10
  import { styled, createUseThemeProps } from "../internals/zero-styled/index.mjs";
14
11
  import { TreeViewProvider } from "../internals/TreeViewProvider/index.mjs";
15
12
  import { RichTreeViewItems } from "../internals/components/RichTreeViewItems.mjs";
16
- import { lazyLoadingSelectors } from "../internals/plugins/lazyLoading/index.mjs";
13
+ import { RichTreeViewLoading } from "../internals/components/RichTreeViewLoading.mjs";
17
14
  import { TreeViewItemDepthContext } from "../internals/TreeViewItemDepthContext/index.mjs";
18
15
  import { useExtractRichTreeViewParameters } from "./useExtractRichTreeViewParameters.mjs";
19
16
  import { itemsSelectors } from "../internals/plugins/items/index.mjs";
@@ -34,9 +31,10 @@ const useUtilityClasses = ownerState => {
34
31
  itemIconContainer: ['itemIconContainer'],
35
32
  itemLabel: ['itemLabel'],
36
33
  itemLabelInput: ['itemLabelInput'],
37
- itemCheckbox: ['itemCheckbox']
34
+ itemCheckbox: ['itemCheckbox'],
38
35
  // itemDragAndDropOverlay: ['itemDragAndDropOverlay'], => feature not available on this component
39
36
  // itemErrorIcon: ['itemErrorIcon'], => feature not available on this component
37
+ itemLoader: ['itemLoader']
40
38
  };
41
39
  return composeClasses(slots, getRichTreeViewUtilityClass, classes);
42
40
  }, [classes]);
@@ -76,7 +74,8 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
76
74
  slotProps,
77
75
  apiRef,
78
76
  parameters,
79
- forwardedProps
77
+ forwardedProps,
78
+ loading
80
79
  } = useExtractRichTreeViewParameters(props);
81
80
 
82
81
  // Context hooks
@@ -86,26 +85,33 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
86
85
  const ref = React.useRef(null);
87
86
  const handleRef = useMergedRefs(forwardedRef, ref);
88
87
 
89
- // Selector hooks
90
- const isLoading = useStore(store, lazyLoadingSelectors.isItemLoading, null);
91
- const error = useStore(store, lazyLoadingSelectors.itemError, null);
92
-
93
88
  // Feature hooks
94
89
  const classes = useUtilityClasses(props);
95
90
  const slots = React.useMemo(() => _extends({
96
91
  root: RichTreeViewRoot
97
92
  }, inSlots), [inSlots]);
98
- if (isLoading) {
99
- return /*#__PURE__*/_jsx(Typography, {
100
- children: "Loading\u2026"
93
+ let content;
94
+ if (loading) {
95
+ content = /*#__PURE__*/_jsx(RichTreeViewLoading, {
96
+ store: store,
97
+ slots: slots,
98
+ slotProps: slotProps,
99
+ ownerState: props,
100
+ forwardedProps: forwardedProps,
101
+ rootRef: handleRef,
102
+ classes: classes
101
103
  });
102
- }
103
- if (error) {
104
- return /*#__PURE__*/_jsx(Alert, {
105
- severity: "error",
106
- children: error.message
104
+ } else {
105
+ content = /*#__PURE__*/_jsx(RichTreeViewItems, {
106
+ slots: slots,
107
+ slotProps: slotProps,
108
+ forwardedProps: forwardedProps,
109
+ ownerState: props,
110
+ rootRef: handleRef
107
111
  });
108
112
  }
113
+
114
+ // The provider must mount in the loading state too, so `apiRef` is initialized on mount.
109
115
  return /*#__PURE__*/_jsx(TreeViewProvider, {
110
116
  store: store,
111
117
  classes: classes,
@@ -115,13 +121,7 @@ const RichTreeView = /*#__PURE__*/React.forwardRef(function RichTreeView(inProps
115
121
  rootRef: ref,
116
122
  children: /*#__PURE__*/_jsx(TreeViewItemDepthContext.Provider, {
117
123
  value: itemsSelectors.itemDepth,
118
- children: /*#__PURE__*/_jsx(RichTreeViewItems, {
119
- slots: slots,
120
- slotProps: slotProps,
121
- forwardedProps: forwardedProps,
122
- ownerState: props,
123
- rootRef: handleRef
124
- })
124
+ children: content
125
125
  })
126
126
  });
127
127
  });
@@ -268,6 +268,11 @@ process.env.NODE_ENV !== "production" ? RichTreeView.propTypes /* remove-proptyp
268
268
  */
269
269
  itemHeight: PropTypes.number,
270
270
  items: PropTypes.array.isRequired,
271
+ /**
272
+ * If `true`, a loading UI is displayed instead of the tree items.
273
+ * @default false
274
+ */
275
+ loading: PropTypes.bool,
271
276
  /**
272
277
  * Whether multiple items can be selected.
273
278
  * @default false
@@ -1,8 +1,11 @@
1
1
  import type * as React from 'react';
2
2
  import type { Theme } from '@mui/material/styles';
3
3
  import type { SxProps } from '@mui/system/styleFunctionSx';
4
+ import type { SlotComponentProps } from '@mui/utils/types';
4
5
  import type { RichTreeViewClasses } from "./richTreeViewClasses.mjs";
5
6
  import type { RichTreeViewItemsSlotProps, RichTreeViewItemsSlots } from "../internals/components/RichTreeViewItems.mjs";
7
+ import type { RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState } from "../internals/components/RichTreeViewLoading.mjs";
8
+ import type { TreeItemLoaderOwnerState } from "../TreeItemLoader/index.mjs";
6
9
  import type { TreeViewSlotProps, TreeViewSlots } from "../internals/TreeViewProvider/TreeViewStyleContext.mjs";
7
10
  import type { RichTreeViewStore } from "../internals/RichTreeViewStore/index.mjs";
8
11
  import type { TreeViewValidItem } from "../models/items.mjs";
@@ -14,8 +17,26 @@ export interface RichTreeViewSlots extends TreeViewSlots, Omit<RichTreeViewItems
14
17
  * @default RichTreeViewRoot
15
18
  */
16
19
  root?: React.ElementType;
20
+ /**
21
+ * Component rendered instead of the default loading rows.
22
+ * It renders inside the tree root while the tree is loading, which keeps the
23
+ * `role="tree"` and `aria-busy` attributes, and inside a lazily loading item
24
+ * while its children load.
25
+ * Compose it with `TreeItemLoader` to keep the rows semantically correct.
26
+ */
27
+ loading?: React.ElementType;
28
+ /**
29
+ * Component rendered for each loading row.
30
+ * It also renders for the children of an item while they load lazily.
31
+ * Wrap custom content in `TreeItemLoader` to keep the row semantically correct.
32
+ * @default TreeItemLoader
33
+ */
34
+ itemLoader?: React.ElementType;
35
+ }
36
+ export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends TreeViewSlotProps, RichTreeViewItemsSlotProps<RichTreeViewProps<R, Multiple>> {
37
+ loading?: SlotComponentProps<'div', RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState>;
38
+ itemLoader?: SlotComponentProps<'li', {}, TreeItemLoaderOwnerState>;
17
39
  }
18
- export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends TreeViewSlotProps, RichTreeViewItemsSlotProps<RichTreeViewProps<R, Multiple>> {}
19
40
  export type RichTreeViewApiRef<R extends TreeViewValidItem<R> = any, Multiple extends boolean | undefined = any> = React.RefObject<Partial<TreeViewPublicAPI<RichTreeViewStore<R, Multiple>>> | undefined>;
20
41
  export interface RichTreeViewPropsBase extends React.HTMLAttributes<HTMLUListElement> {
21
42
  className?: string;
@@ -27,6 +48,11 @@ export interface RichTreeViewPropsBase extends React.HTMLAttributes<HTMLUListEle
27
48
  * The system prop that allows defining system overrides as well as additional CSS styles.
28
49
  */
29
50
  sx?: SxProps<Theme>;
51
+ /**
52
+ * If `true`, a loading UI is displayed instead of the tree items.
53
+ * @default false
54
+ */
55
+ loading?: boolean;
30
56
  }
31
57
  export interface RichTreeViewProps<R extends {}, Multiple extends boolean | undefined> extends UseTreeViewStoreParameters<RichTreeViewStore<R, Multiple>>, RichTreeViewPropsBase {
32
58
  /**
@@ -1,8 +1,11 @@
1
1
  import type * as React from 'react';
2
2
  import type { Theme } from '@mui/material/styles';
3
3
  import type { SxProps } from '@mui/system/styleFunctionSx';
4
+ import type { SlotComponentProps } from '@mui/utils/types';
4
5
  import type { RichTreeViewClasses } from "./richTreeViewClasses.js";
5
6
  import type { RichTreeViewItemsSlotProps, RichTreeViewItemsSlots } from "../internals/components/RichTreeViewItems.js";
7
+ import type { RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState } from "../internals/components/RichTreeViewLoading.js";
8
+ import type { TreeItemLoaderOwnerState } from "../TreeItemLoader/index.js";
6
9
  import type { TreeViewSlotProps, TreeViewSlots } from "../internals/TreeViewProvider/TreeViewStyleContext.js";
7
10
  import type { RichTreeViewStore } from "../internals/RichTreeViewStore/index.js";
8
11
  import type { TreeViewValidItem } from "../models/items.js";
@@ -14,8 +17,26 @@ export interface RichTreeViewSlots extends TreeViewSlots, Omit<RichTreeViewItems
14
17
  * @default RichTreeViewRoot
15
18
  */
16
19
  root?: React.ElementType;
20
+ /**
21
+ * Component rendered instead of the default loading rows.
22
+ * It renders inside the tree root while the tree is loading, which keeps the
23
+ * `role="tree"` and `aria-busy` attributes, and inside a lazily loading item
24
+ * while its children load.
25
+ * Compose it with `TreeItemLoader` to keep the rows semantically correct.
26
+ */
27
+ loading?: React.ElementType;
28
+ /**
29
+ * Component rendered for each loading row.
30
+ * It also renders for the children of an item while they load lazily.
31
+ * Wrap custom content in `TreeItemLoader` to keep the row semantically correct.
32
+ * @default TreeItemLoader
33
+ */
34
+ itemLoader?: React.ElementType;
35
+ }
36
+ export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends TreeViewSlotProps, RichTreeViewItemsSlotProps<RichTreeViewProps<R, Multiple>> {
37
+ loading?: SlotComponentProps<'div', RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState>;
38
+ itemLoader?: SlotComponentProps<'li', {}, TreeItemLoaderOwnerState>;
17
39
  }
18
- export interface RichTreeViewSlotProps<R extends {}, Multiple extends boolean | undefined> extends TreeViewSlotProps, RichTreeViewItemsSlotProps<RichTreeViewProps<R, Multiple>> {}
19
40
  export type RichTreeViewApiRef<R extends TreeViewValidItem<R> = any, Multiple extends boolean | undefined = any> = React.RefObject<Partial<TreeViewPublicAPI<RichTreeViewStore<R, Multiple>>> | undefined>;
20
41
  export interface RichTreeViewPropsBase extends React.HTMLAttributes<HTMLUListElement> {
21
42
  className?: string;
@@ -27,6 +48,11 @@ export interface RichTreeViewPropsBase extends React.HTMLAttributes<HTMLUListEle
27
48
  * The system prop that allows defining system overrides as well as additional CSS styles.
28
49
  */
29
50
  sx?: SxProps<Theme>;
51
+ /**
52
+ * If `true`, a loading UI is displayed instead of the tree items.
53
+ * @default false
54
+ */
55
+ loading?: boolean;
30
56
  }
31
57
  export interface RichTreeViewProps<R extends {}, Multiple extends boolean | undefined> extends UseTreeViewStoreParameters<RichTreeViewStore<R, Multiple>>, RichTreeViewPropsBase {
32
58
  /**
@@ -1,5 +1,8 @@
1
1
  import type { TreeViewClasses } from "../internals/TreeViewProvider/TreeViewStyleContext.mjs";
2
- export interface RichTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemErrorIcon' | 'itemLoadingIcon'> {}
2
+ export interface RichTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemErrorIcon' | 'itemLoadingIcon'> {
3
+ /** Styles applied to each item loader element. */
4
+ itemLoader: string;
5
+ }
3
6
  export type RichTreeViewClassKey = keyof RichTreeViewClasses;
4
7
  export declare function getRichTreeViewUtilityClass(slot: string): string;
5
8
  export declare const richTreeViewClasses: RichTreeViewClasses;
@@ -1,5 +1,8 @@
1
1
  import type { TreeViewClasses } from "../internals/TreeViewProvider/TreeViewStyleContext.js";
2
- export interface RichTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemErrorIcon' | 'itemLoadingIcon'> {}
2
+ export interface RichTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemErrorIcon' | 'itemLoadingIcon'> {
3
+ /** Styles applied to each item loader element. */
4
+ itemLoader: string;
5
+ }
3
6
  export type RichTreeViewClassKey = keyof RichTreeViewClasses;
4
7
  export declare function getRichTreeViewUtilityClass(slot: string): string;
5
8
  export declare const richTreeViewClasses: RichTreeViewClasses;
@@ -11,4 +11,4 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generat
11
11
  function getRichTreeViewUtilityClass(slot) {
12
12
  return (0, _generateUtilityClass.default)('MuiRichTreeView', slot);
13
13
  }
14
- const richTreeViewClasses = exports.richTreeViewClasses = (0, _generateUtilityClasses.default)('MuiRichTreeView', ['root', 'item', 'itemContent', 'itemGroupTransition', 'itemIconContainer', 'itemLabel', 'itemCheckbox', 'itemLabelInput']);
14
+ const richTreeViewClasses = exports.richTreeViewClasses = (0, _generateUtilityClasses.default)('MuiRichTreeView', ['root', 'item', 'itemContent', 'itemGroupTransition', 'itemIconContainer', 'itemLabel', 'itemCheckbox', 'itemLabelInput', 'itemLoader']);
@@ -3,4 +3,4 @@ import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
3
3
  export function getRichTreeViewUtilityClass(slot) {
4
4
  return generateUtilityClass('MuiRichTreeView', slot);
5
5
  }
6
- export const richTreeViewClasses = generateUtilityClasses('MuiRichTreeView', ['root', 'item', 'itemContent', 'itemGroupTransition', 'itemIconContainer', 'itemLabel', 'itemCheckbox', 'itemLabelInput']);
6
+ export const richTreeViewClasses = generateUtilityClasses('MuiRichTreeView', ['root', 'item', 'itemContent', 'itemGroupTransition', 'itemIconContainer', 'itemLabel', 'itemCheckbox', 'itemLabelInput', 'itemLoader']);
@@ -291,4 +291,5 @@ export declare function useExtractRichTreeViewParameters<R extends TreeViewValid
291
291
  classes?: Partial<import("./richTreeViewClasses.mjs").RichTreeViewClasses>;
292
292
  sx?: import("@mui/system").SxProps<import("@mui/material/styles").Theme>;
293
293
  };
294
+ loading: boolean | undefined;
294
295
  };
@@ -291,4 +291,5 @@ export declare function useExtractRichTreeViewParameters<R extends TreeViewValid
291
291
  classes?: Partial<import("./richTreeViewClasses.js").RichTreeViewClasses>;
292
292
  sx?: import("@mui/system").SxProps<import("@mui/material/styles").Theme>;
293
293
  };
294
+ loading: boolean | undefined;
294
295
  };
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useExtractRichTreeViewParameters = useExtractRichTreeViewParameters;
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
- const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "items", "isItemDisabled", "isItemSelectionDisabled", "getItemLabel", "getItemChildren", "getItemId", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "itemHeight", "onItemLabelChange", "isItemEditable", "domStructure"];
11
+ const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "items", "isItemDisabled", "isItemSelectionDisabled", "getItemLabel", "getItemChildren", "getItemId", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "itemHeight", "onItemLabelChange", "isItemEditable", "domStructure", "loading"];
12
12
  function useExtractRichTreeViewParameters(props) {
13
13
  const {
14
14
  // Props for Provider
@@ -44,7 +44,9 @@ function useExtractRichTreeViewParameters(props) {
44
44
  // RichTreeViewStore parameters
45
45
  onItemLabelChange,
46
46
  isItemEditable,
47
- domStructure
47
+ domStructure,
48
+ // Render-only props
49
+ loading
48
50
 
49
51
  // Forwarded props
50
52
  } = props,
@@ -90,6 +92,7 @@ function useExtractRichTreeViewParameters(props) {
90
92
  slots,
91
93
  slotProps,
92
94
  parameters,
93
- forwardedProps
95
+ forwardedProps,
96
+ loading
94
97
  };
95
98
  }
@@ -1,5 +1,5 @@
1
1
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
- const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "items", "isItemDisabled", "isItemSelectionDisabled", "getItemLabel", "getItemChildren", "getItemId", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "itemHeight", "onItemLabelChange", "isItemEditable", "domStructure"];
2
+ const _excluded = ["apiRef", "slots", "slotProps", "disabledItemsFocusable", "items", "isItemDisabled", "isItemSelectionDisabled", "getItemLabel", "getItemChildren", "getItemId", "onItemClick", "itemChildrenIndentation", "id", "expandedItems", "defaultExpandedItems", "onExpandedItemsChange", "onItemExpansionToggle", "expansionTrigger", "disableSelection", "selectedItems", "defaultSelectedItems", "multiSelect", "checkboxSelection", "selectionPropagation", "onSelectedItemsChange", "onItemSelectionToggle", "onItemFocus", "itemHeight", "onItemLabelChange", "isItemEditable", "domStructure", "loading"];
3
3
  import * as React from 'react';
4
4
  export function useExtractRichTreeViewParameters(props) {
5
5
  const {
@@ -36,7 +36,9 @@ export function useExtractRichTreeViewParameters(props) {
36
36
  // RichTreeViewStore parameters
37
37
  onItemLabelChange,
38
38
  isItemEditable,
39
- domStructure
39
+ domStructure,
40
+ // Render-only props
41
+ loading
40
42
 
41
43
  // Forwarded props
42
44
  } = props,
@@ -82,6 +84,7 @@ export function useExtractRichTreeViewParameters(props) {
82
84
  slots,
83
85
  slotProps,
84
86
  parameters,
85
- forwardedProps
87
+ forwardedProps,
88
+ loading
86
89
  };
87
90
  }
@@ -1,5 +1,5 @@
1
1
  import type { TreeViewClasses } from "../internals/TreeViewProvider/TreeViewStyleContext.mjs";
2
- export interface SimpleTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemLabelInput' | 'itemErrorIcon' | 'itemLoadingIcon'> {}
2
+ export interface SimpleTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemLabelInput' | 'itemErrorIcon' | 'itemLoadingIcon' | 'itemLoader'> {}
3
3
  export type SimpleTreeViewClassKey = keyof SimpleTreeViewClasses;
4
4
  export declare function getSimpleTreeViewUtilityClass(slot: string): string;
5
5
  export declare const simpleTreeViewClasses: SimpleTreeViewClasses;
@@ -1,5 +1,5 @@
1
1
  import type { TreeViewClasses } from "../internals/TreeViewProvider/TreeViewStyleContext.js";
2
- export interface SimpleTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemLabelInput' | 'itemErrorIcon' | 'itemLoadingIcon'> {}
2
+ export interface SimpleTreeViewClasses extends Omit<TreeViewClasses, 'itemDragAndDropOverlay' | 'itemLabelInput' | 'itemErrorIcon' | 'itemLoadingIcon' | 'itemLoader'> {}
3
3
  export type SimpleTreeViewClassKey = keyof SimpleTreeViewClasses;
4
4
  export declare function getSimpleTreeViewUtilityClass(slot: string): string;
5
5
  export declare const simpleTreeViewClasses: SimpleTreeViewClasses;
@@ -27,6 +27,7 @@ var _TreeItemDragAndDropOverlay = require("../TreeItemDragAndDropOverlay");
27
27
  var _TreeItemProvider = require("../TreeItemProvider");
28
28
  var _TreeItemLabelInput = require("../TreeItemLabelInput");
29
29
  var _TreeViewProvider = require("../internals/TreeViewProvider");
30
+ var _constants = require("../internals/constants");
30
31
  var _jsxRuntime = require("react/jsx-runtime");
31
32
  const _excluded = ["visible"],
32
33
  _excluded2 = ["id", "itemId", "label", "disabled", "disableSelection", "children", "slots", "slotProps", "classes"];
@@ -117,7 +118,7 @@ const TreeItemIconContainer = exports.TreeItemIconContainer = (0, _zeroStyled.st
117
118
  name: 'MuiTreeItem',
118
119
  slot: 'IconContainer'
119
120
  })({
120
- width: 16,
121
+ width: _constants.TREE_ITEM_ICON_CONTAINER_WIDTH_PX,
121
122
  display: 'flex',
122
123
  flexShrink: 0,
123
124
  justifyContent: 'center',
@@ -22,6 +22,7 @@ import { TreeItemDragAndDropOverlay } from "../TreeItemDragAndDropOverlay/index.
22
22
  import { TreeItemProvider } from "../TreeItemProvider/index.mjs";
23
23
  import { TreeItemLabelInput } from "../TreeItemLabelInput/index.mjs";
24
24
  import { useTreeViewStyleContext } from "../internals/TreeViewProvider/index.mjs";
25
+ import { TREE_ITEM_ICON_CONTAINER_WIDTH_PX } from "../internals/constants.mjs";
25
26
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
26
27
  const useThemeProps = createUseThemeProps('MuiTreeItem');
27
28
  export const TreeItemRoot = styled('li', {
@@ -110,7 +111,7 @@ export const TreeItemIconContainer = styled('div', {
110
111
  name: 'MuiTreeItem',
111
112
  slot: 'IconContainer'
112
113
  })({
113
- width: 16,
114
+ width: TREE_ITEM_ICON_CONTAINER_WIDTH_PX,
114
115
  display: 'flex',
115
116
  flexShrink: 0,
116
117
  justifyContent: 'center',