From 642b84ce6ba43ad18bd8d23d2bc2de1dd0941ca4 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Tue, 4 Mar 2025 17:27:00 +0200 Subject: [PATCH] feat(client): create an empty language switcher at note level --- src/public/app/widgets/note_language.ts | 30 +++++++++++++++++++ .../ribbon_widgets/basic_properties.ts | 21 +++++++++++-- src/public/translations/en/translation.json | 3 +- 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 src/public/app/widgets/note_language.ts diff --git a/src/public/app/widgets/note_language.ts b/src/public/app/widgets/note_language.ts new file mode 100644 index 000000000..9fd9bcfbe --- /dev/null +++ b/src/public/app/widgets/note_language.ts @@ -0,0 +1,30 @@ +import { Dropdown } from "bootstrap"; +import NoteContextAwareWidget from "./note_context_aware_widget.js"; + +const TPL = `\ + +`; + +export default class NoteLanguageWidget extends NoteContextAwareWidget { + + private dropdown!: Dropdown; + private $noteLanguageDropdown!: JQuery; + private $noteLanguageButton!: JQuery; + private $noteLanguageDesc!: JQuery; + + doRender() { + this.$widget = $(TPL); + this.dropdown = Dropdown.getOrCreateInstance(this.$widget.find("[data-bs-toggle='dropdown']")[0]); + + this.$noteLanguageDropdown = this.$widget.find(".note-language-dropdown") + this.$noteLanguageButton = this.$widget.find(".note-language-button"); + this.$noteLanguageDesc = this.$widget.find(".note-language-desc"); + } + +} diff --git a/src/public/app/widgets/ribbon_widgets/basic_properties.ts b/src/public/app/widgets/ribbon_widgets/basic_properties.ts index cdeccb468..0f95a6e8d 100644 --- a/src/public/app/widgets/ribbon_widgets/basic_properties.ts +++ b/src/public/app/widgets/ribbon_widgets/basic_properties.ts @@ -7,6 +7,7 @@ import SharedSwitchWidget from "../shared_switch.js"; import { t } from "../../services/i18n.js"; import TemplateSwitchWidget from "../template_switch.js"; import type FNote from "../../entities/fnote.js"; +import NoteLanguageWidget from "../note_language.js"; const TPL = `
@@ -27,7 +28,9 @@ const TPL = ` margin-right: 30px; } - .note-type-container, .editability-select-container { + .note-type-container, + .editability-select-container, + .note-language-container { display: flex; align-items: center; } @@ -48,6 +51,10 @@ const TPL = `
+ +
+ ${t("basic_properties.language")}:   +
`; export default class BasicPropertiesWidget extends NoteContextAwareWidget { @@ -58,6 +65,7 @@ export default class BasicPropertiesWidget extends NoteContextAwareWidget { private bookmarkSwitchWidget: BookmarkSwitchWidget; private sharedSwitchWidget: SharedSwitchWidget; private templateSwitchWidget: TemplateSwitchWidget; + private noteLanguageWidget: NoteLanguageWidget; constructor() { super(); @@ -68,8 +76,16 @@ export default class BasicPropertiesWidget extends NoteContextAwareWidget { this.bookmarkSwitchWidget = new BookmarkSwitchWidget().contentSized(); this.sharedSwitchWidget = new SharedSwitchWidget().contentSized(); this.templateSwitchWidget = new TemplateSwitchWidget().contentSized(); + this.noteLanguageWidget = new NoteLanguageWidget().contentSized(); - this.child(this.noteTypeWidget, this.protectedNoteSwitchWidget, this.editabilitySelectWidget, this.bookmarkSwitchWidget, this.sharedSwitchWidget, this.templateSwitchWidget); + this.child( + this.noteTypeWidget, + this.protectedNoteSwitchWidget, + this.editabilitySelectWidget, + this.bookmarkSwitchWidget, + this.sharedSwitchWidget, + this.templateSwitchWidget, + this.noteLanguageWidget); } get name() { @@ -98,6 +114,7 @@ export default class BasicPropertiesWidget extends NoteContextAwareWidget { this.$widget.find(".bookmark-switch-container").append(this.bookmarkSwitchWidget.render()); this.$widget.find(".shared-switch-container").append(this.sharedSwitchWidget.render()); this.$widget.find(".template-switch-container").append(this.templateSwitchWidget.render()); + this.$widget.find(".note-language-container").append(this.noteLanguageWidget.render()); } async refreshWithNote(note: FNote) { diff --git a/src/public/translations/en/translation.json b/src/public/translations/en/translation.json index 67358f6b6..924b52a14 100644 --- a/src/public/translations/en/translation.json +++ b/src/public/translations/en/translation.json @@ -744,7 +744,8 @@ "basic_properties": { "note_type": "Note type", "editable": "Editable", - "basic_properties": "Basic Properties" + "basic_properties": "Basic Properties", + "language": "Language" }, "book_properties": { "view_type": "View type",