web/elements: add Chip and ChipGroup
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
7c761ff3d9
commit
75bc7c1cbd
39
web/src/elements/chips/Chip.ts
Normal file
39
web/src/elements/chips/Chip.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import { CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element";
|
||||
|
||||
import PFBase from "@patternfly/patternfly/patternfly-base.css";
|
||||
import PFButton from "@patternfly/patternfly/components/Button/button.css";
|
||||
import PFChip from "@patternfly/patternfly/components/Chip/chip.css";
|
||||
import AKGlobal from "../../authentik.css";
|
||||
|
||||
@customElement("ak-chip")
|
||||
export class Chip extends LitElement {
|
||||
|
||||
@property()
|
||||
value?: number | string;
|
||||
|
||||
@property({type: Boolean})
|
||||
removable = false;
|
||||
|
||||
static get styles(): CSSResult[] {
|
||||
return [PFBase, PFButton, PFChip, AKGlobal];
|
||||
}
|
||||
|
||||
render(): TemplateResult {
|
||||
return html`<li class="pf-c-chip-group__list-item">
|
||||
<div class="pf-c-chip">
|
||||
<span class="pf-c-chip__text">
|
||||
<slot></slot>
|
||||
</span>
|
||||
${this.removable ? html`<button class="pf-c-button pf-m-plain" type="button" @click=${() => {
|
||||
this.dispatchEvent(new CustomEvent("remove", {
|
||||
bubbles: true,
|
||||
composed: true,
|
||||
}));
|
||||
}}>
|
||||
<i class="fas fa-times" aria-hidden="true"></i>
|
||||
</button>` : html``}
|
||||
</div>
|
||||
</li>`;
|
||||
}
|
||||
|
||||
}
|
37
web/src/elements/chips/ChipGroup.ts
Normal file
37
web/src/elements/chips/ChipGroup.ts
Normal file
|
@ -0,0 +1,37 @@
|
|||
import { CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element";
|
||||
|
||||
import PFBase from "@patternfly/patternfly/patternfly-base.css";
|
||||
import PFChip from "@patternfly/patternfly/components/Chip/chip.css";
|
||||
import PFChipGroup from "@patternfly/patternfly/components/ChipGroup/chip-group.css";
|
||||
import PFButton from "@patternfly/patternfly/components/Button/button.css";
|
||||
import AKGlobal from "../../authentik.css";
|
||||
import { Chip } from "./Chip";
|
||||
|
||||
@customElement("ak-chip-group")
|
||||
export class ChipGroup extends LitElement {
|
||||
|
||||
static get styles(): CSSResult[] {
|
||||
return [PFBase, PFChip, PFChipGroup, PFButton, AKGlobal];
|
||||
}
|
||||
|
||||
set value(v: (string | number | undefined)[]) {}
|
||||
|
||||
get value(): (string | number | undefined)[] {
|
||||
const values: (string | number | undefined)[] = [];
|
||||
this.querySelectorAll<Chip>("ak-chip").forEach(chip => {
|
||||
values.push(chip.value);
|
||||
});
|
||||
return values;
|
||||
}
|
||||
|
||||
render(): TemplateResult {
|
||||
return html`<div class="pf-c-chip-group">
|
||||
<div class="pf-c-chip-group__main">
|
||||
<ul class="pf-c-chip-group__list" role="list">
|
||||
<slot></slot>
|
||||
</ul>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
|
||||
}
|
Reference in a new issue