@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
75 lines (74 loc) • 2.02 kB
JavaScript
import { jsxs, jsx } from "react/jsx-runtime";
import { forwardRef } from "react";
import { createClasses, useCss } from "@hitachivantara/uikit-react-utils";
import { useHvTreeItem } from "./useHvTreeItem.js";
const { useClasses } = createClasses("HvTreeContent", {
root: {},
expanded: {},
selected: {},
focused: {},
disabled: {},
iconContainer: {},
label: {}
});
const DefaultContent = forwardRef(
function DefaultContent2(props, ref) {
const {
classes: classesProp,
className,
displayIcon,
expansionIcon,
icon: iconProp,
label,
nodeId,
onClick,
onMouseDown,
...others
} = props;
const { classes } = useClasses(classesProp);
const { cx } = useCss();
const {
disabled,
expanded,
selected,
focused,
handleExpansion,
handleSelection,
preventSelection
} = useHvTreeItem(nodeId);
const icon = iconProp ?? expansionIcon ?? displayIcon;
return (
/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions -- Key event is handled by the TreeView */
/* @__PURE__ */ jsxs(
"div",
{
...others,
className: cx(className, classes.root, {
[classes.expanded]: expanded,
[classes.selected]: selected,
[classes.focused]: focused,
[classes.disabled]: disabled
}),
onClick: (event) => {
handleExpansion(event);
handleSelection(event);
onClick?.(event);
},
onMouseDown: (event) => {
preventSelection(event);
onMouseDown?.(event);
},
ref,
children: [
/* @__PURE__ */ jsx("div", { className: classes.iconContainer, children: icon }),
/* @__PURE__ */ jsx("div", { className: classes.label, children: label })
]
}
)
);
}
);
export {
DefaultContent,
useClasses
};