mirror of
https://github.com/vrtmrz/obsidian-livesync.git
synced 2025-12-13 17:55:56 +00:00
- The metadata of the deleted files will be kept on the database by default. - We can see the history of deleted files. - Update information became to be shown on the major upgrade. Fixed: - `Pick file to show` was renamed to `Pick a file to show. - Files in the `Pick a file to show` are now ordered by their modified date descent.
126 lines
3.2 KiB
TypeScript
126 lines
3.2 KiB
TypeScript
import { App, FuzzySuggestModal, Modal, Setting } from "obsidian";
|
|
import ObsidianLiveSyncPlugin from "./main";
|
|
|
|
//@ts-ignore
|
|
import PluginPane from "./PluginPane.svelte";
|
|
|
|
export class PluginDialogModal extends Modal {
|
|
plugin: ObsidianLiveSyncPlugin;
|
|
logEl: HTMLDivElement;
|
|
component: PluginPane = null;
|
|
|
|
constructor(app: App, plugin: ObsidianLiveSyncPlugin) {
|
|
super(app);
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
onOpen() {
|
|
const { contentEl } = this;
|
|
if (this.component == null) {
|
|
this.component = new PluginPane({
|
|
target: contentEl,
|
|
props: { plugin: this.plugin },
|
|
});
|
|
}
|
|
}
|
|
|
|
onClose() {
|
|
if (this.component != null) {
|
|
this.component.$destroy();
|
|
this.component = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
export class InputStringDialog extends Modal {
|
|
result: string | false = false;
|
|
onSubmit: (result: string | boolean) => void;
|
|
title: string;
|
|
key: string;
|
|
placeholder: string;
|
|
isManuallyClosed = false;
|
|
|
|
constructor(app: App, title: string, key: string, placeholder: string, onSubmit: (result: string | false) => void) {
|
|
super(app);
|
|
this.onSubmit = onSubmit;
|
|
this.title = title;
|
|
this.placeholder = placeholder;
|
|
this.key = key;
|
|
}
|
|
|
|
onOpen() {
|
|
const { contentEl } = this;
|
|
|
|
contentEl.createEl("h1", { text: this.title });
|
|
|
|
new Setting(contentEl).setName(this.key).addText((text) =>
|
|
text.onChange((value) => {
|
|
this.result = value;
|
|
})
|
|
);
|
|
|
|
new Setting(contentEl).addButton((btn) =>
|
|
btn
|
|
.setButtonText("Ok")
|
|
.setCta()
|
|
.onClick(() => {
|
|
this.isManuallyClosed = true;
|
|
this.close();
|
|
})
|
|
).addButton((btn) =>
|
|
btn
|
|
.setButtonText("Cancel")
|
|
.setCta()
|
|
.onClick(() => {
|
|
this.close();
|
|
})
|
|
);
|
|
}
|
|
|
|
onClose() {
|
|
const { contentEl } = this;
|
|
contentEl.empty();
|
|
if (this.isManuallyClosed) {
|
|
this.onSubmit(this.result);
|
|
} else {
|
|
this.onSubmit(false);
|
|
}
|
|
}
|
|
}
|
|
export class PopoverSelectString extends FuzzySuggestModal<string> {
|
|
app: App;
|
|
callback: (e: string) => void = () => { };
|
|
getItemsFun: () => string[] = () => {
|
|
return ["yes", "no"];
|
|
|
|
}
|
|
|
|
constructor(app: App, note: string, placeholder: string | null, getItemsFun: () => string[], callback: (e: string) => void) {
|
|
super(app);
|
|
this.app = app;
|
|
this.setPlaceholder(placeholder ?? "y/n) " + note);
|
|
if (getItemsFun) this.getItemsFun = getItemsFun;
|
|
this.callback = callback;
|
|
}
|
|
|
|
getItems(): string[] {
|
|
return this.getItemsFun();
|
|
}
|
|
|
|
getItemText(item: string): string {
|
|
return item;
|
|
}
|
|
|
|
onChooseItem(item: string, evt: MouseEvent | KeyboardEvent): void {
|
|
// debugger;
|
|
this.callback(item);
|
|
this.callback = null;
|
|
}
|
|
onClose(): void {
|
|
setTimeout(() => {
|
|
if (this.callback != null) {
|
|
this.callback("");
|
|
}
|
|
}, 100);
|
|
}
|
|
} |