Skip to content
/ ctablex Public archive

Featureable, flexible and powerful react table.

License

Notifications You must be signed in to change notification settings

sahabpardaz/ctablex

Repository files navigation

ctablex

NPM version NPM downloads Build Status codecov

Featureable, flexible and powerful react table. ctablex will not hold you back and let you customize table UI and behavior. ctablex name is the combination of table and ctx (context).

Install

yarn add @ctablex/core

Usage

import React from 'react';
import {
  DataTable,
  Columns,
  Column,
  Table,
} from '@ctablex/core';

const data = [
    id: '1',
    name: 'Gloves',
    price: 544,
    count: 5,
  },
  {
    id: '2',
    name: 'Salad',
    price: 601,
    count: 6,
  },
  {
    id: '3',
    name: 'Keyboard',
    price: 116,
    count: 1,
  },
];
export function MyTable() {
  return (
    <DataTable data={data}>
      <Columns>
        <Column header="Name" accessor="name" />
        <Column header="Price" accessor="price" />
        <Column header="Count" accessor="count" />
      </Columns>
      <Table />
    </DataTable>
  );
}

live demo, source code

The Table component

The Table/TableHeader/HeaderRow/TableBody/Rows/Row components have default children. so when you write <Table />, it's equal to you write the following codes:

<Table>
  <TableHeader>
    <HeaderRow>
      <Columns />
    </HeaderRow>
  </TableHeader>
  <TableBody>
    <Rows>
      <Row>
        <Columns />
      </Row>
    </Rows>
  </TableBody>
</Table>

The Columns component

You can assume <Columns /> component somehow renders Columns' children defined in the first part (definition part).

<DataTable data={data}>
  <Columns>
    {/* begin children definition */}
    <Column header="Name" accessor="name" />
    <Column header="Price" accessor="price" />
    <Column header="Count" accessor="count" />
    {/* end children definition */}
  </Columns>
  <TableBody>
    <Rows>
      <Row>
        <Columns />
      </Row>
    </Rows>
  </TableBody>
</DataTable>

is equal to

<DataTable data={data}>
  <TableBody>
    <Rows>
      <Row>
        <Column header="Name" accessor="name" />
        <Column header="Price" accessor="price" />
        <Column header="Count" accessor="count" />
      </Row>
    </Rows>
  </TableBody>
</DataTable>

Changelog

Please read the changelog here.

License

This project is licensed under the terms of the Apache License 2.0.