@mui/x-tree-view 9.11.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 +317 -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
@@ -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',
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import type { TreeItemLoaderProps } from "./TreeItemLoader.types.mjs";
3
+ export declare const TreeItemLoaderRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, keyof React.ClassAttributes<HTMLLIElement> | keyof React.LiHTMLAttributes<HTMLLIElement>>, {}>;
4
+ /**
5
+ * Semantic wrapper for one loading row of the Rich Tree View.
6
+ *
7
+ * It renders a `li` element with the `role`, `aria` attributes, indentation and
8
+ * height of a tree item, so custom loading UIs stay accessible and aligned.
9
+ * Without children, it renders the default skeleton placeholders.
10
+ *
11
+ * Demos:
12
+ *
13
+ * - [Tree View](https://mui.com/x/react-tree-view/)
14
+ *
15
+ * API:
16
+ *
17
+ * - [TreeItemLoader API](https://mui.com/x/api/tree-view/tree-item-loader/)
18
+ */
19
+ declare const TreeItemLoader: React.ForwardRefExoticComponent<TreeItemLoaderProps & React.RefAttributes<HTMLLIElement>>;
20
+ export { TreeItemLoader };
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import type { TreeItemLoaderProps } from "./TreeItemLoader.types.js";
3
+ export declare const TreeItemLoaderRoot: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme>, Pick<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, keyof React.ClassAttributes<HTMLLIElement> | keyof React.LiHTMLAttributes<HTMLLIElement>>, {}>;
4
+ /**
5
+ * Semantic wrapper for one loading row of the Rich Tree View.
6
+ *
7
+ * It renders a `li` element with the `role`, `aria` attributes, indentation and
8
+ * height of a tree item, so custom loading UIs stay accessible and aligned.
9
+ * Without children, it renders the default skeleton placeholders.
10
+ *
11
+ * Demos:
12
+ *
13
+ * - [Tree View](https://mui.com/x/react-tree-view/)
14
+ *
15
+ * API:
16
+ *
17
+ * - [TreeItemLoader API](https://mui.com/x/api/tree-view/tree-item-loader/)
18
+ */
19
+ declare const TreeItemLoader: React.ForwardRefExoticComponent<TreeItemLoaderProps & React.RefAttributes<HTMLLIElement>>;
20
+ export { TreeItemLoader };
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.TreeItemLoaderRoot = exports.TreeItemLoader = void 0;
10
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
+ var React = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _clsx = _interopRequireDefault(require("clsx"));
15
+ var _Skeleton = _interopRequireDefault(require("@mui/material/Skeleton"));
16
+ var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
17
+ var _zeroStyled = require("../internals/zero-styled");
18
+ var _constants = require("../internals/constants");
19
+ var _treeItemLoaderClasses = require("./treeItemLoaderClasses");
20
+ var _TreeItemLoaderContext = require("./TreeItemLoaderContext");
21
+ var _jsxRuntime = require("react/jsx-runtime");
22
+ const _excluded = ["children", "className", "classes", "style", "ownerState"];
23
+ const useThemeProps = (0, _zeroStyled.createUseThemeProps)('MuiTreeItemLoader');
24
+
25
+ // Rotated with `nth-of-type` so consecutive rows render labels of different widths.
26
+ const LABEL_WIDTHS = ['40%', '70%', '55%', '50%', '65%'];
27
+ const TreeItemLoaderRoot = exports.TreeItemLoaderRoot = (0, _zeroStyled.styled)('li', {
28
+ name: 'MuiTreeItemLoader',
29
+ slot: 'Root'
30
+ })(({
31
+ theme
32
+ }) => (0, _extends2.default)({
33
+ listStyle: 'none',
34
+ margin: 0
35
+ }, theme.typography.body1, {
36
+ padding: theme.spacing(0.5, 1),
37
+ // Same indentation formula as the tree item content.
38
+ paddingLeft: `calc(${theme.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth, 0))`,
39
+ height: 'var(--TreeView-itemHeight, unset)',
40
+ boxSizing: 'border-box',
41
+ display: 'flex',
42
+ alignItems: 'center',
43
+ gap: theme.spacing(1),
44
+ [`& .${_treeItemLoaderClasses.treeItemLoaderClasses.iconContainer}`]: {
45
+ width: _constants.TREE_ITEM_ICON_CONTAINER_WIDTH_PX,
46
+ flexShrink: 0,
47
+ display: 'inline-block'
48
+ },
49
+ [`& .${_treeItemLoaderClasses.treeItemLoaderClasses.checkbox}`]: {
50
+ flexShrink: 0
51
+ }
52
+ }, Object.fromEntries(LABEL_WIDTHS.map((width, index) => [`&:nth-of-type(5n + ${index + 1}) .${_treeItemLoaderClasses.treeItemLoaderClasses.label}`, {
53
+ width
54
+ }]))));
55
+ const useUtilityClasses = classes => {
56
+ const slots = {
57
+ root: ['root'],
58
+ iconContainer: ['iconContainer'],
59
+ checkbox: ['checkbox'],
60
+ label: ['label']
61
+ };
62
+ return (0, _composeClasses.default)(slots, _treeItemLoaderClasses.getTreeItemLoaderUtilityClass, classes);
63
+ };
64
+
65
+ /**
66
+ * Semantic wrapper for one loading row of the Rich Tree View.
67
+ *
68
+ * It renders a `li` element with the `role`, `aria` attributes, indentation and
69
+ * height of a tree item, so custom loading UIs stay accessible and aligned.
70
+ * Without children, it renders the default skeleton placeholders.
71
+ *
72
+ * Demos:
73
+ *
74
+ * - [Tree View](https://mui.com/x/react-tree-view/)
75
+ *
76
+ * API:
77
+ *
78
+ * - [TreeItemLoader API](https://mui.com/x/api/tree-view/tree-item-loader/)
79
+ */
80
+ const TreeItemLoader = exports.TreeItemLoader = /*#__PURE__*/React.forwardRef(function TreeItemLoader(inProps, ref) {
81
+ const props = useThemeProps({
82
+ props: inProps,
83
+ name: 'MuiTreeItemLoader'
84
+ });
85
+ const {
86
+ children,
87
+ className,
88
+ classes: classesProp,
89
+ style
90
+ } = props,
91
+ other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
92
+ const {
93
+ itemDepth,
94
+ itemHeight,
95
+ isCheckboxSelectionEnabled
96
+ } = React.useContext(_TreeItemLoaderContext.TreeItemLoaderContext);
97
+ const classes = useUtilityClasses(classesProp);
98
+ const rootStyle = (0, _extends2.default)({
99
+ '--TreeView-itemDepth': itemDepth
100
+ }, itemHeight == null ? {} : {
101
+ '--TreeView-itemHeight': `${itemHeight}px`
102
+ }, style);
103
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(TreeItemLoaderRoot, (0, _extends2.default)({
104
+ role: "treeitem",
105
+ "aria-disabled": true
106
+ }, other, {
107
+ className: (0, _clsx.default)(classes.root, className),
108
+ style: rootStyle,
109
+ ref: ref,
110
+ children: children ?? /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
111
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
112
+ className: classes.iconContainer
113
+ }), isCheckboxSelectionEnabled &&
114
+ /*#__PURE__*/
115
+ // Same size as the checkbox rendered by the tree item, to keep the labels aligned.
116
+ (0, _jsxRuntime.jsx)(_Skeleton.default, {
117
+ variant: "circular",
118
+ width: 24,
119
+ height: 24,
120
+ className: classes.checkbox
121
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Skeleton.default, {
122
+ className: classes.label
123
+ })]
124
+ })
125
+ }));
126
+ });
127
+ if (process.env.NODE_ENV !== "production") TreeItemLoader.displayName = "TreeItemLoader";
128
+ process.env.NODE_ENV !== "production" ? TreeItemLoader.propTypes /* remove-proptypes */ = {
129
+ // ----------------------------- Warning --------------------------------
130
+ // | These PropTypes are generated from the TypeScript type definitions |
131
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
132
+ // ----------------------------------------------------------------------
133
+ /**
134
+ * The content of the loading row.
135
+ * When not provided, the default skeleton placeholders are rendered.
136
+ */
137
+ children: _propTypes.default.node,
138
+ /**
139
+ * Override or extend the styles applied to the component.
140
+ */
141
+ classes: _propTypes.default.object,
142
+ /**
143
+ * State of the loading row, forwarded by the `itemLoader` slot.
144
+ * The component does not render it.
145
+ */
146
+ ownerState: _propTypes.default.shape({
147
+ index: _propTypes.default.number.isRequired,
148
+ isCheckboxSelectionEnabled: _propTypes.default.bool.isRequired,
149
+ itemDepth: _propTypes.default.number.isRequired,
150
+ itemsCount: _propTypes.default.number.isRequired
151
+ })
152
+ } : void 0;
@@ -0,0 +1,146 @@
1
+ 'use client';
2
+
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import _extends from "@babel/runtime/helpers/esm/extends";
5
+ const _excluded = ["children", "className", "classes", "style", "ownerState"];
6
+ import * as React from 'react';
7
+ import PropTypes from 'prop-types';
8
+ import clsx from 'clsx';
9
+ import Skeleton from '@mui/material/Skeleton';
10
+ import composeClasses from '@mui/utils/composeClasses';
11
+ import { styled, createUseThemeProps } from "../internals/zero-styled/index.mjs";
12
+ import { TREE_ITEM_ICON_CONTAINER_WIDTH_PX } from "../internals/constants.mjs";
13
+ import { getTreeItemLoaderUtilityClass, treeItemLoaderClasses } from "./treeItemLoaderClasses.mjs";
14
+ import { TreeItemLoaderContext } from "./TreeItemLoaderContext.mjs";
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ const useThemeProps = createUseThemeProps('MuiTreeItemLoader');
17
+
18
+ // Rotated with `nth-of-type` so consecutive rows render labels of different widths.
19
+ const LABEL_WIDTHS = ['40%', '70%', '55%', '50%', '65%'];
20
+ export const TreeItemLoaderRoot = styled('li', {
21
+ name: 'MuiTreeItemLoader',
22
+ slot: 'Root'
23
+ })(({
24
+ theme
25
+ }) => _extends({
26
+ listStyle: 'none',
27
+ margin: 0
28
+ }, theme.typography.body1, {
29
+ padding: theme.spacing(0.5, 1),
30
+ // Same indentation formula as the tree item content.
31
+ paddingLeft: `calc(${theme.spacing(1)} + var(--TreeView-itemChildrenIndentation) * var(--TreeView-itemDepth, 0))`,
32
+ height: 'var(--TreeView-itemHeight, unset)',
33
+ boxSizing: 'border-box',
34
+ display: 'flex',
35
+ alignItems: 'center',
36
+ gap: theme.spacing(1),
37
+ [`& .${treeItemLoaderClasses.iconContainer}`]: {
38
+ width: TREE_ITEM_ICON_CONTAINER_WIDTH_PX,
39
+ flexShrink: 0,
40
+ display: 'inline-block'
41
+ },
42
+ [`& .${treeItemLoaderClasses.checkbox}`]: {
43
+ flexShrink: 0
44
+ }
45
+ }, Object.fromEntries(LABEL_WIDTHS.map((width, index) => [`&:nth-of-type(5n + ${index + 1}) .${treeItemLoaderClasses.label}`, {
46
+ width
47
+ }]))));
48
+ const useUtilityClasses = classes => {
49
+ const slots = {
50
+ root: ['root'],
51
+ iconContainer: ['iconContainer'],
52
+ checkbox: ['checkbox'],
53
+ label: ['label']
54
+ };
55
+ return composeClasses(slots, getTreeItemLoaderUtilityClass, classes);
56
+ };
57
+
58
+ /**
59
+ * Semantic wrapper for one loading row of the Rich Tree View.
60
+ *
61
+ * It renders a `li` element with the `role`, `aria` attributes, indentation and
62
+ * height of a tree item, so custom loading UIs stay accessible and aligned.
63
+ * Without children, it renders the default skeleton placeholders.
64
+ *
65
+ * Demos:
66
+ *
67
+ * - [Tree View](https://mui.com/x/react-tree-view/)
68
+ *
69
+ * API:
70
+ *
71
+ * - [TreeItemLoader API](https://mui.com/x/api/tree-view/tree-item-loader/)
72
+ */
73
+ const TreeItemLoader = /*#__PURE__*/React.forwardRef(function TreeItemLoader(inProps, ref) {
74
+ const props = useThemeProps({
75
+ props: inProps,
76
+ name: 'MuiTreeItemLoader'
77
+ });
78
+ const {
79
+ children,
80
+ className,
81
+ classes: classesProp,
82
+ style
83
+ } = props,
84
+ other = _objectWithoutPropertiesLoose(props, _excluded);
85
+ const {
86
+ itemDepth,
87
+ itemHeight,
88
+ isCheckboxSelectionEnabled
89
+ } = React.useContext(TreeItemLoaderContext);
90
+ const classes = useUtilityClasses(classesProp);
91
+ const rootStyle = _extends({
92
+ '--TreeView-itemDepth': itemDepth
93
+ }, itemHeight == null ? {} : {
94
+ '--TreeView-itemHeight': `${itemHeight}px`
95
+ }, style);
96
+ return /*#__PURE__*/_jsx(TreeItemLoaderRoot, _extends({
97
+ role: "treeitem",
98
+ "aria-disabled": true
99
+ }, other, {
100
+ className: clsx(classes.root, className),
101
+ style: rootStyle,
102
+ ref: ref,
103
+ children: children ?? /*#__PURE__*/_jsxs(React.Fragment, {
104
+ children: [/*#__PURE__*/_jsx("span", {
105
+ className: classes.iconContainer
106
+ }), isCheckboxSelectionEnabled &&
107
+ /*#__PURE__*/
108
+ // Same size as the checkbox rendered by the tree item, to keep the labels aligned.
109
+ _jsx(Skeleton, {
110
+ variant: "circular",
111
+ width: 24,
112
+ height: 24,
113
+ className: classes.checkbox
114
+ }), /*#__PURE__*/_jsx(Skeleton, {
115
+ className: classes.label
116
+ })]
117
+ })
118
+ }));
119
+ });
120
+ if (process.env.NODE_ENV !== "production") TreeItemLoader.displayName = "TreeItemLoader";
121
+ process.env.NODE_ENV !== "production" ? TreeItemLoader.propTypes /* remove-proptypes */ = {
122
+ // ----------------------------- Warning --------------------------------
123
+ // | These PropTypes are generated from the TypeScript type definitions |
124
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
125
+ // ----------------------------------------------------------------------
126
+ /**
127
+ * The content of the loading row.
128
+ * When not provided, the default skeleton placeholders are rendered.
129
+ */
130
+ children: PropTypes.node,
131
+ /**
132
+ * Override or extend the styles applied to the component.
133
+ */
134
+ classes: PropTypes.object,
135
+ /**
136
+ * State of the loading row, forwarded by the `itemLoader` slot.
137
+ * The component does not render it.
138
+ */
139
+ ownerState: PropTypes.shape({
140
+ index: PropTypes.number.isRequired,
141
+ isCheckboxSelectionEnabled: PropTypes.bool.isRequired,
142
+ itemDepth: PropTypes.number.isRequired,
143
+ itemsCount: PropTypes.number.isRequired
144
+ })
145
+ } : void 0;
146
+ export { TreeItemLoader };
@@ -0,0 +1,36 @@
1
+ import type * as React from 'react';
2
+ import type { TreeItemLoaderClasses } from "./treeItemLoaderClasses.mjs";
3
+ export interface TreeItemLoaderOwnerState {
4
+ /**
5
+ * Index of the loading row inside its group.
6
+ */
7
+ index: number;
8
+ /**
9
+ * Number of loading rows rendered in the group.
10
+ */
11
+ itemsCount: number;
12
+ /**
13
+ * Depth of the loading rows.
14
+ */
15
+ itemDepth: number;
16
+ /**
17
+ * Whether each row renders a checkbox placeholder.
18
+ */
19
+ isCheckboxSelectionEnabled: boolean;
20
+ }
21
+ export interface TreeItemLoaderProps extends React.HTMLAttributes<HTMLLIElement> {
22
+ /**
23
+ * The content of the loading row.
24
+ * When not provided, the default skeleton placeholders are rendered.
25
+ */
26
+ children?: React.ReactNode;
27
+ /**
28
+ * Override or extend the styles applied to the component.
29
+ */
30
+ classes?: Partial<TreeItemLoaderClasses>;
31
+ /**
32
+ * State of the loading row, forwarded by the `itemLoader` slot.
33
+ * The component does not render it.
34
+ */
35
+ ownerState?: TreeItemLoaderOwnerState;
36
+ }
@@ -0,0 +1,36 @@
1
+ import type * as React from 'react';
2
+ import type { TreeItemLoaderClasses } from "./treeItemLoaderClasses.js";
3
+ export interface TreeItemLoaderOwnerState {
4
+ /**
5
+ * Index of the loading row inside its group.
6
+ */
7
+ index: number;
8
+ /**
9
+ * Number of loading rows rendered in the group.
10
+ */
11
+ itemsCount: number;
12
+ /**
13
+ * Depth of the loading rows.
14
+ */
15
+ itemDepth: number;
16
+ /**
17
+ * Whether each row renders a checkbox placeholder.
18
+ */
19
+ isCheckboxSelectionEnabled: boolean;
20
+ }
21
+ export interface TreeItemLoaderProps extends React.HTMLAttributes<HTMLLIElement> {
22
+ /**
23
+ * The content of the loading row.
24
+ * When not provided, the default skeleton placeholders are rendered.
25
+ */
26
+ children?: React.ReactNode;
27
+ /**
28
+ * Override or extend the styles applied to the component.
29
+ */
30
+ classes?: Partial<TreeItemLoaderClasses>;
31
+ /**
32
+ * State of the loading row, forwarded by the `itemLoader` slot.
33
+ * The component does not render it.
34
+ */
35
+ ownerState?: TreeItemLoaderOwnerState;
36
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ export interface TreeItemLoaderContextValue {
3
+ /**
4
+ * Depth of the loading rows.
5
+ * `0` for the whole-tree loading UI, parent depth + 1 for the children of a lazily loading item.
6
+ */
7
+ itemDepth: number;
8
+ /**
9
+ * Fixed height of the rows, from the `itemHeight` prop of the tree.
10
+ */
11
+ itemHeight: number | null;
12
+ /**
13
+ * Whether each row renders a checkbox placeholder.
14
+ */
15
+ isCheckboxSelectionEnabled: boolean;
16
+ }
17
+ /**
18
+ * Provides the layout information of the surrounding tree to `TreeItemLoader`.
19
+ * The loading UI renders outside of the tree items, so the depth and height
20
+ * cannot be derived from an item.
21
+ *
22
+ * @ignore - internal context.
23
+ */
24
+ export declare const TreeItemLoaderContext: React.Context<TreeItemLoaderContextValue>;
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ export interface TreeItemLoaderContextValue {
3
+ /**
4
+ * Depth of the loading rows.
5
+ * `0` for the whole-tree loading UI, parent depth + 1 for the children of a lazily loading item.
6
+ */
7
+ itemDepth: number;
8
+ /**
9
+ * Fixed height of the rows, from the `itemHeight` prop of the tree.
10
+ */
11
+ itemHeight: number | null;
12
+ /**
13
+ * Whether each row renders a checkbox placeholder.
14
+ */
15
+ isCheckboxSelectionEnabled: boolean;
16
+ }
17
+ /**
18
+ * Provides the layout information of the surrounding tree to `TreeItemLoader`.
19
+ * The loading UI renders outside of the tree items, so the depth and height
20
+ * cannot be derived from an item.
21
+ *
22
+ * @ignore - internal context.
23
+ */
24
+ export declare const TreeItemLoaderContext: React.Context<TreeItemLoaderContextValue>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.TreeItemLoaderContext = void 0;
9
+ var React = _interopRequireWildcard(require("react"));
10
+ /**
11
+ * Provides the layout information of the surrounding tree to `TreeItemLoader`.
12
+ * The loading UI renders outside of the tree items, so the depth and height
13
+ * cannot be derived from an item.
14
+ *
15
+ * @ignore - internal context.
16
+ */
17
+ const TreeItemLoaderContext = exports.TreeItemLoaderContext = /*#__PURE__*/React.createContext({
18
+ itemDepth: 0,
19
+ itemHeight: null,
20
+ isCheckboxSelectionEnabled: false
21
+ });
22
+ if (process.env.NODE_ENV !== "production") TreeItemLoaderContext.displayName = "TreeItemLoaderContext";
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ /**
5
+ * Provides the layout information of the surrounding tree to `TreeItemLoader`.
6
+ * The loading UI renders outside of the tree items, so the depth and height
7
+ * cannot be derived from an item.
8
+ *
9
+ * @ignore - internal context.
10
+ */
11
+ export const TreeItemLoaderContext = /*#__PURE__*/React.createContext({
12
+ itemDepth: 0,
13
+ itemHeight: null,
14
+ isCheckboxSelectionEnabled: false
15
+ });
16
+ if (process.env.NODE_ENV !== "production") TreeItemLoaderContext.displayName = "TreeItemLoaderContext";