diff --git a/src/app.js b/src/app.js
index a63821319b..54e14404eb 100644
--- a/src/app.js
+++ b/src/app.js
@@ -81,7 +81,7 @@ var css = csjs`
width : 50px;
user-select : none;
}
- .sidepanel {
+ .sidepanel {
display : flex;
flex-direction : row-reverse;
width : 320px;
@@ -141,7 +141,6 @@ class App {
init () {
var self = this
- self._components.resizeFeature = new PanelsResize('#side-panel', '#editor-container', { 'minWidth': 330, x: 450 })
run.apply(self)
}
@@ -157,7 +156,7 @@ class App {
// center panel, resizable
self._view.sidepanel = yo`
-
+
${''}
`
@@ -169,10 +168,13 @@ class App {
`
+ self._components.resizeFeature = new PanelsResize(self._view.sidepanel)
+
self._view.el = yo`
${self._view.iconpanel}
${self._view.sidepanel}
+ ${self._components.resizeFeature.render()}
${self._view.mainpanel}
`
diff --git a/src/framingService.js b/src/framingService.js
index fe326b52dd..fa8a0d3237 100644
--- a/src/framingService.js
+++ b/src/framingService.js
@@ -10,13 +10,13 @@ export class FramingService {
start () {
this.sidePanel.events.on('toggle', () => {
- this.resizeFeature.panel1.clientWidth !== 0 ? this.resizeFeature.minimize() : this.resizeFeature.maximise()
+ this.resizeFeature.panel.clientWidth !== 0 ? this.resizeFeature.hidePanel() : this.resizeFeature.showPanel()
})
this.sidePanel.events.on('showing', () => {
- this.resizeFeature.panel1.clientWidth === 0 ? this.resizeFeature.maximise() : ''
+ this.resizeFeature.panel.clientWidth === 0 ? this.resizeFeature.showPanel() : ''
})
this.mainPanel.events.on('toggle', () => {
- this.resizeFeature.maximise()
+ this.resizeFeature.showPanel()
})
this.verticalIcon.select('fileExplorers')
diff --git a/src/lib/panels-resize.js b/src/lib/panels-resize.js
index a32006866f..0602e6134c 100644
--- a/src/lib/panels-resize.js
+++ b/src/lib/panels-resize.js
@@ -3,11 +3,10 @@ const csjs = require('csjs-inject')
const css = csjs`
.dragbar {
- width : 4px;
+ width : 1px;
height : 100%;
cursor : col-resize;
z-index : 999;
- /* border-right : 2px solid var(--primary); */
}
.ghostbar {
width : 3px;
@@ -21,88 +20,74 @@ const css = csjs`
}
`
-/*
-* opt:
-* minWidth : minimn width for panels
-* x : position of gutter at load
-*
-*
-*/
export default class PanelsResize {
- constructor (idpanel1, idpanel2, opt) {
- var panel1 = document.querySelector(idpanel1)
- var panel2 = document.querySelector(idpanel2)
- this.panel1 = panel1
- this.panel2 = panel2
- this.opt = opt
+ constructor (panel) {
+ this.panel = panel
+ let self = this;
+ const string = panel.style.minWidth
+ this.minWidth = string.length > 2 ? parseInt(string.substring(0, string.length - 2)) : 0
+ window.addEventListener('resize', function (event) {
+ self.setPosition(event)
+ })
+ }
- var ghostbar = yo``
+ render () {
+ this.ghostbar = yo``
let mousedown = (event) => {
event.preventDefault()
if (event.which === 1) {
moveGhostbar(event)
- document.body.appendChild(ghostbar)
+ document.body.appendChild(this.ghostbar)
document.addEventListener('mousemove', moveGhostbar)
document.addEventListener('mouseup', removeGhostbar)
document.addEventListener('keydown', cancelGhostbar)
}
}
-
+
let cancelGhostbar = (event) => {
if (event.keyCode === 27) {
- document.body.removeChild(ghostbar)
+ document.body.removeChild(this.ghostbar)
document.removeEventListener('mousemove', moveGhostbar)
document.removeEventListener('mouseup', removeGhostbar)
document.removeEventListener('keydown', cancelGhostbar)
}
}
- let moveGhostbar = (event) => { // @NOTE VERTICAL ghostbar
- let p = processPositions(event)
- if (p.panel1Width <= opt.minWidth || p.panel2Width <= opt.minWidth) return
- ghostbar.style.left = event.x + 'px'
- }
-
- let setPosition = (event) => {
- let p = processPositions(event)
- panel1.style.width = p.panel1Width + 'px'
- panel2.style.left = p.panel2left + 'px'
- panel2.style.width = p.panel2Width + 'px'
+ let moveGhostbar = (event) => {
+ this.ghostbar.style.left = event.x + 'px'
}
let removeGhostbar = (event) => {
- document.body.removeChild(ghostbar)
+ document.body.removeChild(this.ghostbar)
document.removeEventListener('mousemove', moveGhostbar)
document.removeEventListener('mouseup', removeGhostbar)
document.removeEventListener('keydown', cancelGhostbar)
- setPosition(event)
+ this.setPosition(event)
}
- let processPositions = (event) => {
- let panel1Width = event.x - panel1.offsetLeft
- panel1Width = panel1Width < opt.minWidth ? opt.minWidth : panel1Width
- let panel2left = panel1.offsetLeft + panel1Width
- let panel2Width = panel2.parentElement.clientWidth - panel1.offsetLeft - panel1Width
- panel2Width = panel2Width < opt.minWidth ? opt.minWidth : panel2Width
- return { panel1Width, panel2left, panel2Width }
- }
-
- window.addEventListener('resize', function (event) {
- setPosition({ x: panel1.offsetLeft + panel1.clientWidth })
- })
+ return yo``
+ }
- var dragbar = yo``
- panel1.appendChild(dragbar)
+ calculatePanelWidth (event) {
+ return event.x - this.panel.offsetLeft
+ }
- setPosition(opt)
+ setPosition (event) {
+ let panelWidth = this.calculatePanelWidth(event)
+ // close the panel if the width is less than a minWidth
+ if (panelWidth > this.minWidth - 10 || this.panel.style.display == 'none') {
+ this.panel.style.width = panelWidth + 'px'
+ this.showPanel()
+ } else this.hidePanel()
}
- minimize () {
- this.panel1.style.display = 'none'
+ hidePanel () {
+ this.panel.style.display = 'none'
}
- maximise () {
- this.panel1.style.display = 'flex'
+ showPanel () {
+ this.panel.style.display = 'flex'
}
}
+