mirror of
https://github.com/lostpaul/obsidian-folder-notes.git
synced 2026-07-22 07:40:24 +00:00
Fix #145
This commit is contained in:
parent
58dcdde893
commit
bbfb49bf10
3 changed files with 33 additions and 17 deletions
4
.github/workflows/beta-release.yaml
vendored
4
.github/workflows/beta-release.yaml
vendored
|
|
@ -11,10 +11,10 @@ jobs:
|
|||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout beta branch
|
||||
- name: Checkout current branch
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: beta
|
||||
ref: ${{ github.ref }}
|
||||
|
||||
- name: Fetch main branch
|
||||
run: git fetch origin main
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import FolderNotesPlugin from 'src/main';
|
|||
import { Platform, Keymap } from 'obsidian';
|
||||
import { getFolderNote } from 'src/functions/folderNoteFunctions';
|
||||
import { handleFolderClick, handleViewHeaderClick } from './handleClick';
|
||||
import { applyCSSClassesToFolder } from 'src/functions/styleFunctions';
|
||||
|
||||
export async function addObserver(plugin: FolderNotesPlugin) {
|
||||
plugin.observer = new MutationObserver((mutations: MutationRecord[]) => {
|
||||
|
|
@ -11,6 +12,8 @@ export async function addObserver(plugin: FolderNotesPlugin) {
|
|||
.forEach((element: HTMLElement) => {
|
||||
if (element.onclick) return;
|
||||
if (Platform.isMobile && plugin.settings.disableOpenFolderNoteOnClick) return;
|
||||
const folderPath = element.parentElement?.getAttribute('data-path') || '';
|
||||
const apply = applyCSSClassesToFolder(folderPath, plugin);
|
||||
// handle middle click
|
||||
element.addEventListener('auxclick', (event: MouseEvent) => {
|
||||
if (event.button == 1) {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import FolderNotesPlugin from 'src/main';
|
|||
import { getExcludedFolder } from 'src/ExcludeFolders/functions/folderFunctions';
|
||||
import { getFolderNote } from 'src/functions/folderNoteFunctions';
|
||||
import { getFileExplorer } from './utils';
|
||||
import { ExcludedFolder } from 'src/ExcludeFolders/ExcludeFolder';
|
||||
|
||||
export function loadFileClasses(forceReload = false, plugin: FolderNotesPlugin) {
|
||||
if (plugin.activeFileExplorer === getFileExplorer() && !forceReload) { return; }
|
||||
|
|
@ -35,36 +36,48 @@ export function loadFileClasses(forceReload = false, plugin: FolderNotesPlugin)
|
|||
});
|
||||
}
|
||||
|
||||
export function addCSSClassesToBothFolderAndNote(file: TFile, folder: TFolder) {
|
||||
this.addCSSClassToFolderNote(file);
|
||||
this.addCSSClassesToFolder(folder);
|
||||
export function applyCSSClassesToFolder(folderPath: string, plugin: FolderNotesPlugin) {
|
||||
const folder = plugin.app.vault.getAbstractFileByPath(folderPath);
|
||||
if (!folder || !(folder instanceof TFolder)) { return; }
|
||||
const excludedFolder = getExcludedFolder(plugin, folder.path);
|
||||
if (excludedFolder?.disableFolderNote) {
|
||||
return;
|
||||
}
|
||||
const folderNote = getFolderNote(plugin, folder.path);
|
||||
if (!folderNote) { return; }
|
||||
addCSSClassesToBothFolderAndNote(folderNote, folder, plugin);
|
||||
}
|
||||
|
||||
export function addCSSClassesToBothFolderAndNote(file: TFile, folder: TFolder, plugin: FolderNotesPlugin) {
|
||||
addCSSClassToFolderNote(file);
|
||||
addCSSClassesToFolder(folder, plugin);
|
||||
}
|
||||
|
||||
export function removeCSSClassesFromBothFolderAndNote(folder: TFolder, file: TFile) {
|
||||
this.removeCSSClassFromFolderNote(file);
|
||||
this.removeCSSClassesFromFolder(folder);
|
||||
removeCSSClassFromFolderNote(file);
|
||||
removeCSSClassesFromFolder(folder);
|
||||
}
|
||||
|
||||
export function addCSSClassesToFolder(folder: TFolder) {
|
||||
this.addCSSClassToTitleEL(folder.path, 'has-folder-note');
|
||||
if (this.isEmptyFolderNoteFolder(folder)) {
|
||||
this.addCSSClassToTitleEL(folder.path, 'only-has-folder-note');
|
||||
export function addCSSClassesToFolder(folder: TFolder, plugin: FolderNotesPlugin) {
|
||||
addCSSClassToTitleEL(folder.path, 'has-folder-note');
|
||||
if (plugin.isEmptyFolderNoteFolder(folder)) {
|
||||
addCSSClassToTitleEL(folder.path, 'only-has-folder-note');
|
||||
} else {
|
||||
this.removeCSSClassFromEL(folder.path, 'only-has-folder-note');
|
||||
removeCSSClassFromEL(folder.path, 'only-has-folder-note');
|
||||
}
|
||||
}
|
||||
|
||||
export function addCSSClassToFolderNote(file: TFile) {
|
||||
this.addCSSClassToTitleEL(file.path, 'is-folder-note');
|
||||
addCSSClassToTitleEL(file.path, 'is-folder-note');
|
||||
}
|
||||
|
||||
export function removeCSSClassFromFolderNote(file: TFile) {
|
||||
this.removeCSSClassFromEL(file.path, 'is-folder-note');
|
||||
removeCSSClassFromEL(file.path, 'is-folder-note');
|
||||
}
|
||||
|
||||
export function removeCSSClassesFromFolder(folder: TFolder) {
|
||||
this.removeCSSClassFromEL(folder.path, 'has-folder-note');
|
||||
this.removeCSSClassFromEL(folder.path, 'only-has-folder-note');
|
||||
removeCSSClassFromEL(folder.path, 'has-folder-note');
|
||||
removeCSSClassFromEL(folder.path, 'only-has-folder-note');
|
||||
}
|
||||
|
||||
export async function addCSSClassToTitleEL(path: string, cssClass: string, waitForCreate = false, count = 0) {
|
||||
|
|
@ -76,7 +89,7 @@ export async function addCSSClassToTitleEL(path: string, cssClass: string, waitF
|
|||
// If we could guarrantee load order it wouldn't be an issue but we can't
|
||||
// realise this is racey and needs to be fixed.
|
||||
await new Promise((r) => setTimeout(r, 500));
|
||||
this.addCSSClassToTitleEL(path, cssClass, waitForCreate, count + 1);
|
||||
addCSSClassToTitleEL(path, cssClass, waitForCreate, count + 1);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in a new issue