From: Scott Worley Date: Fri, 28 Jan 2022 03:26:04 +0000 (-0800) Subject: Press "x" to remove tags X-Git-Url: http://git.scottworley.com/vopamoi/commitdiff_plain/b5f15e0e536c9898458cd7ab9b440dbec404ce6a?ds=inline Press "x" to remove tags --- diff --git a/vopamoi.ts b/vopamoi.ts index c17a2f0..17d81b6 100644 --- a/vopamoi.ts +++ b/vopamoi.ts @@ -125,6 +125,7 @@ const Model = { const tag = this.hasTag(task, tagName); if (!tag) return; task.removeChild(tag); + if (task instanceof HTMLElement) task.focus(); }, setPriority: function (createTimestamp: string, priority: number): Element | null { @@ -218,6 +219,10 @@ function UI() { undoLog.push(`Edit ${createTimestamp} ${oldDescription}`); return log.recordAndApply(`${clock.now()} Edit ${createTimestamp} ${newDescription}`); }, + removeTag: function (createTimestamp: string, tag: string) { + undoLog.push(`Tag ${createTimestamp} ${tag}`); + return log.recordAndApply(`${clock.now()} Untag ${createTimestamp} ${tag}`); + }, setPriority: function (createTimestamp: string, newPriority: number, oldPriority: number) { undoLog.push(`Priority ${createTimestamp} ${oldPriority}`); return log.recordAndApply(`${clock.now()} Priority ${createTimestamp} ${newPriority}`); @@ -376,6 +381,12 @@ function BrowserUI() { } }, + removeTag: function () { + const tag = document.activeElement; + if (!tag || !tag.classList.contains("tag")) return; + ui.removeTag(tag.parentElement!.getAttribute("data-created")!, tag.textContent!); + }, + returnFocusAfterInput: function (): boolean { if (taskFocusedBeforeJumpingToInput) { taskFocusedBeforeJumpingToInput.focus(); @@ -459,6 +470,7 @@ function handleKey(event: any) { if (event.key == "s") return browserUI.setState("someday-maybe"); if (event.key == "w") return browserUI.setState("waiting"); if (event.key == "X") return browserUI.setState("deleted"); + if (event.key == "x") return browserUI.removeTag(); if (event.key == "u") return browserUI.undo(); if (event.key == "e") return browserUI.beginEdit(event); if (event.key == "t") return browserUI.beginTagEdit(event);