Skip to content

ctablex/core

Repository files navigation

ctablex

NPM version NPM downloads 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.

About

Featureable, flexible and powerful react table.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •