Skip to content
Snippets Groups Projects
App.tsx 2.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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}%`;
        }
      }
    
    danieldeng2's avatar
    danieldeng2 committed
      toggleLeftBar() {
    
        if (window.innerWidth < 992) {
    
    danieldeng2's avatar
    danieldeng2 committed
          this.setState({
    
            toggledRight: false,
    
    danieldeng2's avatar
    danieldeng2 committed
          });
    
    danieldeng2's avatar
    danieldeng2 committed
        this.setState((state) => ({
          toggledLeft: !state.toggledLeft,
        }));
    
    danieldeng2's avatar
    danieldeng2 committed
      toggleRightBar() {
    
        if (window.innerWidth < 992) {
    
    danieldeng2's avatar
    danieldeng2 committed
          this.setState({
            toggledLeft: false,
          });
    
    danieldeng2's avatar
    danieldeng2 committed
        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 },
    
    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;