@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
70 lines (69 loc) • 2.24 kB
JavaScript
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 };