import * as React from "react"; import * as ReactDOM from "react-dom"; import * as Reactable from "reactable"; interface Person { name: string; age: number; } type PersonTable = new () => Reactable.Table; const PersonTable = Reactable.Table as PersonTable; type PersonTableHeader = new () => Reactable.Thead; const PersonTableHeader = Reactable.Thead as PersonTableHeader; type PersonTableTh = new () => Reactable.Th; const PersonTableTh = Reactable.Th as PersonTableTh; type PersonRow = new () => Reactable.Tr; const PersonRow = Reactable.Tr as PersonRow; type PersonTableTd = new () => Reactable.Td; const PersonTableTd = Reactable.Td as PersonTableTd; type PersonTableTfoot = new () => Reactable.Tfoot; const PersonTableTfoot = Reactable.Tfoot as PersonTableTfoot; const data = [ { name: "Christoph Spielmann", age: 36 } ]; export class TestComponent extends React.Component { render(): JSX.Element { return ; } } export class FullblownReactableTestComponent extends React.Component { render(): JSX.Element { const displayedColumns = ["name"]; // custom table Th-elements const columns: JSX.Element[] = []; for (const colName of displayedColumns) { columns.push( {colName} ); } const rows: JSX.Element[] = []; for (const d of data) { const tds: JSX.Element[] = []; displayedColumns.forEach(col => tds.push(

d[col]

)); rows.push( {tds} ); } return ( {columns} {rows} footer cell1 footer cell2 ); } }