mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
added option to bring back plain (non-markdown) headings, closes #1678
This commit is contained in:
parent
a654078e56
commit
f8fb071a6f
@ -29,6 +29,16 @@ const TPL = `
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<div class="col-4">
|
||||||
|
<label for="heading-style">Heading style</label>
|
||||||
|
<select class="form-control" id="heading-style">
|
||||||
|
<option value="plain">Plain</option>
|
||||||
|
<option value="markdown">Markdown-style</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>Zooming can be controlled with CTRL+- and CTRL+= shortcuts as well.</p>
|
<p>Zooming can be controlled with CTRL+- and CTRL+= shortcuts as well.</p>
|
||||||
|
|
||||||
<h4>Font sizes</h4>
|
<h4>Font sizes</h4>
|
||||||
@ -78,6 +88,7 @@ export default class ApperanceOptions {
|
|||||||
this.$themeSelect = $("#theme-select");
|
this.$themeSelect = $("#theme-select");
|
||||||
this.$zoomFactorSelect = $("#zoom-factor-select");
|
this.$zoomFactorSelect = $("#zoom-factor-select");
|
||||||
this.$nativeTitleBarSelect = $("#native-title-bar-select");
|
this.$nativeTitleBarSelect = $("#native-title-bar-select");
|
||||||
|
this.$headingStyle = $("#heading-style");
|
||||||
this.$mainFontSize = $("#main-font-size");
|
this.$mainFontSize = $("#main-font-size");
|
||||||
this.$treeFontSize = $("#tree-font-size");
|
this.$treeFontSize = $("#tree-font-size");
|
||||||
this.$detailFontSize = $("#detail-font-size");
|
this.$detailFontSize = $("#detail-font-size");
|
||||||
@ -86,11 +97,7 @@ export default class ApperanceOptions {
|
|||||||
this.$themeSelect.on('change', () => {
|
this.$themeSelect.on('change', () => {
|
||||||
const newTheme = this.$themeSelect.val();
|
const newTheme = this.$themeSelect.val();
|
||||||
|
|
||||||
for (const clazz of Array.from(this.$body[0].classList)) { // create copy to safely iterate over while removing classes
|
this.toggleBodyClass("theme-", newTheme);
|
||||||
if (clazz.startsWith("theme-")) {
|
|
||||||
this.$body.removeClass(clazz);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const noteId = $(this).find(":selected").attr("data-note-id");
|
const noteId = $(this).find(":selected").attr("data-note-id");
|
||||||
|
|
||||||
@ -100,8 +107,6 @@ export default class ApperanceOptions {
|
|||||||
libraryLoader.requireCss(`api/notes/download/${noteId}`);
|
libraryLoader.requireCss(`api/notes/download/${noteId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$body.addClass("theme-" + newTheme);
|
|
||||||
|
|
||||||
server.put('options/theme/' + newTheme);
|
server.put('options/theme/' + newTheme);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -113,6 +118,14 @@ export default class ApperanceOptions {
|
|||||||
server.put('options/nativeTitleBarVisible/' + nativeTitleBarVisible);
|
server.put('options/nativeTitleBarVisible/' + nativeTitleBarVisible);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.$headingStyle.on('change', () => {
|
||||||
|
const newHeadingStyle = this.$headingStyle.val();
|
||||||
|
|
||||||
|
this.toggleBodyClass("heading-style-", newHeadingStyle);
|
||||||
|
|
||||||
|
server.put('options/headingStyle/' + newHeadingStyle);
|
||||||
|
});
|
||||||
|
|
||||||
this.$mainFontSize.on('change', async () => {
|
this.$mainFontSize.on('change', async () => {
|
||||||
await server.put('options/mainFontSize/' + this.$mainFontSize.val());
|
await server.put('options/mainFontSize/' + this.$mainFontSize.val());
|
||||||
|
|
||||||
@ -132,6 +145,16 @@ export default class ApperanceOptions {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleBodyClass(prefix, value) {
|
||||||
|
for (const clazz of Array.from(this.$body[0].classList)) { // create copy to safely iterate over while removing classes
|
||||||
|
if (clazz.startsWith(prefix)) {
|
||||||
|
this.$body.removeClass(clazz);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$body.addClass(prefix + value);
|
||||||
|
}
|
||||||
|
|
||||||
async optionsLoaded(options) {
|
async optionsLoaded(options) {
|
||||||
const themes = [
|
const themes = [
|
||||||
{ val: 'white', title: 'White' },
|
{ val: 'white', title: 'White' },
|
||||||
@ -159,6 +182,8 @@ export default class ApperanceOptions {
|
|||||||
|
|
||||||
this.$nativeTitleBarSelect.val(options.nativeTitleBarVisible === 'true' ? 'show' : 'hide');
|
this.$nativeTitleBarSelect.val(options.nativeTitleBarVisible === 'true' ? 'show' : 'hide');
|
||||||
|
|
||||||
|
this.$headingStyle.val(options.headingStyle);
|
||||||
|
|
||||||
this.$mainFontSize.val(options.mainFontSize);
|
this.$mainFontSize.val(options.mainFontSize);
|
||||||
this.$treeFontSize.val(options.treeFontSize);
|
this.$treeFontSize.val(options.treeFontSize);
|
||||||
this.$detailFontSize.val(options.detailFontSize);
|
this.$detailFontSize.val(options.detailFontSize);
|
||||||
|
@ -49,15 +49,16 @@ const TPL = `
|
|||||||
}
|
}
|
||||||
|
|
||||||
.note-detail-editable-text h2 { font-size: 1.8em; }
|
.note-detail-editable-text h2 { font-size: 1.8em; }
|
||||||
.note-detail-editable-text h2::before { content: "##\\2004"; color: var(--muted-text-color); }
|
|
||||||
.note-detail-editable-text h3 { font-size: 1.6em; }
|
.note-detail-editable-text h3 { font-size: 1.6em; }
|
||||||
.note-detail-editable-text h3::before { content: "###\\2004"; color: var(--muted-text-color); }
|
|
||||||
.note-detail-editable-text h4 { font-size: 1.4em; }
|
.note-detail-editable-text h4 { font-size: 1.4em; }
|
||||||
.note-detail-editable-text h4:not(.include-note-title)::before { content: "####\\2004"; color: var(--muted-text-color); }
|
|
||||||
.note-detail-editable-text h5 { font-size: 1.2em; }
|
.note-detail-editable-text h5 { font-size: 1.2em; }
|
||||||
.note-detail-editable-text h5::before { content: "#####\\2004"; color: var(--muted-text-color); }
|
|
||||||
.note-detail-editable-text h6 { font-size: 1.1em; }
|
.note-detail-editable-text h6 { font-size: 1.1em; }
|
||||||
.note-detail-editable-text h6::before { content: "######\\2004"; color: var(--muted-text-color); }
|
|
||||||
|
body.heading-style-markdown .note-detail-editable-text h2::before { content: "##\\2004"; color: var(--muted-text-color); }
|
||||||
|
body.heading-style-markdown .note-detail-editable-text h3::before { content: "###\\2004"; color: var(--muted-text-color); }
|
||||||
|
body.heading-style-markdown .note-detail-editable-text h4:not(.include-note-title)::before { content: "####\\2004"; color: var(--muted-text-color); }
|
||||||
|
body.heading-style-markdown .note-detail-editable-text h5::before { content: "#####\\2004"; color: var(--muted-text-color); }
|
||||||
|
body.heading-style-markdown .note-detail-editable-text h6::before { content: "######\\2004"; color: var(--muted-text-color); }
|
||||||
|
|
||||||
.note-detail-editable-text-editor {
|
.note-detail-editable-text-editor {
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
|
@ -14,16 +14,11 @@ const TPL = `
|
|||||||
.note-detail-readonly-text h5 { font-size: 1.2em; }
|
.note-detail-readonly-text h5 { font-size: 1.2em; }
|
||||||
.note-detail-readonly-text h6 { font-size: 1.1em; }
|
.note-detail-readonly-text h6 { font-size: 1.1em; }
|
||||||
|
|
||||||
.note-detail-readonly-text h2 { font-size: 1.8em; }
|
body.heading-style-markdown .note-detail-readonly-text h2::before { content: "##\\2004"; color: var(--muted-text-color); }
|
||||||
.note-detail-readonly-text h2::before { content: "##\\2004"; color: var(--muted-text-color); }
|
body.heading-style-markdown .note-detail-readonly-text h3::before { content: "###\\2004"; color: var(--muted-text-color); }
|
||||||
.note-detail-readonly-text h3 { font-size: 1.6em; }
|
body.heading-style-markdown .note-detail-readonly-text h4:not(.include-note-title)::before { content: "####\\2004"; color: var(--muted-text-color); }
|
||||||
.note-detail-readonly-text h3::before { content: "###\\2004"; color: var(--muted-text-color); }
|
body.heading-style-markdown .note-detail-readonly-text h5::before { content: "#####\\2004"; color: var(--muted-text-color); }
|
||||||
.note-detail-readonly-text h4 { font-size: 1.4em; }
|
body.heading-style-markdown .note-detail-readonly-text h6::before { content: "######\\2004"; color: var(--muted-text-color); }
|
||||||
.note-detail-readonly-text h4:not(.include-note-title)::before { content: "####\\2004"; color: var(--muted-text-color); }
|
|
||||||
.note-detail-readonly-text h5 { font-size: 1.2em; }
|
|
||||||
.note-detail-readonly-text h5::before { content: "#####\\2004"; color: var(--muted-text-color); }
|
|
||||||
.note-detail-readonly-text h6 { font-size: 1.1em; }
|
|
||||||
.note-detail-readonly-text h6::before { content: "######\\2004"; color: var(--muted-text-color); }
|
|
||||||
|
|
||||||
.note-detail-readonly-text {
|
.note-detail-readonly-text {
|
||||||
padding-left: 22px;
|
padding-left: 22px;
|
||||||
|
@ -40,7 +40,8 @@ const ALLOWED_OPTIONS = new Set([
|
|||||||
'nativeTitleBarVisible',
|
'nativeTitleBarVisible',
|
||||||
'attributeListExpanded',
|
'attributeListExpanded',
|
||||||
'promotedAttributesExpanded',
|
'promotedAttributesExpanded',
|
||||||
'similarNotesExpanded'
|
'similarNotesExpanded',
|
||||||
|
'headingStyle'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
function getOptions() {
|
function getOptions() {
|
||||||
|
@ -19,6 +19,7 @@ function index(req, res) {
|
|||||||
res.render(view, {
|
res.render(view, {
|
||||||
csrfToken: csrfToken,
|
csrfToken: csrfToken,
|
||||||
theme: options.theme,
|
theme: options.theme,
|
||||||
|
headingStyle: options.headingStyle,
|
||||||
mainFontSize: parseInt(options.mainFontSize),
|
mainFontSize: parseInt(options.mainFontSize),
|
||||||
treeFontSize: parseInt(options.treeFontSize),
|
treeFontSize: parseInt(options.treeFontSize),
|
||||||
detailFontSize: parseInt(options.detailFontSize),
|
detailFontSize: parseInt(options.detailFontSize),
|
||||||
|
@ -84,7 +84,8 @@ const defaultOptions = [
|
|||||||
{ name: 'attributeListExpanded', value: 'false', isSynced: false },
|
{ name: 'attributeListExpanded', value: 'false', isSynced: false },
|
||||||
{ name: 'promotedAttributesExpanded', value: 'true', isSynced: true },
|
{ name: 'promotedAttributesExpanded', value: 'true', isSynced: true },
|
||||||
{ name: 'similarNotesExpanded', value: 'true', isSynced: true },
|
{ name: 'similarNotesExpanded', value: 'true', isSynced: true },
|
||||||
{ name: 'debugModeEnabled', value: 'false', isSynced: false }
|
{ name: 'debugModeEnabled', value: 'false', isSynced: false },
|
||||||
|
{ name: 'headingStyle', value: 'markdown', isSynced: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
function initStartupOptions() {
|
function initStartupOptions() {
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<link rel="shortcut icon" href="favicon.ico">
|
<link rel="shortcut icon" href="favicon.ico">
|
||||||
<title>Trilium Notes</title>
|
<title>Trilium Notes</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="desktop theme-<%= theme %>" style="--main-font-size: <%= mainFontSize %>%; --tree-font-size: <%= treeFontSize %>%; --detail-font-size: <%= detailFontSize %>%;">
|
<body class="desktop theme-<%= theme %> heading-style-<%= headingStyle %>" style="--main-font-size: <%= mainFontSize %>%; --tree-font-size: <%= treeFontSize %>%; --detail-font-size: <%= detailFontSize %>%;">
|
||||||
<noscript>Trilium requires JavaScript to be enabled.</noscript>
|
<noscript>Trilium requires JavaScript to be enabled.</noscript>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
@ -95,7 +95,7 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class="mobile theme-<%= theme %>">
|
<body class="mobile theme-<%= theme %> heading-style-<%= headingStyle %>">
|
||||||
<noscript>Trilium requires JavaScript to be enabled.</noscript>
|
<noscript>Trilium requires JavaScript to be enabled.</noscript>
|
||||||
|
|
||||||
<div id="toast-container" class="d-flex flex-column justify-content-center align-items-center"></div>
|
<div id="toast-container" class="d-flex flex-column justify-content-center align-items-center"></div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user