Support default folder expanding

This commit is contained in:
wz 2025-02-25 17:00:33 +01:00
parent 01c8e4b86c
commit 09985c7d4e
4 changed files with 36 additions and 2 deletions

View file

@ -1,10 +1,13 @@
import { App, FuzzySuggestModal, TFolder, WorkspaceLeaf } from "obsidian";
import type FolderNavigatorPlugin from "./main";
export class FolderSuggestModal extends FuzzySuggestModal<TFolder> {
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<TFolder> {
() => 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);
}

View file

@ -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();
},
});
}

View file

@ -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
};

View file

@ -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();
}),
);
}
}