diff --git a/client/helpers/dom.js b/client/helpers/dom.js index 4db3ab98..33274dbd 100644 --- a/client/helpers/dom.js +++ b/client/helpers/dom.js @@ -1,8 +1,15 @@ -export function screenHeight(){ +export function screenHeight(withMenuBar){ const $breadcrumb = document.querySelector(".component_breadcrumb"); - const $menubar = document.querySelector(".component_menubar"); - let size = document.body.clientHeight; - if($breadcrumb){ size -= $breadcrumb.clientHeight; } - if($menubar){ size -= $menubar.clientHeight; } + let size = document.body.offsetHeight; + if($breadcrumb){ size -= $breadcrumb.offsetHeight; } + return size; +} + +export function screenHeightWithMenubar(){ + const $breadcrumb = document.querySelector(".component_breadcrumb"); + const $menubar = document.querySelector(".component_menubar"); + let size = document.body.offsetHeight; + if($breadcrumb){ size -= $breadcrumb.offsetHeight; } + if($menubar){ size -= $menubar.offsetHeight; } return size; } diff --git a/client/helpers/index.js b/client/helpers/index.js index 4016e64b..766b5902 100644 --- a/client/helpers/index.js +++ b/client/helpers/index.js @@ -8,6 +8,6 @@ export { pathBuilder, basename, dirname } from './path'; export { memory } from './memory'; export { prepare } from './navigate'; export { invalidate, http_get, http_post, http_delete } from './ajax'; -export { screenHeight } from './dom'; +export { screenHeight, screenHeightWithMenubar } from './dom'; export { prompt } from './prompt'; export { notify } from './notify'; diff --git a/client/pages/viewerpage/editor.js b/client/pages/viewerpage/editor.js index b5ad7f3a..f75fcf56 100644 --- a/client/pages/viewerpage/editor.js +++ b/client/pages/viewerpage/editor.js @@ -20,6 +20,7 @@ import 'codemirror/addon/fold/foldgutter'; import 'codemirror/addon/fold/foldgutter.css'; import './editor.scss'; +import { debounce, screenHeightWithMenubar } from '../../helpers/'; export class Editor extends React.Component { constructor(props){ @@ -27,8 +28,10 @@ export class Editor extends React.Component { this.state = { loading: null, editor: null, - filename: this.props.filename + filename: this.props.filename, + height: 0 }; + this.resetHeight = debounce(this.resetHeight.bind(this), 100); } componentWillReceiveProps(props){ @@ -77,12 +80,22 @@ export class Editor extends React.Component { this.props.onSave && this.props.onSave(); }; } + this.resetHeight(); + window.addEventListener("resize", this.resetHeight); } componentWillUnmount(){ this.state.editor.clearHistory(); + window.removeEventListener("resize", this.resetHeight); } + resetHeight(){ + this.setState({ + height: screenHeightWithMenubar() + }); + } + + loadMode(file){ let ext = file.split('.').pop(), mode = null; @@ -134,7 +147,7 @@ export class Editor extends React.Component { -
+
); diff --git a/client/pages/viewerpage/editor.scss b/client/pages/viewerpage/editor.scss index 1bec66af..20929fa2 100644 --- a/client/pages/viewerpage/editor.scss +++ b/client/pages/viewerpage/editor.scss @@ -1,7 +1,9 @@ .CodeMirror { height: 100%; - color: #333333; + color: #3b4045; background: var(--bg-color); + font-size: 14px; + font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,sans-serif; } .CodeMirror-scroll { -webkit-overflow-scrolling: touch; } diff --git a/client/router.js b/client/router.js index 4ac258d0..26ac0c01 100644 --- a/client/router.js +++ b/client/router.js @@ -9,16 +9,14 @@ export default class AppRouter extends React.Component { return (
-
- - - - - - - - -
+ + + + + + + +