Skip to content

Commit 7280e3c

Browse files
committed
seperate sorting style and header into two props
1 parent 17a2b16 commit 7280e3c

File tree

9 files changed

+62
-99
lines changed

9 files changed

+62
-99
lines changed

docs/README.md

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
* [rowClasses](#rowClasses)
2020
* [rowEvents](#rowEvents)
2121
* [defaultSorted](#defaultSorted)
22-
* [sortedHeader](#sortedHeader)
22+
* [sortingHeaderClasses](#sortingHeaderClasses)
23+
* [sortingHeaderStyle](#sortingHeaderStyle)
2324

2425
### <a name='keyField'>keyField(**required**) - [String]</a>
2526
Tells `react-bootstrap-table2` which column is unique.
@@ -104,40 +105,29 @@ const defaultSorted = [{
104105
}];
105106
```
106107

107-
### <a name='sortedHeader'>sortedHeader - [Object]</a>
108+
### <a name='sortingHeaderClasses'>sortingHeaderClasses - [String | Function]</a>
108109

109-
`sortedHeader` allows you to customize `class` or `style` for `header cell` which is currently sorting. `sortedHeader` accepts two `attributes`, `classes` and `style`.
110-
111-
* classes
112-
* style
113-
114-
**sortedHeader.classes - [String | Function]**
115-
116-
Append customized classes for `header cell` which the table was sorting based on.
110+
`sortingHeaderClasses` allows you to customize `class` for `header cell` which the table was sorting based on.
117111

118112
```js
119-
const sortedHeader = {
120-
classes: 'demo-sorted'
121-
};
113+
const sortingHeaderClasses = 'demo-sorting';
122114
```
123115

124116
Furthermore, it also accepts a callback function which takes `2` arguments and `String` is expected to return:
125117

126118
```js
127-
const sortedHeader = {
128-
classes: function callback(column, colIndex) { ... }
129-
}
119+
const sortingHeaderClasses = function callback(column, colIndex) { ... }
130120
```
131121

132122
* column: The value of current column.
133123
* colIndex: The index of the current column being processed in BootstrapTable.
134124

135-
**sortedHeader.style - [Object | Function]**
125+
### <a name='sortingHeaderStyle'>sortingHeaderStyle - [Object | Function]</a>
136126

137-
It's similiar to `sortedHeader.classes`. It allows to customize style of `header cell` which is sorting based on. `Object` and `callback` function are acceptable. `callback` takes `2` arguments and an `Object` is expected to return:
127+
It's similiar to `sortingHeaderClasses`. It allows to customize style of `header cell` which is sorting based on. `Object` and `callback` function are acceptable. `callback` takes `2` arguments and an `Object` is expected to return:
138128

139129
```js
140-
const sortedHeader = {
141-
style: { backgroundColor: 'red' }
130+
const sortingHeaderStyle = {
131+
backgroundColor: 'red'
142132
};
143-
```
133+
```

packages/react-bootstrap-table2-example/examples/sort/sorted-header-classes.js renamed to packages/react-bootstrap-table2-example/examples/sort/sorting-header-classes.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ const columns = [{
2020
text: 'Product Price'
2121
}];
2222

23-
const sortedHeader = {
24-
classes: (column, colIndex) => 'demo-sorted'
25-
};
23+
const sortingHeaderClasses = (column, colIndex) => 'demo-sorting';
2624

2725
const sourceCode = `\
2826
const columns = [{
@@ -38,16 +36,14 @@ const columns = [{
3836
text: 'Product Price'
3937
}];
4038
41-
const sortedHeader = {
42-
classes: (column, colIndex) => 'demo-sorted'
43-
};
39+
const sortingHeaderClasses = (column, colIndex) => 'demo-sorting';
4440
45-
<BootstrapTable keyField="id" data={ products } columns={ columns } sortedHeader={ sortedHeader } />
41+
<BootstrapTable keyField="id" data={ products } columns={ columns } sortingHeaderClasses={ sortingHeaderClasses } />
4642
`;
4743

4844
export default () => (
4945
<div>
50-
<BootstrapTable keyField="id" data={ products } columns={ columns } sortedHeader={ sortedHeader } />
46+
<BootstrapTable keyField="id" data={ products } columns={ columns } sortingHeaderClasses={ sortingHeaderClasses } />
5147
<Code>{ sourceCode }</Code>
5248
</div>
5349
);

packages/react-bootstrap-table2-example/examples/sort/sorted-header-style.js renamed to packages/react-bootstrap-table2-example/examples/sort/sorting-header-style.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@ const columns = [{
2020
text: 'Product Price'
2121
}];
2222

23-
const sortedHeader = {
24-
style: { backgroundColor: '#c8e6c9' }
25-
};
23+
const sortingHeaderStyle = { backgroundColor: '#c8e6c9' };
2624

2725
const sourceCode = `\
2826
const columns = [{
@@ -38,16 +36,14 @@ const columns = [{
3836
text: 'Product Price'
3937
}];
4038
41-
const sortedHeader = {
42-
style: { backgroundColor: '#c8e6c9' }
43-
};
39+
const sortingHeaderStyle = { backgroundColor: '#c8e6c9' };
4440
45-
<BootstrapTable keyField="id" data={ products } columns={ columns } sortedHeader={ sortedHeader } />
41+
<BootstrapTable keyField="id" data={ products } columns={ columns } sortingHeaderStyle={ sortingHeaderStyle } />
4642
`;
4743

4844
export default () => (
4945
<div>
50-
<BootstrapTable keyField="id" data={ products } columns={ columns } sortedHeader={ sortedHeader } />
46+
<BootstrapTable keyField="id" data={ products } columns={ columns } sortingHeaderStyle={ sortingHeaderStyle } />
5147
<Code>{ sourceCode }</Code>
5248
</div>
5349
);

packages/react-bootstrap-table2-example/stories/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ import RowEventTable from 'examples/rows/row-event';
4141
import EnableSortTable from 'examples/sort/enable-sort-table';
4242
import DefaultSortTable from 'examples/sort/default-sort-table';
4343
import CustomSortTable from 'examples/sort/custom-sort-table';
44-
import SortedHeaderClassesTable from 'examples/sort/sorted-header-classes';
45-
import SortedHeaderStyleTable from 'examples/sort/sorted-header-style';
44+
import SortingHeaderClassesTable from 'examples/sort/sorting-header-classes';
45+
import SortingHeaderStyleTable from 'examples/sort/sorting-header-style';
4646

4747
// cell editing
4848
import ClickToEditTable from 'examples/cell-edit/click-to-edit-table';
@@ -119,8 +119,8 @@ storiesOf('Sort Table', module)
119119
.add('Enable Sort', () => <EnableSortTable />)
120120
.add('Default Sort Table', () => <DefaultSortTable />)
121121
.add('Custom Sort Fuction', () => <CustomSortTable />)
122-
.add('Sorted header classes', () => <SortedHeaderClassesTable />)
123-
.add('Sorted header style', () => <SortedHeaderStyleTable />);
122+
.add('Sorting header classes', () => <SortingHeaderClassesTable />)
123+
.add('Sorting header style', () => <SortingHeaderStyleTable />);
124124

125125
storiesOf('Cell Editing', module)
126126
.add('Click to Edit', () => <ClickToEditTable />)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
.demo-sorted {
1+
.demo-sorting {
22
background-color: $green-lighten-2;
33
}

packages/react-bootstrap-table2/src/bootstrap-table.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ class BootstrapTable extends PropsBaseResolver(Component) {
3939
rowStyle,
4040
rowClasses,
4141
rowEvents,
42-
sortedHeader
42+
sortingHeaderClasses,
43+
sortingHeaderStyle
4344
} = this.props;
4445

4546
const tableClass = cs('table', {
@@ -76,7 +77,8 @@ class BootstrapTable extends PropsBaseResolver(Component) {
7677
sortOrder={ store.sortOrder }
7778
onSort={ this.props.onSort }
7879
selectRow={ headerCellSelectionInfo }
79-
sortedHeader={ sortedHeader }
80+
sortingHeaderClasses={ sortingHeaderClasses }
81+
sortingHeaderStyle={ sortingHeaderStyle }
8082
/>
8183
<Body
8284
data={ this.state.data }
@@ -155,10 +157,8 @@ BootstrapTable.propTypes = {
155157
dataField: PropTypes.string.isRequired,
156158
order: PropTypes.oneOf([Const.SORT_DESC, Const.SORT_ASC]).isRequired
157159
})),
158-
sortedHeader: PropTypes.shape({
159-
classes: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
160-
style: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
161-
})
160+
sortingHeaderClasses: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
161+
sortingHeaderStyle: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
162162
};
163163

164164
BootstrapTable.defaultProps = {

packages/react-bootstrap-table2/src/header-cell.js

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ const HeaderCell = (props) => {
1616
onSort,
1717
sorting,
1818
sortOrder,
19-
sortedHeader
19+
sortingHeaderClasses,
20+
sortingHeaderStyle
2021
} = props;
2122

2223
const {
@@ -32,11 +33,6 @@ const HeaderCell = (props) => {
3233
headerAttrs
3334
} = column;
3435

35-
const {
36-
classes: sortedHeaderClasses,
37-
style: sortedHeaderStyle
38-
} = sortedHeader;
39-
4036
const cellAttrs = {
4137
..._.isFunction(headerAttrs) ? headerAttrs(column, index) : headerAttrs,
4238
...headerEvents
@@ -77,16 +73,16 @@ const HeaderCell = (props) => {
7773
// append customized classes or style if table was sorting based on the current column.
7874
cellClasses = cs(
7975
cellClasses,
80-
_.isFunction(sortedHeaderClasses)
81-
? sortedHeaderClasses(column, index)
82-
: sortedHeaderClasses
76+
_.isFunction(sortingHeaderClasses)
77+
? sortingHeaderClasses(column, index)
78+
: sortingHeaderClasses
8379
);
8480

8581
cellStyle = {
8682
...cellStyle,
87-
..._.isFunction(sortedHeaderStyle)
88-
? sortedHeaderStyle(column, index)
89-
: sortedHeaderStyle
83+
..._.isFunction(sortingHeaderStyle)
84+
? sortingHeaderStyle(column, index)
85+
: sortingHeaderStyle
9086
};
9187
} else {
9288
sortSymbol = <SortSymbol />;
@@ -135,14 +131,8 @@ HeaderCell.propTypes = {
135131
onSort: PropTypes.func,
136132
sorting: PropTypes.bool,
137133
sortOrder: PropTypes.oneOf([Const.SORT_ASC, Const.SORT_DESC]),
138-
sortedHeader: PropTypes.shape({
139-
classes: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
140-
style: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
141-
})
142-
};
143-
144-
HeaderCell.defaultProps = {
145-
sortedHeader: {}
134+
sortingHeaderClasses: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
135+
sortingHeaderStyle: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
146136
};
147137

148138
export default HeaderCell;

packages/react-bootstrap-table2/src/header.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ const Header = (props) => {
1414
onSort,
1515
sortField,
1616
sortOrder,
17-
sortedHeader,
17+
sortingHeaderClasses,
18+
sortingHeaderStyle,
1819
selectRow
1920
} = props;
2021

@@ -36,7 +37,8 @@ const Header = (props) => {
3637
onSort={ onSort }
3738
sorting={ currSort }
3839
sortOrder={ sortOrder }
39-
sortedHeader={ sortedHeader }
40+
sortingHeaderClasses={ sortingHeaderClasses }
41+
sortingHeaderStyle={ sortingHeaderStyle }
4042
/>);
4143
})
4244
}
@@ -51,7 +53,8 @@ Header.propTypes = {
5153
sortField: PropTypes.string,
5254
sortOrder: PropTypes.string,
5355
selectRow: PropTypes.object,
54-
sortedHeader: PropTypes.object
56+
sortingHeaderClasses: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),
57+
sortingHeaderStyle: PropTypes.oneOfType([PropTypes.func, PropTypes.object])
5558
};
5659

5760
export default Header;

0 commit comments

Comments
 (0)