Skip to content

rajjejosefsson/react-col-def-table

Repository files navigation

React Col Def Table

This is built upon React Virtualized, created by bvaughn

Demo @ Codesandbox


How to use

import { Table } from "react-col-def-table";
import { colDef, data } from "./somewhere";

const App = () => <Table colDef={colDef} list={data} />;

Step by step

With this data below we want to have a table with id, name and age.

Data:

[
  {
    id: "1",
    name: "Steve",
    age: "29"
  },
  {
    id: "2",
    name: "Roger",
    age: "33"
  },
  {
    id: "3",
    name: "Sarah",
    age: "27"
  }
];

For this to work we will have to create a column definition.

Column Definition defines how we want to map the respective values from the data:

const columnDefinition = [
  {
    key: "id",
    label: "Id",
    size: 50
  },
  {
    key: "name",
    label: "User Name",
    size: 150
  },
  {
    key: "age",
    label: "User Age",
    size: 50
  }
];

As we can see from above it has three important characteristics: key, size and label.

key Description required?
key What key we want to map with from the data. YES
size the size of the column YES
label The label in the header that will be shown for the mapped value NO
checkbox if we want to render checkboxes for a column NO
component to render a custom component with the data NO

Checkbox column and a custom component:

export const customColDef = [
  {
    key: "checkbox",
    size: 50
  },
  {
    label: "Hotel",
    key: "hotel",
    size: 250,
    component: ({ rowData }) => {
      return <a href={rowData.link}>{rowData.hotel}</a>;
    }
  }
];

Props

key Description default
list Your data.
colDef Defines how to map the values into the grid
fixedRowCount number
fixedColumnCount number
fixedHeight number
fixedWidth number
rowHeight number
headerHeight number
isBoxShadow boolean, true
hoverOnX boolean false
hoverOnY boolean false
isZebra boolean false
isSortOn boolean false
isEditable boolean false
onCellChange function callback with changed cell (only when using isEditable)
onLabelClick function callback with clicked label info
footer function example: lib/footer

CSS Classes

key Description
Table has to be set on style prop
Row .table--row-even .table--row-odd
th .c-table--th
td .c-table--td
th when sorting (when active) .c-table--th-sort .c-table--th-sort-active
sort icon button (when active) .c-sort-button .c-sort-button--active
hover cell (when active) .c-table--td-hover-cell
Fixed rows styles (when active) .c-table--top-left-grid .c-table--top-right-grid .c-table--bottom-left-grid .c-table--bottom-right-grid
editable cell input (when active) .c-editable-cell--input
sub header (when active) .c-table--sub-header .c-table--sub-header-title
Checkbox (when active) .c-checkbox-cell .c-checkbox-cell--input id="c-checkbox-label-checkboxKey for="c-checkbox-label-checkboxKey

Build


npm run build

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published