diff options
author | Michael Leibman <michael.leibman@gmail.com> | 2012-02-05 13:31:25 -0800 |
---|---|---|
committer | Michael Leibman <michael.leibman@gmail.com> | 2012-02-05 13:31:25 -0800 |
commit | d2839d38c7ca9dbf456ff25d5f3ac6d4feed0e65 (patch) | |
tree | f34168b3dbf594dd58582077f0e01df8220d2b11 /plugins/slick.checkboxselectcolumn.js | |
parent | 0d05279c98e84471bf3e8b0fee2df04b9fe57673 (diff) | |
download | SlickGrid-d2839d38c7ca9dbf456ff25d5f3ac6d4feed0e65.zip SlickGrid-d2839d38c7ca9dbf456ff25d5f3ac6d4feed0e65.tar.gz SlickGrid-d2839d38c7ca9dbf456ff25d5f3ac6d4feed0e65.tar.bz2 |
Added spacebar handling to CheckboxSelectColumn plugin (issue #277).
Diffstat (limited to 'plugins/slick.checkboxselectcolumn.js')
-rw-r--r-- | plugins/slick.checkboxselectcolumn.js | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/plugins/slick.checkboxselectcolumn.js b/plugins/slick.checkboxselectcolumn.js index 2af38bf..4dd918f 100644 --- a/plugins/slick.checkboxselectcolumn.js +++ b/plugins/slick.checkboxselectcolumn.js @@ -25,12 +25,14 @@ _grid.onSelectedRowsChanged.subscribe(handleSelectedRowsChanged); _grid.onClick.subscribe(handleClick); _grid.onHeaderClick.subscribe(handleHeaderClick); + _grid.onKeyDown.subscribe(handleKeyDown); } function destroy() { _grid.onSelectedRowsChanged.unsubscribe(handleSelectedRowsChanged); _grid.onClick.unsubscribe(handleClick); _grid.onHeaderClick.unsubscribe(handleHeaderClick); + _grid.onKeyDown.unsubscribe(handleKeyDown); } function handleSelectedRowsChanged(e, args) { @@ -57,6 +59,19 @@ } } + function handleKeyDown(e, args) { + if (e.which == 32) { + if (_grid.getColumns()[args.cell].id === _options.columnId) { + // if editing, try to commit + if (!_grid.getEditorLock().isActive() || _grid.getEditorLock().commitCurrentEdit()) { + toggleRowSelection(args.row); + } + e.preventDefault(); + e.stopImmediatePropagation(); + } + } + } + function handleClick(e, args) { // clicking on a row select checkbox if (_grid.getColumns()[args.cell].id === _options.columnId && $(e.target).is(":checkbox")) { @@ -67,18 +82,22 @@ return; } - if (_selectedRowsLookup[args.row]) { - _grid.setSelectedRows($.grep(_grid.getSelectedRows(), function (n) { - return n != args.row - })); - } else { - _grid.setSelectedRows(_grid.getSelectedRows().concat(args.row)); - } + toggleRowSelection(args.row); e.stopPropagation(); e.stopImmediatePropagation(); } } + function toggleRowSelection(row) { + if (_selectedRowsLookup[row]) { + _grid.setSelectedRows($.grep(_grid.getSelectedRows(), function (n) { + return n != row + })); + } else { + _grid.setSelectedRows(_grid.getSelectedRows().concat(row)); + } + } + function handleHeaderClick(e, args) { if (args.column.id == _options.columnId && $(e.target).is(":checkbox")) { // if editing, try to commit |