import React, { HTMLAttributes, createContext, FC, useMemo } from 'react'; import classnames from 'classnames'; import { TreeNodeProps } from './TreeNode'; /** * */ export const TreeContext = createContext<{ toggleOnNodeClick?: boolean; onNodeClick?: (e: React.MouseEvent, props: TreeNodeProps) => void; onNodeLabelClick?: (e: React.MouseEvent, props: TreeNodeProps) => void; onNodeToggle?: (e: React.MouseEvent, props: TreeNodeProps) => void; }>({}); /** * */ export type TreeProps = { label?: string; toggleOnNodeClick?: boolean; onNodeClick?: (e: React.MouseEvent, props: TreeNodeProps) => void; onNodeLabelClick?: (e: React.MouseEvent, props: TreeNodeProps) => void; onNodeToggle?: (e: React.MouseEvent, props: TreeNodeProps) => void; } & HTMLAttributes; /** * */ export const Tree: FC = (props) => { const { className, label, children, toggleOnNodeClick, onNodeClick, onNodeLabelClick, onNodeToggle, ...rprops } = props; const treeClassNames = classnames(className, 'slds-tree_container'); const ctx = useMemo( () => ({ toggleOnNodeClick, onNodeClick, onNodeLabelClick, onNodeToggle, }), [toggleOnNodeClick, onNodeClick, onNodeLabelClick, onNodeToggle] ); return (
{label ?

{label}

: null}
    {children}
); };