web/admin: add new base form to handle refresh events
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
3208358a03
commit
d4493c0ee9
|
@ -15,6 +15,7 @@ import { MessageLevel } from "../messages/Message";
|
||||||
import { IronFormElement } from "@polymer/iron-form/iron-form";
|
import { IronFormElement } from "@polymer/iron-form/iron-form";
|
||||||
import { camelToSnake, convertToSlug } from "../../utils";
|
import { camelToSnake, convertToSlug } from "../../utils";
|
||||||
import { ValidationError } from "authentik-api/src";
|
import { ValidationError } from "authentik-api/src";
|
||||||
|
import { EVENT_REFRESH } from "../../constants";
|
||||||
|
|
||||||
export class APIError extends Error {
|
export class APIError extends Error {
|
||||||
|
|
||||||
|
@ -140,6 +141,12 @@ export class Form<T> extends LitElement {
|
||||||
level: MessageLevel.success,
|
level: MessageLevel.success,
|
||||||
message: this.getSuccessMessage()
|
message: this.getSuccessMessage()
|
||||||
});
|
});
|
||||||
|
this.dispatchEvent(
|
||||||
|
new CustomEvent(EVENT_REFRESH, {
|
||||||
|
bubbles: true,
|
||||||
|
composed: true,
|
||||||
|
})
|
||||||
|
);
|
||||||
return r;
|
return r;
|
||||||
}).catch((ex: Response) => {
|
}).catch((ex: Response) => {
|
||||||
if (ex.status > 399 && ex.status < 500) {
|
if (ex.status > 399 && ex.status < 500) {
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { property } from "lit-element";
|
||||||
|
import { EVENT_REFRESH } from "../../constants";
|
||||||
|
import { Form } from "./Form";
|
||||||
|
|
||||||
|
export abstract class ModelForm<T, PKT> extends Form<T> {
|
||||||
|
|
||||||
|
abstract loadInstance(pk: PKT): Promise<T>;
|
||||||
|
|
||||||
|
@property()
|
||||||
|
set instancePk(value: PKT) {
|
||||||
|
this._instancePk = value;
|
||||||
|
this.loadInstance(value).then(instance => {
|
||||||
|
this.instance = instance;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private _instancePk?: PKT;
|
||||||
|
|
||||||
|
@property({ attribute: false })
|
||||||
|
instance?: T;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.addEventListener(EVENT_REFRESH, () => {
|
||||||
|
if (!this._instancePk) return;
|
||||||
|
this.loadInstance(this._instancePk).then(instance => {
|
||||||
|
this.instance = instance;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in New Issue