= (props) => {
const [expanded, setExpanded] = createSignal(false);
const hasChildren = () => props.node.children && props.node.children.length > 0;
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
if (hasChildren()) {
setExpanded(!expanded());
}
props.onSelect?.(props.node);
} else if (e.key === "ArrowRight" && hasChildren() && !expanded()) {
setExpanded(true);
} else if (e.key === "ArrowLeft" && expanded()) {
setExpanded(false);
}
};
return (
{
if (hasChildren()) setExpanded(!expanded());
props.onSelect?.(props.node);
}}
onKeyDown={handleKeyDown}
tabIndex={0}
role="button">
}>
{props.node.icon}
{props.node.label}
);
};
export const TreeView: Component = (props) => {
const [local, others] = splitProps(props, ["nodes", "onSelect", "class"]);
return (
);
};