Skip to content

Commit be89c49

Browse files
committed
Added showPaddedRows prop
1 parent 846fc0d commit be89c49

File tree

5 files changed

+121
-2
lines changed

5 files changed

+121
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ These are all of the available props (and their default values) for the main `<R
159159
pageSizeOptions: [5, 10, 20, 25, 50, 100],
160160
defaultPageSize: 20,
161161
showPageJump: true,
162+
showPaddedRows: true,
162163
collapseOnSortingChange: true,
163164
collapseOnPageChange: true,
164165
collapseOnDataChange: true,

docs/src/App.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import ControlledTable from './stories/ControlledTable.js'
2626
import PivotingOptions from './stories/PivotingOptions.js'
2727
import EditableTable from './stories/EditableTable.js'
2828
import FixedHeader from './stories/FixedHeader.js'
29+
import ShowPaddedRows from './stories/ShowPaddedRows.js'
2930

3031
export default class App extends React.Component {
3132
render() {
@@ -100,7 +101,8 @@ export default class App extends React.Component {
100101
{ name: 'Custom Filtering', component: Filtering },
101102
{ name: 'Controlled Component', component: ControlledTable },
102103
{ name: 'Editable Table', component: EditableTable },
103-
{ name: 'Fixed Header w/ Vertical Scroll', component: FixedHeader }
104+
{ name: 'Fixed Header w/ Vertical Scroll', component: FixedHeader },
105+
{ name: 'Show Padded Rows', component: ShowPaddedRows }
104106
]}
105107
/>
106108
)

docs/src/stories/ShowPaddedRows.js

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
/* eslint-disable import/no-webpack-loader-syntax */
2+
import React from 'react'
3+
import _ from 'lodash'
4+
import namor from 'namor'
5+
6+
import ReactTable from '../../../lib/index'
7+
8+
class Story extends React.PureComponent {
9+
constructor (props) {
10+
super(props)
11+
12+
const data = _.map(_.range(7), d => {
13+
return {
14+
firstName: namor.generate({ words: 1, numbers: 0 }),
15+
lastName: namor.generate({ words: 1, numbers: 0 }),
16+
age: Math.floor(Math.random() * 30)
17+
}
18+
})
19+
20+
this.state = {
21+
tableOptions: {
22+
showPaddedRows: true
23+
},
24+
data: data
25+
}
26+
27+
this.setTableOption = this.setTableOption.bind(this)
28+
}
29+
30+
render () {
31+
const columns = [{
32+
Header: 'Name',
33+
columns: [{
34+
Header: 'First Name',
35+
accessor: 'firstName'
36+
}, {
37+
Header: 'Last Name',
38+
id: 'lastName',
39+
accessor: d => d.lastName
40+
}]
41+
}, {
42+
Header: 'Info',
43+
columns: [{
44+
Header: 'Age',
45+
accessor: 'age'
46+
}]
47+
}]
48+
49+
console.log(this.state.tableOptions)
50+
51+
return (
52+
<div>
53+
<div>
54+
<h1>Table Options</h1>
55+
<table>
56+
<tbody>
57+
{
58+
Object.keys(this.state.tableOptions).map(optionKey => {
59+
const optionValue = this.state.tableOptions[optionKey]
60+
return (
61+
<tr key={optionKey}>
62+
<td>{optionKey}</td>
63+
<td style={{paddingLeft: 10, paddingTop: 5}}>
64+
<input type='checkbox'
65+
name={optionKey}
66+
checked={optionValue}
67+
onChange={this.setTableOption}
68+
/>
69+
</td>
70+
</tr>
71+
)
72+
})
73+
}
74+
</tbody>
75+
</table>
76+
</div>
77+
<div className='table-wrap'>
78+
<ReactTable
79+
{...this.state.tableOptions}
80+
className='-striped -highlight'
81+
data={this.state.data}
82+
columns={columns}
83+
defaultPageSize={15}
84+
pageSizeOptions={[5, 15, 30, 50]}
85+
/>
86+
</div>
87+
</div>
88+
)
89+
}
90+
91+
setTableOption (event)
92+
{
93+
const target = event.target
94+
const value = target.type === 'checkbox' ? target.checked : target.value
95+
const name = target.name
96+
this.setState({
97+
tableOptions : {
98+
...this.state.tableOptions,
99+
[name] : value
100+
}
101+
})
102+
}
103+
}
104+
105+
// Source Code
106+
const CodeHighlight = require('./components/codeHighlight').default
107+
const source = require('!raw!./ShowPaddedRows')
108+
109+
export default () => (
110+
<div>
111+
<Story />
112+
<CodeHighlight>{() => source}</CodeHighlight>
113+
</div>
114+
)

src/defaultProps.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export default {
1919
collapseOnPageChange: true,
2020
collapseOnDataChange: true,
2121
freezeWhenExpanded: false,
22+
showPaddedRows: true,
2223
sortable: true,
2324
resizable: true,
2425
filterable: false,

src/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
7272
getNoDataProps,
7373
getResizerProps,
7474
showPagination,
75+
showPaddedRows,
7576
manual,
7677
loadingText,
7778
noDataText,
@@ -131,7 +132,7 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
131132
const endRow = startRow + pageSize
132133
let pageRows = manual ? resolvedData : sortedData.slice(startRow, endRow)
133134
const minRows = this.getMinRows()
134-
const padRows = _.range(Math.max(minRows - pageRows.length, 0))
135+
const padRows = showPaddedRows ? _.range(Math.max(minRows - pageRows.length, 0)) : []
135136

136137
const hasColumnFooter = allVisibleColumns.some(d => d.Footer)
137138
const hasFilters = filterable || allVisibleColumns.some(d => d.filterable)

0 commit comments

Comments
 (0)