UNPKG

@hitachivantara/uikit-react-core

Version:
70 lines (69 loc) 2.24 kB
import { fixedForwardRef } from "../types/generic.js"; import { HvIcon } from "../icons.js"; import { DEFAULT_TREE_VIEW_PLUGINS } from "./internals/hooks/plugins/defaultPlugins.js"; import { TreeViewProvider } from "./internals/TreeViewProvider.js"; import { useTreeView } from "./internals/hooks/useTreeView.js"; import { useClasses } from "./TreeView.styles.js"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { jsx } from "react/jsx-runtime"; import useSlotProps from "@mui/utils/useSlotProps"; //#region src/TreeView/TreeView.tsx /** * A Tree View displays hierarchical data and helps users explore nested categories. * Tree structures are built using `HvTreeItem` or a custom variation of it. * * @example * ```tsx * <HvTreeView> * <HvTreeItem nodeId="1" label="File1" /> * </HvTreeView> * ``` */ var HvTreeView = fixedForwardRef(function HvTreeView(props, ref) { const { id, children, classes: classesProp, className, disabledItemsFocusable, multiSelect, expanded, defaultExpanded, selected, defaultSelected, disableSelection, defaultCollapseIcon = /* @__PURE__ */ jsx(HvIcon, { name: "CaretDown", size: "xs" }), defaultExpandIcon = /* @__PURE__ */ jsx(HvIcon, { name: "CaretRight", size: "xs" }), defaultEndIcon, defaultParentIcon, onNodeSelect, onNodeToggle, onNodeFocus, ...others } = useDefaultProps("HvTreeView", props); const { classes, cx } = useClasses(classesProp); const { getRootProps, contextValue } = useTreeView({ disabledItemsFocusable, expanded, defaultExpanded, onNodeToggle, onNodeFocus, disableSelection, defaultSelected, selected, multiSelect, onNodeSelect, id, defaultCollapseIcon, defaultEndIcon, defaultExpandIcon, defaultParentIcon, plugins: DEFAULT_TREE_VIEW_PLUGINS, rootRef: ref }); const rootProps = useSlotProps({ elementType: "ul", externalSlotProps: {}, externalForwardedProps: others, className: classes.root, getSlotProps: getRootProps, ownerState: props }); return /* @__PURE__ */ jsx(TreeViewProvider, { value: contextValue, children: /* @__PURE__ */ jsx("ul", { className: cx(classes.root, className), ...rootProps, ...others, children }) }); }); //#endregion export { HvTreeView };