import { t } from "@lingui/macro"; import { css, CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element"; import "../../elements/Tabs"; import "../../elements/PageHeader"; import "../../elements/events/ObjectChangelog"; import "../../elements/buttons/SpinnerButton"; import "../policies/BoundPoliciesList"; import "./BoundStagesList"; import "./FlowDiagram"; import { Flow, FlowsApi } from "authentik-api"; import { DEFAULT_CONFIG } from "../../api/Config"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; import PFContent from "@patternfly/patternfly/components/Content/content.css"; import AKGlobal from "../../authentik.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import PFGallery from "@patternfly/patternfly/layouts/Gallery/gallery.css"; @customElement("ak-flow-view") export class FlowViewPage extends LitElement { @property() set flowSlug(value: string) { new FlowsApi(DEFAULT_CONFIG).flowsInstancesRead({ slug: value }).then((flow) => { this.flow = flow; }); } @property({attribute: false}) flow!: Flow; static get styles(): CSSResult[] { return [PFBase, PFPage, PFButton, PFCard, PFContent, PFGallery, AKGlobal].concat( css` img.pf-icon { max-height: 24px; } ak-tabs { height: 100%; } ` ); } render(): TemplateResult { if (!this.flow) { return html``; } return html` ${t`Related`} ${t`Execute flow`} { new FlowsApi(DEFAULT_CONFIG).flowsInstancesExecute({ slug: this.flow.slug }).then(link => { const finalURL = `${link.link}?next=/%23${window.location.href}`; window.open(finalURL, "_blank"); }); }}> ${t`Execute`} ${t`These bindings control which users can access this flow.`} `; } }