lostpaul_obsidian-folder-notes/src/settings/FileExplorerSettings.ts
2023-11-06 16:19:08 +01:00

153 lines
6.8 KiB
TypeScript

import { Setting } from "obsidian";
import { SettingsTab } from "./SettingsTab";
export async function renderFileExplorer(settingsTab: SettingsTab) {
const containerEl = settingsTab.settingsPage;
settingsTab.settingsPage.createEl('h1', { text: 'File explorer settings' });
new Setting(containerEl)
.setName('Hide folder note')
.setDesc('Hide the folder note in the file explorer')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.hideFolderNote)
.onChange(async (value) => {
settingsTab.plugin.settings.hideFolderNote = value;
await settingsTab.plugin.saveSettings();
if (value) {
document.body.classList.add('hide-folder-note');
} else {
document.body.classList.remove('hide-folder-note');
}
settingsTab.display();
})
);
const setting2 = new Setting(containerEl)
.setName('Don\'t open folder notes by clicking on the name (on mobile)')
.setDesc('Folder notes don\'t open when clicking on the name of the folder (on mobile)')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.disableOpenFolderNoteOnClick)
.onChange(async (value) => {
settingsTab.plugin.settings.disableOpenFolderNoteOnClick = value;
await settingsTab.plugin.saveSettings();
})
);
setting2.infoEl.appendText('Requires a restart to take effect');
setting2.infoEl.style.color = settingsTab.app.vault.getConfig('accentColor') as string || '#7d5bed';
new Setting(containerEl)
.setName('Only open folder notes through the name')
.setDesc('Only open folder notes in the file explorer by clicking on the folder name')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.allowWhitespaceCollapsing)
.onChange(async (value) => {
if (!value) {
document.body.classList.add('fn-whitespace-stop-collapsing');
} else {
document.body.classList.remove('fn-whitespace-stop-collapsing');
}
settingsTab.plugin.settings.allowWhitespaceCollapsing = value;
await settingsTab.plugin.saveSettings();
})
);
const disableSetting = new Setting(containerEl);
disableSetting.setName('Disable folder collapsing');
disableSetting.setDesc('Disable the ability to collapse folders by clicking exactly on the folder name');
disableSetting.addToggle((toggle) =>
toggle
.setValue(!settingsTab.plugin.settings.enableCollapsing)
.onChange(async (value) => {
settingsTab.plugin.settings.enableCollapsing = !value;
await settingsTab.plugin.saveSettings();
})
);
disableSetting.infoEl.appendText('Requires a restart to take effect');
disableSetting.infoEl.style.color = settingsTab.app.vault.getConfig('accentColor') as string || '#7d5bed';
new Setting(containerEl)
.setName('Use submenus')
.setDesc('Use submenus for file/folder commands')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.useSubmenus)
.onChange(async (value) => {
settingsTab.plugin.settings.useSubmenus = value;
await settingsTab.plugin.saveSettings();
settingsTab.display();
})
);
if (settingsTab.plugin.settings.frontMatterTitle.enabled) {
new Setting(containerEl)
.setName('Change folder name in the file explorer')
.setDesc('Automatically rename a folder name in the file explorer when the folder note is renamed')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.frontMatterTitle.explorer)
.onChange(async (value) => {
settingsTab.plugin.settings.frontMatterTitle.explorer = value;
await settingsTab.plugin.saveSettings();
settingsTab.plugin.app.vault.getFiles().forEach((file) => {
settingsTab.plugin.fmtpHandler?.handleRename({ id: '', result: false, path: file.path }, false);
});
})
);
}
settingsTab.settingsPage.createEl('h3', { text: 'Style settings' });
new Setting(containerEl)
.setName('Underline the name of folder notes')
.setDesc('Add an underline to folders that have a folder note in the file explorer')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.underlineFolder)
.onChange(async (value) => {
settingsTab.plugin.settings.underlineFolder = value;
if (value) {
document.body.classList.add('folder-note-underline');
} else {
document.body.classList.remove('folder-note-underline');
}
await settingsTab.plugin.saveSettings();
})
);
new Setting(containerEl)
.setName('Bold the name of folder notes')
.setDesc('Make the folder name bold in the file explorer')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.boldName)
.onChange(async (value) => {
settingsTab.plugin.settings.boldName = value;
if (value) {
document.body.classList.add('folder-note-bold');
} else {
document.body.classList.remove('folder-note-bold');
}
await settingsTab.plugin.saveSettings();
})
);
new Setting(containerEl)
.setName('Cursive the name of folder notes')
.setDesc('Make the folder name cursive in the file explorer')
.addToggle((toggle) =>
toggle
.setValue(settingsTab.plugin.settings.cursiveName)
.onChange(async (value) => {
settingsTab.plugin.settings.cursiveName = value;
if (value) {
document.body.classList.add('folder-note-cursive');
} else {
document.body.classList.remove('folder-note-cursive');
}
await settingsTab.plugin.saveSettings();
})
);
}