diff --git a/docs/row-selection.md b/docs/row-selection.md index b75aa1f..ac7eba7 100644 --- a/docs/row-selection.md +++ b/docs/row-selection.md @@ -158,12 +158,12 @@ const selectRow = { ### selectRow.onSelect - [Function] This callback function will be called when a row is select/unselect and pass following three arguments: -`row`, `isSelect` and `rowIndex`. +`row`, `isSelect`, `rowIndex` and `e`. ```js const selectRow = { mode: 'checkbox', - onSelect: (row, isSelect, rowIndex) => { + onSelect: (row, isSelect, rowIndex, e) => { // ... } }; @@ -175,7 +175,7 @@ This callback function will be called when select/unselect all and it only work ```js const selectRow = { mode: 'checkbox', - onSelectAll: (isSelect, results) => { + onSelectAll: (isSelect, results, e) => { // ... } }; diff --git a/packages/react-bootstrap-table2-example/examples/row-selection/selection-hooks.js b/packages/react-bootstrap-table2-example/examples/row-selection/selection-hooks.js index 9b104c0..bc7c298 100644 --- a/packages/react-bootstrap-table2-example/examples/row-selection/selection-hooks.js +++ b/packages/react-bootstrap-table2-example/examples/row-selection/selection-hooks.js @@ -22,14 +22,16 @@ const columns = [{ const selectRow = { mode: 'checkbox', clickToSelect: true, - onSelect: (row, isSelect, rowIndex) => { + onSelect: (row, isSelect, rowIndex, e) => { console.log(row.id); console.log(isSelect); console.log(rowIndex); + console.log(e); }, - onSelectAll: (isSelect, rows) => { + onSelectAll: (isSelect, rows, e) => { console.log(isSelect); console.log(rows); + console.log(e); } }; @@ -49,7 +51,18 @@ const columns = [{ const selectRow = { mode: 'checkbox', - clickToSelect: true + clickToSelect: true, + onSelect: (row, isSelect, rowIndex, e) => { + console.log(row.id); + console.log(isSelect); + console.log(rowIndex); + console.log(e); + }, + onSelectAll: (isSelect, rows, e) => { + console.log(isSelect); + console.log(rows); + console.log(e); + } }; } if (selectable) { const key = _.get(row, keyField); - onRowSelect(key, !selected, rowIndex); + onRowSelect(key, !selected, rowIndex, e); } }; diff --git a/packages/react-bootstrap-table2/src/row-selection/selection-cell.js b/packages/react-bootstrap-table2/src/row-selection/selection-cell.js index bba789e..3050cf2 100644 --- a/packages/react-bootstrap-table2/src/row-selection/selection-cell.js +++ b/packages/react-bootstrap-table2/src/row-selection/selection-cell.js @@ -28,7 +28,7 @@ export default class SelectionCell extends Component { return nextProps.selected !== selected; } - handleClick() { + handleClick(e) { const { mode: inputType, rowKey, @@ -46,7 +46,7 @@ export default class SelectionCell extends Component { ? true : !selected; - onRowSelect(rowKey, checked, rowIndex); + onRowSelect(rowKey, checked, rowIndex, e); } render() { diff --git a/packages/react-bootstrap-table2/src/row-selection/selection-header-cell.js b/packages/react-bootstrap-table2/src/row-selection/selection-header-cell.js index a2c6956..0105bf3 100644 --- a/packages/react-bootstrap-table2/src/row-selection/selection-header-cell.js +++ b/packages/react-bootstrap-table2/src/row-selection/selection-header-cell.js @@ -44,10 +44,10 @@ export default class SelectionHeaderCell extends Component { return nextProps.checkedStatus !== checkedStatus; } - handleCheckBoxClick() { + handleCheckBoxClick(e) { const { onAllRowsSelect } = this.props; - onAllRowsSelect(); + onAllRowsSelect(e); } render() { diff --git a/packages/react-bootstrap-table2/src/row-selection/wrapper.js b/packages/react-bootstrap-table2/src/row-selection/wrapper.js index c2880bf..51472dc 100644 --- a/packages/react-bootstrap-table2/src/row-selection/wrapper.js +++ b/packages/react-bootstrap-table2/src/row-selection/wrapper.js @@ -41,7 +41,7 @@ export default Base => * @param {String} rowKey - row key of what was selected. * @param {Boolean} checked - next checked status of input button. */ - handleRowSelect(rowKey, checked, rowIndex) { + handleRowSelect(rowKey, checked, rowIndex, e) { const { selectRow: { mode, onSelect }, store } = this.props; const { ROW_SELECT_SINGLE } = Const; @@ -59,7 +59,7 @@ export default Base => if (onSelect) { const row = getRowByRowId(store)(rowKey); - onSelect(row, checked, rowIndex); + onSelect(row, checked, rowIndex, e); } this.setState(() => ({ @@ -68,18 +68,16 @@ export default Base => } /** - * handle all rows selection on header cell by store.selected or given specific result. - * @param {Boolean} option - customized result for all rows selection + * handle all rows selection on header cell by store.selected */ - handleAllRowsSelect(option) { + handleAllRowsSelect(e) { const { store, selectRow: { onSelectAll, nonSelectable } } = this.props; const selected = isAnySelectedRow(store)(nonSelectable); - // set next status of all row selected by store.selected or customizing by user. - const result = option || !selected; + const result = !selected; const currSelected = result ? selectableKeys(store)(nonSelectable) : @@ -89,7 +87,7 @@ export default Base => store.selected = currSelected; if (onSelectAll) { - onSelectAll(result, getSelectedRows(store)); + onSelectAll(result, getSelectedRows(store), e); } this.setState(() => ({ diff --git a/packages/react-bootstrap-table2/test/row-selection/wrapper.test.js b/packages/react-bootstrap-table2/test/row-selection/wrapper.test.js index 59dc190..aa397ca 100644 --- a/packages/react-bootstrap-table2/test/row-selection/wrapper.test.js +++ b/packages/react-bootstrap-table2/test/row-selection/wrapper.test.js @@ -162,14 +162,6 @@ describe('RowSelectionWrapper', () => { wrapper.instance().handleAllRowsSelect(); expect(wrapper.state('selectedRowKeys')).toEqual([]); }); - - it('call handleAllRowsSelect function with a bool args should setting correct state.selectedRowKeys', () => { - wrapper.instance().handleAllRowsSelect(true); - expect(wrapper.state('selectedRowKeys')).toEqual(expect.arrayContaining([firstSelectedRow, secondSelectedRow])); - - wrapper.instance().handleAllRowsSelect(false); - expect(wrapper.state('selectedRowKeys')).toEqual([]); - }); }); describe('when selectRow.onSelect is defined', () => { @@ -219,13 +211,14 @@ describe('RowSelectionWrapper', () => { }); it('selectRow.onSelect callback should be called correctly when calling handleRowSelect function', () => { - wrapper.instance().handleAllRowsSelect(); + const e = {}; + wrapper.instance().handleAllRowsSelect(e); expect(onSelectAllCallBack.callCount).toEqual(1); - expect(onSelectAllCallBack.calledWith(true, data)).toBeTruthy(); + expect(onSelectAllCallBack.calledWith(true, data, e)).toBeTruthy(); - wrapper.instance().handleAllRowsSelect(); + wrapper.instance().handleAllRowsSelect(e); expect(onSelectAllCallBack.callCount).toEqual(2); - expect(onSelectAllCallBack.calledWith(false, [])).toBeTruthy(); + expect(onSelectAllCallBack.calledWith(false, [], e)).toBeTruthy(); }); }); });