Files
zulip-desktop/app/renderer/js/components/tab.ts
Anders Kaseorg 07ffb09391 Explode BaseComponent class to a function.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-04-02 13:10:15 -07:00

52 lines
1.0 KiB
TypeScript

import type WebView from "./webview";
export interface TabProps {
role: string;
icon?: string;
name: string;
$root: Element;
onClick: () => void;
index: number;
tabIndex: number;
onHover?: () => void;
onHoverOut?: () => void;
webview: WebView;
materialIcon?: string;
onDestroy?: () => void;
}
export default class Tab {
props: TabProps;
webview: WebView;
$el: Element;
constructor(props: TabProps) {
this.props = props;
this.webview = this.props.webview;
}
registerListeners(): void {
this.$el.addEventListener("click", this.props.onClick);
this.$el.addEventListener("mouseover", this.props.onHover);
this.$el.addEventListener("mouseout", this.props.onHoverOut);
}
showNetworkError(): void {
this.webview.forceLoad();
}
activate(): void {
this.$el.classList.add("active");
this.webview.load();
}
deactivate(): void {
this.$el.classList.remove("active");
this.webview.hide();
}
destroy(): void {
this.$el.remove();
this.webview.$el.remove();
}
}