Skip to content
Snippets Groups Projects
Editors.js 2.54 KiB
Newer Older
chris's avatar
chris committed
import React, { useState } from 'react';
chris's avatar
chris committed
import styled, { css } from 'styled-components';
import { createGlobalStyle } from 'styled-components';

import Editoria from './Editoria/Editoria';
chris's avatar
chris committed
import HHMI from './HHMI/HHMI';
chris's avatar
chris committed
import NCBI from './NCBI/NCBI';
chris's avatar
chris committed
import OEN from './OEN/OEN';
chris's avatar
chris committed

import 'wax-prosemirror-core/dist/index.css';
import 'wax-prosemirror-services/dist/index.css';
import 'wax-prosemirror-questions/dist/index.css';
import 'wax-prosemirror-table/dist/index.css';

const GlobalStyle = createGlobalStyle`
  body {
    margin: 0;
    overflow-y: hidden;
    padding: 0;
  }

  #root {
    height:100vh;
    width:100vw;
  }
`;

chris's avatar
chris committed
const activeStyles = css`
chris's avatar
chris committed
  background: #535e76;
  color: #fff;
chris's avatar
chris committed
  padding: 8px 15px 8px 15px;
chris's avatar
chris committed
`;

chris's avatar
chris committed
const ProjectContainer = styled.div`
  display: flex;
chris's avatar
chris committed
  height: calc(100% - 65px);
chris's avatar
chris committed
`;

chris's avatar
chris committed
const ChooseProject = styled.div`
chris's avatar
chris committed
  background: #fff;
chris's avatar
chris committed
  display: flex;
  flex-direction: row;
  align-items: center;
chris's avatar
chris committed
  height: 60px;
chris's avatar
chris committed

  span {
    margin-right: 20px;
  }
`;

const Projects = styled.div`
  margin-left: 10px;
chris's avatar
chris committed

  span {
    font-size: 16px;
  }
chris's avatar
chris committed
`;

const ProjectButton = styled.button`
chris's avatar
chris committed
  border: 1px solid #535e76;
chris's avatar
chris committed
  cursor: pointer;
chris's avatar
chris committed
  color: #535e76;
chris's avatar
chris committed
  margin-right: 20px;
chris's avatar
chris committed
  background: #fff;
chris's avatar
chris committed
  padding: 8px 15px 8px 15px;
chris's avatar
chris committed
  ${props => props.isActive && activeStyles}
chris's avatar
chris committed
`;

const Editors = () => {
chris's avatar
chris committed
  const [project, setProject] = useState('hhmi');
chris's avatar
chris committed

  const displayProject = () => {
    switch (project) {
chris's avatar
chris committed
      case 'editoria':
        return <Editoria />;
chris's avatar
chris committed
      case 'ncbi':
chris's avatar
chris committed
        return <NCBI />;
chris's avatar
chris committed
      case 'oen':
        return <OEN />;
chris's avatar
chris committed
      default:
chris's avatar
chris committed
        return <HHMI />;
chris's avatar
chris committed
    }
  };

  return (
    <>
      <GlobalStyle />
chris's avatar
chris committed
      <ChooseProject>
        <Projects>
          <span>Select Project:</span>
chris's avatar
chris committed
          <ProjectButton
            isActive={project === 'hhmi'}
            onClick={() => setProject('hhmi')}
          >
            Widget Example
          </ProjectButton>
chris's avatar
chris committed
          <ProjectButton
            isActive={project === 'editoria'}
            onClick={() => setProject('editoria')}
          >
chris's avatar
chris committed
            Ketida
chris's avatar
chris committed
          </ProjectButton>
chris's avatar
chris committed
          <ProjectButton
chris's avatar
chris committed
            isActive={project === 'oen'}
            onClick={() => setProject('oen')}
          >
            OEN
chris's avatar
chris committed
          </ProjectButton>
chris's avatar
chris committed
          <ProjectButton
            isActive={project === 'ncbi'}
            onClick={() => setProject('ncbi')}
          >
chris's avatar
chris committed
            Basic Editors
chris's avatar
chris committed
          </ProjectButton>
chris's avatar
chris committed
        </Projects>
      </ChooseProject>
chris's avatar
chris committed
      <ProjectContainer>{displayProject()}</ProjectContainer>
    </>
  );
};

export default Editors;