button wip

This commit is contained in:
nate smith 2024-02-19 01:06:41 -08:00
parent 17f7333513
commit 4139a8f3a5
2 changed files with 26 additions and 5 deletions

View File

@ -22,18 +22,24 @@ class Button extends HTMLButtonElement {
class SourceShower extends Button { class SourceShower extends Button {
connectedCallback() { connectedCallback() {
this.innerText = "?" this.innerText = "?"
this.setAttribute("title", "show source");
} }
click() { click() {
this.closest("div.line").querySelector("p[is=source-text]").toggle() this.closest("div.line").querySelector("p[is=source-text]").toggle()
if (this.innerHTML.includes("strong")) { if (this.innerHTML.includes("strong")) {
this.innerHTML = "?"; this.innerHTML = "?";
this.setAttribute("title", "show source");
} else { } else {
this.innerHTML = "<strong>?</strong>"; this.innerHTML = "<strong>?</strong>";
this.setAttribute("title", "hide source");
} }
} }
} }
class LineRemover extends Button { class LineRemover extends Button {
connectedCallback() {
this.setAttribute("title", "remove line");
}
click() { click() {
const container = this.closest("div.line"); const container = this.closest("div.line");
const gp = container.parentElement; const gp = container.parentElement;
@ -45,19 +51,25 @@ class LineRemover extends Button {
class LinePinner extends Button { class LinePinner extends Button {
connectedCallback() { connectedCallback() {
this.innerText = "pin"; this.innerText = "pin";
this.setAttribute("title", "pin line in place");
} }
click() { click() {
const l = this.closest("div.line"); const l = this.closest("div.line");
l.classList.toggle("unpinned"); l.classList.toggle("unpinned");
if (l.classList.contains("unpinned")) { if (l.classList.contains("unpinned")) {
this.innerText = "pin"; this.innerText = "pin";
this.setAttribute("title", "pin line in place");
} else { } else {
this.innerHTML = "<strong>pin</strong>"; this.innerHTML = "<strong>pin</strong>";
this.setAttribute("title", "unpin line");
} }
} }
} }
class LineUpper extends Button { class LineUpper extends Button {
connectedCallback() {
this.setAttribute("title", "move line up");
}
click() { click() {
const l = this.closest("div.line"); const l = this.closest("div.line");
const s = l.previousElementSibling; const s = l.previousElementSibling;
@ -77,6 +89,7 @@ class LineUpper extends Button {
class LineEditor extends Button { class LineEditor extends Button {
connectedCallback() { connectedCallback() {
this.setAttribute("title", "edit line text");
this.span = this.closest(".line").querySelector("span.linetext"); this.span = this.closest(".line").querySelector("span.linetext");
this.f = $("#line-editor-tmpl").content.firstElementChild.cloneNode(true); this.f = $("#line-editor-tmpl").content.firstElementChild.cloneNode(true);
this.i = this.f.querySelector("input[type=text]"); this.i = this.f.querySelector("input[type=text]");
@ -86,6 +99,7 @@ class LineEditor extends Button {
}) })
} }
done() { done() {
this.setAttribute("title", "edit line text");
this.editing = false; this.editing = false;
this.innerText = "✎"; this.innerText = "✎";
this.span.innerText = this.i.value; this.span.innerText = this.i.value;
@ -99,6 +113,7 @@ class LineEditor extends Button {
return; return;
} }
this.editing = true; this.editing = true;
this.setAttribute("title", "finish editing");
this.innerHTML = "<strong>✓</strong>"; this.innerHTML = "<strong>✓</strong>";
this.span.setAttribute("style", "display:none"); this.span.setAttribute("style", "display:none");
this.i.value = this.span.innerText; this.i.value = this.span.innerText;
@ -115,6 +130,9 @@ class LineInput extends HTMLInputElement {
} }
class LineDowner extends Button { class LineDowner extends Button {
connectedCallback() {
this.setAttribute("title", "move line down");
}
click() { click() {
const l = this.closest("div.line"); const l = this.closest("div.line");
const s = l.nextElementSibling; const s = l.nextElementSibling;

View File

@ -16,7 +16,7 @@ div.line:not(.unpinned) > .linetext {
</form> </form>
</template> </template>
<template id="linetmpl"> <template id="linetmpl">
<span class="linecontrols"> <span>
<button is="line-pinner">pin</button> <button is="line-pinner">pin</button>
<button is="line-editor">✎</button> <button is="line-editor">✎</button>
<button is="line-upper">↑</button> <button is="line-upper">↑</button>
@ -33,14 +33,17 @@ div.line:not(.unpinned) > .linetext {
<a href="/about">about</a> <a href="/about">about</a>
<a id="togglescheme" href="/#togglescheme">light|dark</a> <a id="togglescheme" href="/#togglescheme">light|dark</a>
</div> </div>
<p id="poemcontrols"> <p>
<button is="poem-regenner">regenerate unpinned lines</button>
<button is="poem-resetter">new</button> <button is="poem-resetter">new</button>
<button id="save">save</button> <button>save as text</button>
<button>save as image</button>
</p> </p>
<div style="margin-bottom: 5px">
<button is="poem-regenner">regenerate unpinned lines</button>
</div>
<div is="poem-lines"></div> <div is="poem-lines"></div>
<div> <div>
<button is="line-adder">add</button> <button is="line-adder" title="add line">+</button>
</div> </div>
</body> </body>
</html> </html>