diff --git a/apps/client/src/widgets/FloatingButtons.css b/apps/client/src/widgets/FloatingButtons.css
index 2a313baf8..596738390 100644
--- a/apps/client/src/widgets/FloatingButtons.css
+++ b/apps/client/src/widgets/FloatingButtons.css
@@ -72,10 +72,6 @@
display: block;
}
-.floating-buttons-children:not(.temporarily-hidden)+.show-floating-buttons {
- display: none;
-}
-
.show-floating-buttons {
/* display: none;*/
margin-left: 5px !important;
@@ -97,4 +93,21 @@
.leaflet-pane {
z-index: 50;
}
+/* #endregion */
+
+/* #region Close floating buttons */
+.close-floating-buttons {
+ margin-left: 5px !important;
+}
+
+.close-floating-buttons-button {
+ border: 1px solid transparent;
+ color: var(--button-text-color);
+ padding: 6px;
+ border-radius: 100px;
+}
+
+.close-floating-buttons-button:hover {
+ border: 1px solid var(--button-border-color);
+}
/* #endregion */
\ No newline at end of file
diff --git a/apps/client/src/widgets/FloatingButtons.tsx b/apps/client/src/widgets/FloatingButtons.tsx
index a846a5113..fd0aa14dd 100644
--- a/apps/client/src/widgets/FloatingButtons.tsx
+++ b/apps/client/src/widgets/FloatingButtons.tsx
@@ -1,12 +1,12 @@
import { t } from "i18next";
import "./FloatingButtons.css";
-import Button from "./react/Button";
import { useNoteContext, useNoteProperty, useTriliumEvent, useTriliumEvents } from "./react/hooks";
import { useContext, useEffect, useMemo, useState } from "preact/hooks";
import { ParentComponent } from "./react/react_utils";
import attributes from "../services/attributes";
import { EventData, EventNames } from "../components/app_context";
import { FLOATING_BUTTON_DEFINITIONS, FloatingButtonContext, FloatingButtonDefinition } from "./FloatingButtonsDefinitions";
+import ActionButton from "./react/ActionButton";
async function getFloatingButtonDefinitions(context: FloatingButtonContext) {
const defs: FloatingButtonDefinition[] = [];
@@ -70,15 +70,21 @@ export default function FloatingButtons() {
getFloatingButtonDefinitions(context).then(setDefinitions);
}, [ context, refreshCounter, noteMime ]);
+ // Manage the user-adjustable visibility of the floating buttons.
+ const [ visible, setVisible ] = useState(true);
+ useEffect(() => setVisible(true), [ note ]);
+
return (
-
+
{context && definitions.map(({ component: Component }) => (
))}
+
+ {definitions.length && }
-
+ {!visible && definitions.length &&
}
)
}
@@ -86,14 +92,28 @@ export default function FloatingButtons() {
/**
* Show button that displays floating button after click on close button
*/
-function ShowFloatingButton() {
+function ShowFloatingButton({ setVisible }: { setVisible(visible: boolean): void }) {
return (
-
);
}
+
+function CloseFloatingButton({ setVisible }: { setVisible(visible: boolean): void }) {
+ return (
+
+
setVisible(false)}
+ />
+
+ );
+}
\ No newline at end of file
diff --git a/apps/client/src/widgets/floating_buttons/floating_buttons.ts b/apps/client/src/widgets/floating_buttons/floating_buttons.ts
deleted file mode 100644
index c2900dee3..000000000
--- a/apps/client/src/widgets/floating_buttons/floating_buttons.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import NoteContextAwareWidget from "../note_context_aware_widget.js";
-import { t } from "../../services/i18n.js";
-import type FNote from "../../entities/fnote.js";
-import type BasicWidget from "../basic_widget.js";
-
-
-export default class FloatingButtons extends NoteContextAwareWidget {
-
- private $children!: JQuery
;
-
- async refreshWithNote(note: FNote) {
- this.toggle(true);
- this.$widget.find(".show-floating-buttons-button").on("click", () => this.toggle(true));
- }
-
- toggle(show: boolean) {
- this.$widget.find(".floating-buttons-children").toggleClass("temporarily-hidden", !show);
- }
-
- hideFloatingButtonsCommand() {
- this.toggle(false);
- }
-}
diff --git a/apps/client/src/widgets/floating_buttons/hide_floating_buttons_button.ts b/apps/client/src/widgets/floating_buttons/hide_floating_buttons_button.ts
deleted file mode 100644
index 19fbde261..000000000
--- a/apps/client/src/widgets/floating_buttons/hide_floating_buttons_button.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { t } from "../../services/i18n.js";
-import NoteContextAwareWidget from "../note_context_aware_widget.js";
-
-const TPL = /*html*/`
-
-
-
-
-
-`;
-
-export default class HideFloatingButtonsButton extends NoteContextAwareWidget {
- doRender() {
- super.doRender();
-
- this.$widget = $(TPL);
- this.$widget.on("click", () => this.triggerCommand("hideFloatingButtons"));
- this.contentSized();
- }
-}