From 4e9deab6053af41486d144c3dd44f4694780fee0 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Thu, 21 Aug 2025 19:59:30 +0300 Subject: [PATCH] chore(react/ribbon): make content work --- .../src/widgets/containers/ribbon_container.ts | 13 ------------- apps/client/src/widgets/ribbon/Ribbon.tsx | 13 +++++++++++-- apps/client/src/widgets/ribbon/style.css | 1 - 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/apps/client/src/widgets/containers/ribbon_container.ts b/apps/client/src/widgets/containers/ribbon_container.ts index d2e2b058f..1dbeb1d03 100644 --- a/apps/client/src/widgets/containers/ribbon_container.ts +++ b/apps/client/src/widgets/containers/ribbon_container.ts @@ -32,15 +32,6 @@ export default class RibbonContainer extends NoteContextAwareWidget { return super.isEnabled() && this.noteContext?.viewScope?.viewMode === "default"; } - ribbon(widget: NoteContextAwareWidget) { - // TODO: Base class - super.child(widget); - - this.ribbonWidgets.push(widget); - - return this; - } - button(widget: ButtonWidget) { super.child(widget); @@ -54,10 +45,6 @@ export default class RibbonContainer extends NoteContextAwareWidget { this.$buttonContainer = this.$widget.find(".ribbon-button-container"); this.$bodyContainer = this.$widget.find(".ribbon-body-container"); - for (const ribbonWidget of this.ribbonWidgets) { - this.$bodyContainer.append($('
').attr("data-ribbon-component-id", ribbonWidget.componentId).append(ribbonWidget.render())); - } - for (const buttonWidget of this.buttonWidgets) { this.$buttonContainer.append(buttonWidget.render()); } diff --git a/apps/client/src/widgets/ribbon/Ribbon.tsx b/apps/client/src/widgets/ribbon/Ribbon.tsx index dc87db043..fc0646a86 100644 --- a/apps/client/src/widgets/ribbon/Ribbon.tsx +++ b/apps/client/src/widgets/ribbon/Ribbon.tsx @@ -3,6 +3,8 @@ import FNote from "../../entities/fnote"; import { t } from "../../services/i18n"; import { useNoteContext } from "../react/hooks"; import "./style.css"; +import { VNode } from "preact"; +import BasicPropertiesTab from "./BasicPropertiesTab"; type TitleFn = string | ((context: TabContext) => string); @@ -13,6 +15,7 @@ interface TabContext { interface TabConfiguration { title: TitleFn; icon: string; + content?: () => VNode; } const TAB_CONFIGURATION: TabConfiguration[] = [ @@ -59,7 +62,8 @@ const TAB_CONFIGURATION: TabConfiguration[] = [ { // BasicProperties title: t("basic_properties.basic_properties"), - icon: "bx bx-slider" + icon: "bx bx-slider", + content: BasicPropertiesTab }, { // OwnedAttributeListWidget @@ -98,6 +102,7 @@ export default function Ribbon() { const { note } = useNoteContext(); const context: TabContext = { note }; const [ activeTab, setActiveTab ] = useState(); + const activeTabConfiguration = activeTab ? TAB_CONFIGURATION[activeTab] : undefined; return (
@@ -122,7 +127,11 @@ export default function Ribbon() {
-
+
+
+ {activeTabConfiguration?.content && activeTabConfiguration.content()} +
+
) } diff --git a/apps/client/src/widgets/ribbon/style.css b/apps/client/src/widgets/ribbon/style.css index faa9671f3..832388dd3 100644 --- a/apps/client/src/widgets/ribbon/style.css +++ b/apps/client/src/widgets/ribbon/style.css @@ -80,7 +80,6 @@ } .ribbon-body { - display: none; border-bottom: 1px solid var(--main-border-color); margin-left: 10px; margin-right: 5px; /* needs to have this value so that the bottom border is the same width as the top one */