diff --git a/src/events/handleClick.ts b/src/events/handleClick.ts index a0ed2fa..1e4af7c 100644 --- a/src/events/handleClick.ts +++ b/src/events/handleClick.ts @@ -39,6 +39,7 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl const folderPath = event.target.parentElement?.getAttribute('data-path'); if (!folderPath) { return; } + const excludedFolder = getExcludedFolder(plugin, folderPath); if (excludedFolder?.disableFolderNote) { event.target.onclick = null; @@ -50,8 +51,19 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl } const folderNote = getFolderNote(plugin, folderPath); + if (folderNote) { - return openFolderNote(plugin, folderNote, event); + if (plugin.settings.openByClick) { + return openFolderNote(plugin, folderNote, event); + } else if (plugin.settings.openWithCtrl && Keymap.isModEvent(event) === 'tab') { + return openFolderNote(plugin, folderNote, event); + } else if (plugin.settings.openWithAlt && event.altKey) { + return openFolderNote(plugin, folderNote, event); + } else { + if (plugin.settings.enableCollapsing) return; + event.target.parentElement?.click() + 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); @@ -59,7 +71,11 @@ export async function handleFolderClick(event: MouseEvent, plugin: FolderNotesPl plugin.removeCSSClassFromEL(folderPath, 'has-not-folder-note'); return; } + } else if (!folderNote) { + if (plugin.settings.enableCollapsing) return; + return event.target.parentElement?.click(); } + event.target.onclick = null; event.target.click(); } diff --git a/src/settings/GeneralSettings.ts b/src/settings/GeneralSettings.ts index b6d259f..2d9ec06 100644 --- a/src/settings/GeneralSettings.ts +++ b/src/settings/GeneralSettings.ts @@ -215,6 +215,33 @@ export async function renderGeneral(settingsTab: SettingsTab) { settingsTab.display(); }); }); + + new Setting(containerEl) + .setName('Key for opening folder note') + .setDesc('Select the combination to open a folder note') + .addDropdown((dropdown) => { + dropdown.addOption('click', 'Mouse Click'); + if (!Platform.isMacOS) { + dropdown.addOption('ctrl', 'Ctrl + Click'); + } else { + dropdown.addOption('ctrl', 'Cmd + Click'); + } + dropdown.addOption('alt', 'Alt + Click'); + if (settingsTab.plugin.settings.openByClick) { + dropdown.setValue('click'); + } else if (settingsTab.plugin.settings.openWithCtrl) { + dropdown.setValue('ctrl'); + } else { + dropdown.setValue('alt'); + } + dropdown.onChange(async (value) => { + settingsTab.plugin.settings.openByClick = value === 'click'; + settingsTab.plugin.settings.openWithCtrl = value === 'ctrl'; + settingsTab.plugin.settings.openWithAlt = value === 'alt'; + await settingsTab.plugin.saveSettings(); + settingsTab.display(); + }); + }); } new Setting(containerEl) diff --git a/src/settings/SettingsTab.ts b/src/settings/SettingsTab.ts index e909265..3a1c498 100644 --- a/src/settings/SettingsTab.ts +++ b/src/settings/SettingsTab.ts @@ -46,6 +46,9 @@ export interface FolderNotesSettings { cursiveName: boolean; cursiveNameInPath: boolean; disableOpenFolderNoteOnClick: boolean; + openByClick: boolean; + openWithCtrl: boolean; + openWithAlt: boolean; } export const DEFAULT_SETTINGS: FolderNotesSettings = { @@ -101,6 +104,9 @@ export const DEFAULT_SETTINGS: FolderNotesSettings = { cursiveName: false, cursiveNameInPath: false, disableOpenFolderNoteOnClick: false, + openByClick: true, + openWithCtrl: false, + openWithAlt: false, }; export class SettingsTab extends PluginSettingTab {