mirror of
https://github.com/gosticks/react-table.git
synced 2026-10-07 00:06:56 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e8146b5d14 | ||
|
|
eef59a559e | ||
|
|
3b18e8c8c1 | ||
|
|
dd6b8af304 | ||
|
|
f242d2f3f6 | ||
|
|
9dd0333571 | ||
|
|
085616d858 | ||
|
|
25ef0b2273 |
+3
-1
@@ -1,3 +1,5 @@
|
|||||||
node_modules/
|
node_modules/
|
||||||
|
lib/
|
||||||
|
react-table.js
|
||||||
|
react-table.css
|
||||||
*.log
|
*.log
|
||||||
|
|||||||
@@ -81,24 +81,32 @@ Every React-Table instance requires you to set the `data` prop. To use client-si
|
|||||||
These are the default props for the main react component `<ReactTable />`
|
These are the default props for the main react component `<ReactTable />`
|
||||||
```javascript
|
```javascript
|
||||||
{
|
{
|
||||||
|
// General
|
||||||
|
pageSize: 20,
|
||||||
|
minRows: 0, // Ensure this many rows are always rendered, regardless of rows on page
|
||||||
|
|
||||||
|
// Text
|
||||||
|
previousText: 'Previous',
|
||||||
|
nextText: 'Next'
|
||||||
|
|
||||||
// Classes
|
// Classes
|
||||||
className: '-striped -highlight', // The most top level className for the component
|
className: '-striped -highlight', // The most top level className for the component
|
||||||
tableClassName: '', // ClassName for the `table` element
|
tableClassName: '', // ClassName for the `table` element
|
||||||
theadClassName: '', // ClassName for the `thead` element
|
theadClassName: '', // ClassName for the `thead` element
|
||||||
tbodyClassName: '', // ClassName for the `tbody` element
|
tbodyClassName: '', // ClassName for the `tbody` element
|
||||||
trClassName: '', // ClassName for all `tr` elements
|
trClassName: '', // ClassName for all `tr` elements
|
||||||
|
trClassCallback: row => null, // A call back to dynamically add classes (via the classnames module) to a row element
|
||||||
paginationClassName: '' // ClassName for `pagination` element
|
paginationClassName: '' // ClassName for `pagination` element
|
||||||
//
|
// Styles
|
||||||
pageSize: 20,
|
style: {}, // Main style object for the component
|
||||||
minRows: 0, // Ensure this many rows are always rendered, regardless of rows on page
|
tableStyle: {}, // style object for the `table` component
|
||||||
// Global Column Defaults
|
theadStyle: {}, // style object for the `thead` component
|
||||||
column: { // default properties for every column's model
|
tbodyStyle: {}, // style object for the `tbody` component
|
||||||
sortable: true,
|
trStyle: {}, // style object for the `tr` component
|
||||||
show: true
|
trStyleCallback: row => {}, // A call back to dynamically add styles to a row element
|
||||||
},
|
thStyle: {}, // style object for the `th` component
|
||||||
// Text
|
tdStyle: {}, // style object for the `td` component
|
||||||
previousText: 'Previous',
|
paginationStyle: {}, // style object for the `paginination` component
|
||||||
nextText: 'Next'
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -130,23 +138,31 @@ Every React-Table instance requires a `columns` prop, which is an array of objec
|
|||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
[{
|
[{
|
||||||
// Required
|
// General
|
||||||
header: 'Header Name' or JSX eg. ({data, column}) => <div>Header Name</div>,
|
|
||||||
accessor: 'propertyName' or Accessor eg. (row) => row.propertyName,
|
accessor: 'propertyName' or Accessor eg. (row) => row.propertyName,
|
||||||
|
id: 'myProperty', // Conditional - A unique ID is required if the accessor is not a string or if you would like to override the column name used in server-side calls
|
||||||
// A unique ID is required if the accessor is not a string or if you would like to override the column name used in server-side calls
|
|
||||||
id: 'myProperty',
|
|
||||||
|
|
||||||
// Optional
|
|
||||||
className: '', // Set the classname of the `th/td` element of the column
|
|
||||||
innerClassName: '', // Set the classname of the `.th-inner/.td-inner` element of the column
|
|
||||||
columns: [...] // See Header Groups section below
|
|
||||||
render: JSX eg. ({row, value, index, viewIndex}) => <span>{value}</span>, // Provide a JSX element or stateless function to render whatever you want as the column's cell with access to the entire row
|
|
||||||
sortable: true,
|
sortable: true,
|
||||||
sort: 'asc' or 'desc',
|
sort: 'asc' or 'desc',
|
||||||
show: true,
|
show: true,
|
||||||
width: Number, // Locks the column width to this amount
|
|
||||||
minWidth: Number // Allows the column to flex above this minimum amount
|
minWidth: Number // Allows the column to flex above this minimum amount
|
||||||
|
|
||||||
|
// Cell Options
|
||||||
|
className: '', // Set the classname of the `td` element of the column
|
||||||
|
style: {}, // Set the style of the `td` element of the column
|
||||||
|
innerClassName: '', // Set the classname of the `.-td-inner` element of the column
|
||||||
|
innerStyle: {}, // Set the style of the `.-td-inner` element of the column
|
||||||
|
render: JSX eg. ({row, value, index, viewIndex}) => <span>{value}</span>, // Provide a JSX element or stateless function to render whatever you want as the column's cell with access to the entire row
|
||||||
|
|
||||||
|
// Header & HeaderGroup Options
|
||||||
|
header: 'Header Name' or JSX eg. ({data, column}) => <div>Header Name</div>,
|
||||||
|
headerClassName: '', // Set the classname of the `th` element of the column
|
||||||
|
headerStyle: {}, // Set the style of the `th` element of the column
|
||||||
|
headerInnerClassName: '', // Set the classname of the `.-th-inner` element of the column
|
||||||
|
headerInnerStyle: {}, // Set the style of the `.th-inner` element of the column
|
||||||
|
|
||||||
|
// Header Groups only
|
||||||
|
columns: [...] // See Header Groups section below
|
||||||
|
|
||||||
}]
|
}]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Vendored
+126
-47
File diff suppressed because one or more lines are too long
+104
-38
File diff suppressed because one or more lines are too long
+9
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "react-table",
|
"name": "react-table",
|
||||||
"version": "2.1.3",
|
"version": "2.2.2",
|
||||||
"description": "A fast, lightweight, opinionated table and datagrid built on React",
|
"description": "A fast, lightweight, opinionated table and datagrid built on React",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"homepage": "https://github.com/tannerlinsley/react-table#readme",
|
"homepage": "https://github.com/tannerlinsley/react-table#readme",
|
||||||
@@ -15,13 +15,20 @@
|
|||||||
"datagrid"
|
"datagrid"
|
||||||
],
|
],
|
||||||
"main": "lib/index.js",
|
"main": "lib/index.js",
|
||||||
|
"files": [
|
||||||
|
"lib/",
|
||||||
|
"react-table.js",
|
||||||
|
"react-table.css",
|
||||||
|
"media/*.png"
|
||||||
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build:node": "babel src --out-dir lib --source-maps inline",
|
"build:node": "babel src --out-dir lib --source-maps inline",
|
||||||
"build:css": "rm -rf react-table.css && stylus src/index.styl --use ./node_modules/nib/lib/nib.js --compress -o react-table.css",
|
"build:css": "rm -rf react-table.css && stylus src/index.styl --use ./node_modules/nib/lib/nib.js --compress -o react-table.css",
|
||||||
"watch": "onchange 'src/**' -i -- npm-run-all build:*",
|
"watch": "onchange 'src/**' -i -- npm-run-all build:*",
|
||||||
"test": "standard",
|
"test": "standard",
|
||||||
"umd": "rm -rf react-table.js && browserify lib/index.js -s reactTable -x react -t babelify -g uglifyify -o react-table.js",
|
"umd": "rm -rf react-table.js && browserify lib/index.js -s reactTable -x react -t babelify -g uglifyify -o react-table.js",
|
||||||
"prepublish": "npm-run-all build:* && npm run umd"
|
"prepublish": "npm-run-all build:* && npm run umd",
|
||||||
|
"postpublish": "git push --tags"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"classnames": "^2.2.5"
|
"classnames": "^2.2.5"
|
||||||
|
|||||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+100
-34
@@ -22,14 +22,36 @@ export const ReactTableDefaults = {
|
|||||||
theadClassName: '',
|
theadClassName: '',
|
||||||
tbodyClassName: '',
|
tbodyClassName: '',
|
||||||
trClassName: '',
|
trClassName: '',
|
||||||
|
trClassCallback: d => null,
|
||||||
|
thClassName: '',
|
||||||
|
thGroupClassName: '',
|
||||||
|
tdClassName: '',
|
||||||
paginationClassName: '',
|
paginationClassName: '',
|
||||||
|
// Styles
|
||||||
|
style: {},
|
||||||
|
tableStyle: {},
|
||||||
|
theadStyle: {},
|
||||||
|
tbodyStyle: {},
|
||||||
|
trStyle: {},
|
||||||
|
trStyleCallback: d => {},
|
||||||
|
thStyle: {},
|
||||||
|
tdStyle: {},
|
||||||
|
paginationStyle: {},
|
||||||
//
|
//
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
minRows: 0,
|
minRows: 0,
|
||||||
// Global Column Defaults
|
// Global Column Defaults
|
||||||
column: {
|
column: {
|
||||||
sortable: true,
|
sortable: true,
|
||||||
show: true
|
show: true,
|
||||||
|
className: '',
|
||||||
|
style: {},
|
||||||
|
innerClassName: '',
|
||||||
|
innerStyle: {},
|
||||||
|
headerClassName: '',
|
||||||
|
headerStyle: {},
|
||||||
|
headerInnerClassName: '',
|
||||||
|
headerInnerStyle: {}
|
||||||
},
|
},
|
||||||
// Text
|
// Text
|
||||||
previousText: 'Previous',
|
previousText: 'Previous',
|
||||||
@@ -255,19 +277,35 @@ export default React.createClass({
|
|||||||
const NextComponent = this.props.nextComponent || defaultButton
|
const NextComponent = this.props.nextComponent || defaultButton
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classnames(this.props.className, 'ReactTable')}>
|
<div
|
||||||
<TableComponent className={classnames(this.props.tableClassName)}>
|
className={classnames(this.props.className, 'ReactTable')}
|
||||||
|
style={this.props.style}
|
||||||
|
>
|
||||||
|
<TableComponent
|
||||||
|
className={classnames(this.props.tableClassName)}
|
||||||
|
style={this.props.tableStyle}
|
||||||
|
>
|
||||||
{this.hasHeaderGroups && (
|
{this.hasHeaderGroups && (
|
||||||
<TheadComponent className={classnames(this.props.theadClassName, '-headerGroups')}>
|
<TheadComponent
|
||||||
<TrComponent className={this.props.trClassName}>
|
className={classnames(this.props.theadGroupClassName, '-headerGroups')}
|
||||||
|
style={this.props.theadStyle}
|
||||||
|
>
|
||||||
|
<TrComponent
|
||||||
|
className={this.props.trClassName}
|
||||||
|
style={this.props.trStyle}
|
||||||
|
>
|
||||||
{this.headerGroups.map((column, i) => {
|
{this.headerGroups.map((column, i) => {
|
||||||
return (
|
return (
|
||||||
<ThComponent
|
<ThComponent
|
||||||
key={i}
|
key={i}
|
||||||
className={classnames(column.className)}
|
colSpan={column.columns.length}
|
||||||
colSpan={column.columns.length}>
|
className={classnames(this.props.thClassname, column.headerClassName)}
|
||||||
|
style={Object.assign({}, this.props.thStyle, column.headerStyle)}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
className={classnames(column.innerClassName, '-th-inner')}>
|
className={classnames(column.headerInnerClassName, '-th-inner')}
|
||||||
|
style={Object.assign({}, this.props.thInnerStyle, column.headerInnerStyle)}
|
||||||
|
>
|
||||||
{typeof column.header === 'function' ? (
|
{typeof column.header === 'function' ? (
|
||||||
<column.header
|
<column.header
|
||||||
data={this.props.data}
|
data={this.props.data}
|
||||||
@@ -281,8 +319,14 @@ export default React.createClass({
|
|||||||
</TrComponent>
|
</TrComponent>
|
||||||
</TheadComponent>
|
</TheadComponent>
|
||||||
)}
|
)}
|
||||||
<TheadComponent className={classnames(this.props.theadClassName)}>
|
<TheadComponent
|
||||||
<TrComponent className={this.props.trClassName}>
|
className={classnames(this.props.theadClassName)}
|
||||||
|
style={this.props.theadStyle}
|
||||||
|
>
|
||||||
|
<TrComponent
|
||||||
|
className={this.props.trClassName}
|
||||||
|
style={this.props.trStyle}
|
||||||
|
>
|
||||||
{this.decoratedColumns.map((column, i) => {
|
{this.decoratedColumns.map((column, i) => {
|
||||||
const sort = this.state.sorting.find(d => d.id === column.id)
|
const sort = this.state.sorting.find(d => d.id === column.id)
|
||||||
const show = typeof column.show === 'function' ? column.show() : column.show
|
const show = typeof column.show === 'function' ? column.show() : column.show
|
||||||
@@ -290,22 +334,25 @@ export default React.createClass({
|
|||||||
<ThComponent
|
<ThComponent
|
||||||
key={i}
|
key={i}
|
||||||
className={classnames(
|
className={classnames(
|
||||||
column.className,
|
this.props.thClassname,
|
||||||
|
column.headerClassName,
|
||||||
sort ? (sort.asc ? '-sort-asc' : '-sort-desc') : '',
|
sort ? (sort.asc ? '-sort-asc' : '-sort-desc') : '',
|
||||||
{
|
{
|
||||||
'-cursor-pointer': column.sortable,
|
'-cursor-pointer': column.sortable,
|
||||||
'-hidden': !show
|
'-hidden': !show
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
|
style={Object.assign({}, this.props.thStyle, column.headerStyle)}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
column.sortable && this.sortColumn(column, e.shiftKey)
|
column.sortable && this.sortColumn(column, e.shiftKey)
|
||||||
}}>
|
}}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
className={classnames(column.innerClassName, '-th-inner')}
|
className={classnames(column.headerInnerClassName, '-th-inner')}
|
||||||
style={{
|
style={Object.assign({}, column.headerInnerStyle, {
|
||||||
width: column.width + 'px',
|
|
||||||
minWidth: column.minWidth + 'px'
|
minWidth: column.minWidth + 'px'
|
||||||
}}>
|
})}
|
||||||
|
>
|
||||||
{typeof column.header === 'function' ? (
|
{typeof column.header === 'function' ? (
|
||||||
<column.header
|
<column.header
|
||||||
data={this.props.data}
|
data={this.props.data}
|
||||||
@@ -318,31 +365,41 @@ export default React.createClass({
|
|||||||
})}
|
})}
|
||||||
</TrComponent>
|
</TrComponent>
|
||||||
</TheadComponent>
|
</TheadComponent>
|
||||||
<TbodyComponent className={classnames(this.props.tbodyClassName)}>
|
<TbodyComponent
|
||||||
|
className={classnames(this.props.tbodyClassName)}
|
||||||
|
style={this.props.tbodyStyle}
|
||||||
|
>
|
||||||
{pageRows.map((row, i) => {
|
{pageRows.map((row, i) => {
|
||||||
|
const rowInfo = {
|
||||||
|
row: row.__original,
|
||||||
|
index: row.__index,
|
||||||
|
viewIndex: i
|
||||||
|
}
|
||||||
return (
|
return (
|
||||||
<TrComponent
|
<TrComponent
|
||||||
className={classnames(this.props.trClassName)}
|
key={i}
|
||||||
key={i}>
|
className={classnames(this.props.trClassName, this.props.trClassCallback(rowInfo))}
|
||||||
|
style={Object.assign({}, this.props.trStyle, this.props.trStyleCallback(rowInfo))}
|
||||||
|
>
|
||||||
{this.decoratedColumns.map((column, i2) => {
|
{this.decoratedColumns.map((column, i2) => {
|
||||||
const Cell = column.render
|
const Cell = column.render
|
||||||
const show = typeof column.show === 'function' ? column.show() : column.show
|
const show = typeof column.show === 'function' ? column.show() : column.show
|
||||||
return (
|
return (
|
||||||
<TdComponent
|
<TdComponent
|
||||||
|
key={i2}
|
||||||
className={classnames(column.className, {hidden: !show})}
|
className={classnames(column.className, {hidden: !show})}
|
||||||
key={i2}>
|
style={Object.assign({}, this.props.tdStyle, column.style)}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
className={classnames(column.innerClassName, '-td-inner')}
|
className={classnames(column.innerClassName, '-td-inner')}
|
||||||
style={{
|
style={Object.assign({}, column.innerStyle, {
|
||||||
width: column.width + 'px',
|
|
||||||
minWidth: column.minWidth + 'px'
|
minWidth: column.minWidth + 'px'
|
||||||
}}>
|
})}
|
||||||
|
>
|
||||||
{typeof Cell === 'function' ? (
|
{typeof Cell === 'function' ? (
|
||||||
<Cell
|
<Cell
|
||||||
value={row[column.id]}
|
value={row[column.id]}
|
||||||
row={row.__original}
|
{...rowInfo}
|
||||||
index={row.__index}
|
|
||||||
viewIndex={i}
|
|
||||||
/>
|
/>
|
||||||
) : typeof Cell !== 'undefined' ? Cell
|
) : typeof Cell !== 'undefined' ? Cell
|
||||||
: row[column.id]}
|
: row[column.id]}
|
||||||
@@ -356,20 +413,24 @@ export default React.createClass({
|
|||||||
{padRows.map((row, i) => {
|
{padRows.map((row, i) => {
|
||||||
return (
|
return (
|
||||||
<TrComponent
|
<TrComponent
|
||||||
|
key={i}
|
||||||
className={classnames(this.props.trClassName, '-padRow')}
|
className={classnames(this.props.trClassName, '-padRow')}
|
||||||
key={i}>
|
style={this.props.trStyle}
|
||||||
|
>
|
||||||
{this.decoratedColumns.map((column, i2) => {
|
{this.decoratedColumns.map((column, i2) => {
|
||||||
const show = typeof column.show === 'function' ? column.show() : column.show
|
const show = typeof column.show === 'function' ? column.show() : column.show
|
||||||
return (
|
return (
|
||||||
<TdComponent
|
<TdComponent
|
||||||
|
key={i2}
|
||||||
className={classnames(column.className, {hidden: !show})}
|
className={classnames(column.className, {hidden: !show})}
|
||||||
key={i2}>
|
style={Object.assign({}, this.props.tdStyle, column.style)}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
className={classnames(column.innerClassName, '-td-inner')}
|
className={classnames(column.innerClassName, '-td-inner')}
|
||||||
style={{
|
style={Object.assign({}, column.innerStyle, {
|
||||||
width: column.width + 'px',
|
|
||||||
minWidth: column.minWidth + 'px'
|
minWidth: column.minWidth + 'px'
|
||||||
}}> </div>
|
})}
|
||||||
|
> </div>
|
||||||
</TdComponent>
|
</TdComponent>
|
||||||
)
|
)
|
||||||
})}
|
})}
|
||||||
@@ -379,11 +440,15 @@ export default React.createClass({
|
|||||||
</TbodyComponent>
|
</TbodyComponent>
|
||||||
</TableComponent>
|
</TableComponent>
|
||||||
{pagesLength > 1 && (
|
{pagesLength > 1 && (
|
||||||
<div className={classnames(this.props.paginationClassName, '-pagination')}>
|
<div
|
||||||
|
className={classnames(this.props.paginationClassName, '-pagination')}
|
||||||
|
style={this.props.paginationStyle}
|
||||||
|
>
|
||||||
<div className='-left'>
|
<div className='-left'>
|
||||||
<PreviousComponent
|
<PreviousComponent
|
||||||
onClick={canPrevious && ((e) => this.previousPage(e))}
|
onClick={canPrevious && ((e) => this.previousPage(e))}
|
||||||
disabled={!canPrevious}>
|
disabled={!canPrevious}
|
||||||
|
>
|
||||||
{this.props.previousText}
|
{this.props.previousText}
|
||||||
</PreviousComponent>
|
</PreviousComponent>
|
||||||
</div>
|
</div>
|
||||||
@@ -393,7 +458,8 @@ export default React.createClass({
|
|||||||
<div className='-right'>
|
<div className='-right'>
|
||||||
<NextComponent
|
<NextComponent
|
||||||
onClick={canNext && ((e) => this.nextPage(e))}
|
onClick={canNext && ((e) => this.nextPage(e))}
|
||||||
disabled={!canNext}>
|
disabled={!canNext}
|
||||||
|
>
|
||||||
{this.props.nextText}
|
{this.props.nextText}
|
||||||
</NextComponent>
|
</NextComponent>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user