UNPKG

fixed-data-table-dk

Version:

A React table component designed to allow presenting thousands of rows of data. With one extra change.

103 lines (80 loc) 3.24 kB
> This is my fork to allow me to wrap each row in a component I provide. It is for a very specific use-case and for most people is likely unnecessary. --- Fixed Data Tables for React ==================================== FixedDataTable is a React component for building and presenting data in a flexible, powerful way. It supports standard table features, like headers, columns, rows, header groupings, and both fixed-position and scrolling columns. The table was designed to handle thousands of rows of data without sacrificing performance. Scrolling smoothly is a first-class goal of FixedDataTable and it's architected in a way to allow for flexibility and extensibility. Features of FixedDataTable: * Fixed headers and footer * Both fixed and scrollable columns * Handling huge amounts of data * Variable row heights (with adaptive scroll positions) * Column resizing * Performant scrolling * Customizable styling * Jumping to a row or column * Controlled scroll API allows touch support Things the FixedDataTable **doesn't** do: * FixedDataTable does not provide a layout reflow mechanism or calculate content layout information such as width and height of the cell contents. The developer has to provide the layout information to the table instead. * FixedDataTable does not handle sorting of data. Instead it allows the developer to supply data getters that can be sort-, filter-, or tail-loading-aware. * FixedDataTable does not fetch the data (see above) Getting started --------------- Install `fixed-data-table-dk` using npm. ```shell npm install fixed-data-table-dk ``` Add the default stylesheet `dist/fixed-data-table.css`, then import it into any module. ### Basic Example ```javascript import React from 'react'; import ReactDOM from 'react-dom'; import {Table, Column, Cell} from 'fixed-data-table-dk'; // Table data as a list of array. const rows = [ ['a1', 'b1', 'c1'], ['a2', 'b2', 'c2'], ['a3', 'b3', 'c3'], // .... and more ]; // Render your table ReactDOM.render( <Table rowHeight={50} rowsCount={rows.length} width={5000} height={5000} headerHeight={50}> <Column header={<Cell>Col 1</Cell>} cell={<Cell>Column 1 static content</Cell>} width={2000} /> <Column header={<Cell>Col 2</Cell>} cell={<MyCustomCell mySpecialProp="column2" />} width={1000} /> <Column header={<Cell>Col 3</Cell>} cell={({rowIndex, ...props}) => ( <Cell {...props}> Data for column 3: {rows[rowIndex][2]} </Cell> )} width={2000} /> </Table>, document.getElementById('example') ); ``` Contributions ------------ Use [GitHub issues](https://github.com/facebook/fixed-data-table/issues) for requests. We actively welcome pull requests; learn how to [contribute](https://github.com/facebook/fixed-data-table/blob/master/CONTRIBUTING.md). Changelog --------- Changes are tracked as [GitHub releases](https://github.com/facebook/fixed-data-table/releases). License ------- `FixedDataTable` is [BSD-licensed](https://github.com/facebook/fixed-data-table/blob/master/LICENSE). We also provide an additional [patent grant](https://github.com/facebook/fixed-data-table/blob/master/PATENTS).