diff --git a/src/suggesters/FileSuggester.ts b/src/suggesters/FileSuggester.ts new file mode 100644 index 0000000..c552642 --- /dev/null +++ b/src/suggesters/FileSuggester.ts @@ -0,0 +1,54 @@ +// Credits go to Liam's Periodic Notes Plugin: https://github.com/liamcain/obsidian-periodic-notes and https://github.com/SilentVoid13/Templater + +import { TAbstractFile, TFile } from "obsidian"; +import { TextInputSuggest } from "./suggest"; +import FolderNotesPlugin from "../main"; +export enum FileSuggestMode { + TemplateFiles, + ScriptFiles, +} + +export class FileSuggest extends TextInputSuggest { + constructor( + public inputEl: HTMLInputElement, + private plugin: FolderNotesPlugin + ) { + super(inputEl); + } + + + get_error_msg(mode: FileSuggestMode): string { + switch (mode) { + case FileSuggestMode.TemplateFiles: + return `Templates folder doesn't exist`; + case FileSuggestMode.ScriptFiles: + return `User Scripts folder doesn't exist`; + } + } + + getSuggestions(input_str: string): TFile[] { + const files: TFile[] = []; + const lower_input_str = input_str.toLowerCase(); + + this.plugin.app.vault.getFiles().forEach((file: TAbstractFile) => { + if ( + file instanceof TFile && + file.path.toLowerCase().contains(lower_input_str) + ) { + files.push(file); + } + }); + + return files; + } + + renderSuggestion(file: TFile, el: HTMLElement): void { + el.setText(file.path); + } + + selectSuggestion(file: TFile): void { + this.inputEl.value = file.path; + this.inputEl.trigger("input"); + this.close(); + } +} \ No newline at end of file diff --git a/styles.css b/styles.css index 2e82e6b..4b57c06 100644 --- a/styles.css +++ b/styles.css @@ -12,7 +12,6 @@ display: none; } - .nav-folder-collapse-indicator:hover { cursor: pointer; }