summaryrefslogtreecommitdiffstats
path: root/fretboard.mjs
diff options
context:
space:
mode:
authorBrian Cully <bjc@spork.org>2025-05-12 09:52:18 -0400
committerBrian Cully <bjc@spork.org>2025-05-12 09:52:18 -0400
commit9353c94aedf64384afdcef3bc9cffbcc6e348d73 (patch)
tree44bd1d274859dfea8df5a95aba45b630d80d9e12 /fretboard.mjs
parent6ca6c457227b2cb46ae45b4990b60d06ca33589e (diff)
downloadchords-9353c94aedf64384afdcef3bc9cffbcc6e348d73.tar.gz
chords-9353c94aedf64384afdcef3bc9cffbcc6e348d73.zip
convert to web components
one less thing to hard-code: element ids, which were brittle already.
Diffstat (limited to 'fretboard.mjs')
-rw-r--r--fretboard.mjs49
1 files changed, 38 insertions, 11 deletions
diff --git a/fretboard.mjs b/fretboard.mjs
index 8b330cc..38fdc0f 100644
--- a/fretboard.mjs
+++ b/fretboard.mjs
@@ -83,15 +83,42 @@ function openClick(e) {
formChanged(elt.closest('form'));
}
-export default function (form) {
- console.debug('Fretboard()', form);
- form.onchange = handleFormChanged;
- form.querySelectorAll('.open').forEach(elt => {
- elt.onclick = openClick;
- });
- form.querySelectorAll('input[type="radio"]').forEach(elt => {
- elt.onmousedown = fretMousedown;
- elt.onclick = fretClick;
- });
- formChanged(form);
+// export default function (form, { onSave }) {
+// }
+
+export default class extends HTMLElement {
+ static name = 'x-fretboard'
+ static register() {
+ console.debug('Registering Element', this.name, this);
+ customElements.define(this.name, this);
+ }
+
+ constructor() {
+ super();
+
+ console.debug('Fretboard#constructor', this);
+ }
+
+ connectedCallback() {
+ console.debug('Fretboard#connectedCallback', this);
+
+ // TODO: don't trawl the dom, custom element means we know
+ // what's inside.
+ const form = this.querySelector('form');
+ form.onchange = handleFormChanged;
+ form.querySelectorAll('.open').forEach(elt => {
+ elt.onclick = openClick;
+ });
+ form.querySelectorAll('input[type="radio"]').forEach(elt => {
+ elt.onmousedown = fretMousedown;
+ elt.onclick = fretClick;
+ });
+ form.querySelectorAll('.save').forEach(elt => {
+ elt.onclick = (e) => {
+ e.preventDefault();
+ console.log('Fretboard#onSave');
+ };
+ })
+ formChanged(form);
+ }
}