diff --git a/src/folderSuggestModal.ts b/src/folderSuggestModal.ts index 36c8a35..4e3b1aa 100644 --- a/src/folderSuggestModal.ts +++ b/src/folderSuggestModal.ts @@ -1,10 +1,13 @@ import { App, FuzzySuggestModal, TFolder, WorkspaceLeaf } from "obsidian"; +import type FolderNavigatorPlugin from "./main"; export class FolderSuggestModal extends FuzzySuggestModal { folders: TFolder[]; + plugin: FolderNavigatorPlugin; - constructor(app: App) { + constructor(app: App, plugin: FolderNavigatorPlugin) { super(app); + this.plugin = plugin; this.setPlaceholder("Type folder name..."); this.folders = this.getAllFolders(); } @@ -84,6 +87,21 @@ export class FolderSuggestModal extends FuzzySuggestModal { () => folderEl.removeClass("nav-folder-title-highlighted"), 2000, ); + + // If expandTargetFolder is enabled, expand the target folder + if (this.plugin.settings.expandTargetFolder) { + const collapseIndicator = + folderEl.querySelector(".collapse-icon"); + if (collapseIndicator) { + const isCollapsed = + collapseIndicator.classList.contains( + "is-collapsed", + ); + if (isCollapsed) { + (collapseIndicator as HTMLElement).click(); + } + } + } } }, 50); } diff --git a/src/main.ts b/src/main.ts index 950bf22..8caa1d2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -17,7 +17,7 @@ export default class FolderNavigatorPlugin extends Plugin { id: "open-folder-navigator", name: "Navigate to folder", callback: () => { - new FolderSuggestModal(this.app).open(); + new FolderSuggestModal(this.app, this).open(); }, }); } diff --git a/src/settings.ts b/src/settings.ts index f09ed50..fa6a658 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -2,8 +2,10 @@ import { App } from "obsidian"; export interface PluginSettings { maxResults: number; + expandTargetFolder: boolean; } export const DEFAULT_SETTINGS: PluginSettings = { maxResults: 10, + expandTargetFolder: true, // Enable by default for better navigation }; diff --git a/src/settingsTab.ts b/src/settingsTab.ts index 1f739cb..0e9705f 100644 --- a/src/settingsTab.ts +++ b/src/settingsTab.ts @@ -26,5 +26,19 @@ export class SettingsTab extends PluginSettingTab { await this.plugin.saveSettings(); }), ); + + new Setting(containerEl) + .setName("Expand target folder on navigation") + .setDesc( + "When enabled, folders will be automatically expanded when you navigate to them", + ) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.expandTargetFolder) + .onChange(async (value) => { + this.plugin.settings.expandTargetFolder = value; + await this.plugin.saveSettings(); + }), + ); } }