@mui/x-tree-view 7.11.0 → 7.12.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 +194 -4
- package/RichTreeView/RichTreeView.js +11 -7
- package/RichTreeView/RichTreeView.types.d.ts +1 -1
- package/SimpleTreeView/SimpleTreeView.js +11 -7
- package/SimpleTreeView/SimpleTreeView.types.d.ts +1 -1
- package/TreeItem/TreeItem.js +36 -10
- package/TreeItem/TreeItem.types.d.ts +1 -1
- package/TreeItem/TreeItemContent.d.ts +2 -0
- package/TreeItem/TreeItemContent.js +11 -3
- package/TreeItem/treeItemClasses.d.ts +2 -0
- package/TreeItem/treeItemClasses.js +1 -1
- package/TreeItem/useTreeItemState.d.ts +1 -0
- package/TreeItem/useTreeItemState.js +5 -1
- package/TreeItem2/TreeItem2.js +15 -3
- package/TreeItem2/TreeItem2.types.d.ts +8 -1
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +4 -0
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js +69 -0
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts +6 -0
- package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js +1 -0
- package/TreeItem2DragAndDropOverlay/index.d.ts +2 -0
- package/TreeItem2DragAndDropOverlay/index.js +1 -0
- package/TreeItem2DragAndDropOverlay/package.json +6 -0
- package/TreeItem2Icon/TreeItem2Icon.js +3 -2
- package/TreeItem2Icon/TreeItem2Icon.types.d.ts +1 -1
- package/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/TreeView/TreeView.js +8 -3
- package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -1
- package/index.js +1 -1
- package/internals/TreeViewProvider/index.d.ts +1 -0
- package/internals/TreeViewProvider/index.js +2 -1
- package/internals/index.d.ts +6 -5
- package/internals/index.js +4 -3
- package/internals/models/index.d.ts +2 -0
- package/internals/models/index.js +3 -1
- package/internals/models/itemPlugin.d.ts +37 -0
- package/internals/models/itemPlugin.js +1 -0
- package/internals/models/plugin.d.ts +2 -15
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -3
- package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/index.js +2 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +6 -2
- package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +18 -4
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +2 -2
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +1 -2
- package/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/internals/useTreeView/useTreeViewBuildContext.js +23 -1
- package/internals/utils/tree.d.ts +8 -0
- package/internals/utils/tree.js +11 -0
- package/internals/utils/warning.d.ts +2 -1
- package/internals/utils/warning.js +19 -12
- package/models/items.d.ts +1 -0
- package/modern/RichTreeView/RichTreeView.js +11 -7
- package/modern/SimpleTreeView/SimpleTreeView.js +11 -7
- package/modern/TreeItem/TreeItem.js +36 -10
- package/modern/TreeItem/TreeItemContent.js +11 -3
- package/modern/TreeItem/treeItemClasses.js +1 -1
- package/modern/TreeItem/useTreeItemState.js +5 -1
- package/modern/TreeItem2/TreeItem2.js +15 -3
- package/modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js +69 -0
- package/modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js +1 -0
- package/modern/TreeItem2DragAndDropOverlay/index.js +1 -0
- package/modern/TreeItem2Icon/TreeItem2Icon.js +3 -2
- package/modern/TreeItem2Provider/TreeItem2Provider.js +1 -1
- package/modern/TreeView/TreeView.js +8 -3
- package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -1
- package/modern/index.js +1 -1
- package/modern/internals/TreeViewProvider/index.js +2 -1
- package/modern/internals/index.js +4 -3
- package/modern/internals/models/index.js +3 -1
- package/modern/internals/models/itemPlugin.js +1 -0
- package/modern/internals/plugins/useTreeViewItems/index.js +2 -1
- package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +6 -2
- package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +2 -2
- package/modern/internals/useTreeView/useTreeViewBuildContext.js +23 -1
- package/modern/internals/utils/tree.js +11 -0
- package/modern/internals/utils/warning.js +19 -12
- package/modern/useTreeItem2/useTreeItem2.js +43 -15
- package/node/RichTreeView/RichTreeView.js +12 -8
- package/node/SimpleTreeView/SimpleTreeView.js +11 -7
- package/node/TreeItem/TreeItem.js +45 -19
- package/node/TreeItem/TreeItemContent.js +11 -3
- package/node/TreeItem/treeItemClasses.js +1 -1
- package/node/TreeItem/useTreeItemState.js +6 -2
- package/node/TreeItem2/TreeItem2.js +21 -9
- package/node/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js +77 -0
- package/node/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js +5 -0
- package/node/TreeItem2DragAndDropOverlay/index.js +12 -0
- package/node/TreeItem2Icon/TreeItem2Icon.js +6 -5
- package/node/TreeItem2Provider/TreeItem2Provider.js +2 -2
- package/node/TreeView/TreeView.js +8 -3
- package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +2 -2
- package/node/index.js +1 -1
- package/node/internals/TreeViewProvider/index.js +8 -1
- package/node/internals/index.js +27 -2
- package/node/internals/models/index.js +22 -0
- package/node/internals/models/itemPlugin.js +5 -0
- package/node/internals/plugins/useTreeViewItems/index.js +14 -1
- package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +6 -2
- package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +2 -2
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +1 -1
- package/node/internals/useTreeView/useTreeViewBuildContext.js +23 -1
- package/node/internals/utils/tree.js +14 -2
- package/node/internals/utils/warning.js +21 -14
- package/node/useTreeItem2/useTreeItem2.js +49 -21
- package/package.json +5 -6
- package/useTreeItem2/index.d.ts +1 -1
- package/useTreeItem2/useTreeItem2.js +43 -15
- package/useTreeItem2/useTreeItem2.types.d.ts +17 -4
package/TreeItem2/TreeItem2.js
CHANGED
|
@@ -9,13 +9,14 @@ import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
|
9
9
|
import { alpha } from '@mui/material/styles';
|
|
10
10
|
import Collapse from '@mui/material/Collapse';
|
|
11
11
|
import MuiCheckbox from '@mui/material/Checkbox';
|
|
12
|
-
import
|
|
12
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
13
13
|
import { shouldForwardProp } from '@mui/system/createStyled';
|
|
14
14
|
import composeClasses from '@mui/utils/composeClasses';
|
|
15
15
|
import { styled, createUseThemeProps } from '../internals/zero-styled';
|
|
16
16
|
import { unstable_useTreeItem2 as useTreeItem2 } from '../useTreeItem2';
|
|
17
17
|
import { getTreeItemUtilityClass } from '../TreeItem';
|
|
18
18
|
import { TreeItem2Icon } from '../TreeItem2Icon';
|
|
19
|
+
import { TreeItem2DragAndDropOverlay } from '../TreeItem2DragAndDropOverlay';
|
|
19
20
|
import { TreeItem2Provider } from '../TreeItem2Provider';
|
|
20
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
21
22
|
const useThemeProps = createUseThemeProps('MuiTreeItem2');
|
|
@@ -42,6 +43,7 @@ export const TreeItem2Content = styled('div', {
|
|
|
42
43
|
width: '100%',
|
|
43
44
|
boxSizing: 'border-box',
|
|
44
45
|
// prevent width + padding to overflow
|
|
46
|
+
position: 'relative',
|
|
45
47
|
display: 'flex',
|
|
46
48
|
alignItems: 'center',
|
|
47
49
|
gap: theme.spacing(1),
|
|
@@ -176,7 +178,8 @@ const useUtilityClasses = ownerState => {
|
|
|
176
178
|
iconContainer: ['iconContainer'],
|
|
177
179
|
checkbox: ['checkbox'],
|
|
178
180
|
label: ['label'],
|
|
179
|
-
groupTransition: ['groupTransition']
|
|
181
|
+
groupTransition: ['groupTransition'],
|
|
182
|
+
dragAndDropOverlay: ['dragAndDropOverlay']
|
|
180
183
|
};
|
|
181
184
|
return composeClasses(slots, getTreeItemUtilityClass, classes);
|
|
182
185
|
};
|
|
@@ -212,6 +215,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
|
|
|
212
215
|
getCheckboxProps,
|
|
213
216
|
getLabelProps,
|
|
214
217
|
getGroupTransitionProps,
|
|
218
|
+
getDragAndDropOverlayProps,
|
|
215
219
|
status
|
|
216
220
|
} = useTreeItem2({
|
|
217
221
|
id,
|
|
@@ -274,6 +278,14 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
|
|
|
274
278
|
ownerState: {},
|
|
275
279
|
className: classes.groupTransition
|
|
276
280
|
});
|
|
281
|
+
const DragAndDropOverlay = slots.dragAndDropOverlay ?? TreeItem2DragAndDropOverlay;
|
|
282
|
+
const dragAndDropOverlayProps = useSlotProps({
|
|
283
|
+
elementType: DragAndDropOverlay,
|
|
284
|
+
getSlotProps: getDragAndDropOverlayProps,
|
|
285
|
+
externalSlotProps: slotProps.dragAndDropOverlay,
|
|
286
|
+
ownerState: {},
|
|
287
|
+
className: classes.dragAndDropOverlay
|
|
288
|
+
});
|
|
277
289
|
return /*#__PURE__*/_jsx(TreeItem2Provider, {
|
|
278
290
|
itemId: itemId,
|
|
279
291
|
children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {
|
|
@@ -284,7 +296,7 @@ export const TreeItem2 = /*#__PURE__*/React.forwardRef(function TreeItem2(inProp
|
|
|
284
296
|
slots: slots,
|
|
285
297
|
slotProps: slotProps
|
|
286
298
|
})
|
|
287
|
-
})), /*#__PURE__*/_jsx(Checkbox, _extends({}, checkboxProps)), /*#__PURE__*/_jsx(Label, _extends({}, labelProps))]
|
|
299
|
+
})), /*#__PURE__*/_jsx(Checkbox, _extends({}, checkboxProps)), /*#__PURE__*/_jsx(Label, _extends({}, labelProps)), /*#__PURE__*/_jsx(DragAndDropOverlay, _extends({}, dragAndDropOverlayProps))]
|
|
288
300
|
})), children && /*#__PURE__*/_jsx(TreeItem2GroupTransition, _extends({
|
|
289
301
|
as: GroupTransition
|
|
290
302
|
}, groupTransitionProps))]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { SlotComponentProps } from '@mui/
|
|
2
|
+
import { SlotComponentProps } from '@mui/utils';
|
|
3
3
|
import { UseTreeItem2Parameters, UseTreeItem2Status } from '../useTreeItem2';
|
|
4
4
|
import { TreeItemClasses } from '../TreeItem';
|
|
5
5
|
import { TreeItem2IconSlotProps, TreeItem2IconSlots } from '../TreeItem2Icon';
|
|
@@ -36,6 +36,12 @@ export interface TreeItem2Slots extends TreeItem2IconSlots {
|
|
|
36
36
|
* @default TreeItem2Label
|
|
37
37
|
*/
|
|
38
38
|
label?: React.ElementType;
|
|
39
|
+
/**
|
|
40
|
+
* The component that renders the overlay when an item reordering is ongoing.
|
|
41
|
+
* Warning: This slot is only useful when using the `RichTreeViewPro` component.
|
|
42
|
+
* @default TreeItem2DragAndDropOverlay
|
|
43
|
+
*/
|
|
44
|
+
dragAndDropOverlay?: React.ElementType;
|
|
39
45
|
}
|
|
40
46
|
export interface TreeItem2SlotProps extends TreeItem2IconSlotProps {
|
|
41
47
|
root?: SlotComponentProps<'li', {}, {}>;
|
|
@@ -44,6 +50,7 @@ export interface TreeItem2SlotProps extends TreeItem2IconSlotProps {
|
|
|
44
50
|
iconContainer?: SlotComponentProps<'div', {}, {}>;
|
|
45
51
|
checkbox?: SlotComponentProps<'button', {}, {}>;
|
|
46
52
|
label?: SlotComponentProps<'div', {}, {}>;
|
|
53
|
+
dragAndDropOverlay?: SlotComponentProps<'div', {}, {}>;
|
|
47
54
|
}
|
|
48
55
|
export interface TreeItem2Props extends Omit<UseTreeItem2Parameters, 'rootRef'>, Omit<React.HTMLAttributes<HTMLLIElement>, 'onFocus'> {
|
|
49
56
|
className?: string;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { TreeItem2DragAndDropOverlayProps } from './TreeItem2DragAndDropOverlay.types';
|
|
3
|
+
declare function TreeItem2DragAndDropOverlay(props: TreeItem2DragAndDropOverlayProps): React.JSX.Element | null;
|
|
4
|
+
export { TreeItem2DragAndDropOverlay };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { alpha } from '@mui/material/styles';
|
|
4
|
+
import { shouldForwardProp } from '@mui/system';
|
|
5
|
+
import { styled } from '../internals/zero-styled';
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
const TreeItem2DragAndDropOverlayRoot = styled('div', {
|
|
8
|
+
name: 'MuiTreeItem2DragAndDropOverlay',
|
|
9
|
+
slot: 'Root',
|
|
10
|
+
overridesResolver: (props, styles) => styles.root,
|
|
11
|
+
shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'action'
|
|
12
|
+
})(({
|
|
13
|
+
theme
|
|
14
|
+
}) => ({
|
|
15
|
+
position: 'absolute',
|
|
16
|
+
left: 0,
|
|
17
|
+
display: 'flex',
|
|
18
|
+
top: 0,
|
|
19
|
+
bottom: 0,
|
|
20
|
+
right: 0,
|
|
21
|
+
pointerEvents: 'none',
|
|
22
|
+
variants: [{
|
|
23
|
+
props: {
|
|
24
|
+
action: 'make-child'
|
|
25
|
+
},
|
|
26
|
+
style: {
|
|
27
|
+
marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))',
|
|
28
|
+
borderRadius: theme.shape.borderRadius,
|
|
29
|
+
backgroundColor: alpha((theme.vars || theme).palette.primary.dark, 0.15)
|
|
30
|
+
}
|
|
31
|
+
}, {
|
|
32
|
+
props: {
|
|
33
|
+
action: 'reorder-above'
|
|
34
|
+
},
|
|
35
|
+
style: _extends({
|
|
36
|
+
marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))',
|
|
37
|
+
borderTop: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`
|
|
38
|
+
}, theme.palette.mode === 'dark' && {
|
|
39
|
+
borderTop: `1px solid ${alpha((theme.vars || theme).palette.grey[100], 0.6)}`
|
|
40
|
+
})
|
|
41
|
+
}, {
|
|
42
|
+
props: {
|
|
43
|
+
action: 'reorder-below'
|
|
44
|
+
},
|
|
45
|
+
style: _extends({
|
|
46
|
+
marginLeft: 'calc(var(--TreeView-indentMultiplier) * var(--TreeView-itemDepth))',
|
|
47
|
+
borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`
|
|
48
|
+
}, theme.palette.mode === 'dark' && {
|
|
49
|
+
borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[100], 0.6)}`
|
|
50
|
+
})
|
|
51
|
+
}, {
|
|
52
|
+
props: {
|
|
53
|
+
action: 'move-to-parent'
|
|
54
|
+
},
|
|
55
|
+
style: _extends({
|
|
56
|
+
marginLeft: 'calc(var(--TreeView-indentMultiplier) * calc(var(--TreeView-itemDepth) - 1))',
|
|
57
|
+
borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`
|
|
58
|
+
}, theme.palette.mode === 'dark' && {
|
|
59
|
+
borderBottom: `1px solid ${alpha((theme.vars || theme).palette.grey[900], 0.6)}`
|
|
60
|
+
})
|
|
61
|
+
}]
|
|
62
|
+
}));
|
|
63
|
+
function TreeItem2DragAndDropOverlay(props) {
|
|
64
|
+
if (props.action == null) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
return /*#__PURE__*/_jsx(TreeItem2DragAndDropOverlayRoot, _extends({}, props));
|
|
68
|
+
}
|
|
69
|
+
export { TreeItem2DragAndDropOverlay };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TreeItem2DragAndDropOverlay } from './TreeItem2DragAndDropOverlay';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
|
-
import
|
|
5
|
-
import
|
|
4
|
+
import resolveComponentProps from '@mui/utils/resolveComponentProps';
|
|
5
|
+
import useSlotProps from '@mui/utils/useSlotProps';
|
|
6
|
+
import { useTreeViewContext } from '../internals/TreeViewProvider';
|
|
6
7
|
import { TreeViewCollapseIcon, TreeViewExpandIcon } from '../icons';
|
|
7
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
9
|
function TreeItem2Icon(props) {
|
package/TreeView/TreeView.js
CHANGED
|
@@ -155,6 +155,12 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
|
|
|
155
155
|
* @param {array} itemIds The ids of the expanded items.
|
|
156
156
|
*/
|
|
157
157
|
onExpandedItemsChange: PropTypes.func,
|
|
158
|
+
/**
|
|
159
|
+
* Callback fired when the `content` slot of a given tree item is clicked.
|
|
160
|
+
* @param {React.MouseEvent} event The DOM event that triggered the change.
|
|
161
|
+
* @param {string} itemId The id of the focused item.
|
|
162
|
+
*/
|
|
163
|
+
onItemClick: PropTypes.func,
|
|
158
164
|
/**
|
|
159
165
|
* Callback fired when a tree item is expanded or collapsed.
|
|
160
166
|
* @param {React.SyntheticEvent} event The DOM event that triggered the change.
|
|
@@ -163,10 +169,9 @@ process.env.NODE_ENV !== "production" ? TreeView.propTypes = {
|
|
|
163
169
|
*/
|
|
164
170
|
onItemExpansionToggle: PropTypes.func,
|
|
165
171
|
/**
|
|
166
|
-
* Callback fired when tree
|
|
167
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
172
|
+
* Callback fired when a given tree item is focused.
|
|
173
|
+
* @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
168
174
|
* @param {string} itemId The id of the focused item.
|
|
169
|
-
* @param {string} value of the focused item.
|
|
170
175
|
*/
|
|
171
176
|
onItemFocus: PropTypes.func,
|
|
172
177
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useTreeViewContext } from '../../internals/TreeViewProvider
|
|
1
|
+
import { useTreeViewContext } from '../../internals/TreeViewProvider';
|
|
2
2
|
const isItemExpandable = reactChildren => {
|
|
3
3
|
if (Array.isArray(reactChildren)) {
|
|
4
4
|
return reactChildren.length > 0 && reactChildren.some(isItemExpandable);
|
package/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { TreeViewProvider } from './TreeViewProvider';
|
|
1
|
+
export { TreeViewProvider } from './TreeViewProvider';
|
|
2
|
+
export { useTreeViewContext } from './useTreeViewContext';
|
package/internals/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { useTreeView } from './useTreeView';
|
|
2
|
-
export { TreeViewProvider } from './TreeViewProvider';
|
|
2
|
+
export { TreeViewProvider, useTreeViewContext } from './TreeViewProvider';
|
|
3
3
|
export { unstable_resetCleanupTracking } from './hooks/useInstanceEventHandler';
|
|
4
|
-
export type { TreeViewPlugin, TreeViewPluginSignature, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewPublicAPI, TreeViewExperimentalFeatures, } from './models';
|
|
4
|
+
export type { TreeViewPlugin, TreeViewPluginSignature, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewPublicAPI, TreeViewExperimentalFeatures, TreeViewItemMeta, TreeViewInstance, DefaultizedProps, TreeViewItemPlugin, MuiCancellableEvent, MuiCancellableEventHandler, } from './models';
|
|
5
5
|
export type { TreeViewCorePluginParameters } from './corePlugins';
|
|
6
6
|
export { useTreeViewExpansion } from './plugins/useTreeViewExpansion';
|
|
7
7
|
export type { UseTreeViewExpansionSignature, UseTreeViewExpansionParameters, } from './plugins/useTreeViewExpansion';
|
|
@@ -13,8 +13,9 @@ export { useTreeViewKeyboardNavigation } from './plugins/useTreeViewKeyboardNavi
|
|
|
13
13
|
export type { UseTreeViewKeyboardNavigationSignature } from './plugins/useTreeViewKeyboardNavigation';
|
|
14
14
|
export { useTreeViewIcons } from './plugins/useTreeViewIcons';
|
|
15
15
|
export type { UseTreeViewIconsSignature, UseTreeViewIconsParameters, } from './plugins/useTreeViewIcons';
|
|
16
|
-
export { useTreeViewItems } from './plugins/useTreeViewItems';
|
|
17
|
-
export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, } from './plugins/useTreeViewItems';
|
|
16
|
+
export { useTreeViewItems, buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID, } from './plugins/useTreeViewItems';
|
|
17
|
+
export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsState, } from './plugins/useTreeViewItems';
|
|
18
18
|
export { useTreeViewJSXItems } from './plugins/useTreeViewJSXItems';
|
|
19
19
|
export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters, } from './plugins/useTreeViewJSXItems';
|
|
20
|
-
export {
|
|
20
|
+
export { isTargetInDescendants } from './utils/tree';
|
|
21
|
+
export { warnOnce } from './utils/warning';
|
package/internals/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useTreeView } from './useTreeView';
|
|
2
|
-
export { TreeViewProvider } from './TreeViewProvider';
|
|
2
|
+
export { TreeViewProvider, useTreeViewContext } from './TreeViewProvider';
|
|
3
3
|
export { unstable_resetCleanupTracking } from './hooks/useInstanceEventHandler';
|
|
4
4
|
|
|
5
5
|
// Core plugins
|
|
@@ -10,6 +10,7 @@ export { useTreeViewSelection } from './plugins/useTreeViewSelection';
|
|
|
10
10
|
export { useTreeViewFocus } from './plugins/useTreeViewFocus';
|
|
11
11
|
export { useTreeViewKeyboardNavigation } from './plugins/useTreeViewKeyboardNavigation';
|
|
12
12
|
export { useTreeViewIcons } from './plugins/useTreeViewIcons';
|
|
13
|
-
export { useTreeViewItems } from './plugins/useTreeViewItems';
|
|
13
|
+
export { useTreeViewItems, buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './plugins/useTreeViewItems';
|
|
14
14
|
export { useTreeViewJSXItems } from './plugins/useTreeViewJSXItems';
|
|
15
|
-
export {
|
|
15
|
+
export { isTargetInDescendants } from './utils/tree';
|
|
16
|
+
export { warnOnce } from './utils/warning';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { EventHandlers } from '@mui/utils';
|
|
3
|
+
import type { UseTreeItem2ContentSlotOwnProps, UseTreeItem2DragAndDropOverlaySlotOwnProps, UseTreeItem2RootSlotOwnProps } from '../../useTreeItem2';
|
|
4
|
+
export interface TreeViewItemPluginSlotPropsEnhancerParams {
|
|
5
|
+
rootRefObject: React.MutableRefObject<HTMLLIElement | null>;
|
|
6
|
+
contentRefObject: React.MutableRefObject<HTMLDivElement | null>;
|
|
7
|
+
externalEventHandlers: EventHandlers;
|
|
8
|
+
}
|
|
9
|
+
type TreeViewItemPluginSlotPropsEnhancer<TSlotProps> = (params: TreeViewItemPluginSlotPropsEnhancerParams) => Partial<TSlotProps>;
|
|
10
|
+
export interface TreeViewItemPluginSlotPropsEnhancers {
|
|
11
|
+
root?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2RootSlotOwnProps>;
|
|
12
|
+
content?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2ContentSlotOwnProps>;
|
|
13
|
+
dragAndDropOverlay?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2DragAndDropOverlaySlotOwnProps>;
|
|
14
|
+
}
|
|
15
|
+
export interface TreeViewItemPluginResponse {
|
|
16
|
+
/**
|
|
17
|
+
* Root of the `content` slot enriched by the plugin.
|
|
18
|
+
*/
|
|
19
|
+
contentRef?: React.RefCallback<HTMLElement> | null;
|
|
20
|
+
/**
|
|
21
|
+
* Ref of the `root` slot enriched by the plugin
|
|
22
|
+
*/
|
|
23
|
+
rootRef?: React.RefCallback<HTMLLIElement> | null;
|
|
24
|
+
/**
|
|
25
|
+
* Callback to enhance the slot props of the Tree Item.
|
|
26
|
+
*
|
|
27
|
+
* Not all slots are enabled by default,
|
|
28
|
+
* if a new plugin needs to pass to an unconfigured slot,
|
|
29
|
+
* it just needs to be added to `TreeViewItemPluginSlotPropsEnhancers`
|
|
30
|
+
*/
|
|
31
|
+
propsEnhancers?: TreeViewItemPluginSlotPropsEnhancers;
|
|
32
|
+
}
|
|
33
|
+
export interface TreeViewItemPluginOptions<TProps extends {}> extends Omit<TreeViewItemPluginResponse, 'propsEnhancers'> {
|
|
34
|
+
props: TProps;
|
|
35
|
+
}
|
|
36
|
+
export type TreeViewItemPlugin<TProps extends {}> = (options: TreeViewItemPluginOptions<TProps>) => void | TreeViewItemPluginResponse;
|
|
37
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { EventHandlers } from '@mui/
|
|
2
|
+
import { EventHandlers } from '@mui/utils';
|
|
3
3
|
import { TreeViewExperimentalFeatures, TreeViewInstance, TreeViewModel } from './treeView';
|
|
4
4
|
import type { MergeSignaturesProperty, OptionalIfEmpty } from './helpers';
|
|
5
5
|
import { TreeViewEventLookupElement } from './events';
|
|
6
6
|
import type { TreeViewCorePluginSignatures } from '../corePlugins';
|
|
7
|
+
import { TreeViewItemPlugin } from './itemPlugin';
|
|
7
8
|
import { TreeViewItemId } from '../../models';
|
|
8
9
|
export interface TreeViewPluginOptions<TSignature extends TreeViewAnyPluginSignature> {
|
|
9
10
|
instance: TreeViewUsedInstance<TSignature>;
|
|
@@ -126,20 +127,6 @@ type RemoveSetValue<Models extends Record<string, TreeViewModel<any>>> = {
|
|
|
126
127
|
};
|
|
127
128
|
export type TreeViewUsedModels<TSignature extends TreeViewAnyPluginSignature> = TSignature['models'] & RemoveSetValue<MergeSignaturesProperty<TreeViewRequiredPlugins<TSignature>, 'models'>>;
|
|
128
129
|
export type TreeViewUsedEvents<TSignature extends TreeViewAnyPluginSignature> = TSignature['events'] & MergeSignaturesProperty<TreeViewRequiredPlugins<TSignature>, 'events'>;
|
|
129
|
-
export interface TreeViewItemPluginOptions<TProps extends {}> extends TreeViewItemPluginResponse {
|
|
130
|
-
props: TProps;
|
|
131
|
-
}
|
|
132
|
-
export interface TreeViewItemPluginResponse {
|
|
133
|
-
/**
|
|
134
|
-
* Root of the `content` slot enriched by the plugin.
|
|
135
|
-
*/
|
|
136
|
-
contentRef?: React.RefCallback<HTMLElement> | null;
|
|
137
|
-
/**
|
|
138
|
-
* Ref of the `root` slot enriched by the plugin
|
|
139
|
-
*/
|
|
140
|
-
rootRef?: React.RefCallback<HTMLLIElement> | null;
|
|
141
|
-
}
|
|
142
|
-
export type TreeViewItemPlugin<TProps extends {}> = (options: TreeViewItemPluginOptions<TProps>) => void | TreeViewItemPluginResponse;
|
|
143
130
|
export type TreeItemWrapper<TSignatures extends readonly TreeViewAnyPluginSignature[]> = (params: {
|
|
144
131
|
itemId: TreeViewItemId;
|
|
145
132
|
children: React.ReactNode;
|
|
@@ -37,10 +37,9 @@ export interface UseTreeViewFocusInstance extends UseTreeViewFocusPublicAPI {
|
|
|
37
37
|
}
|
|
38
38
|
export interface UseTreeViewFocusParameters {
|
|
39
39
|
/**
|
|
40
|
-
* Callback fired when tree
|
|
41
|
-
* @param {React.SyntheticEvent} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
40
|
+
* Callback fired when a given tree item is focused.
|
|
41
|
+
* @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event.
|
|
42
42
|
* @param {string} itemId The id of the focused item.
|
|
43
|
-
* @param {string} value of the focused item.
|
|
44
43
|
*/
|
|
45
44
|
onItemFocus?: (event: React.SyntheticEvent | null, itemId: string) => void;
|
|
46
45
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { SlotComponentProps } from '@mui/
|
|
2
|
+
import { SlotComponentProps } from '@mui/utils';
|
|
3
3
|
import { TreeViewPluginSignature } from '../../models';
|
|
4
4
|
import { UseTreeViewItemsSignature } from '../useTreeViewItems';
|
|
5
5
|
import { UseTreeViewSelectionSignature } from '../useTreeViewSelection';
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { useTreeViewItems } from './useTreeViewItems';
|
|
2
|
-
export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsDefaultizedParameters, } from './useTreeViewItems.types';
|
|
2
|
+
export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsDefaultizedParameters, UseTreeViewItemsState, } from './useTreeViewItems.types';
|
|
3
|
+
export { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils';
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { useTreeViewItems } from './useTreeViewItems';
|
|
1
|
+
export { useTreeViewItems } from './useTreeViewItems';
|
|
2
|
+
export { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from './useTreeViewItems.utils';
|
|
@@ -184,8 +184,11 @@ export const useTreeViewItems = ({
|
|
|
184
184
|
areItemUpdatesPrevented
|
|
185
185
|
},
|
|
186
186
|
contextValue: {
|
|
187
|
-
|
|
188
|
-
|
|
187
|
+
items: {
|
|
188
|
+
onItemClick: params.onItemClick,
|
|
189
|
+
disabledItemsFocusable: params.disabledItemsFocusable,
|
|
190
|
+
indentationAtItemLevel: experimentalFeatures.indentationAtItemLevel ?? false
|
|
191
|
+
}
|
|
189
192
|
}
|
|
190
193
|
};
|
|
191
194
|
};
|
|
@@ -216,5 +219,6 @@ useTreeViewItems.params = {
|
|
|
216
219
|
isItemDisabled: true,
|
|
217
220
|
getItemLabel: true,
|
|
218
221
|
getItemId: true,
|
|
222
|
+
onItemClick: true,
|
|
219
223
|
itemChildrenIndentation: true
|
|
220
224
|
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
1
2
|
import { TreeViewItemMeta, DefaultizedProps, TreeViewPluginSignature } from '../../models';
|
|
2
3
|
import { TreeViewBaseItem, TreeViewItemId } from '../../../models';
|
|
3
4
|
interface TreeViewItemProps {
|
|
@@ -23,6 +24,7 @@ export interface UseTreeViewItemsPublicAPI<R extends {}> {
|
|
|
23
24
|
/**
|
|
24
25
|
* Get the ids of a given item's children.
|
|
25
26
|
* Those ids are returned in the order they should be rendered.
|
|
27
|
+
* To get the root items, pass `null` as the `itemId`.
|
|
26
28
|
* @param {TreeViewItemId | null} itemId The id of the item to get the children of.
|
|
27
29
|
* @returns {TreeViewItemId[]} The ids of the item's children.
|
|
28
30
|
*/
|
|
@@ -80,7 +82,9 @@ export interface UseTreeViewItemsInstance<R extends {}> extends UseTreeViewItems
|
|
|
80
82
|
*/
|
|
81
83
|
areItemUpdatesPrevented: () => boolean;
|
|
82
84
|
}
|
|
83
|
-
export interface UseTreeViewItemsParameters<R extends {
|
|
85
|
+
export interface UseTreeViewItemsParameters<R extends {
|
|
86
|
+
children?: R[];
|
|
87
|
+
}> {
|
|
84
88
|
/**
|
|
85
89
|
* If `true`, will allow focus on disabled items.
|
|
86
90
|
* @default false
|
|
@@ -112,6 +116,12 @@ export interface UseTreeViewItemsParameters<R extends {}> {
|
|
|
112
116
|
* @default (item) => item.id
|
|
113
117
|
*/
|
|
114
118
|
getItemId?: (item: R) => TreeViewItemId;
|
|
119
|
+
/**
|
|
120
|
+
* Callback fired when the `content` slot of a given tree item is clicked.
|
|
121
|
+
* @param {React.MouseEvent} event The DOM event that triggered the change.
|
|
122
|
+
* @param {string} itemId The id of the focused item.
|
|
123
|
+
*/
|
|
124
|
+
onItemClick?: (event: React.MouseEvent, itemId: string) => void;
|
|
115
125
|
/**
|
|
116
126
|
* Horizontal indentation between an item and its children.
|
|
117
127
|
* Examples: 24, "24px", "2rem", "2em".
|
|
@@ -119,7 +129,9 @@ export interface UseTreeViewItemsParameters<R extends {}> {
|
|
|
119
129
|
*/
|
|
120
130
|
itemChildrenIndentation?: string | number;
|
|
121
131
|
}
|
|
122
|
-
export type UseTreeViewItemsDefaultizedParameters<R extends {
|
|
132
|
+
export type UseTreeViewItemsDefaultizedParameters<R extends {
|
|
133
|
+
children?: R[];
|
|
134
|
+
}> = DefaultizedProps<UseTreeViewItemsParameters<R>, 'disabledItemsFocusable' | 'itemChildrenIndentation'>;
|
|
123
135
|
interface UseTreeViewItemsEventLookup {
|
|
124
136
|
removeItem: {
|
|
125
137
|
params: {
|
|
@@ -141,8 +153,10 @@ export interface UseTreeViewItemsState<R extends {}> {
|
|
|
141
153
|
};
|
|
142
154
|
};
|
|
143
155
|
}
|
|
144
|
-
interface UseTreeViewItemsContextValue
|
|
145
|
-
|
|
156
|
+
interface UseTreeViewItemsContextValue {
|
|
157
|
+
items: Pick<UseTreeViewItemsDefaultizedParameters<any>, 'disabledItemsFocusable' | 'onItemClick'> & {
|
|
158
|
+
indentationAtItemLevel: boolean;
|
|
159
|
+
};
|
|
146
160
|
}
|
|
147
161
|
export type UseTreeViewItemsSignature = TreeViewPluginSignature<{
|
|
148
162
|
params: UseTreeViewItemsParameters<any>;
|
|
@@ -4,7 +4,7 @@ import useEventCallback from '@mui/utils/useEventCallback';
|
|
|
4
4
|
import useForkRef from '@mui/utils/useForkRef';
|
|
5
5
|
import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
|
|
6
6
|
import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent';
|
|
7
|
-
import { useTreeViewContext } from '../../TreeViewProvider
|
|
7
|
+
import { useTreeViewContext } from '../../TreeViewProvider';
|
|
8
8
|
import { TreeViewChildrenItemContext, TreeViewChildrenItemProvider } from '../../TreeViewProvider/TreeViewChildrenItemProvider';
|
|
9
9
|
import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from '../useTreeViewItems/useTreeViewItems.utils';
|
|
10
10
|
import { TreeViewItemDepthContext } from '../../TreeViewItemDepthContext';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useRtl } from '@mui/system/RtlProvider';
|
|
3
3
|
import useEventCallback from '@mui/utils/useEventCallback';
|
|
4
|
-
import { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem } from '../../utils/tree';
|
|
4
|
+
import { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem, isTargetInDescendants } from '../../utils/tree';
|
|
5
5
|
function isPrintableCharacter(string) {
|
|
6
6
|
return !!string && string.length === 1 && !!string.match(/\S/);
|
|
7
7
|
}
|
|
@@ -60,7 +60,7 @@ export const useTreeViewKeyboardNavigation = ({
|
|
|
60
60
|
if (event.defaultMuiPrevented) {
|
|
61
61
|
return;
|
|
62
62
|
}
|
|
63
|
-
if (event.altKey || event.
|
|
63
|
+
if (event.altKey || isTargetInDescendants(event.target, event.currentTarget)) {
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
66
66
|
const ctrlPressed = event.ctrlKey || event.metaKey;
|
package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { TreeViewPluginSignature } from '../../models';
|
|
2
|
+
import { TreeViewPluginSignature, MuiCancellableEvent } from '../../models';
|
|
3
3
|
import { UseTreeViewItemsSignature } from '../useTreeViewItems';
|
|
4
4
|
import { UseTreeViewSelectionSignature } from '../useTreeViewSelection';
|
|
5
5
|
import { UseTreeViewFocusSignature } from '../useTreeViewFocus';
|
|
6
6
|
import { UseTreeViewExpansionSignature } from '../useTreeViewExpansion';
|
|
7
|
-
import { MuiCancellableEvent } from '../../models/MuiCancellableEvent';
|
|
8
7
|
import { TreeViewItemId } from '../../../models';
|
|
9
8
|
export interface UseTreeViewKeyboardNavigationInstance {
|
|
10
9
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { EventHandlers } from '@mui/
|
|
2
|
+
import { EventHandlers } from '@mui/utils';
|
|
3
3
|
import type { TreeViewContextValue } from '../TreeViewProvider';
|
|
4
4
|
import { TreeViewAnyPluginSignature, ConvertSignaturesIntoPlugins, MergeSignaturesProperty, TreeViewInstance, TreeViewPublicAPI, TreeViewExperimentalFeatures } from '../models';
|
|
5
5
|
export interface UseTreeViewParameters<TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>> {
|
|
@@ -7,6 +7,8 @@ export const useTreeViewBuildContext = ({
|
|
|
7
7
|
const runItemPlugins = itemPluginProps => {
|
|
8
8
|
let finalRootRef = null;
|
|
9
9
|
let finalContentRef = null;
|
|
10
|
+
const pluginPropEnhancers = [];
|
|
11
|
+
const pluginPropEnhancersNames = {};
|
|
10
12
|
plugins.forEach(plugin => {
|
|
11
13
|
if (!plugin.itemPlugin) {
|
|
12
14
|
return;
|
|
@@ -22,10 +24,30 @@ export const useTreeViewBuildContext = ({
|
|
|
22
24
|
if (itemPluginResponse?.contentRef) {
|
|
23
25
|
finalContentRef = itemPluginResponse.contentRef;
|
|
24
26
|
}
|
|
27
|
+
if (itemPluginResponse?.propsEnhancers) {
|
|
28
|
+
pluginPropEnhancers.push(itemPluginResponse.propsEnhancers);
|
|
29
|
+
|
|
30
|
+
// Prepare a list of all the slots which are enhanced by at least one plugin
|
|
31
|
+
Object.keys(itemPluginResponse.propsEnhancers).forEach(propsEnhancerName => {
|
|
32
|
+
pluginPropEnhancersNames[propsEnhancerName] = true;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
25
35
|
});
|
|
36
|
+
const resolvePropsEnhancer = currentSlotName => currentSlotParams => {
|
|
37
|
+
const enhancedProps = {};
|
|
38
|
+
pluginPropEnhancers.forEach(propsEnhancersForCurrentPlugin => {
|
|
39
|
+
const propsEnhancerForCurrentPluginAndSlot = propsEnhancersForCurrentPlugin[currentSlotName];
|
|
40
|
+
if (propsEnhancerForCurrentPluginAndSlot != null) {
|
|
41
|
+
Object.assign(enhancedProps, propsEnhancerForCurrentPluginAndSlot(currentSlotParams));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return enhancedProps;
|
|
45
|
+
};
|
|
46
|
+
const propsEnhancers = Object.fromEntries(Object.keys(pluginPropEnhancersNames).map(propEnhancerName => [propEnhancerName, resolvePropsEnhancer(propEnhancerName)]));
|
|
26
47
|
return {
|
|
27
48
|
contentRef: finalContentRef,
|
|
28
|
-
rootRef: finalRootRef
|
|
49
|
+
rootRef: finalRootRef,
|
|
50
|
+
propsEnhancers
|
|
29
51
|
};
|
|
30
52
|
};
|
|
31
53
|
const wrapItem = ({
|
|
@@ -22,3 +22,11 @@ export declare const getFirstNavigableItem: (instance: TreeViewInstance<[UseTree
|
|
|
22
22
|
export declare const findOrderInTremauxTree: (instance: TreeViewInstance<[UseTreeViewItemsSignature]>, itemAId: string, itemBId: string) => string[];
|
|
23
23
|
export declare const getNonDisabledItemsInRange: (instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>, itemAId: string, itemBId: string) => string[];
|
|
24
24
|
export declare const getAllNavigableItems: (instance: TreeViewInstance<[UseTreeViewItemsSignature, UseTreeViewExpansionSignature]>) => string[];
|
|
25
|
+
/**
|
|
26
|
+
* Checks if the target is in a descendant of this item.
|
|
27
|
+
* This can prevent from firing some logic on the ancestors on the interacted item when the event handler is on the root.
|
|
28
|
+
* @param {HTMLElement} target The target to check
|
|
29
|
+
* @param {HTMLElement | null} itemRoot The root of the item to check if the event target is in its descendants
|
|
30
|
+
* @returns {boolean} Whether the target is in a descendant of this item
|
|
31
|
+
*/
|
|
32
|
+
export declare const isTargetInDescendants: (target: HTMLElement, itemRoot: HTMLElement | null) => boolean;
|