@jsxc/jsxc
Version:
Real-time XMPP chat application with video calls, file transfer and encrypted communication
38 lines (27 loc) • 930 B
text/typescript
import Navigation from './DialogNavigation';
export default abstract class Page {
private element: JQuery;
constructor(protected navigation: Navigation, private title: string) {}
public getDOM(): JQuery {
if (!this.element) {
this.generateDOM();
}
return this.element;
}
private generateDOM() {
this.element = $('<div>');
this.element.addClass('jsxc-page');
let legendElement = $('<h1>');
legendElement.addClass('jsxc-page__headline');
legendElement.text(this.title);
if (this.navigation.canGoBack()) {
legendElement.addClass('jsxc-clickable'); //@REVIEW
legendElement.on('click', () => {
this.navigation.goBack();
});
}
legendElement.appendTo(this.element);
this.element.append(this.generateContentElement());
}
protected abstract generateContentElement(): JQuery | JQuery[];
}