Skip to content
Snippets Groups Projects
App.tsx 2.46 KiB
Newer Older
import React from "react";
import "./App.scss";
import TopBar from "./organisms/TopBar";
import BottomBar from "./organisms/BottomBar";
danieldeng2's avatar
danieldeng2 committed
import {
  faBookOpen,
danieldeng2's avatar
danieldeng2 committed
  faCalendarWeek,
danieldeng2's avatar
danieldeng2 committed
  faChalkboardTeacher,
danieldeng2's avatar
danieldeng2 committed
} from "@fortawesome/free-solid-svg-icons";
import StandardView from "./pages/StandardView";
danieldeng2's avatar
danieldeng2 committed
type AppState = {
  toggledLeft: boolean;
danieldeng2's avatar
danieldeng2 committed
  toggledRight: boolean;
danieldeng2's avatar
danieldeng2 committed
class App extends React.Component<{}, AppState> {
  constructor(props: {}) {
    super(props);
danieldeng2's avatar
danieldeng2 committed
    this.state = { toggledLeft: false, toggledRight: false };
  }

  componentDidMount() {
    let interfaceSize = localStorage.getItem("interfaceSize");
    if (interfaceSize) {
      document.documentElement.style.fontSize = `${interfaceSize}%`;
		}
		
		window.addEventListener('resize', () => this.showOrHideSideBars());
		this.showOrHideSideBars();
	}
danieldeng2's avatar
danieldeng2 committed
  toggleLeftBar() {
		if (window.innerWidth <= 1024) {
      this.setState({
        toggledRight: false,
			});
		} 
danieldeng2's avatar
danieldeng2 committed
    this.setState((state) => ({
      toggledLeft: !state.toggledLeft,
    }));
danieldeng2's avatar
danieldeng2 committed
  toggleRightBar() {
		if (window.innerWidth <= 1024) {
danieldeng2's avatar
danieldeng2 committed
      this.setState({
        toggledLeft: false,
danieldeng2's avatar
danieldeng2 committed
    this.setState((state) => ({
      toggledRight: !state.toggledRight,
    }));
	showOrHideSideBars(){
		if (window.innerWidth <= 1024) {
      this.setState({
				toggledLeft: false,
        toggledRight: false,
			});
		} else{
			this.setState({
				toggledLeft: true,
        toggledRight: true,
			});
		}
	}

  render() {
    const horizontalBarPages = [
      { name: "Dashboard", path: "/dashboard", icon: faHome },
danieldeng2's avatar
danieldeng2 committed
      { name: "Modules", path: "/modules", icon: faChalkboardTeacher },
danieldeng2's avatar
danieldeng2 committed
      { name: "Timeline", path: "/timeline", icon: faCalendarWeek },
danieldeng2's avatar
danieldeng2 committed
      { name: "Exams", path: "/exams", icon: faBookOpen },
        <TopBar
          pages={horizontalBarPages}
danieldeng2's avatar
danieldeng2 committed
          onFavIconClick={(e) => {
danieldeng2's avatar
danieldeng2 committed
            e.preventDefault();
            this.toggleLeftBar();
          }}
danieldeng2's avatar
danieldeng2 committed
          onUserIconClick={(e) => {
danieldeng2's avatar
danieldeng2 committed
            e.preventDefault();
            this.toggleRightBar();
          }}
        />

        <StandardView
          pages={horizontalBarPages}
          toggledLeft={this.state.toggledLeft}
danieldeng2's avatar
danieldeng2 committed
          toggledRight={this.state.toggledRight}
danieldeng2's avatar
danieldeng2 committed
          onOverlayClick={(e) => {
danieldeng2's avatar
danieldeng2 committed
            e.preventDefault();
            this.setState({ toggledLeft: false, toggledRight: false });
          }}

        <BottomBar pages={horizontalBarPages} />
      </>
    );
  }
}

export default App;