UNPKG

@deephaven/js-plugin-ag-grid

Version:
35 lines 2.07 kB
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime"; import { useCallback } from 'react'; import { Button } from '@deephaven/components'; import { vsTriangleDown, vsTriangleRight } from '@deephaven/icons'; import { TREE_NODE_KEY } from '../utils/AgGridTableUtils'; import DeephavenViewportDatasource from '../datasources/DeephavenViewportDatasource'; export function TreeCellRenderer(props) { const { node, datasource, api } = props; const { data } = node; const treeNode = data === null || data === void 0 ? void 0 : data[TREE_NODE_KEY]; const { hasChildren = false, depth = 0, isExpanded = false } = treeNode !== null && treeNode !== void 0 ? treeNode : {}; const handleClick = useCallback(() => { if (treeNode != null && datasource instanceof DeephavenViewportDatasource) { datasource.setExpanded(treeNode.index, !treeNode.isExpanded); } }, [datasource, treeNode]); const rowGroupColumns = api.getRowGroupColumns(); // If we're on a leaf row, show the last row group column as the group name instead of an empty string. const colDef = rowGroupColumns[hasChildren ? depth - 2 : rowGroupColumns.length - 1]; const colId = colDef === null || colDef === void 0 ? void 0 : colDef.getId(); const groupName = data === null || data === void 0 ? void 0 : data[colId]; return (_jsxs(_Fragment, { children: [hasChildren && (_jsx(Button, Object.assign({ icon: isExpanded ? vsTriangleDown : vsTriangleRight, kind: "ghost", onClick: handleClick, style: { width: 'calc(100% - 5px)', height: '100%', margin: 0, paddingTop: 0, paddingBottom: 0, paddingRight: 0, paddingLeft: depth * 10, textAlign: 'left', justifyContent: 'left', } }, { children: groupName }))), !hasChildren && groupName] })); } export default TreeCellRenderer; //# sourceMappingURL=TreeCellRenderer.js.map