diff --git a/src/TaskmapView.ts b/src/TaskmapView.ts index 0c9eeb2..fe4fa3e 100644 --- a/src/TaskmapView.ts +++ b/src/TaskmapView.ts @@ -7,7 +7,7 @@ import TaskmapContainer from "./components/TaskmapContainer.svelte"; import { deserializeProjectData, updateFile } from "./SaveManager"; import type TaskmapPlugin from "./main"; import { VersionedData } from "./data/VersionedData"; -import { HistoryManager } from "./data/HistoryManager"; +import { HistoryManager } from "./data/HistoryManager.svelte"; export const TASKMAP_VIEW_TYPE = "taskmap-view"; @@ -47,6 +47,7 @@ export class TaskmapView extends TextFileView { this.app, new NodePositionsCalculator(), ); + this.contentEl.addClass("taskmap-view-container"); this.taskmapContainer = mount(TaskmapContainer, { target: this.contentEl, props: { diff --git a/src/Tooltip.ts b/src/Tooltip.ts index 2177ff4..39fdcf7 100644 --- a/src/Tooltip.ts +++ b/src/Tooltip.ts @@ -1,5 +1,5 @@ import { setTooltip } from "obsidian"; -import { IconCode } from "./types"; +import { IconCode, SettingsIconCode } from "./types"; /** * Svelte Action to add an Obsidian-native tooltip to an element. @@ -54,3 +54,16 @@ export function getTooltipText(code: IconCode) { return "placeholder tooltip"; } } + +export function getTooltipTextSettings(code: SettingsIconCode) { + switch (code) { + case SettingsIconCode.SETTINGS_MENU: + return "WIP (Settings)"; + case SettingsIconCode.SETTINGS_REDO: + return "Redo"; + case SettingsIconCode.SETTINGS_UNDO: + return "Undo"; + default: + return "placeholder tooltip"; + } +} diff --git a/src/components/SettingsButton.svelte b/src/components/SettingsButton.svelte new file mode 100644 index 0000000..f04915f --- /dev/null +++ b/src/components/SettingsButton.svelte @@ -0,0 +1,141 @@ + + +
{ + event.stopPropagation(); + }} + role="presentation" + tabindex="-1" +> + {#if iconCode === SettingsIconCode.SETTINGS_MENU} + + {:else if iconCode === SettingsIconCode.SETTINGS_UNDO} + + {:else if iconCode === SettingsIconCode.SETTINGS_REDO} + + {/if} +
+ + diff --git a/src/components/SettingsPanel.svelte b/src/components/SettingsPanel.svelte new file mode 100644 index 0000000..c069c5d --- /dev/null +++ b/src/components/SettingsPanel.svelte @@ -0,0 +1,55 @@ + + +{#if !context.taskDraggingManager.isDragging} +
e.stopPropagation()} + onpointerdown={(e) => e.stopPropagation()} + onpointerup={(e) => e.stopPropagation()} + > + +
+ + +
+
+{/if} + + diff --git a/src/components/Task.svelte b/src/components/Task.svelte index 32f1c60..6af910d 100644 --- a/src/components/Task.svelte +++ b/src/components/Task.svelte @@ -6,6 +6,7 @@ import HideBranchButton from "./HideBranchButton.svelte"; import {NoTaskId} from "../NodePositionsCalculator"; import {KeyRound, LockKeyhole} from "lucide-svelte"; + import {onMount} from "svelte"; const { taskId, @@ -17,6 +18,15 @@ coords: {x: number, y: number} } = $props(); + let self: HTMLElement; + let viewport: HTMLElement; + + onMount(() => { + viewport = self?.closest('.viewport') as HTMLElement; + return () => { + viewport.focus(); + } + }); let taskData = $derived(context.versionedData.getTask(taskId)); // let coords = $derived(context.getTaskPosition(taskId)); @@ -109,6 +119,7 @@ {#key context.updateOnZoomCounter}
- +
{#if !context.taskDraggingManager.isDragging && !context.isReparentingOn() diff --git a/src/components/TaskText.svelte b/src/components/TaskText.svelte index a42db75..0e547d9 100644 --- a/src/components/TaskText.svelte +++ b/src/components/TaskText.svelte @@ -125,6 +125,7 @@ if (e.key === "Enter") { e.preventDefault(); textEditEl.blur(); // Triggers handleBlur + // TODO: body gets focused instead of viewport } else if (e.key === "Tab" && suggest !== null) { // another hack to select suggest on tab e.preventDefault(); @@ -179,7 +180,6 @@ +