@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
67 lines (66 loc) • 2.11 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { useSlotProps } from "@mui/base/utils";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { HvIcon } from "../icons.js";
import { fixedForwardRef } from "../types/generic.js";
import { useTreeView } from "./internals/hooks/useTreeView.js";
import { TreeViewProvider } from "./internals/TreeViewProvider.js";
import { useClasses } from "./TreeView.styles.js";
import { staticClasses } from "./TreeView.styles.js";
import { DEFAULT_TREE_VIEW_PLUGINS } from "./internals/hooks/plugins/defaultPlugins.js";
const HvTreeView = fixedForwardRef(function HvTreeView2(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 }) });
});
export {
HvTreeView,
staticClasses as treeView2Classes
};