1
0
Fork 0
sortable-recipes/ember-ui/app/components/sortable-group-accessible.js
2020-03-04 10:06:08 -06:00

56 lines
1.3 KiB
JavaScript

import Component from '@glimmer/component';
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
export default class SortableGroupAccessibleComponent extends Component {
@tracked selectedIndex = 0;
@tracked groupHasFocus = false;
@action
handleFocus() { this.groupHasFocus = true; }
@action
handleBlur({ target, relatedTarget }) {
if (!target.contains(relatedTarget)) this.groupHasFocus = false;
}
@action
handleArrowUp() {
if (this.selectedIndex > 0) {
this.selectedIndex -= 1;
}
}
@action
handleArrowDown() {
if (this.selectedIndex < this.args.models.length - 1) {
this.selectedIndex += 1;
}
}
@action
async orderItemUp(index) {
if (index - 1 < 0) return;
let item = this.args.models.objectAt(index);
let prevItem = this.args.models.objectAt(index - 1);
item.listOrder = index - 1;
prevItem.listOrder = index;
this.selectedIndex = index - 1;
}
@action
async orderItemDown(index) {
if (index + 1 >= this.args.models.length) return;
let item = this.args.models.objectAt(index);
let nextItem = this.args.models.objectAt(index + 1);
item.listOrder = index + 1;
nextItem.listOrder = index;
this.selectedIndex = index + 1;
}
preventDefault(evt) { evt.preventDefault(); }
}