@jazasoft/mui-table v1.0.32
@jazasoft/mui-table
Advanced React Data Table using Material UI
Features
- Simple Table
- Collective Editing - Edit entire table at once
- Sorting
- Selection
- Pagination
- Filter & Search
- Inline Editing - Edit one row at once
- Add/Remove Row
- Horizontal Scroll/ Force Line Wrap on Specified characters
- Variant - default, excel
- Tree Table
- Custom Footer Actions
- Column selection
- Spanning - Row Span & Col Span
- Expandable View/ Modal View/ Sidebar View
- Fully Customizable
- Fixed Header
- Drag & Drop for Editable Tree Data
- Change Sequence using Drag & Drop
- Elements
- TextField
- TextInput
- SelectInput
- BooleanInput
- AutoCompleteInput
- On Demand loading from remote for AutoCompleteInput
- DateInput
Install
npm install --save @jazasoft/mui-table
Usage
import React, { Component } from 'react'
import { MuiTable } from '@jazasoft/mui-table'
const columns = [
{ dataKey: 'dessert', title: 'Dessert' },
{ dataKey: 'calories', title: 'Calories', align: 'right' },
{ dataKey: 'fat', title: 'Fat (g)', align: 'right' },
{ dataKey: 'carbs', title: 'Carbohydrate (g)', align: 'right' },
{ dataKey: 'protein', title: 'Protein', align: 'right' }
]
const rows = Array(10)
.fill('')
.map((_, idx) => ({
dessert: `Dessert ${idx + 1}`,
calories: Math.round(Math.random() * 500),
fat: Math.round(Math.random() * 10),
carbs: Math.round(Math.random() * 100),
protein: (Math.random() * 10).toFixed(1)
}))
class App extends Component {
render() {
return <MuiTable columns={columns} rows={rows} />
}
}
Types
Action
Name | Type | Default Value | Description |
---|---|---|---|
name | string | Required . Name of action | |
tooltip | string | Optional . Tooltip for the action | |
icon | ReactElement | Icon for this action. Required for custom actions. | |
options | object | options will be passed down to Button or IconButton element |
Column
Name | Type | Default Value | Description |
---|---|---|---|
dataKey | string | Key in Object for this column | |
title | string | Label for this column | |
hidden | boolean | To hide columns. There are cases where, search and filter on some field is required without showing Column | |
titleSelected | function | Title when rows are selected. Signature - (selectedRows) => string | |
inputType | string | 'text-field' | Type of Input when table is editable. Values - 'text-field', 'text-input', 'select-input', 'boolean-input', 'date-input', 'auto-complete-input' |
fetchChoices | function | function to fetch choices on demand for auto-complete-input. (searchText, rows) => Promise(Choices) | |
choices | function\|object[] | [] | List of Choices when inputType is 'select-input' or 'auto-complete-input' . Object Type - {id: string\|number, name: string} . Function: ({row, rowIdx, rows, colIdx, dataKey}) => object[] |
render | function | render function if custom rendering is required. signature - (value) => ?any | |
validate | function\|function[] | field validation function. (value: ?any, allValues: Object, meta: ?FieldState) => ?any | |
options | object | {} | props to be passed to underlying editable component - Input, Select, Switch etc |
disabled | function | Disable Editable cells conditionally. Entire columns can be disabled using options.disabled . If both are provided, this func will have high priority. (row, dataKey, rows) => bool | |
align | string | Same as MUI TableCell Values - inherit, center, justify, left, right | |
linkPath | function | It will turn field to link. (row, dataKey) => Path:String | |
length | number | No. of characters to show or force text wrap depending on value of cellOverFlow prop of table | |
filterOptions | object | {} | Filter Options - {filter: bool, isCsvText: bool, multiSelect: bool, showValueOnly: bool} |
headerCellProps | object | {} | MUI Table Cell Props to be passed to Header Cell |
rowCellProps | object | {} | MUI Table Cell Props to be passed to Row Cell |
Props
Name | Type | Default Value | Description |
---|---|---|---|
columns | column[] | [] | List of Columns |
rows | object[] | [] | List of objects |
toolbar | bool | false | Whether to show toolbar |
toolbarDivider | bool | true | Whether to show Divider between Toolbar and Table Content or not |
title | string | Mui Table | Toolbar Title |
editable | bool | false | Table will become editable |
enableRowAddition | bool | false | Whether row addition should be enabled in editable mode. |
selectAll | bool | true | Applicable only when selectable is true , Select All Support |
multiSelect | bool | true | Whether multiple selection should be allowed for selectable Table |
pageSelect | bool | true | Whether only current page should be selected on select all or full table |
pageable | bool | false | Table will have pagination |
rowsPerPageOptions | number[] | [10, 25] | PageSize dropdown options |
pageSize | number | 10 | Number records to show in one page. |
sortable | bool | false | Columns will become sortable |
isTreeTable | bool | false | Whether table is tree table or not? |
defaultSort | {field: string, order: 'asc\|desc'} | Default Sorting. default value is first column in asc order | |
searchable | bool | false | Enable Search in Table |
searchKeys | string[] | ['name'] | Keys on which search will apply |
tableProps | object | {} | MUI Table props to be passed to Table |
idKey | string | id | Identifier Key in row object. This is used for selection and in tree table |
totalRowKey | string | totalRow | For flaging a row as total row, set true value in totalRowKey |
parnetIdKey | string | parentId | Identifier Key of parent in row object. This is used in tree table |
disabledElement | string | input | Element to use when editable element is disabled. Values - field, input |
cellLength | number | 30 | Default value of Cell Character Length when cell specific length is not provided |
cellOverFlow | string | tooltip | Content behavior when cell content is greater than cell length. Values - tooltip, wrap |
variant | string | default | Select Table Variant. Values - default, excel |
fontSize | number | 12 | Font Size |
emptyMessage | string | No records available! | Message when rows is empty |
expandedColor | string\|string[] | none | Background Color of Expanded Row. provide array of colors if different color is required for different level |
childIndent | string | 12 | Left Indentation of Child in pixel |
initialExpandedState | string | null | Inintial Expanded State. signature - {[idKey]: true\|false} |
selectActions | Action[] | [{name: 'delete'}] | Select Actions. Standard actions - add, edit, delete |
toolbarActions | Action[] | [] | Toolbar Actions. Standard actions - column . Not Implemented yet |
inlineActions | function\|Action[] | [] | Inline Actions. Standard actions - add, duplicate, edit, delete . |
footerActions | Action[] | [] | Custom Footer Actions. Standard actions - edit . |
chipOptions | object | {} | options passed to Chip element in FilterList |
actionPlacement | string | right | Placement of action buttons. Values - left, right |
rowInsert | string | below | Placement row to insert for add, duplicate inline actions. Values - above, below |
rowAddCount | number | 3 | Number of rows to add in editable mode |
onRowAdd | function | Signature - (rows, rowIdx, currRow) => Row Object . Can control row to be added on inline row addition or footer row addition | |
showEditableActions | bool | false | Show actions - add, addChild, delete in editiable mode |
showChildAddAction | function | Signation - (row, rows) => bool | |
component | string | form | HTML element for FormContent |
editing | bool | false | To Open Table in Editable mode |
defaultExpanded | bool \|function | default expanded state. Signature - bool \| (row, level) => bool . | |
selectable | bool \| function | false | Selectable Rows. bool \| (row) => bool |
onSubmit | function | Submit function to be called when table is editable. (values, form, onSubmitComplete) => {} . call onSubmitComplete with updated rows to indicate that submit is complete | |
onChange | function | onChange function to be called when any value changes. (name, value, row, form) => {} . | |
validate | function | Called before onSubmit. (values: FormValues) => Object \| Promise<Object> | |
comparator | function | (a, b) => 0 | Sort Comparator when sortable is false |
onSelectActionClick | function | Signature - (event, action, selectedRows, onActionComplete: func) => void . call onActionComplete to indicate that action is completed | |
onSelect | function | Function called on row select with selected ids. Signature - (selectedIds) => void . | |
onRowClick | function | Function called on row click. Signature - (row) => void . | |
onFilter | function | Function called on filter. Signature - (filterValues) => void . | |
onToolbarActionClick | function | Signature - (event, action) => void . | |
onTreeExpand | function | Function called on expand click. Signature - (event, row, isExpanded) => void . | |
fetchChildren | function | Function called to fetch children if not available. Signature - (row) => childRows \| Promise() | |
onInlineActionClick | function | Signature - (event, action, row, onActionComplete: func) => void . call onActionComplete with updated row data after action is completed | |
onFooterActionClick | function | Signature - (event, action, rows, onActionComplete: func) => void . call onActionComplete with updated row data after action is completed | |
rowStyle | object\|function | {} | Signature - ({row, rowIdx}) => object . function should return style object |
headerCellStyle | object\|function | {} | Signature - ({row, column, rowIdx, colIdx}) => object . function should return style object |
cellStyle | object\|function | {} | Signature - ({row, column, rowIdx, colIdx}) => object . function should return style object |
handleSubmitRef | function | Signature - (handleSubmit) => Void . When External Form submit is required, We get hold of React Final Form handleSubmit by calling this method. |
License
MIT © Jaza Software
10 months ago
10 months ago
10 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago