diff --git a/packages/react-bootstrap-table2/src/cell.js b/packages/react-bootstrap-table2/src/cell.js index 8d082fe..3286847 100644 --- a/packages/react-bootstrap-table2/src/cell.js +++ b/packages/react-bootstrap-table2/src/cell.js @@ -10,12 +10,15 @@ const Cell = ({ row, rowIndex, column, columnIndex }) => { formatExtraData, style, classes, - title + title, + events } = column; let content = _.get(row, dataField); let cellTitle; - const attrs = {}; + const attrs = { + ...events + }; const cellStyle = _.isFunction(style) ? style(content, row, columnIndex) : style; const cellClasses = _.isFunction(classes) ? classes(content, row, columnIndex) : classes; diff --git a/packages/react-bootstrap-table2/src/header-cell.js b/packages/react-bootstrap-table2/src/header-cell.js index 2385017..49b455a 100644 --- a/packages/react-bootstrap-table2/src/header-cell.js +++ b/packages/react-bootstrap-table2/src/header-cell.js @@ -28,7 +28,8 @@ HeaderCell.propTypes = { classes: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), style: PropTypes.oneOfType([PropTypes.object, PropTypes.func]), headerTitle: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]), - title: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]) + title: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]), + events: PropTypes.object }).isRequired, index: PropTypes.number.isRequired }; diff --git a/packages/react-bootstrap-table2/test/cell.test.js b/packages/react-bootstrap-table2/test/cell.test.js index 1b204ed..fc054a2 100644 --- a/packages/react-bootstrap-table2/test/cell.test.js +++ b/packages/react-bootstrap-table2/test/cell.test.js @@ -210,4 +210,32 @@ describe('Cell', () => { }); }); }); + + describe('when column.events prop is defined', () => { + let column; + const columnIndex = 1; + + beforeEach(() => { + column = { + dataField: 'id', + text: 'ID', + events: { + onClick: sinon.stub() + } + }; + + wrapper = shallow( + ); + }); + + it('should attachs DOM event successfully', () => { + expect(wrapper.length).toBe(1); + expect(wrapper.find('td').prop('onClick')).toBeDefined(); + }); + + it('event hook should be called when triggering', () => { + wrapper.find('td').simulate('click'); + expect(column.events.onClick.callCount).toBe(1); + }); + }); });