Something went wrong. Try again.
Mirror of https://github.com/improsocial/improAn extensible Bluesky client for web
Something went wrong. Try again.
2.3 kB · 77 lines
JavaScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import { html, render } from "/js/lib/lit-html.js";import { Component, getChildrenFragment } from "/js/components/component.js";import { infoIconTemplate } from "/js/templates/icons/infoIcon.template.js";import { eyeSlashIconTemplate } from "/js/templates/icons/eyeSlashIcon.template.js";
class ModerationWarning extends Component { connectedCallback() { if (this._initialized) { return; } this.label = this.getAttribute("label"); this.labelerLink = this.getAttribute("labelerLink"); this.labelerName = this.getAttribute("labelerName"); this.iconStyle = this.getAttribute("icon-style") ?? "info"; this.expanded = false; this._children = getChildrenFragment(this); this.innerHTML = ""; this.render(); this._initialized = true; }
render() { const iconTemplate = this.iconStyle === "closed-eye" ? eyeSlashIconTemplate : infoIconTemplate; render( html` <div class="top-bar" aria-expanded=${this.expanded} tabindex="0" role="button" @click=${() => this.toggle()} @keydown=${(e) => { if (e.key === "Enter" || e.key === " ") { e.preventDefault(); e.stopPropagation(); this.toggle(); } }} > <span class="moderation-warning-label"> ${iconTemplate()} <span>${this.label}</span> </span> <label class="show-hide-label"> ${this.expanded ? "Hide" : "Show"} </label> </div> <div class="toggle-content" ?hidden=${!this.expanded}></div> ${this.labelerName ? html`<div class="post-moderation-warning-description" ?hidden=${this.expanded} > Labeled by ${this.labelerLink ? html`<a href="${this.labelerLink}">${this.labelerName}</a>` : this.labelerName} </div>` : ""} `, this, );
const toggleContent = this.querySelector(".toggle-content"); if (toggleContent) { toggleContent.appendChild(this._children); } }
toggle() { this.expanded = !this.expanded; this.render(); }}
ModerationWarning.register();