UNPKG

ractive-ez-table

Version:
66 lines (48 loc) 1.27 kB
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;