feat(common): change modal open signature and allow to hide buttons

This commit is contained in:
2025-12-29 19:48:49 +01:00
parent ba7c974af6
commit bdc27d72c8
4 changed files with 20 additions and 7 deletions

View File

@@ -48,6 +48,7 @@ onUnmounted(() => {
<template>
<Buttons
v-if="state.showButtons"
:y-offset="state.modalButtonsYOffset"
b-label="Cancel"
a-label="Confirm"

View File

@@ -59,14 +59,19 @@ const actionateButton = async (button: (typeof selectedButton)["value"]) => {
}
} else {
const url = content.replace(/^https?:\/\//, "");
openModal(`Open ${url}?`, async () => {
openModal({
text: `Open ${url}?`,
onConfirm: async () => {
store.pushNotification(`${verb} opened`);
await sleep(100);
await navigateTo(content, { open: { target: "_blank " } });
},
});
}
};
// TODO: use @activate events from common buttons
const QUIT_BUTTON: Rect = [31, 172, 80, 18];
const OK_BUTTON: Rect = [144, 172, 80, 18];

View File

@@ -7,4 +7,5 @@ import Menus from "./Menus/Menus.vue";
<Background />
<CommonBars />
<Menus />
<CommonConfirmationModal />
</template>

View File

@@ -15,16 +15,22 @@ const state = useState("confirmationModal", () =>
modalButtonsYOffset: BUTTONS_MAX_Y_OFFSET,
isVisible: false,
isClosing: false,
showButtons: true,
}),
);
const open = (text: string, onConfirm?: (() => void) | null) => {
const open = (
options: {
text: string;
} & ({ showButtons?: true; onConfirm: () => void } | { showButtons: false }),
) => {
gsap.killTweensOf(state.value);
state.value.text = text;
state.value.onConfirm = onConfirm || null;
state.value.text = options.text;
state.value.onConfirm = options.showButtons ? options.onConfirm : null;
state.value.isVisible = true;
state.value.isClosing = false;
state.value.isOpen = true;
state.value.showButtons = options.showButtons ?? false;
gsap
.timeline()