Wondering what’s next for npm?Check out our public roadmap! »

    fixed-data-table
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/fixed-data-table package

    0.6.5 • Public • Published

    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 using npm.

    npm install fixed-data-table

    Add the default stylesheet dist/fixed-data-table.css, then import it into any module.

    Basic Example

    import React from 'react';
    import ReactDOM from 'react-dom';
    import {Table, Column, Cell} from 'fixed-data-table';
     
    // 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 for requests.

    We actively welcome pull requests; learn how to contribute.

    Changelog

    Changes are tracked as GitHub releases.

    License

    FixedDataTable is BSD-licensed. We also provide an additional patent grant.

    Install

    npm i fixed-data-table

    DownloadsWeekly Downloads

    20,111

    Version

    0.6.5

    License

    BSD-3-Clause

    Last publish

    Collaborators

    • avatar
    • avatar