revamped settings frontend

This commit is contained in:
huangjx
2022-07-29 21:09:08 +08:00
parent 9075c8fb50
commit e85b8b87ba
15 changed files with 648 additions and 337 deletions

View File

@@ -8,31 +8,30 @@ type dataItems = {
type data = Array<dataItems>
class settingsForm {
parent = "custom-aria2-settings-container";
constructor() {
container;
constructor(containerId?: string) {
this.container = containerId
}
static getInstance() {
return new this();
static getInstance(containerId?: string) {
return new this(containerId);
}
setParent(selector: string): settingsForm {
this.parent = selector;
setContainer(selector: string): settingsForm {
this.container = selector;
return this;
}
create(parent: HTMLElement, element: dataItems) {
create(containerEle: HTMLElement, element: dataItems) {
let label = this._createLabel(element.name, element.id)
let input = this._createInput(element);
//let saveBtn = this._createSaveBtn(element.id);
let cancelBtn = this._createCancelBtn("has-content");
let container = this._createContainer(element.id);
let wrapper = this._createContainer(element.id);
[label, input, cancelBtn].forEach(ele => {
container.appendChild(ele);
wrapper.appendChild(ele);
})
return parent.prepend(container);
return containerEle.prepend(wrapper);
}
createCustomInput(keyId: string, valueId: string): HTMLElement {
createInputGroup(keyId: string, valueId: string): HTMLElement {
let div = this._createContainer(keyId + "-container")
let items: dataItems = {
id: keyId,
@@ -48,7 +47,8 @@ class settingsForm {
_createContainer(id: string): HTMLElement {
let div = document.createElement("div");
div.classList.add(id);
div.setAttribute("id",id);
div.classList.add("autocomplete-container")
return div;
}
_createCancelBtn(className = ''): HTMLElement {
@@ -57,6 +57,10 @@ class settingsForm {
button.classList.add(className);
//button.setAttribute("type",'button')
button.classList.add("icon-close");
button.addEventListener("click", function () {
let container = this.parentNode as HTMLElement
container.remove()
})
return button;
}
_createSaveBtn(id: string): HTMLElement {
@@ -68,7 +72,7 @@ class settingsForm {
}
_createLabel(name: string, id: string): HTMLElement {
name = name.replace('_', '-');
let label = document.createElement("lable");
let label = document.createElement("label");
label.setAttribute("for", id);
let text = document.createTextNode(name);
label.appendChild(text);
@@ -90,9 +94,12 @@ class settingsForm {
return input;
}
render(data: data) {
let parent = document.getElementById(this.parent)
let container = document.getElementById(this.container)
if (!container) {
throw this.container + " is not found"
}
for (const element of data) {
this.create(parent, element)
this.create(container, element)
}
}
}