Add event system
This commit is contained in:
parent
29e1546eb2
commit
5a87d2db71
15 changed files with 151 additions and 92 deletions
|
|
@ -1,16 +1,32 @@
|
|||
import { PageEvent, PageEventType } from "./page-event";
|
||||
|
||||
export abstract class PageElement {
|
||||
private element: HTMLElement;
|
||||
|
||||
// Getter and setter accessors would have to agree in visibility
|
||||
public getElement(): HTMLElement {
|
||||
return this._element;
|
||||
return this.element;
|
||||
}
|
||||
private _element: HTMLElement;
|
||||
|
||||
protected setElement(value: HTMLElement) {
|
||||
this._element = value;
|
||||
this.element = value;
|
||||
}
|
||||
|
||||
protected eventGenerator: PageElement;
|
||||
|
||||
protected constructor(private children: Array<PageElement> = []) {}
|
||||
|
||||
public onAfterLoad(parent: HTMLElement) {
|
||||
this.children.forEach(c => c.onAfterLoad(this.getElement()));
|
||||
public giveEvent(event: PageEvent, parent: PageElement = null) {
|
||||
if (event.type === PageEventType.eventGeneratorChanged) {
|
||||
this.eventGenerator = event.data;
|
||||
}
|
||||
this.handleEvent(event, parent);
|
||||
this.children.forEach(c => c.giveEvent(event, this));
|
||||
}
|
||||
|
||||
protected query(query: string): HTMLElement | null {
|
||||
return this.getElement()?.querySelector(query);
|
||||
}
|
||||
|
||||
protected handleEvent(event: PageEvent, parent: PageElement) {}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue