},
beginEdit: function (event: Event) {
- var task = document.activeElement;
+ const task = this.currentTask();
if (!task) return;
- if (task.classList.contains("tag")) task = task.parentElement!;
const input = document.createElement("input");
const desc = task.getElementsByClassName("desc")[0];
const oldDescription = desc.textContent!;
},
beginTagEdit: function (event: Event) {
- const task = document.activeElement;
+ const task = this.currentTask();
if (!task) return;
const input = document.createElement("input");
input.classList.add("tag");
return target;
},
+ currentTask: function (): HTMLElement | null {
+ var target = document.activeElement;
+ if (!target) return null;
+ if (target.classList.contains("tag")) target = target.parentElement!;
+ return target as HTMLElement;
+ },
+
firstVisibleTask: function () {
for (const task of document.getElementsByClassName("task")) {
const state = task.getAttribute("data-state");
},
focusTaskNameInput: function (event: Event) {
- if (document.activeElement instanceof HTMLElement) {
- taskFocusedBeforeJumpingToInput = document.activeElement;
- }
+ taskFocusedBeforeJumpingToInput = this.currentTask();
document.getElementById("taskName")!.focus();
window.scroll(0, 0);
event.preventDefault();
},
makeBottomPriority: function (task: Element | null = null) {
- if (!task) task = document.activeElement;
+ if (!task) task = this.currentTask();
if (!task) return;
this.setPriority(task, document.getElementById("tasks")!.lastElementChild, null);
},
makeTopPriority: function (task: Element | null = null) {
- if (!task) task = document.activeElement;
+ if (!task) task = this.currentTask();
if (!task) return;
ui.setPriority(task.getAttribute("data-created")!, clock.now(), Model.getPriority(task));
task instanceof HTMLElement && task.focus();
},
moveCursor: function (offset: number): boolean {
- const active = document.activeElement;
+ const active = this.currentTask();
if (!active) return false;
const dest = this.visibleTaskAtOffset(active, offset);
if (dest !== active && dest instanceof HTMLElement) {
},
moveTask: function (offset: number) {
- const active = document.activeElement;
+ const active = this.currentTask();
if (!active) return;
const dest = this.visibleTaskAtOffset(active, offset);
if (dest === active) return; // Already extremal
},
setState: function (newState: string) {
- const task = document.activeElement;
+ const task = this.currentTask();
if (!task) return;
const oldState = task.getAttribute("data-state")!;
if (newState === oldState) return;
sheet.removeRule(2);
sheet.removeRule(2);
currentViewState = state;
- if (document.activeElement?.getAttribute("data-state") !== state) {
+ if (this.currentTask()?.getAttribute("data-state") !== state) {
this.firstVisibleTask()?.focus();
}
},