import { customElement, property } from "lit/decorators.js"; import {repeat} from 'lit/directives/repeat.js'; import { FeedobellElement } from "../FeedobellElement"; import { ContentTypes, type TContent } from "@feedobell/client"; import { html } from "lit"; import "../post/post.ts"; import "../poll/poll.ts"; @customElement("feedobell-sidebar") export class FeedobellSidebar extends FeedobellElement { @property({ attribute: "is-open", type: Boolean }) isOpen: boolean = false; @property({ attribute: "on-close" }) onClose: () => void = () => {}; @property({ attribute: "content", type: Array }) content: Array = []; @property({ attribute: "error-message" }) errorMessage: string | null = null; @property({ attribute: "on-error-clear" }) onErrorClear: () => void = () => {}; @property({attribute: "is-content-loading",type: Boolean}) isContentLoading: boolean = false; private _renderHeader() { return html`

Latest Updates

`; } private _renderErrorMessage() { if (!this.errorMessage) return null; return html`
${this.errorMessage}
`; } private _renderFooter() { return html`
Powered by window.open("https://www.feedobell.com", "_blank")} > Feedobell
`; } private _renderLoading() { return html`
`; } private _renderContent() { return repeat( this.content, (dt) => dt._id, (dt) => { if (dt.contentType === ContentTypes.POST) { return html``; } if (dt.contentType === ContentTypes.POLL) { return html``; } } ); } render() { return html`
${this._renderHeader()} ${this._renderErrorMessage()}
${this.isContentLoading ? this._renderLoading() : this._renderContent() }
${this._renderFooter()}
`; } } declare global { interface HTMLElementTagNameMap { "feedobell-sidebar": FeedobellSidebar; } }