You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemmionic5/Mohem/src/app/uI-elements/ui-element.ts

65 lines
1.4 KiB
TypeScript

export class UiElement {
constructor(private elementID, private containerID, private viewClass) {
}
private getContainer() {
return document.getElementById(this.containerID);
}
public createElement(html: string) {
const container = this.getContainer();
if (container) {
container.appendChild(this.getElement(html));
}
// this.registerEvents(onConfirm, onCancel);
}
public delete() {
const element = document.getElementById(this.elementID);
if (element) {
element.remove();
}
}
public onClicked(listener: any) {
this.registerEvent('click', listener);
}
public onChanged(listener: any) {
this.registerEvent('change', listener);
}
public onBlur(listener: any) {
this.registerEvent('blur', listener);
}
private registerEvent(event: string, listener: any) {
const element = document.getElementById(this.elementID);
element.addEventListener(event, (e) => {
if (listener) {
listener();
}
e.stopImmediatePropagation();
});
}
private getElement(html: string) {
const elemDiv = document.createElement('div');
//elemDiv.id = this.elementID;
elemDiv.className = this.viewClass;
elemDiv.innerHTML = html;
return elemDiv;
}
public getValue() {
return (document.getElementById(this.elementID) as HTMLInputElement).value;
}
}