From d46234ef72c5ab1a45d27cfba1a7ebd5a9f3beb5 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 7 Oct 2019 15:41:45 -0400 Subject: [PATCH] generated docs: keyboard shortcuts modal --- lib/std/special/docs/index.html | 44 +++++++++++++++++++++++++++++++++ lib/std/special/docs/main.js | 32 +++++++++++++++++++----- 2 files changed, 70 insertions(+), 6 deletions(-) diff --git a/lib/std/special/docs/index.html b/lib/std/special/docs/index.html index 36671217cb..0fb3673bbb 100644 --- a/lib/std/special/docs/index.html +++ b/lib/std/special/docs/index.html @@ -104,6 +104,41 @@ width: 100%; } + #helpDialog { + width: 21em; + height: 19em; + position: fixed; + top: 0; + left: 0; + background-color: #333; + color: #fff; + border: 1px solid #fff; + } + #helpDialog h1 { + text-align: center; + font-size: 1.5em; + } + dt, dd { + display: inline; + margin: 0 0.2em; + } + kbd { + color: #000; + background-color: #fafbfc; + border-color: #d1d5da; + border-bottom-color: #c6cbd1; + box-shadow-color: #c6cbd1; + display: inline-block; + padding: 0.3em 0.2em; + font: 1.2em monospace; + line-height: 0.8em; + vertical-align: middle; + border: solid 1px; + border-radius: 3px; + box-shadow: inset 0 -1px 0; + cursor: default; + } + @media (prefers-color-scheme: dark) { body{ background-color: #111; @@ -171,6 +206,15 @@ + diff --git a/lib/std/special/docs/main.js b/lib/std/special/docs/main.js index bb944823e6..1d062dc02a 100644 --- a/lib/std/special/docs/main.js +++ b/lib/std/special/docs/main.js @@ -20,6 +20,7 @@ var domTdTarget = document.getElementById("tdTarget"); var domTdZigVer = document.getElementById("tdZigVer"); var domHdrName = document.getElementById("hdrName"); + var domHelpModal = document.getElementById("helpDialog"); var searchTimer = null; var escapeHtmlReplacements = { "&": "&", '"': """, "<": "<", ">": ">" }; @@ -362,13 +363,13 @@ curNavSearch = ""; if (location.hash[0] === '#' && location.hash.length > 1) { - var nonSearchAndSearchParts = location.hash.substring(1).split("?"); - var nonSearchPart; - if (nonSearchAndSearchParts.length === 1) { - nonSearchPart = nonSearchAndSearchParts[0]; + var query = location.hash.substring(1); + var qpos = query.indexOf("?"); + if (qpos === -1) { + nonSearchPart = query; } else { - nonSearchPart = nonSearchAndSearchParts[0]; - curNavSearch = decodeURIComponent(nonSearchAndSearchParts[1]); + nonSearchPart = query.substring(0, qpos); + curNavSearch = decodeURIComponent(query.substring(qpos + 1)); } var parts = nonSearchPart.split(";"); @@ -449,15 +450,34 @@ function onWindowKeyDown(ev) { switch (ev.which) { + case 27: + if (!domHelpModal.classList.contains("hidden")) { + domHelpModal.classList.add("hidden"); + ev.preventDefault(); + ev.stopPropagation(); + } + break; case 83: domSearch.focus(); ev.preventDefault(); ev.stopPropagation(); startAsyncSearch(); break; + case 191: + ev.preventDefault(); + ev.stopPropagation(); + showHelpModal(); + break; } } + function showHelpModal() { + domHelpModal.classList.remove("hidden"); + domHelpModal.style.left = (window.innerWidth / 2 - domHelpModal.clientWidth / 2) + "px"; + domHelpModal.style.top = (window.innerHeight / 2 - domHelpModal.clientHeight / 2) + "px"; + domHelpModal.focus(); + } + function clearAsyncSearch() { if (searchTimer != null) clearTimeout(searchTimer); }