@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.
- package/CHANGELOG.md +152 -0
- package/RichTreeView/RichTreeView.js +30 -25
- package/RichTreeView/RichTreeView.mjs +30 -25
- package/RichTreeView/RichTreeView.types.d.mts +27 -1
- package/RichTreeView/RichTreeView.types.d.ts +27 -1
- package/RichTreeView/richTreeViewClasses.d.mts +4 -1
- package/RichTreeView/richTreeViewClasses.d.ts +4 -1
- package/RichTreeView/richTreeViewClasses.js +1 -1
- package/RichTreeView/richTreeViewClasses.mjs +1 -1
- package/RichTreeView/useExtractRichTreeViewParameters.d.mts +1 -0
- package/RichTreeView/useExtractRichTreeViewParameters.d.ts +1 -0
- package/RichTreeView/useExtractRichTreeViewParameters.js +6 -3
- package/RichTreeView/useExtractRichTreeViewParameters.mjs +6 -3
- package/SimpleTreeView/simpleTreeViewClasses.d.mts +1 -1
- package/SimpleTreeView/simpleTreeViewClasses.d.ts +1 -1
- package/TreeItem/TreeItem.js +2 -1
- package/TreeItem/TreeItem.mjs +2 -1
- package/TreeItemLoader/TreeItemLoader.d.mts +20 -0
- package/TreeItemLoader/TreeItemLoader.d.ts +20 -0
- package/TreeItemLoader/TreeItemLoader.js +152 -0
- package/TreeItemLoader/TreeItemLoader.mjs +146 -0
- package/TreeItemLoader/TreeItemLoader.types.d.mts +36 -0
- package/TreeItemLoader/TreeItemLoader.types.d.ts +36 -0
- package/TreeItemLoader/TreeItemLoader.types.js +5 -0
- package/TreeItemLoader/TreeItemLoader.types.mjs +1 -0
- package/TreeItemLoader/TreeItemLoaderContext.d.mts +24 -0
- package/TreeItemLoader/TreeItemLoaderContext.d.ts +24 -0
- package/TreeItemLoader/TreeItemLoaderContext.js +22 -0
- package/TreeItemLoader/TreeItemLoaderContext.mjs +16 -0
- package/TreeItemLoader/index.d.mts +3 -0
- package/TreeItemLoader/index.d.ts +3 -0
- package/TreeItemLoader/index.js +34 -0
- package/TreeItemLoader/index.mjs +2 -0
- package/TreeItemLoader/treeItemLoaderClasses.d.mts +13 -0
- package/TreeItemLoader/treeItemLoaderClasses.d.ts +13 -0
- package/TreeItemLoader/treeItemLoaderClasses.js +14 -0
- package/TreeItemLoader/treeItemLoaderClasses.mjs +6 -0
- package/index.d.mts +1 -0
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/index.mjs +2 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +2 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.mjs +3 -3
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.mts +4 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +4 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.mts +1 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +1 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +2 -9
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.mjs +2 -7
- package/internals/TreeViewProvider/TreeViewProvider.js +7 -3
- package/internals/TreeViewProvider/TreeViewProvider.mjs +7 -3
- package/internals/TreeViewProvider/TreeViewProvider.types.d.mts +3 -3
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/internals/TreeViewProvider/TreeViewStyleContext.d.mts +30 -2
- package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +30 -2
- package/internals/TreeViewProvider/TreeViewStyleContext.js +12 -0
- package/internals/TreeViewProvider/TreeViewStyleContext.mjs +13 -0
- package/internals/components/RichTreeViewItems.js +59 -2
- package/internals/components/RichTreeViewItems.mjs +59 -2
- package/internals/components/RichTreeViewLoading.d.mts +97 -0
- package/internals/components/RichTreeViewLoading.d.ts +97 -0
- package/internals/components/RichTreeViewLoading.js +171 -0
- package/internals/components/RichTreeViewLoading.mjs +160 -0
- package/internals/constants.d.mts +6 -0
- package/internals/constants.d.ts +6 -0
- package/internals/constants.js +12 -0
- package/internals/constants.mjs +6 -0
- package/internals/hooks/useTreeViewStore.d.mts +1 -1
- package/internals/hooks/useTreeViewStore.d.ts +1 -1
- package/internals/hooks/useTreeViewStore.js +7 -3
- package/internals/hooks/useTreeViewStore.mjs +7 -3
- package/internals/index.d.mts +2 -0
- package/internals/index.d.ts +2 -0
- package/internals/index.js +13 -0
- package/internals/index.mjs +1 -0
- package/internals/plugins/expansion/selectors.d.mts +3 -2
- package/internals/plugins/expansion/selectors.d.ts +3 -2
- package/internals/plugins/expansion/selectors.js +4 -4
- package/internals/plugins/expansion/selectors.mjs +5 -5
- package/internals/plugins/focus/selectors.d.mts +3 -2
- package/internals/plugins/focus/selectors.d.ts +3 -2
- package/internals/plugins/focus/selectors.js +3 -3
- package/internals/plugins/focus/selectors.mjs +4 -4
- package/internals/plugins/id/selectors.d.mts +6 -3
- package/internals/plugins/id/selectors.d.ts +6 -3
- package/internals/plugins/id/selectors.js +4 -5
- package/internals/plugins/id/selectors.mjs +4 -5
- package/internals/plugins/items/selectors.d.mts +9 -8
- package/internals/plugins/items/selectors.d.ts +9 -8
- package/internals/plugins/items/selectors.js +15 -16
- package/internals/plugins/items/selectors.mjs +15 -16
- package/internals/plugins/labelEditing/selectors.d.mts +3 -2
- package/internals/plugins/labelEditing/selectors.d.ts +3 -2
- package/internals/plugins/labelEditing/selectors.js +6 -5
- package/internals/plugins/labelEditing/selectors.mjs +6 -5
- package/internals/plugins/lazyLoading/selectors.d.mts +9 -3
- package/internals/plugins/lazyLoading/selectors.d.ts +9 -3
- package/internals/plugins/lazyLoading/selectors.js +10 -6
- package/internals/plugins/lazyLoading/selectors.mjs +10 -6
- package/internals/plugins/lazyLoading/types.d.mts +5 -1
- package/internals/plugins/lazyLoading/types.d.ts +5 -1
- package/internals/plugins/selection/selectors.d.mts +15 -9
- package/internals/plugins/selection/selectors.d.ts +15 -9
- package/internals/plugins/selection/selectors.js +12 -12
- package/internals/plugins/selection/selectors.mjs +13 -13
- package/package.json +19 -7
- package/useTreeItem/useTreeItem.js +3 -3
- package/useTreeItem/useTreeItem.mjs +3 -3
|
@@ -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 @@
|
|
|
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";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
TreeItemLoader: true,
|
|
8
|
+
TreeItemLoaderRoot: true
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "TreeItemLoader", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _TreeItemLoader.TreeItemLoader;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "TreeItemLoaderRoot", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return _TreeItemLoader.TreeItemLoaderRoot;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var _TreeItemLoader = require("./TreeItemLoader");
|
|
23
|
+
var _treeItemLoaderClasses = require("./treeItemLoaderClasses");
|
|
24
|
+
Object.keys(_treeItemLoaderClasses).forEach(function (key) {
|
|
25
|
+
if (key === "default" || key === "__esModule") return;
|
|
26
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
27
|
+
if (key in exports && exports[key] === _treeItemLoaderClasses[key]) return;
|
|
28
|
+
Object.defineProperty(exports, key, {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () {
|
|
31
|
+
return _treeItemLoaderClasses[key];
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface TreeItemLoaderClasses {
|
|
2
|
+
/** Styles applied to the root element. */
|
|
3
|
+
root: string;
|
|
4
|
+
/** Styles applied to the icon gutter element of the default content. */
|
|
5
|
+
iconContainer: string;
|
|
6
|
+
/** Styles applied to the checkbox placeholder element of the default content. */
|
|
7
|
+
checkbox: string;
|
|
8
|
+
/** Styles applied to the label placeholder element of the default content. */
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
export type TreeItemLoaderClassKey = keyof TreeItemLoaderClasses;
|
|
12
|
+
export declare function getTreeItemLoaderUtilityClass(slot: string): string;
|
|
13
|
+
export declare const treeItemLoaderClasses: TreeItemLoaderClasses;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface TreeItemLoaderClasses {
|
|
2
|
+
/** Styles applied to the root element. */
|
|
3
|
+
root: string;
|
|
4
|
+
/** Styles applied to the icon gutter element of the default content. */
|
|
5
|
+
iconContainer: string;
|
|
6
|
+
/** Styles applied to the checkbox placeholder element of the default content. */
|
|
7
|
+
checkbox: string;
|
|
8
|
+
/** Styles applied to the label placeholder element of the default content. */
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
export type TreeItemLoaderClassKey = keyof TreeItemLoaderClasses;
|
|
12
|
+
export declare function getTreeItemLoaderUtilityClass(slot: string): string;
|
|
13
|
+
export declare const treeItemLoaderClasses: TreeItemLoaderClasses;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getTreeItemLoaderUtilityClass = getTreeItemLoaderUtilityClass;
|
|
8
|
+
exports.treeItemLoaderClasses = void 0;
|
|
9
|
+
var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
|
|
10
|
+
var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
|
|
11
|
+
function getTreeItemLoaderUtilityClass(slot) {
|
|
12
|
+
return (0, _generateUtilityClass.default)('MuiTreeItemLoader', slot);
|
|
13
|
+
}
|
|
14
|
+
const treeItemLoaderClasses = exports.treeItemLoaderClasses = (0, _generateUtilityClasses.default)('MuiTreeItemLoader', ['root', 'iconContainer', 'checkbox', 'label']);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
2
|
+
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
3
|
+
export function getTreeItemLoaderUtilityClass(slot) {
|
|
4
|
+
return generateUtilityClass('MuiTreeItemLoader', slot);
|
|
5
|
+
}
|
|
6
|
+
export const treeItemLoaderClasses = generateUtilityClasses('MuiTreeItemLoader', ['root', 'iconContainer', 'checkbox', 'label']);
|
package/index.d.mts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./TreeItemIcon/index.mjs";
|
|
|
6
6
|
export * from "./TreeItemProvider/index.mjs";
|
|
7
7
|
export * from "./TreeItemDragAndDropOverlay/index.mjs";
|
|
8
8
|
export * from "./TreeItemLabelInput/index.mjs";
|
|
9
|
+
export * from "./TreeItemLoader/index.mjs";
|
|
9
10
|
export * from "./models/index.mjs";
|
|
10
11
|
export * from "./icons/index.mjs";
|
|
11
12
|
export * from "./hooks/index.mjs";
|
package/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./TreeItemIcon/index.js";
|
|
|
6
6
|
export * from "./TreeItemProvider/index.js";
|
|
7
7
|
export * from "./TreeItemDragAndDropOverlay/index.js";
|
|
8
8
|
export * from "./TreeItemLabelInput/index.js";
|
|
9
|
+
export * from "./TreeItemLoader/index.js";
|
|
9
10
|
export * from "./models/index.js";
|
|
10
11
|
export * from "./icons/index.js";
|
|
11
12
|
export * from "./hooks/index.js";
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-tree-view v9.
|
|
2
|
+
* @mui/x-tree-view v9.13.0
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -98,6 +98,17 @@ Object.keys(_TreeItemLabelInput).forEach(function (key) {
|
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
100
|
});
|
|
101
|
+
var _TreeItemLoader = require("./TreeItemLoader");
|
|
102
|
+
Object.keys(_TreeItemLoader).forEach(function (key) {
|
|
103
|
+
if (key === "default" || key === "__esModule") return;
|
|
104
|
+
if (key in exports && exports[key] === _TreeItemLoader[key]) return;
|
|
105
|
+
Object.defineProperty(exports, key, {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function () {
|
|
108
|
+
return _TreeItemLoader[key];
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
101
112
|
var _models = require("./models");
|
|
102
113
|
Object.keys(_models).forEach(function (key) {
|
|
103
114
|
if (key === "default" || key === "__esModule") return;
|