55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
|
import { CSSResult, LitElement, TemplateResult, css, html } from "lit";
|
||
|
import { customElement, state } from "lit/decorators.js";
|
||
|
|
||
|
import AKGlobal from "../authentik.css";
|
||
|
import PFTooltip from "@patternfly/patternfly/components/Tooltip/Tooltip.css";
|
||
|
import PFBase from "@patternfly/patternfly/patternfly-base.css";
|
||
|
|
||
|
@customElement("ak-tooltip")
|
||
|
export class Tooltip extends LitElement {
|
||
|
@state()
|
||
|
open = false;
|
||
|
|
||
|
static get styles(): CSSResult[] {
|
||
|
return [
|
||
|
PFBase,
|
||
|
PFTooltip,
|
||
|
AKGlobal,
|
||
|
css`
|
||
|
.pf-c-tooltip__content {
|
||
|
text-align: inherit;
|
||
|
}
|
||
|
.outer {
|
||
|
position: relative;
|
||
|
}
|
||
|
.pf-c-tooltip {
|
||
|
position: absolute;
|
||
|
}
|
||
|
`,
|
||
|
];
|
||
|
}
|
||
|
|
||
|
render(): TemplateResult {
|
||
|
return html`<slot
|
||
|
@mouseenter=${() => {
|
||
|
this.open = true;
|
||
|
}}
|
||
|
@mouseleave=${() => {
|
||
|
this.open = false;
|
||
|
}}
|
||
|
name="trigger"
|
||
|
></slot>
|
||
|
${this.open
|
||
|
? html`<div class="outer">
|
||
|
<div class="pf-c-tooltip" role="tooltip">
|
||
|
<div class="pf-c-tooltip__arrow"></div>
|
||
|
|
||
|
<div class="pf-c-tooltip__content">
|
||
|
<slot name="tooltip"></slot>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>`
|
||
|
: html``}`;
|
||
|
}
|
||
|
}
|