feat(note_language): refresh rtl for read-only notes

This commit is contained in:
Elian Doran 2025-03-05 17:33:46 +02:00
parent 24c2b54bc9
commit 3d600c885a
No known key found for this signature in database
3 changed files with 23 additions and 15 deletions

View File

@ -5,6 +5,7 @@ import linkService from "../../services/link.js";
import contentRenderer from "../../services/content_renderer.js";
import utils from "../../services/utils.js";
import options from "../../services/options.js";
import attributes from "../../services/attributes.js";
export default class AbstractTextTypeWidget extends TypeWidget {
doRender() {
@ -117,5 +118,16 @@ export default class AbstractTextTypeWidget extends TypeWidget {
if (loadResults.isOptionReloaded("codeBlockWordWrap")) {
this.refreshCodeBlockOptions();
}
if (loadResults.getAttributeRows().find((attr) =>
attr.type === "label" &&
attr.name === "language" &&
attributes.isAffecting(attr, this.note)))
{
await this.onLanguageChanged();
}
}
async onLanguageChanged() { }
}

View File

@ -16,7 +16,6 @@ import toast from "../../services/toast.js";
import { getMermaidConfig } from "../mermaid.js";
import { normalizeMimeTypeForCKEditor } from "../../services/mime_type_definitions.js";
import { buildConfig, buildToolbarConfig } from "./ckeditor/toolbars.js";
import attributes from "../../services/attributes.js";
const ENABLE_INSPECTOR = false;
@ -506,16 +505,8 @@ export default class EditableTextTypeWidget extends AbstractTextTypeWidget {
this.watchdog.editor.setData(data);
}
async entitiesReloadedEvent(e) {
if (e.loadResults.getAttributeRows().find((attr) =>
attr.type === "label" &&
attr.name === "language" &&
attributes.isAffecting(attr, this.note)))
{
async onLanguageChanged() {
await this.reinitialize();
}
super.entitiesReloadedEvent(e);
}
}

View File

@ -101,10 +101,7 @@ export default class ReadOnlyTextTypeWidget extends AbstractTextTypeWidget {
// (see https://github.com/zadam/trilium/issues/1590 for example of such conflict)
await libraryLoader.requireLibrary(libraryLoader.CKEDITOR);
const languageCode = note.getLabelValue("language");
const correspondingLocale = getLocaleById(languageCode);
const isRtl = correspondingLocale?.rtl;
this.$widget.attr("dir", isRtl ? "rtl" : "ltr");
this.onLanguageChanged();
const blob = await note.getBlob();
@ -159,4 +156,12 @@ export default class ReadOnlyTextTypeWidget extends AbstractTextTypeWidget {
resolve(this.$content);
}
async onLanguageChanged(): Promise<void> {
const languageCode = this.note?.getLabelValue("language");
const correspondingLocale = getLocaleById(languageCode);
const isRtl = correspondingLocale?.rtl;
this.$widget.attr("dir", isRtl ? "rtl" : "ltr");
}
}