BetterDiscordApp-rauenzi/src/ui/settings/sidebarmenu.js

68 lines
2.0 KiB
JavaScript
Raw Normal View History

2019-05-30 07:06:17 +02:00
import {React} from "modules";
2019-05-28 23:27:25 +02:00
import TabBar from "./tabbar";
2019-05-30 07:06:17 +02:00
export default class V2C_SideBar extends React.Component {
2019-05-28 20:19:48 +02:00
constructor(props) {
super(props);
const self = this;
2019-05-28 20:19:48 +02:00
const si = $("[class*=side] > [class*=selected]");
if (si.length) self.scn = si.attr("class");
const ns = $("[class*=side] > [class*=notSelected]");
if (ns.length) self.nscn = ns.attr("class");
$("[class*='side-'] > [class*='item-']").on("click", () => {
self.setState({
selected: null
});
});
self.setInitialState();
self.onClick = self.onClick.bind(self);
}
setInitialState() {
const self = this;
2019-05-28 20:19:48 +02:00
self.state = {
selected: null,
items: self.props.items
};
const initialSelection = self.props.items.find(item => {
2019-05-28 20:19:48 +02:00
return item.selected;
});
if (initialSelection) {
self.state.selected = initialSelection.id;
}
}
render() {
const self = this;
const {headerText} = self.props;
const {items, selected} = self.state;
2019-05-30 07:06:17 +02:00
return React.createElement(
2019-05-28 20:19:48 +02:00
"div",
null,
2019-05-30 07:06:17 +02:00
React.createElement(TabBar.Separator, null),
React.createElement(TabBar.Header, {text: headerText}),
2019-05-28 20:19:48 +02:00
items.map(item => {
const {id, text} = item;
2019-05-30 07:06:17 +02:00
return React.createElement(TabBar.Item, {key: id, selected: selected === id, text: text, id: id, onClick: self.onClick});
2019-05-28 20:19:48 +02:00
})
);
}
onClick(id) {
const self = this;
2019-05-28 20:19:48 +02:00
const si = $("[class*=side] > [class*=selected]");
if (si.length) {
si.off("click.bdsb").on("click.bsb", e => {
$(e.target).attr("class", self.scn);
});
si.attr("class", self.nscn);
}
self.setState({selected: null});
self.setState({selected: id});
if (self.props.onClick) self.props.onClick(id);
}
}