From e7098c4a8efb4504f2247fd5c617ddf2e0f42a41 Mon Sep 17 00:00:00 2001 From: Torge Date: Tue, 15 Mar 2022 15:38:04 +0100 Subject: [PATCH] wipo --- src/modals/checkbox_suggest_modal.ts | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/modals/checkbox_suggest_modal.ts diff --git a/src/modals/checkbox_suggest_modal.ts b/src/modals/checkbox_suggest_modal.ts new file mode 100644 index 0000000..5ac4fdc --- /dev/null +++ b/src/modals/checkbox_suggest_modal.ts @@ -0,0 +1,63 @@ +import { FuzzySuggestModal, FuzzyMatch } from "obsidian"; + +export class CheckboxSuggest extends FuzzySuggestModal { + array = ['test', 'lala']; + getItemText(item: string): string { + return item; + } + getItems() { + return this.array; + } + onChooseItem(item: string, evt: MouseEvent | KeyboardEvent): void { + if (this.selected.has(item)) { + this.selected.delete(item); + this.checkboxes.get(item).removeAttribute("checked"); + } else { + this.selected.add(item); + this.checkboxes.get(item).setAttr("checked", true); + } + return; + } + onChooseSuggestion( + item: FuzzyMatch, + evt: MouseEvent | KeyboardEvent + ): void { + if (this.selected.has(item.item)) { + this.selected.delete(item.item); + this.checkboxes.get(item.item).removeAttribute("checked"); + } else { + this.selected.add(item.item); + this.checkboxes.get(item.item).setAttr("checked", true); + } + return; + } + selectSuggestion( + value: FuzzyMatch, + evt: MouseEvent | KeyboardEvent + ) { + //@ts-ignore + this.app.keymap.updateModifiers(evt); + this.onChooseSuggestion(value, evt); + } + selected: Set = new Set(); + checkboxes: Map = new Map(); + renderSuggestion(item: FuzzyMatch, el: HTMLElement) { + if (!this.checkboxes.has(item.item)) { + this.checkboxes.set( + item.item, + createEl("input", { + type: "checkbox", + + attr: { + name: item.item, + ...(this.selected.has(item.item) + ? { checked: true } + : {}) + } + }) + ); + } + el.appendChild(this.checkboxes.get(item.item)); + el.createEl("label", { attr: { for: item.item }, text: item.item }); + } +} \ No newline at end of file