]>
Commit | Line | Data |
---|---|---|
1 | const Model = { | |
2 | createTask: function (description: string) { | |
3 | const task = document.createElement("div"); | |
4 | task.appendChild(document.createTextNode(description)); | |
5 | task.setAttribute("tabindex", "0"); | |
6 | return task; | |
7 | }, | |
8 | ||
9 | addTask: function (description: string) { | |
10 | document.body.appendChild(this.createTask(description)).focus(); | |
11 | }, | |
12 | ||
13 | moveCursor: function (offset: number) { | |
14 | var active = document.activeElement; | |
15 | if (offset === 1 && active) { | |
16 | active = active.nextElementSibling; | |
17 | } | |
18 | if (offset === -1 && active) { | |
19 | active = active.previousElementSibling; | |
20 | } | |
21 | if (active && active instanceof HTMLElement) active.focus(); | |
22 | }, | |
23 | }; | |
24 | ||
25 | function handleKey(event: any) { | |
26 | if (event.target.tagName !== "INPUT") { | |
27 | if (event.key == "j") Model.moveCursor(1); | |
28 | if (event.key == "k") Model.moveCursor(-1); | |
29 | if (event.key == "c") { | |
30 | document.getElementById("taskName")!.focus(); | |
31 | event.preventDefault(); | |
32 | } | |
33 | } | |
34 | } | |
35 | ||
36 | function browserCreateTask(form: any) { | |
37 | if (form.taskName.value) { | |
38 | Model.addTask(form.taskName.value); | |
39 | } | |
40 | form.taskName.value = ""; | |
41 | return false; | |
42 | } | |
43 | ||
44 | function browserInit() { | |
45 | document.body.addEventListener("keydown", handleKey, { capture: false }); | |
46 | } |