Files
obsidian-jekyll-publish/src/SettingsTab.ts
Brendan Chen e09d5e5e2f
All checks were successful
CI / test (pull_request) Successful in 34s
Update the settings tab labels to match
2026-08-09 15:13:21 -04:00

47 lines
2.6 KiB
TypeScript

import { App, PluginSettingTab, Setting } from "obsidian";
import type JekyllPublishPlugin from "./main";
export class JekyllPublishSettingTab extends PluginSettingTab {
constructor(app: App, private plugin: JekyllPublishPlugin) {
super(app, plugin);
}
display(): void {
const { containerEl } = this;
containerEl.empty();
const s = this.plugin.settings;
const save = () => this.plugin.saveSettings();
new Setting(containerEl).setName("Remote URL").setDesc("https:// or ssh:// git URL")
.addText((t) => t.setValue(s.remoteUrl).onChange((v) => { s.remoteUrl = v; save(); }));
new Setting(containerEl).setName("Branch")
.addText((t) => t.setValue(s.branch).onChange((v) => { s.branch = v; save(); }));
new Setting(containerEl).setName("Page directory")
.addText((t) => t.setValue(s.publishDir).onChange((v) => { s.publishDir = v; save(); }));
new Setting(containerEl).setName("Images directory")
.addText((t) => t.setValue(s.imagesDir).onChange((v) => { s.imagesDir = v; save(); }));
new Setting(containerEl).setName("Default image strategy")
.addDropdown((d) => d.addOption("flat-slug", "Flat, renamed to slug")
.addOption("per-post-folder", "Per-post subfolder")
.setValue(s.defaultImageStrategy)
.onChange((v) => { s.defaultImageStrategy = v as typeof s.defaultImageStrategy; save(); }));
new Setting(containerEl).setName("Commit message template").setDesc("{{title}} is substituted")
.addText((t) => t.setValue(s.commitMessageTemplate).onChange((v) => { s.commitMessageTemplate = v; save(); }));
new Setting(containerEl).setName("Git author name (optional)")
.addText((t) => t.setValue(s.authorName).onChange((v) => { s.authorName = v; save(); }));
new Setting(containerEl).setName("Git author email (optional)")
.addText((t) => t.setValue(s.authorEmail).onChange((v) => { s.authorEmail = v; save(); }));
containerEl.createEl("h3", { text: "Preset frontmatter" });
s.presetFrontmatter.forEach((row, i) => {
new Setting(containerEl)
.addText((t) => t.setPlaceholder("key").setValue(row.key).onChange((v) => { s.presetFrontmatter[i].key = v; save(); }))
.addText((t) => t.setPlaceholder("value").setValue(row.value).onChange((v) => { s.presetFrontmatter[i].value = v; save(); }))
.addExtraButton((b) => b.setIcon("trash").onClick(() => { s.presetFrontmatter.splice(i, 1); save(); this.display(); }));
});
new Setting(containerEl).addButton((b) =>
b.setButtonText("Add preset property").onClick(() => { s.presetFrontmatter.push({ key: "", value: "" }); save(); this.display(); })
);
}
}