added keyboard shortcuts for nudging /deleting containers

This commit is contained in:
2025-08-26 22:04:02 -04:00
parent e58f943afd
commit cdd05d60e4
+62 -7
View File
@@ -572,7 +572,7 @@
</p> </p>
</div> </div>
todo: enable changing color of edit page toggle? remove underline from links? nudge elements 1px with arrow keys? reset data button? todo: enable changing color of edit page toggle? reset data button?
</div> </div>
</body> </body>
@@ -809,6 +809,7 @@
style="z-index: ${numberOfMediaContainers + numberOfTextContainers};" style="z-index: ${numberOfMediaContainers + numberOfTextContainers};"
src="${this.mediaUrl}" src="${this.mediaUrl}"
draggable=false draggable=false
tabindex="0"
></img> ></img>
${loadingFromSave ? `</a>` : ``} ${loadingFromSave ? `</a>` : ``}
` `
@@ -828,6 +829,7 @@
id=${this.id} id=${this.id}
class="movable media" class="movable media"
style="width:640px;height:480px" style="width:640px;height:480px"
tabindex="0"
> >
<div class="youtubeEmbedCover" style="z-index: ${900 + numberOfMediaContainers + numberOfTextContainers}; ${editing ? 'display: block"' : 'display:none;"'}></div> <div class="youtubeEmbedCover" style="z-index: ${900 + numberOfMediaContainers + numberOfTextContainers}; ${editing ? 'display: block"' : 'display:none;"'}></div>
<iframe <iframe
@@ -849,7 +851,7 @@
document.body.insertAdjacentHTML( document.body.insertAdjacentHTML(
"beforeend", "beforeend",
` `
<div class="movable container" id=${this.id}> <div class="movable container" id=${this.id} tabindex="0">
<div class="autoMarginHolder"> <div class="autoMarginHolder">
<div id=${this.id + "-header"} class="containerHeader"> <div id=${this.id + "-header"} class="containerHeader">
<div id=${this.id + "-date"}></div> <div id=${this.id + "-date"}></div>
@@ -920,7 +922,7 @@
document.getElementById("containers").insertAdjacentHTML( document.getElementById("containers").insertAdjacentHTML(
"afterbegin", "afterbegin",
` `
<div class="containerListing" id=${this.id + "-container-listing"}> <div class="containerListing" id=${this.id + "-container-listing"} tabIndex="0">
<div class="expandableMenuToggle active" onclick="toggleExpandableMenu(this)"> <div class="expandableMenuToggle active" onclick="toggleExpandableMenu(this)">
<p id=${this.id + "--listing-header"}>[${this.settings.zIndex}]: ${this.name}</p> <p id=${this.id + "--listing-header"}>[${this.settings.zIndex}]: ${this.name}</p>
@@ -1866,8 +1868,13 @@
mouseDownMovableElement, mouseDownMovableElement,
true true
); );
// TODO put event listeners here to a single function to handle nudges
// prevent context menu when resizing container.addEventListener(
"keydown",
keyDownMovableElement,
false
);
container.addEventListener("contextmenu", (e) => { container.addEventListener("contextmenu", (e) => {
e.preventDefault(); e.preventDefault();
}); });
@@ -1972,6 +1979,7 @@
/** add keybinds */ /** add keybinds */
document.body.addEventListener("keydown", (e) => { document.body.addEventListener("keydown", (e) => {
console.log("grabbed");
if (e.key == "e" && !editing) { if (e.key == "e" && !editing) {
toggleEditMode(); toggleEditMode();
} }
@@ -2634,7 +2642,15 @@
updateContainerListingOrder(); updateContainerListingOrder();
} }
function deleteContainer(buttonPressed) { function deleteContainer(buttonPressed) {
let containerId = buttonPressed.id.split("--")[0]; let containerId;
if (buttonPressed.id) {
containerId = buttonPressed.id.split("--")[0];
}
else {
// if being called from keyboard shortcut
containerId = buttonPressed;
}
let container = containerDataMap.get(containerId); let container = containerDataMap.get(containerId);
if (container.mediaUrl == undefined) { if (container.mediaUrl == undefined) {
@@ -2677,7 +2693,7 @@
return -1; return -1;
} }
/** upon click release on movable elements, store position data for when saving to localStorage when disabling edit mode */ /** upon click release on movable elements, store position data to save to localStorage when edit mode gets disabled */
function storeElementData() { function storeElementData() {
let borderWidth = changingElement.style.borderWidth.slice(0, -2) * 2; // slice to remove "px" let borderWidth = changingElement.style.borderWidth.slice(0, -2) * 2; // slice to remove "px"
let element = document.getElementById(changingElement.id); let element = document.getElementById(changingElement.id);
@@ -2862,6 +2878,45 @@
} }
} }
function keyDownMovableElement(keyDown) {
if (!editing ||
keyDown.target.id == "settingsContainer" ||
keyDown.key == "Escape"
) {
console.log(keyDown.key);
console.log(keyDown.target.id);
return;
}
keyDown.stopPropagation();
changingElement = document.getElementById(keyDown.target.id);
currentX = parseInt(changingElement.style.left.replace("px", ""));
currentY = parseInt(changingElement.style.top.replace("px", ""));
// deletion
if(keyDown.key == "Backspace") {
deleteContainer(keyDown.target.id);
}
// nudges
if(keyDown.key == "ArrowUp") {
changingElement.style.top =`${currentY - 1}px`;
storeElementData();
}
if(keyDown.key == "ArrowRight") {
changingElement.style.left =`${currentX + 1}px`;
storeElementData();
}
if(keyDown.key == "ArrowDown") {
changingElement.style.top =`${currentY + 1}px`;
storeElementData();
}
if(keyDown.key == "ArrowLeft") {
changingElement.style.left =`${currentX - 1}px`;
storeElementData();
}
}
function setDefaultCursor() { function setDefaultCursor() {
cursors.default = document.getElementById("pointerCursorInput").value; cursors.default = document.getElementById("pointerCursorInput").value;
// apply new default cursor to entire html document // apply new default cursor to entire html document