@deephaven/js-plugin-ag-grid
Version:
Deephaven AG Grid plugin
35 lines • 2.07 kB
JavaScript
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