diff --git a/web/src/elements/forms/ProxyForm.ts b/web/src/elements/forms/ProxyForm.ts index 32159572a..cb8e1a3ac 100644 --- a/web/src/elements/forms/ProxyForm.ts +++ b/web/src/elements/forms/ProxyForm.ts @@ -12,21 +12,23 @@ export class ProxyForm extends Form { @property({ attribute: false }) typeMap: Record = {}; + innerElement?: Form; + submit(ev: Event): Promise | undefined { - return (this.shadowRoot?.firstElementChild as Form).submit(ev); + return this.innerElement?.submit(ev); } resetForm(): void { - (this.shadowRoot?.firstElementChild as Form | undefined)?.resetForm(); + this.innerElement?.resetForm(); } getSuccessMessage(): string { - return (this.shadowRoot?.firstElementChild as Form).getSuccessMessage(); + return this.innerElement?.getSuccessMessage() || ""; } async requestUpdate(name?: PropertyKey | undefined, oldValue?: unknown): Promise { const result = await super.requestUpdate(name, oldValue); - await (this.shadowRoot?.firstElementChild as Form | undefined)?.requestUpdate(); + await this.innerElement?.requestUpdate(); return result; } @@ -35,11 +37,11 @@ export class ProxyForm extends Form { if (this.type in this.typeMap) { elementName = this.typeMap[this.type]; } - const el = document.createElement(elementName); + this.innerElement = document.createElement(elementName) as Form; for (const k in this.args) { - el.setAttribute(k, this.args[k] as string); - (el as unknown as Record)[k] = this.args[k]; + this.innerElement.setAttribute(k, this.args[k] as string); + (this.innerElement as unknown as Record)[k] = this.args[k]; } - return html`${el}`; + return html`${this.innerElement}`; } }