summaryrefslogtreecommitdiffstats
path: root/plugins/slick.checkboxselectcolumn.js
diff options
context:
space:
mode:
authorMichael Leibman <michael.leibman@gmail.com>2012-02-05 13:31:25 -0800
committerMichael Leibman <michael.leibman@gmail.com>2012-02-05 13:31:25 -0800
commitd2839d38c7ca9dbf456ff25d5f3ac6d4feed0e65 (patch)
treef34168b3dbf594dd58582077f0e01df8220d2b11 /plugins/slick.checkboxselectcolumn.js
parent0d05279c98e84471bf3e8b0fee2df04b9fe57673 (diff)
downloadSlickGrid-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.js33
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