<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ashvin Patel</title>
    <description>The latest articles on DEV Community by Ashvin Patel (@ashvin27).</description>
    <link>https://dev.to/ashvin27</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F512672%2Fa53be1c9-7038-40ed-93f1-9fa53300b6bb.png</url>
      <title>DEV Community: Ashvin Patel</title>
      <link>https://dev.to/ashvin27</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashvin27"/>
    <language>en</language>
    <item>
      <title>React-Datatable</title>
      <dc:creator>Ashvin Patel</dc:creator>
      <pubDate>Thu, 12 Nov 2020 05:28:15 +0000</pubDate>
      <link>https://dev.to/ashvin27/react-datatable-2b2k</link>
      <guid>https://dev.to/ashvin27/react-datatable-2b2k</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zE-KQHxo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yrj61kue9n6604k0wg0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zE-KQHxo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yrj61kue9n6604k0wg0t.png" alt="React-Datatable"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ReactDatatable is a component which provide ability to create multi-functional table using single component like jQuery Datatable. It's fully customizable and easy to integrate in any react component. Bootstrap compatible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight&lt;/li&gt;
&lt;li&gt;Fully customizable (JSX, templates, state, styles, callbacks)&lt;/li&gt;
&lt;li&gt;Client-side &amp;amp; Server Side Pagination&lt;/li&gt;
&lt;li&gt;Multi-sort&lt;/li&gt;
&lt;li&gt;Filters&lt;/li&gt;
&lt;li&gt;Minimal design&lt;/li&gt;
&lt;li&gt;Fully controllable via optional props and callbacks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/@ashvin27/react-datatable"&gt;&lt;strong&gt;Install from NPM&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i @ashvin27/react-datatable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/ashvin27/react-datatable"&gt;&lt;strong&gt;Fork on GitHub&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/ashvin27/react-datatable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="http://react-datatable.in/"&gt;&lt;strong&gt;Examples&lt;/strong&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://react-datatable.in/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Usage&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { Component, Fragment } from 'react';
import { render} from 'react-dom';
import ReactDatatable from '@ashvin27/react-datatable';

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 =&amp;gt; { 
                    return (
                        &amp;lt;Fragment&amp;gt;
                            &amp;lt;button
                                className="btn btn-primary btn-sm"
                                onClick={() =&amp;gt; this.editRecord(record)}
                                style={{marginRight: '5px'}}&amp;gt;
                                &amp;lt;i className="fa fa-edit"&amp;gt;&amp;lt;/i&amp;gt;
                            &amp;lt;/button&amp;gt;
                            &amp;lt;button 
                                className="btn btn-danger btn-sm" 
                                onClick={() =&amp;gt; this.deleteRecord(record)}&amp;gt;
                                &amp;lt;i className="fa fa-trash"&amp;gt;&amp;lt;/i&amp;gt;
                            &amp;lt;/button&amp;gt;
                        &amp;lt;/Fragment&amp;gt;
                    );
                }
            }
        ];
        this.config = {
            page_size: 10,
            length_menu: [ 10, 20, 50 ],
            button: {
                excel: true,
                print: true,
                extra: 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"
              }
            ]
        }
        this.extraButtons =[
            {
                className:"btn btn-primary buttons-pdf",
                title:"Export TEst",
                children:[
                    &amp;lt;span&amp;gt;
                    &amp;lt;i className="glyphicon glyphicon-print fa fa-print" aria-hidden="true"&amp;gt;&amp;lt;/i&amp;gt;
                    &amp;lt;/span&amp;gt;
                ],
                onClick:(event)=&amp;gt;{
                    console.log(event);
                },
            },
            {
                className:"btn btn-primary buttons-pdf",
                title:"Export TEst",
                children:[
                    &amp;lt;span&amp;gt;
                    &amp;lt;i className="glyphicon glyphicon-print fa fa-print" aria-hidden="true"&amp;gt;&amp;lt;/i&amp;gt;
                    &amp;lt;/span&amp;gt;
                ],
                onClick:(event)=&amp;gt;{
                    console.log(event);
                },
                onDoubleClick:(event)=&amp;gt;{
                    console.log("doubleClick")
                }
            },
        ]
    }

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

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

    render() {
        return (
            &amp;lt;div&amp;gt;
                &amp;lt;ReactDatatable
                    config={this.config}
                    records={this.state.records}
                    columns={this.columns}
                    extraButtons={this.extraButtons}
                /&amp;gt;
            &amp;lt;/div&amp;gt;
        )
    }
}

render(&amp;lt;App /&amp;gt;, document.getElementById("app"));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>datatables</category>
      <category>reactdatatable</category>
      <category>reacttable</category>
      <category>table</category>
    </item>
  </channel>
</rss>
