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-material-ui-datatable

v2.0.0-alpha.30

Published

Material UI Datatable in React way

Downloads

392

Readme

React MaterialUI Datatable

Build Status npm version Conventional Commits

Fully uncontrolled and client-side datatable based on material design. Designed with React philosophy. Just set your data and receive common manipulations on it: filtering, sorting, pagination and etc.

:book: See Storybook of this component

:warning: ATTENTION! WIP!

This library is under the work. It means, that we can do Breaking Changes during one major alpha version. Please, check the CHANGELOG before update your current version.

Install

npm install [email protected] --save-exact

or

yarn add [email protected] --exact

Demo

Edit 9lz52zlylr

Usage

import { ReactMUIDatatable } from "react-material-ui-datatable";

const columns = [
  {
    name: "firstName",
    label: "First Name"
  },
  {
    name: "lastName",
    label: "Last Name"
  },
  {
    name: "age",
    label: "Age"
  },
  {
    name: "car.make",
    label: "Car make"
  }
];

const data = [
  { firstName: "Kylynn", lastName: "Lathey", age: 19, car: { make: "BWM" } },
  { firstName: "Cly", lastName: "Dukelow", age: 46,  car: { make: "Mitsubishi" } },
  { firstName: "Afton", lastName: "Chaffer", age: 34,  car: { make: "Audi" } },
  { firstName: "Deva", lastName: "Cowope", age: 22 car: { make: "Reno" } }
];

<ReactMUIDatatable title={"Awesome list"} data={data} columns={columns} />;

For more details see Storybook of this component

ReactMUIDatatable's API

Props

| Name | Type | Default | Description | | --- | --- | --- | --- | | title | string | "" | Title of your table | | columns | Object[] | [] | Options for each column. Detailed description see here | | customCell | Function | | Function that returns a string or React component. Used as display for body cell. ({value: string, column: Object, row: Object}) => string \| React.Component| | data | Object[] | [] | Your dataset, that you want to display in the table| | page | number | 0 | Current page. Start with 0 | | perPage | number | 5 | Quantity of displaying items per page. | | perPageOption | number[] | [5, 10, 15] | Per page option. Displayed on the paging panel | | selectedData | Object[] | [] | Array of refs of selected data items. For example, [data[0], data[1]] will select first and second row. | | selectable | boolean | true | Enable selections | | filterable | boolean | true | Enable filters in toolbar panel | | searchable | boolean | true | Enable search bar in toolbar panel | | toolbarSelectActions | Function | defaultToolbarSelectActions | Function that returns a string or React component. Used as display actions in Toolbar selection. More details you can read here. You can see example in storybook at section Props -> toolbarSelectActions | | toolbarActions | Function | | Function that returns a string or React component. Used to display custom actions in toolbar panel. Signature ({data: Object, computedData: Object, displayData: Object}) => string \| React.Component | | rowActions | Function | | Function that returns a string or React component. Used to display custom actions in each row. Signature ({row: Object, rowIndex: number}) => string \| React.Component| | showSearchBar | boolean | false | Open or close search bar in toolbar panel | | searchValue | string | "" | The value by which the search is performed | | sort | Array | [{ columnName: '', direction: "ASC" }] | Set sorting by column name and set direction for sorting. Can be set sort with multiple columns. Direction may be: ASC and DESC | | filterValues | Object | {} | Set filters for columns | | onStateChanged | Function | | Handler for state changing. Receives event-like object. Signature (event: {name: string, value: string, state: Object}) => any, where name - changed state, value - new value, state - current state of datatable component. Notice, that state contains only changeable values. It useful to restore state after reloading page, for example| | localization | Object | default localization | More details you can read here | | customNoMatches | Function | | Function that returns a string or React component. Used as display text if was no matches after applying filters. (localization: string) => string \| React.Component |

toolbarSelectActions

(data: Object, selectedData: Object[], updateSelectedData: Function, handleDelete: Function) => string | React.Component

| Argument | Type | Description | | - | - | - | | data | Object | Current dataset in the table (with applying filters and sort) | | selectedData | Object[] | Current selected data (their refs) | | updateSelectedData | ( Object[] ) => any | Function, that apply new selected data | | handleDelete | ( Object[] ) => any | Function, that delete selected data. For example, you can call it, when you got successful response from your api |

localization

Default value
{
  toolbar: {
    searchAction: 'Search',
    filterAction: 'Filters',
    closeSearch: 'Close search',
  },
  filterLists: {
    title: 'Filter',
    allOption: 'All',
    reset: 'Reset',
    noMatchesText: 'No matches',
  },
  toolbarSelect: {
    selectedData: count => `${count} row(s) selected`,
  },
  pagination: {
    rowsPerPage: 'Rows per page',
    displayedRows: ({ from, to, count }) => `${from}-${to} of ${count}`,
  },
  body: {
    noMatchesText: 'No matches',
  },
}
toolbar

| Name | Type | Default | Description | - | - | - | - | | searchAction | string | 'Search' | Label for search button | | filterAction | string | 'Filters' | Label for filters button | | closeSearch | string | 'Close search' | Label for close button of search bar |

filterLists

| Name | Type | Default | Description | - | - | - | - | | title | string | 'Filter' | Label for title of filter menu | | allOption | string | 'All' | Label for option 'All' of select controls | | reset | string | 'Reset' | Label for reset button of filters | | noMatchesText | string | 'No matches' | Text if no matches in autocomplete |

toolbarSelect

| Name | Type | Default | Description | - | - | - | - | | selectedData | Function | count => `${count} row(s) selected` | Function that receives count of selected rows and returns string |

pagination

| Name | Type | Default | Description | - | - | - | - | | rowsPerPage | string | 'Rows per page' | Label for select rows per page | | displayedRows | Function | ({ from, to, count }) => `${from}-${to} of ${count}` | Function that receives from, to and count of data elements and returns string |

Column option

| Name | Type | Default | Description | | --- | --- | --- | --- | | name | string | | Name associated to your data"s object | | label | string | | Display column title | | sortable | boolean | true | Enable / disable sorting by column | | filterable | boolean | true | Enable / disable filtering by column. false will exclude column from filter panel| | searchable | boolean | true | Including / excluding column from search results |

ReactMUIDatatableProvider with ReactMUIDatatableRoot component

If you have separate screens for editing, creating, detailing items or you have your own screens, and you want to save state of your datatable between pages, you can lift state of the table higher with ReactMUIDatatableProvider. It receives all props from description ReactMUIDatatable's API. To draw table just use ReactMUIDatableRoot component. It's already connect to Provider and will receive all props, that was passed into ReactMUIDatatableProvider. See example below.

Example

Soon here will be link to example. Sorry :(

Alternative

  • mui-datatables - multifunctional table based on material ui components

Thanks

  • https://mockaroo.com/ - all stubs was generated by this service