Skip to content

Commit eba464c

Browse files
committed
added ability to hide keys
1 parent 2e3d3df commit eba464c

File tree

6 files changed

+58
-14
lines changed

6 files changed

+58
-14
lines changed

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ Optionally, use `modifyAll` to change every item.
4444

4545
~~~js
4646

47-
modifyId(id, row){
47+
modifyId({hidden, value, key, row}){
4848
//row is the current row object
49-
return <a href={id}>{id}</a>
49+
return <a href={value}>{value}</a>
5050
}
5151

5252
render() {
@@ -67,6 +67,19 @@ modifyAll={this.modify}
6767
/>
6868
~~~
6969

70+
###hide
71+
72+
```js
73+
let modify = ({hidden}) => {
74+
expect(hidden.id).to.be.equal(1)
75+
}
76+
Test(<Table rows={[{id: 1, name: 'zach'}]} hide={['id']}/>)
77+
.find('td')
78+
.element(td => {
79+
expect(td.props.children).to.be.equal('zach');
80+
})
81+
```
82+
7083
`capitalize` Optionally, turn off capitalization of header row. True by default.
7184

7285
~~~js

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-legit-table",
3-
"version": "0.3.0",
3+
"version": "0.4.0",
44
"description": "the simplest table component out there",
55
"main": "lib/table.js",
66
"scripts": {
@@ -36,7 +36,7 @@
3636
"eslint": "^0.24.1",
3737
"eslint-plugin-react": "^2.7.0",
3838
"expect": "^1.8.0",
39-
"legit-tests": "^0.4.1",
39+
"legit-tests": "^0.4.4",
4040
"mocha": "^2.2.5",
4141
"mocha-babel": "^3.0.0",
4242
"react-hot-loader": "^1.3.0",

src/head.jsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import uniqueId from './uniqueId'
44
export default class Head extends React.Component{
55
static propTypes = {
66
row: React.PropTypes.object.isRequired,
7+
hide: React.PropTypes.array,
78
capitalize: React.PropTypes.bool
89
}
910

@@ -13,6 +14,10 @@ export default class Head extends React.Component{
1314

1415
headings() {
1516
return Object.keys(this.props.row).map((name) => {
17+
if(this.props.hide){
18+
let result = this.props.hide.map(ignore => ignore === name)
19+
if(result) return true
20+
}
1621
return <th key={uniqueId(name)}>{this.props.capitalize ? this.titleize(name) : name}</th>;
1722
});
1823
}

src/rows.jsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,35 @@ export default class Rows extends React.Component{
66
static propTypes = {
77
rows: React.PropTypes.array,
88
modify: React.PropTypes.object,
9+
hide: React.PropTypes.array,
910
modifyAll: React.PropTypes.func
1011
}
1112

1213
rows(){
1314
let rows = [];
1415

1516
for(let row of this.props.rows){
16-
let rowList = [];
17+
let rowList = [],
18+
hidden = {}
1719
let id = row[Object.keys(row)[0]]
1820

21+
if(this.props.hide){
22+
this.props.hide.map(ignore => {
23+
hidden[ignore] = row[ignore]
24+
delete row[ignore]
25+
})
26+
}
27+
1928
for(let item in row){
2029
let value = row[item]
21-
if(this.props.modifyAll) value = this.props.modifyAll(row[item], item, row)
22-
else if(this.props.modify[item]) value = this.props.modify[item](row[item], item, row)
30+
let params = {
31+
value: row[item],
32+
key: item,
33+
row,
34+
hidden
35+
}
36+
if(this.props.modifyAll) value = this.props.modifyAll(params)
37+
else if(this.props.modify[item]) value = this.props.modify[item](params)
2338

2439
rowList.push(<td key={uniqueId(row[item])}>{value}</td>)
2540
}

src/table.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export default class Table extends React.Component{
2222

2323
return (
2424
<table {...attributes}>
25-
<Head row={rows[0]} capitalize={capitalize} />
25+
<Head row={rows[0]} capitalize={capitalize} {...this.props} />
2626
<Rows rows={rows} modify={modify || {}} {...this.props}/>
2727
</table>
2828
)

tests/table.jsx

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ describe('Table component', () => {
3333
});
3434

3535
it('should correctly modify row', () => {
36-
let modify = (name) => {
37-
return `Name: ${name}`
36+
let modify = ({value}) => {
37+
return `Name: ${value}`
3838
}
3939

4040
Test(<Table rows={[{name: 'zach'}]} modify={{name: modify}}/>)
@@ -45,7 +45,7 @@ describe('Table component', () => {
4545
})
4646

4747
it('should correctly modify all rows', () => {
48-
let modify = (value) => {
48+
let modify = ({value}) => {
4949
return `yo ${value}`
5050
}
5151

@@ -58,11 +58,11 @@ describe('Table component', () => {
5858
})
5959

6060
it('should modify all rows and ignore individual modify ', () => {
61-
let modify = (value) => {
61+
let modify = ({value}) => {
6262
return `yo ${value}`
6363
}
64-
65-
let modifyName = (value) => {
64+
65+
let modifyName = ({value}) => {
6666
return `Name: ${value}`
6767
}
6868

@@ -74,5 +74,16 @@ describe('Table component', () => {
7474
})
7575
})
7676

77+
it('should hide id row', () => {
78+
let modify = ({hidden}) => {
79+
expect(hidden.id).to.be.equal(1)
80+
}
81+
Test(<Table rows={[{id: 1, name: 'zach'}]} hide={['id']}/>)
82+
.find('td')
83+
.element(td => {
84+
expect(td.props.children).to.be.equal('zach');
85+
})
86+
});
87+
7788
});
7889
});

0 commit comments

Comments
 (0)