From aac60fe480ec7bc14dec8cc93e115be1fb0205d2 Mon Sep 17 00:00:00 2001 From: Miodec Date: Fri, 15 Aug 2025 20:28:40 +0200 Subject: [PATCH] impr: add share buttons to desktop and mobile test config --- frontend/src/html/pages/test.html | 4 ++++ frontend/src/html/popups.html | 3 +++ frontend/src/styles/test.scss | 19 +++++++++++++++++++ frontend/src/ts/event-handlers/test.ts | 5 +++++ frontend/src/ts/modals/mobile-test-config.ts | 7 +++++++ 5 files changed, 38 insertions(+) diff --git a/frontend/src/html/pages/test.html b/frontend/src/html/pages/test.html index dd461afc6..064e3adb9 100644 --- a/frontend/src/html/pages/test.html +++ b/frontend/src/html/pages/test.html @@ -92,7 +92,11 @@ + +
+
+ +
diff --git a/frontend/src/styles/test.scss b/frontend/src/styles/test.scss index 18639295a..1f04ea31f 100644 --- a/frontend/src/styles/test.scss +++ b/frontend/src/styles/test.scss @@ -1144,6 +1144,10 @@ transition: opacity 0.125s; justify-content: space-around; margin-bottom: 1rem; + width: max-content; + justify-self: center; + position: relative; + .puncAndNum { // transition: 0.25s cubic-bezier(0.37, 0, 0.63, 1); // overflow: hidden; @@ -1154,6 +1158,7 @@ // padding: 0 0.5rem; background: var(--sub-alt-color); border-radius: var(--roundness); + z-index: 2; // width: max-content; } .spacer { @@ -1217,6 +1222,20 @@ .customText { display: grid; } + .shareButton { + position: absolute; + right: 0; + padding: var(--verticalPadding) var(--horizontalPadding); + z-index: 1; + transition: opacity 0.25s, right 0.25s; + opacity: 0; + } + &:hover { + .shareButton { + opacity: 1; + right: -3.25em; + } + } } .pageTest { diff --git a/frontend/src/ts/event-handlers/test.ts b/frontend/src/ts/event-handlers/test.ts index bdcb3e025..1289269b4 100644 --- a/frontend/src/ts/event-handlers/test.ts +++ b/frontend/src/ts/event-handlers/test.ts @@ -14,6 +14,7 @@ import * as CustomTextModal from "../modals/custom-text"; import * as PractiseWordsModal from "../modals/practise-words"; import { navigate } from "../controllers/route-controller"; import { getMode2 } from "../utils/misc"; +import * as ShareTestSettingsPopup from "../modals/share-test-settings"; $(".pageTest").on("click", "#testModesNotice .textButton", async (event) => { const attr = $(event.currentTarget).attr("commands"); @@ -41,6 +42,10 @@ $(".pageTest").on("click", "#testConfig .time .textButton", (e) => { } }); +$(".pageTest").on("click", "#testConfig .shareButton", (e) => { + ShareTestSettingsPopup.show(); +}); + $(".pageTest").on("click", ".tags .editTagsButton", () => { if ((DB.getSnapshot()?.tags?.length ?? 0) > 0) { const resultid = $(".pageTest .tags .editTagsButton").attr( diff --git a/frontend/src/ts/modals/mobile-test-config.ts b/frontend/src/ts/modals/mobile-test-config.ts index e8600abac..cda2df05d 100644 --- a/frontend/src/ts/modals/mobile-test-config.ts +++ b/frontend/src/ts/modals/mobile-test-config.ts @@ -9,6 +9,7 @@ import AnimatedModal from "../utils/animated-modal"; import { QuoteLength, QuoteLengthConfig } from "@monkeytype/schemas/configs"; import { Mode } from "@monkeytype/schemas/shared"; import { areUnsortedArraysEqual } from "../utils/arrays"; +import * as ShareTestSettingsPopup from "./share-test-settings"; function update(): void { const el = $("#mobileTestConfigModal"); @@ -178,6 +179,12 @@ async function setup(modalEl: HTMLElement): Promise { TestLogic.restart(); }); + modalEl.querySelector(".shareButton")?.addEventListener("click", () => { + ShareTestSettingsPopup.show({ + modalChain: modal, + }); + }); + const buttons = modalEl.querySelectorAll("button"); for (const button of buttons) { button.addEventListener("click", () => {