Commit ab1de8f5 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add generic way to close dialog

parent 2a080939
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -44,3 +44,16 @@ export async function waitFor(check) {
        }
    })
}

/**
 * @param {HTMLElement} el An element
 * @param {string} selector A selector
 * @returns The first parent element of el matching the selector
 */
export function findParent(el, selector) {
    let parent = el.parentElement
    while(!parent?.matches(selector)) {
        parent = parent.parentElement
    }
    return parent
}
+4 −4
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ import * as tests from "./exercises.mjs"
import { createExerciseCard, displayAsSolved, displayAsNonCurrent, displayAsCurrent, displayAsVerifying, displayAsNonVerifying, displayAsUnusuallyLongVerifying } from "./exercises.cards.mjs"
import { Exercise } from "./exercises.api.mjs"
import { isVmLoading, setAutoFocusEnabled } from "./jslinux.api.mjs"
import { waitFor } from "./util.mjs"
import { findParent, waitFor } from "./util.mjs"

const testId = new URLSearchParams(location.search).get("id")
const currentTest = tests[testId]
@@ -105,8 +105,8 @@ function initActionLinks() {
                setDialogShown("welcome-dialog", false)
                currentTest.markWelcomeAsRead(currentState)
            },
            "continue": function () {
                setDialogShown("welcome-dialog", false)
            "close": function () {
                setDialogShown(findParent(el, ".dialog").id, false)
            },
            "complete": function () {
                setDialogShown("hand-in-dialog", false)
@@ -114,7 +114,7 @@ function initActionLinks() {
            },
            "welcome-again": function () {
                document.querySelector("#welcome-dialog [data-action='begin']").style.display = "none"
                document.querySelector("#welcome-dialog [data-action='continue']").style.display = "block"
                document.querySelector("#welcome-dialog [data-action='close']").style.display = "block"
                setDialogShown("welcome-dialog", true)
            },
            "reset": function () {
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
            <div class="message" id="welcome"></div>
            <div class="actions">
                <button class="primary big" data-action="begin">Los geht's!</button>
                <button class="big" data-action="continue">Weiter geht's :)</button>
                <button class="big" data-action="close">Weiter geht's :)</button>
            </div>
        </div>
        <div class="dialog" id="hand-in-dialog">