UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

276 lines (275 loc) 11.9 kB
"use strict"; 'use client'; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.SimpleTreeViewRoot = exports.SimpleTreeView = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _useMergedRefs = require("@base-ui/utils/useMergedRefs"); var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses")); var _useSlotProps = _interopRequireDefault(require("@mui/utils/useSlotProps")); var _warning = require("@mui/x-internals/warning"); var _zeroStyled = require("../internals/zero-styled"); var _simpleTreeViewClasses = require("./simpleTreeViewClasses"); var _TreeViewProvider = require("../internals/TreeViewProvider"); var _useExtractSimpleTreeViewParameters = require("./useExtractSimpleTreeViewParameters"); var _useTreeViewRootProps = require("../internals/hooks/useTreeViewRootProps"); var _TreeViewChildrenItemProvider = require("../internals/TreeViewProvider/TreeViewChildrenItemProvider"); var _TreeViewItemDepthContext = require("../internals/TreeViewItemDepthContext"); var _useTreeViewStore = require("../internals/hooks/useTreeViewStore"); var _SimpleTreeViewStore = require("../internals/SimpleTreeViewStore"); var _jsxRuntime = require("react/jsx-runtime"); const useThemeProps = (0, _zeroStyled.createUseThemeProps)('MuiSimpleTreeView'); const useUtilityClasses = ownerState => { const { classes } = ownerState; return React.useMemo(() => { const slots = { root: ['root'], item: ['item'], itemContent: ['itemContent'], itemGroupTransition: ['itemGroupTransition'], itemIconContainer: ['itemIconContainer'], itemLabel: ['itemLabel'], // itemLabelInput: ['itemLabelInput'], => feature not available on this component itemCheckbox: ['itemCheckbox'] // itemDragAndDropOverlay: ['itemDragAndDropOverlay'], => feature not available on this component // itemErrorIcon: ['itemErrorIcon'], => feature not available on this component }; return (0, _composeClasses.default)(slots, _simpleTreeViewClasses.getSimpleTreeViewUtilityClass, classes); }, [classes]); }; const SimpleTreeViewRoot = exports.SimpleTreeViewRoot = (0, _zeroStyled.styled)('ul', { name: 'MuiSimpleTreeView', slot: 'Root' })({ padding: 0, margin: 0, listStyle: 'none', outline: 0, position: 'relative' }); /** * * Demos: * * - [Tree View](https://mui.com/x/react-tree-view/) * * API: * * - [SimpleTreeView API](https://mui.com/x/api/tree-view/simple-tree-view/) */ const SimpleTreeView = exports.SimpleTreeView = /*#__PURE__*/React.forwardRef(function SimpleTreeView(inProps, forwardedRef) { const props = useThemeProps({ props: inProps, name: 'MuiSimpleTreeView' }); if (process.env.NODE_ENV !== 'production') { if (props.items != null) { (0, _warning.warnOnce)(['MUI X: The Simple Tree View component does not support the `items` prop.', 'If you want to add items, you need to pass them as JSX children.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/simple-tree-view/items/.']); } } const { slots, slotProps, apiRef, parameters, forwardedProps } = (0, _useExtractSimpleTreeViewParameters.useExtractSimpleTreeViewParameters)(props); const store = (0, _useTreeViewStore.useTreeViewStore)(_SimpleTreeViewStore.SimpleTreeViewStore, parameters); const ref = React.useRef(null); const handleRef = (0, _useMergedRefs.useMergedRefs)(forwardedRef, ref); const getRootProps = (0, _useTreeViewRootProps.useTreeViewRootProps)(store, forwardedProps, handleRef); const classes = useUtilityClasses(props); const Root = slots?.root ?? SimpleTreeViewRoot; const rootProps = (0, _useSlotProps.default)({ elementType: Root, externalSlotProps: slotProps?.root, className: classes.root, getSlotProps: getRootProps, ownerState: props }); return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewProvider.TreeViewProvider, { store: store, classes: classes, slots: slots, slotProps: slotProps, apiRef: apiRef, rootRef: ref, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewChildrenItemProvider.TreeViewChildrenItemProvider, { itemId: null, idAttribute: null, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewItemDepthContext.TreeViewItemDepthContext.Provider, { value: 0, children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Root, (0, _extends2.default)({}, rootProps)) }) }) }); }); if (process.env.NODE_ENV !== "production") SimpleTreeView.displayName = "SimpleTreeView"; process.env.NODE_ENV !== "production" ? SimpleTreeView.propTypes = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "pnpm proptypes" | // ---------------------------------------------------------------------- /** * The ref object that allows Tree View manipulation. Can be instantiated with `useSimpleTreeViewApiRef()`. */ apiRef: _propTypes.default.shape({ current: _propTypes.default.shape({ focusItem: _propTypes.default.func, getItem: _propTypes.default.func, getItemDOMElement: _propTypes.default.func, getItemOrderedChildrenIds: _propTypes.default.func, getItemTree: _propTypes.default.func, getParentId: _propTypes.default.func, isItemExpanded: _propTypes.default.func, setIsItemDisabled: _propTypes.default.func, setItemExpansion: _propTypes.default.func, setItemSelection: _propTypes.default.func }) }), /** * Whether the Tree View renders a checkbox at the left of its label that allows selecting it. * @default false */ checkboxSelection: _propTypes.default.bool, /** * The content of the component. */ children: _propTypes.default.node, /** * Override or extend the styles applied to the component. */ classes: _propTypes.default.object, className: _propTypes.default.string, /** * Expanded item ids. * Used when the item's expansion is not controlled. * @default [] */ defaultExpandedItems: _propTypes.default.arrayOf(_propTypes.default.string), /** * Selected item ids. (Uncontrolled) * When `multiSelect` is true this takes an array of strings; when false (default) a string. * @default [] */ defaultSelectedItems: _propTypes.default.any, /** * Whether the items should be focusable when disabled. * @default false */ disabledItemsFocusable: _propTypes.default.bool, /** * Whether selection is disabled. * @default false */ disableSelection: _propTypes.default.bool, /** * Expanded item ids. * Used when the item's expansion is controlled. */ expandedItems: _propTypes.default.arrayOf(_propTypes.default.string), /** * The slot that triggers the item's expansion when clicked. * @default 'content' */ expansionTrigger: _propTypes.default.oneOf(['content', 'iconContainer']), /** * This prop is used to help implement the accessibility logic. * If you don't provide this prop. It falls back to a randomly generated id. */ id: _propTypes.default.string, /** * Horizontal indentation between an item and its children. * Examples: 24, "24px", "2rem", "2em". * @default 12px */ itemChildrenIndentation: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]), /** * Whether multiple items can be selected. * @default false */ multiSelect: _propTypes.default.bool, /** * Callback fired when Tree Items are expanded/collapsed. * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method. * @param {TreeViewItemId[]} itemIds The ids of the expanded items. */ onExpandedItemsChange: _propTypes.default.func, /** * Callback fired when the `content` slot of a given Tree Item is clicked. * @param {React.MouseEvent} event The DOM event that triggered the change. * @param {TreeViewItemId} itemId The id of the focused item. */ onItemClick: _propTypes.default.func, /** * Callback fired when a Tree Item is expanded or collapsed. * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemExpansion()` method. * @param {TreeViewItemId} itemId The itemId of the modified item. * @param {boolean} isExpanded `true` if the item has just been expanded, `false` if it has just been collapsed. */ onItemExpansionToggle: _propTypes.default.func, /** * Callback fired when a given Tree Item is focused. * @param {React.SyntheticEvent | null} event The DOM event that triggered the change. **Warning**: This is a generic event not a focus event. * @param {TreeViewItemId} itemId The id of the focused item. */ onItemFocus: _propTypes.default.func, /** * Callback fired when a Tree Item is selected or deselected. * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method. * @param {TreeViewItemId} itemId The itemId of the modified item. * @param {boolean} isSelected `true` if the item has just been selected, `false` if it has just been deselected. */ onItemSelectionToggle: _propTypes.default.func, /** * Callback fired when Tree Items are selected/deselected. * @param {React.SyntheticEvent} event The DOM event that triggered the change. Can be null when the change is caused by the `publicAPI.setItemSelection()` method. * @param {TreeViewItemId[] | TreeViewItemId} itemIds The ids of the selected items. * When `multiSelect` is `true`, this is an array of strings; when false (default) a string. */ onSelectedItemsChange: _propTypes.default.func, /** * Selected item ids. (Controlled) * When `multiSelect` is true this takes an array of strings; when false (default) a string. */ selectedItems: _propTypes.default.any, /** * When `selectionPropagation.descendants` is set to `true`. * * - Selecting a parent selects all its descendants automatically. * - Deselecting a parent deselects all its descendants automatically. * * When `selectionPropagation.parents` is set to `true`. * * - Selecting all the descendants of a parent selects the parent automatically. * - Deselecting a descendant of a selected parent deselects the parent automatically. * * Only works when `multiSelect` is `true`. * On the <SimpleTreeView />, only the expanded items are considered (since the collapsed item are not passed to the Tree View component at all) * * @default { parents: false, descendants: false } */ selectionPropagation: _propTypes.default.shape({ descendants: _propTypes.default.bool, parents: _propTypes.default.bool }), /** * The props used for each component slot. */ slotProps: _propTypes.default.object, /** * Overridable component slots. */ slots: _propTypes.default.object, /** * The system prop that allows defining system overrides as well as additional CSS styles. */ sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]) } : void 0;