Skip to content
Snippets Groups Projects
App.tsx 1.92 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,
  faChalkboardTeacher,
} 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}%`;
		}
	}
danieldeng2's avatar
danieldeng2 committed
  toggleLeftBar() {
    this.setState((state) => ({
      toggledLeft: !state.toggledLeft,
danieldeng2's avatar
danieldeng2 committed
  toggleRightBar() {
    this.setState((state) => ({
      toggledRight: !state.toggledRight,
    }));
  }

  render() {
    const horizontalBarPages = [
      { name: "Home", path: "/home", icon: faHome },
danieldeng2's avatar
danieldeng2 committed
      { name: "Modules", path: "/modules", icon: faChalkboardTeacher },
      { name: "Timetable", path: "/timetable", icon: faCalendarWeek },
      { name: "Exams", path: "/exams", icon: faBookOpen },
    ];

    return (
      <>
        <TopBar
          pages={horizontalBarPages}
danieldeng2's avatar
danieldeng2 committed
          onFavIconClick={(e) => {
            e.preventDefault();
            this.toggleLeftBar();
          }}
          onUserIconClick={(e) => {
            e.preventDefault();
            this.toggleRightBar();
          }}
        />

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

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

export default App;