From bf0213907e5e1ac4f8b775884693c5c48e9ca1a8 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 22 Aug 2025 15:40:15 +0300 Subject: [PATCH] chore(react/ribbon): finalize language switcher --- apps/client/src/widgets/note_language.ts | 103 ------------------ apps/client/src/widgets/react/FormToggle.tsx | 10 +- apps/client/src/widgets/react/HelpButton.tsx | 21 ++++ .../src/widgets/ribbon/BasicPropertiesTab.tsx | 14 ++- .../ribbon_widgets/basic_properties.ts | 72 ------------ 5 files changed, 34 insertions(+), 186 deletions(-) delete mode 100644 apps/client/src/widgets/note_language.ts create mode 100644 apps/client/src/widgets/react/HelpButton.tsx delete mode 100644 apps/client/src/widgets/ribbon_widgets/basic_properties.ts diff --git a/apps/client/src/widgets/note_language.ts b/apps/client/src/widgets/note_language.ts deleted file mode 100644 index b6be77230..000000000 --- a/apps/client/src/widgets/note_language.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { Dropdown } from "bootstrap"; -import NoteContextAwareWidget from "./note_context_aware_widget.js"; -import { getAvailableLocales, getLocaleById, t } from "../services/i18n.js"; -import type { EventData } from "../components/app_context.js"; -import type FNote from "../entities/fnote.js"; -import attributes from "../services/attributes.js"; -import type { Locale } from "@triliumnext/commons"; -import options from "../services/options.js"; -import appContext from "../components/app_context.js"; - -const TPL = /*html*/`\ - -`; - -export default class NoteLanguageWidget extends NoteContextAwareWidget { - - private dropdown!: Dropdown; - private $noteLanguageDropdown!: JQuery; - private $noteLanguageDesc!: JQuery; - private locales: (Locale | "---")[]; - private currentLanguageId?: string; - - constructor() { - super(); - this.locales = NoteLanguageWidget.#buildLocales(); - } - - 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.$noteLanguageDesc = this.$widget.find(".note-language-desc"); - } - - renderDropdown() { - this.$noteLanguageDropdown.empty(); - - if (!this.note) { - return; - } - - const $configureLink = $('') - .on("click", () => )); - this.$noteLanguageDropdown.append($configureLink); - } - - async save(languageId: string) { - if (!this.note) { - return; - } - - attributes.setAttribute(this.note, "label", "language", languageId); - } - - async refreshWithNote(note: FNote) { - const language = getLocaleById(currentLanguageId) ?? DEFAULT_LOCALE; - this.currentLanguageId = currentLanguageId; - this.$noteLanguageDesc.text(language.name); - this.dropdown.hide(); - } - - async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { - if (loadResults.isOptionReloaded("languages")) { - this.locales = NoteLanguageWidget.#buildLocales(); - } - - if (loadResults.getAttributeRows().find((a) => a.noteId === this.noteId && a.name === "language")) { - this.refresh(); - } - } - - static #buildLocales() { - - } - -} diff --git a/apps/client/src/widgets/react/FormToggle.tsx b/apps/client/src/widgets/react/FormToggle.tsx index c41ea6750..813947ac6 100644 --- a/apps/client/src/widgets/react/FormToggle.tsx +++ b/apps/client/src/widgets/react/FormToggle.tsx @@ -1,6 +1,7 @@ import { t } from "../../services/i18n"; import { openInAppHelpFromUrl } from "../../services/utils"; import "./FormToggle.css"; +import HelpButton from "./HelpButton"; interface FormToggleProps { currentValue: boolean | null; @@ -36,14 +37,7 @@ export default function FormToggle({ currentValue, helpPage, switchOnName, switc - { helpPage && ( -