@jazasoft/mui-table v1.0.29
@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
4 months ago
7 months ago
9 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
11 months ago
11 months ago
12 months ago
12 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year 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
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
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
4 years ago
4 years ago