Files
authentik/web/src/elements/buttons/ActionButton.ts
Jens Langhammer 526af26536 web/admin: migrate user forms to web
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
2021-03-29 16:16:27 +02:00

44 lines
1.3 KiB
TypeScript

import { customElement, property } from "lit-element";
import { ERROR_CLASS, SUCCESS_CLASS } from "../../constants";
import { SpinnerButton } from "./SpinnerButton";
import { showMessage } from "../messages/MessageContainer";
import { MessageLevel } from "../messages/Message";
@customElement("ak-action-button")
export class ActionButton extends SpinnerButton {
@property()
url = "";
@property()
method = "POST";
@property({attribute: false})
// eslint-disable-next-line @typescript-eslint/no-explicit-any
apiRequest: () => Promise<any> = () => { throw new Error(); };
defaultCallAction(): void {
if (this.isRunning === true) {
return;
}
this.setLoading();
this.apiRequest().then(() => {
this.setDone(SUCCESS_CLASS);
}).catch((e: Error | Response) => {
if (e instanceof Error) {
showMessage({
level: MessageLevel.error,
message: e.toString()
});
} else {
e.text().then(t => {
showMessage({
level: MessageLevel.error,
message: t
});
});
}
this.setDone(ERROR_CLASS);
});
}
}