Skip to content

Commit

Permalink
implement customHeaderComponent and customHeaderComponentProps metada…
Browse files Browse the repository at this point in the history
…ta types
  • Loading branch information
astraw committed Jan 6, 2016
1 parent 3d598bc commit 5a789c5
Showing 1 changed file with 21 additions and 2 deletions.
23 changes: 21 additions & 2 deletions scripts/gridTitle.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@ var React = require('react');
var _ = require('underscore');
var ColumnProperties = require('./columnProperties.js');

var DefaultHeaderComponent = React.createClass({
render: function(){
return (<span>{this.props.displayName}</span>);
}
});

var ascendParentsUntil = function(element, tagName) {
if (element.tagName === tagName) {
return element;
}
return ascendParentsUntil(element.parentElement,tagName);
}

var GridTitle = React.createClass({
getDefaultProps: function(){
return {
Expand All @@ -22,7 +35,8 @@ var GridTitle = React.createClass({
this.verifyProps();
},
sort: function(event){
this.props.sortSettings.changeSort(event.target.dataset.title||event.target.parentElement.dataset.title);
var thElement = ascendParentsUntil(event.target,'TH');
this.props.sortSettings.changeSort(thElement.dataset.title);
},
toggleSelectAll: function (event) {
this.props.multipleSelectionSettings.toggleSelectAll();
Expand Down Expand Up @@ -61,6 +75,8 @@ var GridTitle = React.createClass({
var meta = that.props.columnSettings.getColumnMetadataByName(col);
var columnIsSortable = that.props.columnSettings.getMetadataColumnProperty(col, "sortable", true);
var displayName = that.props.columnSettings.getMetadataColumnProperty(col, "displayName", col);
var HeaderComponent = that.props.columnSettings.getMetadataColumnProperty(col, "customHeaderComponent", DefaultHeaderComponent);
var headerProps = that.props.columnSettings.getMetadataColumnProperty(col, "customHeaderComponentProps", {});

columnSort = meta == null ? columnSort : (columnSort && (columnSort + " ")||columnSort) + that.props.columnSettings.getMetadataColumnProperty(col, "cssClassName", "");

Expand All @@ -75,7 +91,10 @@ var GridTitle = React.createClass({
}
}

return (<th onClick={columnIsSortable ? that.sort : null} data-title={col} className={columnSort} key={displayName} style={titleStyles}>{displayName}{sortComponent}</th>);
return (<th onClick={columnIsSortable ? that.sort : null} data-title={col} className={columnSort} key={displayName} style={titleStyles}>
<HeaderComponent columnName={col} displayName={displayName} {...headerProps}/>
{sortComponent}
</th>);
});

if(nodes && this.props.multipleSelectionSettings.isMultipleSelection) {
Expand Down

0 comments on commit 5a789c5

Please sign in to comment.