From 93d6d8777f57431752407d0b5691c229a1f32a27 Mon Sep 17 00:00:00 2001 From: catarak Date: Thu, 11 Aug 2016 15:41:13 -0400 Subject: [PATCH] add resizers --- client/modules/IDE/pages/IDEView.js | 96 +++++++++++++++----------- client/styles/components/_console.scss | 8 +-- client/styles/components/_resizer.scss | 43 ++++++++++++ client/styles/layout/_ide.scss | 28 +++++--- client/styles/main.scss | 1 + package.json | 1 + 6 files changed, 122 insertions(+), 55 deletions(-) create mode 100644 client/styles/components/_resizer.scss diff --git a/client/modules/IDE/pages/IDEView.js b/client/modules/IDE/pages/IDEView.js index a975b02e..312bbc8f 100644 --- a/client/modules/IDE/pages/IDEView.js +++ b/client/modules/IDE/pages/IDEView.js @@ -14,6 +14,7 @@ import * as IDEActions from '../actions/ide'; import * as ProjectActions from '../actions/project'; import * as PreferencesActions from '../actions/preferences'; import { getFile, getHTMLFile, getJSFiles, getCSSFiles, setSelectedFile } from '../reducers/files'; +import SplitPane from 'react-split-pane'; class IDEView extends React.Component { componentDidMount() { @@ -87,49 +88,62 @@ class IDEView extends React.Component { setAutosave={this.props.setAutosave} />
- -
- + - -
- - } - isPlaying={this.props.ide.isPlaying} - dispatchConsoleEvent={this.props.dispatchConsoleEvent} - /> + (this.refs.overlay.style.display = 'block')} + onDragFinished={() => (this.refs.overlay.style.display = 'none')} + > + + + + +
+
+
+ + } + isPlaying={this.props.ide.isPlaying} + dispatchConsoleEvent={this.props.dispatchConsoleEvent} + /> +
+
+
{(() => { if (this.props.ide.modalIsVisible) { diff --git a/client/styles/components/_console.scss b/client/styles/components/_console.scss index 2b7b2151..ae55d107 100644 --- a/client/styles/components/_console.scss +++ b/client/styles/components/_console.scss @@ -1,10 +1,6 @@ .preview-console { - position: absolute; width: 100%; - height: #{150 / $base-font-size}rem; - right: 0; - bottom: 0; - left: 0; + height: 100%; background: $console-light-background-color; z-index: 1000; overflow: hidden; @@ -28,7 +24,7 @@ } &.preview-console--collapsed { - height: #{29 / $base-font-size}rem; + // height: #{29 / $base-font-size}rem; } } diff --git a/client/styles/components/_resizer.scss b/client/styles/components/_resizer.scss new file mode 100644 index 00000000..2e30edfb --- /dev/null +++ b/client/styles/components/_resizer.scss @@ -0,0 +1,43 @@ +.Resizer { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; + background: $ide-border-color; + opacity: .2; + z-index: 1; + -moz-background-clip: padding; + -webkit-background-clip: padding; + background-clip: padding-box; +} + +// .Resizer:hover { +// -webkit-transition: all 2s ease; +// transition: all 2s ease; +// } + +.Resizer.horizontal { + height: 11px; + margin: -5px 0; + border-top: 5px solid rgba(255, 255, 255, 0); + border-bottom: 5px solid rgba(255, 255, 255, 0); + cursor: row-resize; + width: 100%; +} + +.Resizer.horizontal:hover { + // border-top: 5px solid rgba(0, 0, 0, 0.5); + // border-bottom: 5px solid rgba(0, 0, 0, 0.5); +} + +.Resizer.vertical { + width: 11px; + margin: 0 -5px; + border-left: 5px solid rgba(255, 255, 255, 0); + border-right: 5px solid rgba(255, 255, 255, 0); + cursor: col-resize; +} + +.Resizer.vertical:hover { + // border-left: 5px solid rgba(0, 0, 0, 0.5); + // border-right: 5px solid rgba(0, 0, 0, 0.5); +} \ No newline at end of file diff --git a/client/styles/layout/_ide.scss b/client/styles/layout/_ide.scss index 52fc5e97..5d14075d 100644 --- a/client/styles/layout/_ide.scss +++ b/client/styles/layout/_ide.scss @@ -9,11 +9,13 @@ width: 100%; flex: 1 0 0px; display: flex; + position: relative; } .editor-console-container { - flex: 1 0 0px; - max-width: 45%; + // flex: 1 0 0px; + // max-width: 45%; + width: 100%; height: 100%; position: relative; @@ -28,8 +30,16 @@ } .preview-frame { - flex: 1 0 0px; - min-height: 100%; + height: 100%; + width: 100%; + position: absolute; +} + +.preview-frame-overlay { + height: 100%; + width: 100%; + position: absolute; + z-index: 10; } .toolbar { @@ -37,8 +47,10 @@ } .sidebar { - width: #{180 / $base-font-size}rem; - &.sidebar--contracted { - width: #{20 / $base-font-size}rem; - } + // width: #{180 / $base-font-size}rem; + // &.sidebar--contracted { + // width: #{20 / $base-font-size}rem; + // } + width: 100%; + height: 100%; } diff --git a/client/styles/main.scss b/client/styles/main.scss index 170d84fb..7a565c25 100644 --- a/client/styles/main.scss +++ b/client/styles/main.scss @@ -19,6 +19,7 @@ @import 'components/sidebar'; @import 'components/modal'; @import 'components/console'; +@import 'components/resizer'; @import 'layout/ide'; @import 'layout/sketch-list'; diff --git a/package.json b/package.json index 4140cf0b..98e9ab23 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "react-inlinesvg": "^0.4.2", "react-redux": "^4.4.5", "react-router": "^2.4.1", + "react-split-pane": "^0.1.44", "redux": "^3.5.2", "redux-form": "^5.2.5", "redux-thunk": "^2.1.0",