npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-datatable-ext

v18.5.0

Published

ReactDatatable is a component which provide ability to create multifunctional table using single component like jQuery Datatable

Downloads

33

Readme

react-datatable

npm version

ReactDatatable is a component which provide ability to create multifunctional table using single component like jQuery Datatable. It's fully customizable and easy to integrate in any react component. Bootstrap compatible.

Features

  • Lightweight
  • Fully customizable (JSX, templates, state, styles, callbacks)
  • Client-side & Server Side Pagination
  • Multi-sort
  • Filters
  • Minimal design
  • Fully controllable via optional props and callbacks

Installation

With npm installed, run

npm i react-datatable-ext

Usage

import React, { Component, Fragment } from 'react';
import { render} from 'react-dom';
import ReactDatatable from 'react-datatable-ext';

class App extends Component {
    constructor(props) {
        super(props);
        this.columns = [
            {
                key: "name",
                text: "Name",
                className: "name",
                align: "left",
                sortable: true,
            },
            {
                key: "address",
                text: "Address",
                className: "address",
                align: "left",
                sortable: true
            },
            {
                key: "postcode",
                text: "Postcode",
                className: "postcode",
                sortable: true
            },
            {
                key: "rating",
                text: "Rating",
                className: "rating",
                align: "left",
                sortable: true
            },
            {
                key: "type_of_food",
                text: "Type of Food",
                className: "type_of_food",
                sortable: true,
                align: "left"
            },
            {
                key: "action",
                text: "Action",
                className: "action",
                width: 100,
                align: "left",
                sortable: false,
                cell: record => { 
                    return (
                        <Fragment>
                            <button
                                className="btn btn-primary btn-sm"
                                onClick={() => this.editRecord(record)}
                                style={{marginRight: '5px'}}>
                                <i className="fa fa-edit"></i>
                            </button>
                            <button 
                                className="btn btn-danger btn-sm" 
                                onClick={() => this.deleteRecord(record)}>
                                <i className="fa fa-trash"></i>
                            </button>
                        </Fragment>
                    );
                }
            }
        ];
        this.config = {
            page_size: 10,
            length_menu: [ 10, 20, 50 ],
            button: {
                excel: true,
                print: true
            }
        }
        
        this.state = {
            records: [
              {
                "id": "55f14312c7447c3da7051b26",
                "address": "228 City Road",
                "name": ".CN Chinese",
                "postcode": "3JH",
                "rating": 5,
                "type_of_food": "Chinese"
              },
              {
                "id": "55f14312c7447c3da7051b27",
                "address": "376 Rayleigh Road",
                "name": "@ Thai",
                "postcode": "5PT",
                "rating": 5.5,
                "type_of_food": "Thai"
              },
              {
                "id": "55f14312c7447c3da7051b28",
                "address": "30 Greyhound Road Hammersmith",
                "name": "@ Thai Restaurant",
                "postcode": "8NX",
                "rating": 4.5,
                "type_of_food": "Thai"
              },
              {
                "id": "55f14312c7447c3da7051b29",
                "address": "30 Greyhound Road Hammersmith",
                "name": "@ Thai Restaurant",
                "postcode": "8NX",
                "rating": 4.5,
                "type_of_food": "Thai"
              }
            ]
        }
    }

    editRecord(record) {
        console.log("Edit Record", record);
    }

    deleteRecord(record) {
        console.log("Delete Record", record);
    }

    render() {
        return (
            <div>
                <ReactDatatable
                    config={this.config}
                    records={this.state.records}
                    columns={this.columns}
                />
            </div>
        )
    }
}

render(<App />, document.getElementById("app"));

API

import ReactDatatable from 'react-datatable-ext';
or
var ReactDatatable = require('react-datatable-ext')

Props

| Name | Type | Description | ------------- | ------------- | ------------- | | className | String | Datatable additional class, use to appy additional styling on table | columns | Object[] | This props will used to specify datatable column configuration | config | Object[] | This props will used to specify datatable configuration | dynamic | boolean | This props will used to specify the table data will be server side or static | id | String | Identifier of datatable | records | Object[] | This props will used to table records | total_record | Number | This props will used to specify the total records in case of table data is server side. | onChange | Funtion(Object) | This method will call on table actions(page change, sorting, filtering, page length change) | onRowClicked | Funtion(Object) | This method will call when user click on a row, return row object.

Options

| Name | Type | default | Description | ------------- | ------------- | ------------- | ------------- | | button | Object[] | { excel: false, print: false, csv: false } | Use to enable/disable export buttons(Excel, CSV, Print). By default buttons are disabled. | filename | String | "table" | Specify the export filename | length_menu | Array[] | [10, 25, 50, 75, 100] | Specify the options in the page length select list. | page_size | Number | 10 | Specify the page length (number of rows per page) | sort | Object[] | { column: "", order: "asc" } | Initial sorting order to apply to the datatable | show_filter | boolean | true | use to specify either show or hide filter option | show_first | boolean | true | use to specify either show or hide pagination first button | show_info | boolean | true | use to specify either show or hide pagination info | show_last | boolean | true | use to specify either show or hide pagination last button | show_length_menu | boolean | true | use to specify either show or hide page length menu | show_pagination | boolean | true | use to specify either show or hide pagination

Columns

| Name | Type | default | Description | ------------- | ------------- | ------------- | ------------- | | align | String | left | Specify the content alignment | className | String | | Table column additional class fo styling | key | String | | Specify the key of record which value will display in table cell | sortable | Boolean | false | Specify the column is sortable of not | text | String | | Spcify the table column text | width | Number | | Specify the column width | cell | Function(record, index):string | | You can use any react component or JSX to display content in cells