slavik-m-react-data-components

React data components

Usage no npm install needed!

<script type="module">
  import slavikMReactDataComponents from 'https://cdn.skypack.dev/slavik-m-react-data-components';
</script>

README

react-data-components

DataTable: Live demo and source.

Getting started

npm install slavik-m-react-data-components --save

Using the default implementation

The default implementation includes a filter for case insensitive global search, pagination and page size.

var React = require('react');
var DataTable = require('react-data-components').DataTable;

var columns = [
  { title: 'Name', prop: 'name', type: 'ELEMENT_STRING' },
  { title: 'City', prop: 'city', type: 'STRING' },
  { title: 'Address', prop: 'address', type: 'STRING' },
  { title: 'Phone', prop: 'phone', type: 'NUMBER' }
];

var data = [
  { id: 1, name: <a href="profile/1" sortValue="Victor"><span>Victor</span></a>, city: 'Kiev', address: 'some 
  address',  phone: '380634988888' },
  { id: 2, name: <a href="profile/2" sortValue="Ambassador"><span>Ambassador</span></a>, city: 'Kiev', address: 'some 
  address',  phone: '380634988888' },
  // It also supports arrays
  // [ 'name value', 'city value', 'address value', 'phone value' ]
];

React.render((
    <DataTable
      className="container"
      keys={[ 'id' ]}
      columns={columns}
      initialData={data}
      initialPageLength={5}
      initialSortBy={{ prop: 'name', order: 'ascending' }}
      pageLengthOptions={[ 5, 20, 50 ]}
    />
  ), document.body);

See complete example, see Flux example.

DataMixin options

keys: Array<string | number>

Properties that make each row unique, e.g. an id.

columns: Array<ColumnOption>

See Table column options.

pageLengthOptions: Array<number>

initialData: Array<object | Array<any>>

initialPageLength: number

initialSortBy: { prop: string | number, order: string }

Table column options

title: string

The title to display on the header.

prop: string | number

The name of the property or index on the data.

type: string[STRING|NUMBER|ELEMENT_STRING|ELEMENT_NUMBER]

ELEMENT_STRING or ELEMENT_NUMBER sort by React components. ReactElement need provide prop - "sortValue" to sort by this value; The title to display on the header.

render: (val: any, row: any) => any

Function to render a different component.

className: string | (val: any, row: any) => string

Class name for the td.

defaultContent: string

sortable: boolean

width: string | number