ractive-ez-table
Version:
Ractive Ez UI Table
54 lines (41 loc) • 1.18 kB
JavaScript
import TableIterator from '../TableIterator.js';
class Cursor {
constructor(table) {
this.table = table;
this.cursorItem = null;
};
toggleRange(item) {
const isSelected = this.table.get("selectedItems").indexOf(this.cursorItem) != -1;
const method = isSelected ? "selectItem" : "unselectItem";
let iterator = new TableIterator(this.table);
let first = null;
let last = null;
while (!iterator.end()) {
const iteratedItem = iterator.next();
if (iteratedItem == item) first = iteratedItem;
if (iteratedItem == this.cursorItem) last = iteratedItem;
if (first || last) this.table[method](iteratedItem);
if (first && last) break;
}
};
handleClick(event, item) {
if (event.ctrlKey) {
this.table.toggleItem(item);
} else if (event.shiftKey) {
this.toggleRange(item);
} else {
this.table.clearSelection();
this.table.selectItem(item);
}
this.cursorItem = item;
};
handleKey(event, item) {
/* TODO
up => change cursor row up
dn => change cursor row dn
shift + up => select row up
shuft + dn => select row dn
*/
};
};
export default Cursor;