web: rudimentary lazy loading for modals

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-03-29 11:57:53 +02:00
parent 76e571ea0a
commit 12bfa404c8
4 changed files with 11 additions and 8 deletions

View file

@ -136,6 +136,11 @@ export class ModalButton extends LitElement {
if (!this.href) {
this.updateHandlers();
this.open = true;
this.querySelectorAll("*").forEach(child => {
if ("requestUpdate" in child) {
(child as LitElement).requestUpdate();
}
});
} else {
const request = new Request(this.href);
fetch(request, {

View file

@ -100,6 +100,10 @@ export class Form<T> extends LitElement {
}
render(): TemplateResult {
const rect = this.getBoundingClientRect();
if (rect.x + rect.y + rect.width + rect.height === 0) {
return html``;
}
return html`<iron-form
@iron-form-presubmit=${(ev: Event) => { this.submit(ev); }}>
${this.renderForm()}

View file

@ -8,12 +8,6 @@ export class HorizontalFormElement extends LitElement {
static get styles(): CSSResult[] {
return [PFForm, PFFormControl, css`
slot {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-around;
}
.pf-c-form__group {
display: grid;
grid-template-columns: var(--pf-c-form--m-horizontal__group-label--md--GridColumnWidth) var(--pf-c-form--m-horizontal__group-control--md--GridColumnWidth);
@ -51,8 +45,8 @@ export class HorizontalFormElement extends LitElement {
</label>
</div>
<div class="pf-c-form__group-control">
<slot class="pf-c-form__horizontal-group"></slot>
<div class="pf-c-form__horizontal-group">
<slot></slot>
${this.invalid ? html`<p class="pf-c-form__helper-text pf-m-error" aria-live="polite">${this.errorMessage}</p>` : html``}
</div>
</div>

View file

@ -34,7 +34,7 @@ export class GroupForm extends Form<Group> {
<ak-form-element-horizontal label=${gettext("Name")} ?required=${true}>
<input type="text" name="name" value="${ifDefined(this.group?.name)}" class="pf-c-form-control" required="">
</ak-form-element-horizontal>
<ak-form-element-horizontal ?required=${true}>
<ak-form-element-horizontal>
<div class="pf-c-check">
<input type="checkbox" name="is_superuser" class="pf-c-check__input" ?checked=${this.group?.isSuperuser || false}>
<label class="pf-c-check__label">