mirror of
https://git.sr.ht/~cadence/bibliogram
synced 2024-11-22 08:07:30 +00:00
git subrepo clone --branch=master /home/cloud/Code/pinski-plugins/elemjs src/site/html/static/js/elemjs
subrepo: subdir: "src/site/html/static/js/elemjs" merged: "20ef654" upstream: origin: "/home/cloud/Code/pinski-plugins/elemjs" branch: "master" commit: "20ef654" git-subrepo: version: "0.4.0" origin: "https://github.com/ingydotnet/git-subrepo" commit: "5d6aba9"
This commit is contained in:
parent
dce68b9707
commit
32e4f3d854
12
src/site/html/static/js/elemjs/.gitrepo
Normal file
12
src/site/html/static/js/elemjs/.gitrepo
Normal file
@ -0,0 +1,12 @@
|
||||
; DO NOT EDIT (unless you know what you are doing)
|
||||
;
|
||||
; This subdirectory is a git "subrepo", and this file is maintained by the
|
||||
; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme
|
||||
;
|
||||
[subrepo]
|
||||
remote = /home/cloud/Code/pinski-plugins/elemjs
|
||||
branch = master
|
||||
commit = 20ef654b4c572cfdb6ca7fa27e04326e7eab1be2
|
||||
parent = dce68b9707f1c0a04d828dac549666c70583e624
|
||||
method = merge
|
||||
cmdver = 0.4.0
|
81
src/site/html/static/js/elemjs/elemjs.js
Normal file
81
src/site/html/static/js/elemjs/elemjs.js
Normal file
@ -0,0 +1,81 @@
|
||||
/** @returns {HTMLElement} */
|
||||
function q(s) {
|
||||
return document.querySelector(s)
|
||||
}
|
||||
|
||||
class ElemJS {
|
||||
constructor(type) {
|
||||
if (type instanceof HTMLElement) this.bind(type)
|
||||
else this.bind(document.createElement(type))
|
||||
this.children = [];
|
||||
}
|
||||
bind(element) {
|
||||
/** @type {HTMLElement} */
|
||||
this.element = element
|
||||
// @ts-ignore
|
||||
this.element.js = this
|
||||
this.element.setAttribute("data-elemjs", "")
|
||||
return this
|
||||
}
|
||||
class() {
|
||||
for (let name of arguments) if (name) this.element.classList.add(name);
|
||||
return this;
|
||||
}
|
||||
removeClass() {
|
||||
for (let name of arguments) if (name) this.element.classList.remove(name);
|
||||
return this;
|
||||
}
|
||||
direct(name, value) {
|
||||
if (name) this.element[name] = value;
|
||||
return this;
|
||||
}
|
||||
attribute(name, value) {
|
||||
if (name) this.element.setAttribute(name, value);
|
||||
return this;
|
||||
}
|
||||
style(name, value) {
|
||||
if (name) this.element.style[name] = value;
|
||||
return this;
|
||||
}
|
||||
id(name) {
|
||||
if (name) this.element.id = name;
|
||||
return this;
|
||||
}
|
||||
text(name) {
|
||||
this.element.innerText = name;
|
||||
return this;
|
||||
}
|
||||
addText(name) {
|
||||
const node = document.createTextNode(name)
|
||||
this.element.appendChild(node)
|
||||
return this
|
||||
}
|
||||
html(name) {
|
||||
this.element.innerHTML = name;
|
||||
return this;
|
||||
}
|
||||
event(name, callback) {
|
||||
this.element.addEventListener(name, event => callback(event))
|
||||
}
|
||||
child(toAdd, position) {
|
||||
if (typeof(toAdd) == "object") {
|
||||
toAdd.parent = this;
|
||||
if (typeof(position) == "number" && position >= 0) {
|
||||
this.element.insertBefore(toAdd.element, this.element.children[position]);
|
||||
this.children.splice(position, 0, toAdd);
|
||||
} else {
|
||||
this.element.appendChild(toAdd.element);
|
||||
this.children.push(toAdd);
|
||||
}
|
||||
} else if (typeof toAdd === "string") {
|
||||
this.text(toAdd)
|
||||
}
|
||||
return this;
|
||||
}
|
||||
clearChildren() {
|
||||
this.children.length = 0;
|
||||
while (this.element.lastChild) this.element.removeChild(this.element.lastChild);
|
||||
}
|
||||
}
|
||||
|
||||
export {q, ElemJS}
|
Loading…
Reference in New Issue
Block a user