import './TableTree.scss'; import Icon from '../Icon/Icon.js'; import Checkbox from '../Checkbox/Checkbox.js'; import classNames from 'classnames'; interface ColumnDataProps { name: string; accessor: string; width: string; isClickable?: boolean; } interface ObjectProps { [key: string]: any; } interface TableTreeProps { withCheckBox: boolean; columnsData: Array; treeData: Array; onClick?: ( event: React.MouseEvent, data: any ) => void; } const TableTree = ({ withCheckBox, columnsData, treeData, onClick = () => {}, }: TableTreeProps) => { const renderTree = (tree: Array, i: number) => { if (tree?.length > 0) { return (
    {tree.map((node) => { const folder = node.folder ? 'folder' : ''; return (
  • {folder && ( {i !== 0 && ( )} {withCheckBox && ( )} )}
    onClick(e, { name: 'title', node })} className={classNames(`title--${folder}`, { 'title--pointer': onclick, })} > {node.title}
    {columnsData.map((column: ColumnDataProps) => (
    column.isClickable ? onClick(e, { column, node }) : null } > {i !== 0 ? ( node[column.accessor] ) : ( {column.name} )}
    ))}
    {node?.children?.length > 0 && renderTree(node.children, i + 1)}
  • ); })}
); } }; return (
{renderTree(treeData, 0)}
); }; export default TableTree;