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

@jazasoft/mui-table

v1.0.32

Published

Advanced React Data Table using Material UI

Downloads

452

Readme

@jazasoft/mui-table

Advanced React Data Table using Material UI

NPM JavaScript Style Guide

Features

  • [x] Simple Table
  • [x] Collective Editing - Edit entire table at once
  • [x] Sorting
  • [x] Selection
  • [x] Pagination
  • [x] Filter & Search
  • [x] Inline Editing - Edit one row at once
  • [x] Add/Remove Row
  • [x] Horizontal Scroll/ Force Line Wrap on Specified characters
  • [x] Variant - default, excel
  • [x] Tree Table
  • [x] 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
    • [x] TextField
    • [x] TextInput
    • [x] SelectInput
    • [x] BooleanInput
    • [x] AutoCompleteInput
    • [x] On Demand loading from remote for AutoCompleteInput
    • [ ] DateInput

Examples

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