ractive-ez-table
Version:
Ractive Ez UI Table
66 lines (48 loc) • 1.27 kB
JavaScript
import TableIterator from '../TableIterator.js';
const KEY_ARROW_UP = 38;
const KEY_ARROW_DOWN = 40;
class Cursor {
constructor(table) {
this.table = table;
};
toggle(item) {
if (this.table.isItemSelected(item)) {
this.table.unselectItem(item);
} else {
this.table.clearSelection();
this.table.selectItem(item);
}
};
handleClick(event, item) {
this.toggle(item);
};
getPreviousItem(item) {
let prevItem = null;
let thisItem = null;
let iterator = new TableIterator(this.table);
while (!iterator.end()) {
prevItem = thisItem;
thisItem = iterator.next();
if (thisItem == item) return prevItem;
}
return null;
};
getNextItem(item) {
let iterator = new TableIterator(this.table);
while (!iterator.end()) {
if (iterator.next() == item) return iterator.next();
}
return null;
};
handleKey(event) {
const item = this.table.get("selectedItems.0");
if (item == null) return;
switch (event.keyCode) {
case KEY_ARROW_UP : this.toggle(this.getPreviousItem(item)); break;
case KEY_ARROW_DOWN : this.toggle(this.getNextItem(item)); break;
default : return;
}
event.preventDefault();
};
}
export default Cursor;