2.0.1 • Published 9 months ago

ds-react-table v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

Dead simple react table

npm GitHub stars gzip size Travis (.org) npm

rt

Installation

$ npm install ds-react-table

or

$ yarn add ds-react-table

Usage

import React from 'react';

import { Table } from 'ds-react-table';
// optional
import 'ds-react-table/dist/index.css'

const data = [
  {
    qualification: 'Software Engineering',
    school: 'UJ',
    period: '04/2016 – 08/2018',
    location: 'JOHANNESBURG, SOUTH AFRICA',
  },
  {
    qualification: 'PC Technician',
    school: 'Boston City Campus & business College',
    period: '01/2011 – 11/2011',
    location: 'RANDBURG, SOUTH AFRICA',
  },
  {
    qualification: 'UX Designer',
    school: 'UCT',
    period: '01/2008 – 12/2010',
    location: 'CAPE TOWN, SOUTH AFRICA',
  }
];

function App() {
  return (
    <div className="App">
      <Table
        dataLimit={15}
        sort={false}
        showPagination={true}
        data={data}
      />
    </div>
  );
}

export default App;

toggle

API

PropTypeDefaultDescription
dataarrayRequiredArray of objects to be displayed in a table
sortboolfalseTo enable sorting
dataLimitnumber10The number of items to be shown on each page.
showPaginationboolfalseShow/hide pagination
CustomTdComponentReact.FCfalseA React component to add actions such as edit and deleting
customTdHeaderstringfalseHeader of the custom td

Styling the table and pagination

/* table.module.css */
body {
  background: #1d1e22;
}
/* styling the table */
table, td {
  border: 1px solid #353535;
  padding-left: 5px;
}

th {
background-color: #3B3B3B;
text-align: left;
padding-left: 5px;
}

table {
  width: 100%;
  font-family: monospace;
  border-collapse: collapse;
  background-color: #2B2B2B;
  color: #94ABBE;
}

/* styling pagination */

.pagination {
  display: inline-block;
  background-color: white;
  border: 1px solid #d8cdc9;
  margin-top: 10px;
}

.pagination a {
  color: black;
  float: left;
  padding: 8px 16px;
  text-decoration: none;
}
.pagination a:not(:nth-child(2)) {
  background-color: #d8cdc9;
  color: white;
}

.pagination a:nth-child(2) {
  display: inline-block;
  width: 100px;
  text-align: center;
}

.pagination a:nth-child(n+3):nth-last-child(n+2) {
  cursor: default;
}
import React from 'react';

import { Table } from 'ds-react-table';

// import css file

import './table.module.css';

function App() {
  return (
    <div className="App">
      <Table
        dataLimit={2}
        sort={false}
        showPagination={true}
        data={data}
      />
    </div>
  );
}

export default App;

toggle

BYOP (bring your own pagination)

This example uses rc-pagination

import React, {useState}> from 'react';

import { Table } from 'ds-react-table';

import Pagination from 'rc-pagination';
import 'rc-pagination/assets/index.css';

function App() {
  const countPerPage = 2;
  const [currentPage, setCurrentPage] = useState(1);
  const [collection, setCollection] = useState(data.slice(0, countPerPage));

  const updatePage = (p) => {

    setCurrentPage(p);
    const to = countPerPage * p;
    const from = to - countPerPage;
    setCollection(data.slice(from, to));

  };

  return (
    <>
      <Table dataLimit={collection.length} data={collection} />

      <Pagination
        pageSize={countPerPage}
        onChange={updatePage}
        current={currentPage}
        total={data.length}
      />
    </>
  );
});

toggle

Custom td Component

You can utilize a CustomTdComponent to incorporate actions within the table, such as the ability to edit and delete rows.

const CustomComponent = ({ id, data }) => {
  return (
    <div style={{ padding: '0 30px'}}>
      <MdEdit onClick={() => editRow(id)} />
      <MdDeleteOutline onClick={() => deleteRow(id)} />
    </div>
    )
}

 <Table
    dataLimit={collection.length}
    data={collection}
    CustomTdComponent={CustomComponent}
  />

toggle

License

MIT

2.0.1

9 months ago

2.0.0

9 months ago

1.0.4

1 year ago

1.0.2

3 years ago

1.0.3

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago