BetterDiscordApp-rauenzi/src/modules/settingsPanelSidebar.js

59 lines
2.1 KiB
JavaScript
Raw Normal View History

2020-03-28 03:44:59 +01:00
import {bbdChangelog} from "../0globals";
2020-02-27 08:01:51 +01:00
import Utils from "./utils";
import BDV2 from "./v2";
2020-03-29 11:17:12 +02:00
import DOM from "./domtools";
2020-02-27 08:01:51 +01:00
2020-03-25 05:19:02 +01:00
import SideBar from "../ui/sidebar";
2020-03-28 03:44:59 +01:00
import History from "../ui/icons/history";
import TooltipWrap from "../ui/tooltipWrap";
2020-02-27 08:01:51 +01:00
export default class V2_SettingsPanel_Sidebar {
constructor(onClick) {
this.onClick = onClick;
}
get items() {
return [{text: "Settings", id: "core"}, {text: "Emotes", id: "emotes"}, {text: "Plugins", id: "plugins"}, {text: "Themes", id: "themes"}, {text: "Custom CSS", id: "customcss"}];
}
get component() {
2020-03-28 03:44:59 +01:00
//<TooltipWrap color="black" side="top" text={title}>
const changelogButton = BDV2.react.createElement(TooltipWrap, {color: "black", side: "top", text: "Changelog"},
BDV2.react.createElement("div", {className: "bd-changelog-button", onClick: () => {Utils.showChangelogModal(bbdChangelog);}},
BDV2.react.createElement(History, {className: "bd-icon", size: "16px"})
)
);
return BDV2.react.createElement("span", null, BDV2.react.createElement(SideBar, {onClick: this.onClick, headerText: "Bandaged BD", headerButton: changelogButton, items: this.items}));
2020-02-27 08:01:51 +01:00
}
get root() {
2020-03-29 11:17:12 +02:00
const _root = DOM.query("#bd-settings-sidebar");
if (!_root) {
2020-02-27 08:01:51 +01:00
if (!this.injectRoot()) return null;
return this.root;
}
2020-03-29 11:17:12 +02:00
return _root;
2020-02-27 08:01:51 +01:00
}
injectRoot() {
2020-03-29 11:17:12 +02:00
const tabs = DOM.queryAll("[class*='side-'] > [class*='item-']:not([class*=Danger])");
const changeLog = tabs[tabs.length - 1];
if (!changeLog) return false;
changeLog.parentElement.insertBefore(DOM.createElement(`<div id="bd-settings-sidebar">`), changeLog.previousElementSibling);
2020-02-27 08:01:51 +01:00
return true;
}
render() {
const root = this.root;
if (!root) {
console.log("FAILED TO LOCATE ROOT: [class*='side-'] > [class*='item-']:not([class*=Danger])");
return;
}
BDV2.reactDom.render(this.component, root);
Utils.onRemoved(root, () => {
BDV2.reactDom.unmountComponentAtNode(root);
});
}
}