diff --git a/src/events/MutationObserver.ts b/src/events/MutationObserver.ts index b46619b..3e984bd 100644 --- a/src/events/MutationObserver.ts +++ b/src/events/MutationObserver.ts @@ -74,21 +74,9 @@ export async function addObserver(plugin: FolderNotesPlugin) { if (breadcrumbs.length > 0) { breadcrumbs.forEach((breadcrumb: HTMLElement) => { if (breadcrumb.onclick) return; - breadcrumb.onclick = (event: MouseEvent) => handleViewHeaderClick(event, plugin); - - // Remove existing event listener(s) for folder note header breadcrumb when open folder in path enabled - if (breadcrumb.classList.contains('has-folder-note')) { - const clonedBreadcrumb = breadcrumb.cloneNode(true) as HTMLElement; - breadcrumb.parentElement?.replaceChild(clonedBreadcrumb, breadcrumb); - clonedBreadcrumb.onclick = (event: MouseEvent) => { - if (plugin.settings.openFolderNoteOnClickInPath) { - handleViewHeaderClick(event, plugin); - } else { - // Necessary if open folder in path disabled after breadcrumb rendered - breadcrumb.dispatchEvent(new MouseEvent(event.type, event)); - } - } - } + breadcrumb.addEventListener('click', (e) => { + handleViewHeaderClick(e, plugin); + }, { capture: true }); }); } }); diff --git a/src/events/handleClick.ts b/src/events/handleClick.ts index d0d2adc..53c935e 100644 --- a/src/events/handleClick.ts +++ b/src/events/handleClick.ts @@ -1,10 +1,13 @@ -import { Keymap } from 'obsidian'; +import { Keymap, Platform } from 'obsidian'; import FolderNotesPlugin from 'src/main'; import { openFolderNote, createFolderNote, getFolderNote } from 'src/functions/folderNoteFunctions'; import { getExcludedFolder } from 'src/ExcludeFolders/functions/folderFunctions'; import { addCSSClassToTitleEL, removeCSSClassFromEL } from 'src/functions/styleFunctions'; export async function handleViewHeaderClick(event: MouseEvent, plugin: FolderNotesPlugin) { + event.stopImmediatePropagation(); + event.preventDefault(); + event.stopPropagation(); if (!(event.target instanceof HTMLElement)) return; if (!plugin.settings.openFolderNoteOnClickInPath) return; @@ -19,9 +22,19 @@ export async function handleViewHeaderClick(event: MouseEvent, plugin: FolderNot event.target.onclick = null; event.target.click(); } + const folderNote = getFolderNote(plugin, folderPath); if (folderNote) { - return openFolderNote(plugin, folderNote, event); + await openFolderNote(plugin, folderNote, event).then(async () => { + // @ts-ignore + const fileExplorerPlugin = plugin.app.internalPlugins.getEnabledPluginById('file-explorer'); + if (fileExplorerPlugin && Platform.isMobile && plugin.settings.openSidebarWhenClickingOnPath) { + setTimeout(() => { fileExplorerPlugin.revealInFolder(folderNote); }, 200); + } else if (fileExplorerPlugin) { + fileExplorerPlugin.revealInFolder(folderNote); + } + }); + return; } else if (event.altKey || Keymap.isModEvent(event) === 'tab') { if ((plugin.settings.altKey && event.altKey) || (plugin.settings.ctrlKey && Keymap.isModEvent(event) === 'tab')) { await createFolderNote(plugin, folderPath, true, undefined, true); @@ -77,7 +90,7 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl if (plugin.settings.enableCollapsing) return; return event.target.parentElement?.click(); } - + event.target.onclick = null; event.target.click(); } diff --git a/src/settings/PathSettings.ts b/src/settings/PathSettings.ts index 5cd8874..6b3f511 100644 --- a/src/settings/PathSettings.ts +++ b/src/settings/PathSettings.ts @@ -15,6 +15,18 @@ export async function renderPath(settingsTab: SettingsTab) { }) ); + new Setting(containerEl) + .setName('Open sidebar when opening a folder note through path (Mobile only)') + .setDesc('Open the sidebar when opening a folder note through the path on mobile') + .addToggle((toggle) => + toggle + .setValue(settingsTab.plugin.settings.openSidebarWhenClickingOnPath) + .onChange(async (value) => { + settingsTab.plugin.settings.openSidebarWhenClickingOnPath = value; + await settingsTab.plugin.saveSettings(); + }) + ); + new Setting(containerEl) .setName('Change folder name in the path') .setDesc('Automatically rename a folder name in the path above a note when the folder note is renamed') diff --git a/src/settings/SettingsTab.ts b/src/settings/SettingsTab.ts index 2631e30..6ceccac 100644 --- a/src/settings/SettingsTab.ts +++ b/src/settings/SettingsTab.ts @@ -59,6 +59,7 @@ export interface FolderNotesSettings { hideCollapsingIcon: boolean; ignoreAttachmentFolder: boolean; tabManagerEnabled: boolean; + openSidebarWhenClickingOnPath: boolean; } export const DEFAULT_SETTINGS: FolderNotesSettings = { @@ -147,6 +148,7 @@ export const DEFAULT_SETTINGS: FolderNotesSettings = { hideCollapsingIcon: false, tabManagerEnabled: true, ignoreAttachmentFolder: true, + openSidebarWhenClickingOnPath: false, }; export class SettingsTab extends PluginSettingTab {