react-nice-table
React-nice-table is a component for displaying data in a tabular format. It's very simple to use and customizable for different use cases.
Installation
npm i react-nice-table
or yarn:
yarn add react-nice-table
Add material icons font if you use features related to it (pagination, sorting, footer toolbar, selection):
List of icons: https://material.io/resources/icons/?icon=picture_as_pdf&style=baseline
Demo
Features
- Fixed Header
- Pagination
- Customer Filtering
- Custom Rendering
- Export Buttons
- Remote Data Loading
- Sorting
- Selection
- Actions Column
Code example
const tableColumns:ColumnModel = title: 'Id' field: 'id' align:'center' width: '50px' title: 'Avatar' width: '50px' <img src=`https://api.adorable.io/avatars/36/.png`/> title: 'Name' field: 'name' title: 'Email' field: 'email' <a href=`mailto:`>rowDataemail</a> title: 'Age' field: 'age' align:'right'; const tableData = ;const exportButtons:ExportButtonModel = icon:'save' label:'CSV' { ; } icon:'picture_as_pdf' label:'' { ; } icon:'save_alt' label:'Excel' { ; } ; return <NiceTable columns=tableColumns data=tableData height="300px" exportButtons=exportButtons hasPagination=true selectable=true/>;
Api
NiceTable
type NiceTableProps = columns: ColumnModel; data: any | RemoteDataFn; hasPagination?: boolean; pageSizeOptions?: number; height?:string; width?:string; filterComponent?: ReactReactNode; filterData?: FilterDataModel; sortable?:boolean; defaultSortBy?:string; defaultSortOrder?:string; selectable?:boolean; onSelectionChange?selectedRowDataIds:any:void; defaultSelectedIds?:any; fullRowSelectable?:boolean; dataIdField?:string; exportButtons?:ExportButtonModel; actionButtons?:ActionButtonModel;
ColumnModel:
type ColumnModel = title: string; field?: string; align?: string; width?: any; render?rowData:any: void;
TODO List
- Localization
Licensee
MIT