26 lines
878 B
TypeScript
26 lines
878 B
TypeScript
|
import { gettext } from "django";
|
||
|
import { LitElement } from "lit-element";
|
||
|
import { html, TemplateResult } from "lit-html";
|
||
|
|
||
|
export abstract class Page extends LitElement {
|
||
|
abstract pageTitle(): string;
|
||
|
abstract pageDescription(): string | undefined;
|
||
|
abstract pageIcon(): string;
|
||
|
|
||
|
abstract renderContent(): TemplateResult;
|
||
|
|
||
|
render(): TemplateResult {
|
||
|
const description = this.pageDescription();
|
||
|
return html`<section class="pf-c-page__main-section pf-m-light">
|
||
|
<div class="pf-c-content">
|
||
|
<h1>
|
||
|
<i class="${this.pageIcon()}"></i>
|
||
|
${gettext(this.pageTitle())}
|
||
|
</h1>
|
||
|
${description ? html`<p>${gettext(description)}</p>` : html``}
|
||
|
</div>
|
||
|
</section>
|
||
|
${this.renderContent()}`;
|
||
|
}
|
||
|
}
|