0.0.7 • Published 4 years ago

react-compact-table v0.0.7

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

react-compact-table

  • This is compact & easy to use react-compact-table (render props pattern & using styled components)

Getting Started

npm install react-compact-table --save

Dependancies

- styled-components
- lodash

Demo

https://cicada1992.github.io/react-compact-table/

TableProps

PropertyTypeRequired?Description
dataT[]inject your data (array) ✓TableColumn
minWidthstringIf you want to set minWidth, apply this.
maxHeightstringmaxHeight means body's max height. If table body's height exceed this, will be scrollable.
headerBgColorstringdefault: #ffffff
headerFontSizestringdefault: 12px
headerFontColorstringdefault: black
headerHeightstringdefault: 22px
rowHeightstringdefault: auto (depends on content)
renderFooterChildren() => React.ReactNodeIf you need footer, use this
footerColorstringdefault: none
selectablebooleanactivate to select (radio button in first column)
selectedIdstringinject selected id
noRadioButtonbooleanyou can apply selectable row without radio button
onRowClick(id: string) => voidinject callback function to change clicked id
removablebooleanactivate to remove (be added X icon end of each row)
onRemoveClick(id: string) => voidinject callback function to remove clicked id
sortablebooleanactivate to sort (If you click header label, will be added sorting icon end of each header)
currentSortKeykeyof Tsort key (same as data key)
currentSortOrderSortOrderdesc or asc
onHeaderClick(sortKey: keyof T) => voidinject callback function to change sort keysort order related to clicked specific header label

TableColumnProps

PropertyTypeRequired?Description
dataKeystringmatched key as your data
labelstringheader label
helpReact.ReactNodetooltip (inactive now, fixing minor bug)
widthstringdefault: 10% of table width
alignstringdefault: left
cellAlignstringif you want to apply align separately between header and cell, use this

Basic Usage

interface DataItem {
  id: string;
  name: string;
  conversions: number;
}
const data: DataItem[] = [
  { id: 'id-0', name: 'DongYoon',  conversions: 23242424 },
  { id: 'id-1', name: 'SangBoak', conversions: 1234 },
  { id: 'id-2', name: 'MoonSik', conversions: 3 },
  { id: 'id-3', name: 'Heejin', conversions: 7211233123 },
  { id: 'id-4', name: 'Youngjae', conversions: 312 }
];
<Table data={data}>
  <TableColumn<DataItem, 'name'>
    dataKey="name"
    label="Name"
    help="this is pure text"
    align="left"
  >
     {({ value }) => <Text>{value}</Text>}
  </TableColumn>
  <TableColumn<DataItem, 'conversions'>
     dataKey="conversions"
     label="Conversions"
     help={<div>I'm react node</div>}
     align="right"
  >
    {({ value }) => <Text>{formatNumber(value) || 0}</Text>}
  </TableColumn>
</Table>