Browse Source

Move the menubar buttons into a popout menu

tags/v0.1.0
Fen Dweller 6 years ago
parent
commit
946eb0da65
3 changed files with 75 additions and 9 deletions
  1. +35
    -4
      macrovision.css
  2. +6
    -0
      macrovision.html
  3. +34
    -5
      macrovision.js

+ 35
- 4
macrovision.css View File

@@ -246,13 +246,11 @@ body.show-extra-options .options-block.options-block-optional {
} }


.menubar-group { .menubar-group {
margin: 20px;
display: flex; display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
flex-direction: column;
} }



.menu-item { .menu-item {
font-size: 24px; font-size: 24px;
color: #ccc; color: #ccc;
@@ -713,4 +711,37 @@ i.far {
#fit { #fit {
right: 0%; right: 0%;
top: 75%; top: 75%;
}

#toggle-menu {
position: relative;
background: none;
color: #aaa;
border: 0px;
}

#popout-menu {
display: none;
flex-direction: column;
height: 80vh;
justify-content: space-around;
position: fixed;
top: 10%;
left: 10%;
z-index: 10000;
background: #111;
}

#popout-menu.visible {
display: flex;
}

.menu-button {
height: 48pt;
width: 56pt;
font-size: 40pt;
}

.menu-text {
font-size: 24pt;
} }

+ 6
- 0
macrovision.html View File

@@ -59,8 +59,14 @@
</ul> </ul>
</p> </p>
<button id="close-help">Close</button> <button id="close-help">Close</button>
</div>
<div id="popout-menu">
</div> </div>
<div id="menubar"> <div id="menubar">
<button id="toggle-menu">
<i class="fas fa-bars"></i>
</button>
<span class="menubar-group" id="scenes"> <span class="menubar-group" id="scenes">
<button id="load-scene"> <button id="load-scene">
<i class="fas fa-cloud-upload-alt"></i> <i class="fas fa-cloud-upload-alt"></i>


+ 34
- 5
macrovision.js View File

@@ -1170,9 +1170,8 @@ function handleResize() {


function prepareMenu() { function prepareMenu() {


const menubar = document.querySelector("#menubar");
const menubar = document.querySelector("#popout-menu");
const help = document.querySelector("#help-icons"); const help = document.querySelector("#help-icons");
const before = document.querySelector("#scenes");


[ [
[ [
@@ -1233,9 +1232,10 @@ function prepareMenu() {
const span = document.createElement("span"); const span = document.createElement("span");
span.classList.add("menubar-group"); span.classList.add("menubar-group");
group.forEach(entry => { group.forEach(entry => {
const buttonHolder = document.createElement("div");
const button = document.createElement("button"); const button = document.createElement("button");
button.id = entry.id; button.id = entry.id;
button.classList.add("menu-button");
const icon = document.createElement("i"); const icon = document.createElement("i");
icon.classList.add(...entry.icon.split(" ")); icon.classList.add(...entry.icon.split(" "));
@@ -1243,6 +1243,10 @@ function prepareMenu() {
icon.classList.add("rotate-backward", "transitions"); icon.classList.add("rotate-backward", "transitions");
} }


const actionText = document.createElement("span");
actionText.innerText = entry.name;
actionText.classList.add("menu-text");

const srText = document.createElement("span"); const srText = document.createElement("span");
srText.classList.add("sr-only"); srText.classList.add("sr-only");
srText.innerText = entry.name; srText.innerText = entry.name;
@@ -1250,7 +1254,9 @@ function prepareMenu() {
button.appendChild(icon); button.appendChild(icon);
button.appendChild(srText); button.appendChild(srText);


span.appendChild(button);
buttonHolder.appendChild(button);
buttonHolder.appendChild(actionText);
span.appendChild(buttonHolder);


const helperEntry = document.createElement("div"); const helperEntry = document.createElement("div");
const helperIcon = document.createElement("icon"); const helperIcon = document.createElement("icon");
@@ -1265,7 +1271,7 @@ function prepareMenu() {
help.appendChild(helperEntry); help.appendChild(helperEntry);
}); });


menubar.insertBefore(span, before);
menubar.appendChild(span);
}); });


if (checkHelpDate()) { if (checkHelpDate()) {
@@ -1331,6 +1337,29 @@ document.addEventListener("DOMContentLoaded", () => {
prepareMenu(); prepareMenu();
prepareEntities(); prepareEntities();


document.querySelector("#toggle-menu").addEventListener("click", e => {
const popoutMenu = document.querySelector("#popout-menu");
console.log("hi")
if (popoutMenu.classList.contains("visible")) {
popoutMenu.classList.remove("visible");
} else {
const rect = e.target.getBoundingClientRect();
popoutMenu.classList.add("visible");
popoutMenu.style.left = rect.x + rect.width + 10 + "px";
popoutMenu.style.top = rect.y + rect.height + 10 + "px";
}
e.stopPropagation();
});

document.querySelector("#popout-menu").addEventListener("click", e => {
e.stopPropagation();
});

document.addEventListener("click", e => {
console.log("hiii")
document.querySelector("#popout-menu").classList.remove("visible");
});
window.addEventListener("unload", () => saveScene("autosave")); window.addEventListener("unload", () => saveScene("autosave"));
document.querySelector("#options-selected-entity").addEventListener("input", e => { document.querySelector("#options-selected-entity").addEventListener("input", e => {
if (e.target.value == "none") { if (e.target.value == "none") {


Loading…
Cancel
Save