use custom elements throughout
This commit is contained in:
parent
6d517b1c5c
commit
b2a7e31eb9
@ -1,12 +1,33 @@
|
|||||||
|
class LineRemover extends HTMLButtonElement {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.container = this.closest("div.linecontainer").parentElement;
|
||||||
|
this.addEventListener("click", (e) => {
|
||||||
|
this.container.remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define("line-remover", LineRemover, { extends: "button" });
|
||||||
|
|
||||||
|
class LineAdder extends HTMLButtonElement {
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.addEventListener("click", (e) => {
|
||||||
|
document.querySelector("div[is=lines-div]").add()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define("line-adder", LineAdder, { extends: "button" });
|
||||||
|
|
||||||
class PoemLine extends HTMLDivElement {
|
class PoemLine extends HTMLDivElement {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
const ltp = document.querySelector("#linetmpl");
|
const ltp = document.querySelector("#linetmpl");
|
||||||
var l = ltp.content.cloneNode(true);
|
var l = ltp.content.cloneNode(true);
|
||||||
this.appendChild(l);
|
this.appendChild(l);
|
||||||
this.addEventListener("regen", function() {
|
this.addEventListener("regen", this.regen); // TODO will this be bound?
|
||||||
console.log("poot");
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
regen() {
|
regen() {
|
||||||
@ -23,18 +44,22 @@ class PoemLine extends HTMLDivElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
customElements.define("poem-line", PoemLine, { extends: "div" });
|
customElements.define("poem-line", PoemLine, { extends: "div" });
|
||||||
|
|
||||||
const regen = new Event("regen");
|
const regen = new Event("regen");
|
||||||
|
|
||||||
function addLine() {
|
class Lines extends HTMLDivElement {
|
||||||
var ld = document.createElement("div", { is: "poem-line" });
|
constructor() {
|
||||||
document.querySelector("#lines").append(ld);
|
super();
|
||||||
ld.regen();
|
for (var i = 0; i < 10; i++) {
|
||||||
}
|
this.add();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function main() {
|
add() {
|
||||||
for (var i = 0; i < 10; i++) {
|
var ld = document.createElement("div", { is: "poem-line" });
|
||||||
addLine();
|
this.append(ld);
|
||||||
|
ld.regen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
main();
|
customElements.define("lines-div", Lines, { extends: "div" });
|
||||||
|
@ -12,16 +12,17 @@
|
|||||||
<template id="linetmpl">
|
<template id="linetmpl">
|
||||||
<div class="linecontainer unpinned" hx-trigger="regen from:body" hx-swap="outerHTML" hx-get="/line">
|
<div class="linecontainer unpinned" hx-trigger="regen from:body" hx-swap="outerHTML" hx-get="/line">
|
||||||
<span class="linecontrols">
|
<span class="linecontrols">
|
||||||
<button class="pin">pin</button>
|
<button >pin</button>
|
||||||
<button class"edit">edit</button>
|
<button >edit</button>
|
||||||
<button class="moveup">up</button>
|
<button >up</button>
|
||||||
<button class="movedown">down</button>
|
<button >down</button>
|
||||||
<button class="remove">remove</button>
|
<button is="line-remover">remove</button>
|
||||||
</span>
|
</span>
|
||||||
<span class="linetext"></span>
|
<span class="linetext"></span>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<h1>Trunkless</h1>
|
<h1>Trunkless</h1>
|
||||||
|
<script src="/main.js"></script>
|
||||||
<div id="pagecontrols">
|
<div id="pagecontrols">
|
||||||
<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>
|
||||||
@ -34,11 +35,10 @@
|
|||||||
<p id="dna">
|
<p id="dna">
|
||||||
todo, dna display
|
todo, dna display
|
||||||
</p>
|
</p>
|
||||||
<div id="lines"></div>
|
<div is="lines-div"></div>
|
||||||
<div>
|
<div>
|
||||||
<button>add</button>
|
<button is="line-adder">add</button>
|
||||||
</div>
|
</div>
|
||||||
<script src="/main.js"></script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user