From 0d2f035b741fdbcf78fde19bcc96b55026818492 Mon Sep 17 00:00:00 2001 From: CenTdemeern1 Date: Thu, 13 Feb 2025 06:53:11 +0100 Subject: [PATCH] Open/close about dialog --- static/about.mts | 28 +++++++++++++++++++--------- static/crossroad.html | 4 +++- static/dom.mts | 7 +++++++ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/static/about.mts b/static/about.mts index 4d96b26..6aaa2d0 100644 --- a/static/about.mts +++ b/static/about.mts @@ -1,17 +1,27 @@ -import { findImageOrFail, findSpanOrFail } from "./dom.mjs"; +import { Dialog } from "./dialog.mjs"; +import { findAnchorOrFail, findButtonOrFail, findDialogOrFail, findImageOrFail, findSpanOrFail } from "./dom.mjs"; -async function populateVersion(versionSelector: string) { - const versionParagraph = findSpanOrFail(document.body, versionSelector); +const openButton = findAnchorOrFail(document.body, "#aboutLink"); +const dialog = findDialogOrFail(document.body, "#about") +const versionParagraph = findSpanOrFail(dialog, "#version"); +const charlotteImage = findImageOrFail(dialog, "#charlotteAvatar"); +const kioImage = findImageOrFail(dialog, "#kioAvatar"); +const closeButton = findButtonOrFail(dialog, ".close"); + +const aboutDialog = new Dialog(dialog); + +openButton.addEventListener("click", e => aboutDialog.open()); +closeButton.addEventListener("click", e => aboutDialog.close()); + +populateVersion(); +populateUsers(); + +async function populateVersion() { versionParagraph.innerText = await fetch("/api/about/version").then(r => r.text()); } -async function populateUsers(charlotteSelector: string, kioSelector: string) { - const charlotteImage = findImageOrFail(document.body, charlotteSelector); - const kioImage = findImageOrFail(document.body, kioSelector); +async function populateUsers() { const { charlotte, kio } = await fetch("/api/about/nekomata_avatars").then(r => r.json()); if (charlotte) charlotteImage.src = charlotte; if (kio) kioImage.src = kio; } - -populateVersion("#version"); -populateUsers("#charlotteAvatar", "#kioAvatar"); diff --git a/static/crossroad.html b/static/crossroad.html index 3047ebd..4fef273 100644 --- a/static/crossroad.html +++ b/static/crossroad.html @@ -17,7 +17,8 @@

FeDirect

-

  By Nekomata

+

  By Nekomata

@@ -148,6 +149,7 @@ Unchecking this is not recommended, and this option only exists for exceptional Nekomata Logo + diff --git a/static/dom.mts b/static/dom.mts index a4bf983..e879ec8 100644 --- a/static/dom.mts +++ b/static/dom.mts @@ -1,6 +1,13 @@ // I would've LOVED to use generics for this but unfortunately that's not possible. // Type safety, but at what cost... >~< thanks TypeScript +export function findAnchorOrFail(on: Element, selector: string): HTMLAnchorElement { + const element = on.querySelector(selector); + if (!(element instanceof HTMLAnchorElement)) + throw new Error(`${selector} isn't an a`); + return element; +} + export function findDivOrFail(on: Element, selector: string): HTMLDivElement { const element = on.querySelector(selector); if (!(element instanceof HTMLDivElement))