Skip to content

Commit

Permalink
fix #502
Browse files Browse the repository at this point in the history
  • Loading branch information
AllenFang committed Jun 18, 2016
1 parent 7093d58 commit f5faef1
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 23 deletions.
6 changes: 4 additions & 2 deletions src/BootstrapTable.js
Original file line number Diff line number Diff line change
Expand Up @@ -907,7 +907,8 @@ BootstrapTable.propTypes = {
clickToSelect: PropTypes.bool,
hideSelectColumn: PropTypes.bool,
clickToSelectAndEditCell: PropTypes.bool,
showOnlySelected: PropTypes.bool
showOnlySelected: PropTypes.bool,
unselectable: PropTypes.array
}),
cellEdit: PropTypes.shape({
mode: PropTypes.string,
Expand Down Expand Up @@ -992,7 +993,8 @@ BootstrapTable.defaultProps = {
clickToSelect: false,
hideSelectColumn: false,
clickToSelectAndEditCell: false,
showOnlySelected: false
showOnlySelected: false,
unselectable: []
},
cellEdit: {
mode: Const.CELL_EDIT_NONE,
Expand Down
30 changes: 12 additions & 18 deletions src/TableBody.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ class TableBody extends Component {
'table-condensed': this.props.condensed
}, this.props.tableBodyClass);

const unselectable = this.props.selectRow.unselectable || [];
const isSelectRowDefined = this._isSelectRowDefined();
const tableHeader = this.renderTableHeader(isSelectRowDefined);
const inputType = this.props.selectRow.mode === Const.ROW_SELECT_SINGLE ? 'radio' : 'checkbox';

const tableRows = this.props.data.map(function(data, r) {
const tableColumns = this.props.columns.map(function(column, i) {
Expand Down Expand Up @@ -96,10 +98,10 @@ class TableBody extends Component {
);
}
}, this);

const disable = unselectable.indexOf(data[this.props.keyField]) !== -1;
const selected = this.props.selectedRowKeys.indexOf(data[this.props.keyField]) !== -1;
const selectRowColumn = isSelectRowDefined && !this.props.selectRow.hideSelectColumn ?
this.renderSelectRowColumn(selected) : null;
this.renderSelectRowColumn(selected, inputType, disable) : null;
// add by bluespring for className customize
let trClassName = this.props.trClassName;
if (isFun(this.props.trClassName)) {
Expand All @@ -112,7 +114,8 @@ class TableBody extends Component {
onRowClick={ this.handleRowClick }
onRowMouseOver={ this.handleRowMouseOver }
onRowMouseOut={ this.handleRowMouseOut }
onSelectRow={ this.handleSelectRow }>
onSelectRow={ this.handleSelectRow }
unselectableRow={ disable }>
{ selectRowColumn }
{ tableColumns }
</TableRow>
Expand Down Expand Up @@ -250,22 +253,13 @@ class TableBody extends Component {
}
}

renderSelectRowColumn(selected) {
if (this.props.selectRow.mode === Const.ROW_SELECT_SINGLE) {
return (
<TableColumn dataAlign='center'>
<input type='radio' checked={ selected }
onChange={ this.handleSelectRowColumChange }/>
</TableColumn>
);
} else {
return (
<TableColumn dataAlign='center'>
<input type='checkbox' checked={ selected }
renderSelectRowColumn(selected, inputType, disabled) {
return (
<TableColumn dataAlign='center'>
<input type={ inputType } checked={ selected } disabled={ disabled }
onChange={ this.handleSelectRowColumChange }/>
</TableColumn>
);
}
</TableColumn>
);
}

_isSelectRowDefined() {
Expand Down
8 changes: 5 additions & 3 deletions src/TableRow.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ class TableRow extends Component {
e.target.tagName !== 'TEXTAREA') {
const rowIndex = e.currentTarget.rowIndex + 1;
if (this.props.selectRow) {
if (this.props.selectRow.clickToSelect) {
if (this.props.selectRow.clickToSelect && !this.props.unselectableRow) {
this.props.onSelectRow(rowIndex, !this.props.isSelected, e);
} else if (this.props.selectRow.clickToSelectAndEditCell) {
} else if (this.props.selectRow.clickToSelectAndEditCell
&& !this.props.unselectableRow) {
this.clickNum++;
/** if clickToSelectAndEditCell is enabled,
* there should be a delay to prevent a selection changed when
Expand Down Expand Up @@ -79,7 +80,8 @@ TableRow.propTypes = {
onRowClick: PropTypes.func,
onSelectRow: PropTypes.func,
onRowMouseOut: PropTypes.func,
onRowMouseOver: PropTypes.func
onRowMouseOver: PropTypes.func,
unselectableRow: PropTypes.bool
};
TableRow.defaultProps = {
onRowClick: undefined
Expand Down

0 comments on commit f5faef1

Please sign in to comment.