Skip to content

Commit 9d1ca0f

Browse files
methylmalonecj
authored andcommitted
Pass sort properties to custom header renderer (Comcast#1080)
In order to be able to display current sort order, we need sorting information in header renderer.
1 parent fd0e8a0 commit 9d1ca0f

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

packages/react-data-grid/src/HeaderRow.js

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,26 @@ const HeaderRow = createReactClass({
8383
},
8484

8585
getSortableHeaderCell(column) {
86-
let sortDirection = (this.props.sortColumn === column.key) ? this.props.sortDirection : SortableHeaderCell.DEFINE_SORT.NONE;
87-
return <SortableHeaderCell columnKey={column.key} onSort={this.props.onSort} sortDirection={sortDirection}/>;
86+
let SortableRenderer = SortableHeaderCell;
87+
if (column.headerRenderer !== undefined) {
88+
SortableRenderer = column.headerRenderer;
89+
}
90+
const sortDirection = (this.props.sortColumn === column.key) ? this.props.sortDirection : SortableHeaderCell.DEFINE_SORT.NONE;
91+
const props = { columnKey: column.key, onSort: this.props.onSort, sortDirection: sortDirection };
92+
93+
if (React.isValidElement(SortableRenderer)) {
94+
// a string means it's an HTML element and props we want to pass are not valid, return it as is
95+
if (typeof SortableRenderer.type === 'string') {
96+
return SortableRenderer;
97+
}
98+
return React.cloneElement(SortableRenderer, props);
99+
}
100+
return React.createElement(SortableRenderer, props);
88101
},
89102

90103
getHeaderRenderer(column) {
91104
let renderer;
92-
if (column.headerRenderer && !this.props.filterable) {
105+
if (column.headerRenderer && !this.props.filterable && !column.sortable) {
93106
renderer = column.headerRenderer;
94107
} else {
95108
let headerCellType = this.getHeaderCellType(column);

0 commit comments

Comments
 (0)