diff --git a/docs/_javascript/preset_test.js b/docs/_javascript/preset_test.js index 0578a3933..da80c3e46 100644 --- a/docs/_javascript/preset_test.js +++ b/docs/_javascript/preset_test.js @@ -534,6 +534,7 @@ const status = root.querySelector('[data-role="timezone-map-status"]'); const selectedLabel = root.querySelector('[data-role="selected-time-zone"]'); const browserButton = root.querySelector('[data-action="use-browser-time-zone"]'); + const disclosure = container && container.closest("details"); const generator = root.querySelector('[data-role="url-generator"]'); const zoneInput = generator && generator.elements.tz; let selectedZone = validateTimeZone(initialTimeZone); @@ -603,6 +604,18 @@ worldCopyJump: true, }).setView([25, 10], 2); + if (disclosure) { + disclosure.addEventListener("toggle", function () { + if (!disclosure.open || !map) return; + global.setTimeout(function () { + map.invalidateSize(); + if (selectedLayer) { + map.fitBounds(selectedLayer.getBounds(), { padding: [18, 18], maxZoom: 5 }); + } + }, 0); + }); + } + L.tileLayer("https://tile.openstreetmap.org/{z}/{x}/{y}.png", { minZoom: 1, maxZoom: 8, diff --git a/docs/_stylesheets/preset_test.css b/docs/_stylesheets/preset_test.css index 43a5a9869..730332dd1 100644 --- a/docs/_stylesheets/preset_test.css +++ b/docs/_stylesheets/preset_test.css @@ -244,6 +244,56 @@ font-family: var(--md-code-font-family); } +.preset-test-generator-disclosure { + border: 1px solid var(--preset-border); + border-radius: 0.65rem; + background: var(--md-default-bg-color); +} + +.preset-test-generator-disclosure > summary { + display: flex; + justify-content: space-between; + gap: 1rem; + align-items: center; + padding: 0.9rem 1rem; + cursor: pointer; + list-style: none; +} + +.preset-test-generator-disclosure > summary::-webkit-details-marker { + display: none; +} + +.preset-test-generator-disclosure > summary h2 { + margin: 0; + font-size: 1.15rem; +} + +.preset-test-generator-disclosure > summary::after { + flex: 0 0 auto; + border-radius: 999px; + padding: 0.24rem 0.58rem; + background: color-mix(in srgb, var(--preset-cyan) 12%, transparent); + color: var(--preset-cyan); + content: "Open generator"; + font-size: 0.68rem; + font-weight: 750; + letter-spacing: 0.04em; + text-transform: uppercase; +} + +.preset-test-generator-disclosure[open] > summary { + border-bottom: 1px solid var(--preset-border); +} + +.preset-test-generator-disclosure[open] > summary::after { + content: "Close generator"; +} + +.preset-test-generator-disclosure-body { + padding: 0 1rem 1rem; +} + .preset-test-generator-layout { display: grid; grid-template-columns: minmax(0, 3fr) minmax(15rem, 2fr); diff --git a/docs/preset_test.md b/docs/preset_test.md index 99a8e7d6d..a4e822416 100644 --- a/docs/preset_test.md +++ b/docs/preset_test.md @@ -259,13 +259,17 @@ clock
-

Build a link for another test

-

+

+ +

Build a link for another test

+
+
+

Enter the test times in the selected time zone and choose the radio tuple. The generated URL converts the times to exact UTC instants and keeps tz so the page displays them in the organizer's local time zone. -

+

@@ -368,13 +372,15 @@ clock Open generated page
-

+

Advanced use: start and end also accept ISO-8601 timestamps with explicit UTC offsets or Unix epoch seconds. If tz is omitted, the page uses the browser's time zone. The other URL parameters are freq, bw, sf, cr, and estimate-only tx. -

+

+
+
diff --git a/mkdocs.yml b/mkdocs.yml index 567b1dd2a..15fd11272 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -21,11 +21,11 @@ extra_css: - _stylesheets/firmware_picker.css - _stylesheets/telemetry_decoder.css - _stylesheets/filter_tool.css - - _stylesheets/preset_test.css?v=20260916-2 + - _stylesheets/preset_test.css?v=20260916-3 extra_javascript: - https://unpkg.com/leaflet@1.9.4/dist/leaflet.js - _javascript/firmware_picker.js - _javascript/telemetry_decoder.js - _javascript/filter_tool.js - - _javascript/preset_test.js?v=20260916-3 + - _javascript/preset_test.js?v=20260916-4 diff --git a/test/test_preset_test.js b/test/test_preset_test.js index b12e61b26..28ce5e2ad 100644 --- a/test/test_preset_test.js +++ b/test/test_preset_test.js @@ -8,6 +8,11 @@ const pageSource = fs.readFileSync("docs/preset_test.md", "utf8"); assert.match(pageSource, /data-role="timezone-map"/); assert.match(pageSource, /type="hidden" name="tz"/); assert.doesNotMatch(pageSource, /