From 64898d14e3002038420c9b1ea7dbe1cc21d7ffa9 Mon Sep 17 00:00:00 2001 From: Andrew Watkins Date: Wed, 2 May 2018 14:43:33 -0700 Subject: [PATCH] Add dbclick to full size --- ui/src/shared/components/ResizeDivision.tsx | 23 ++++++- ui/src/shared/components/Threesizer.tsx | 70 +++++++-------------- 2 files changed, 44 insertions(+), 49 deletions(-) diff --git a/ui/src/shared/components/ResizeDivision.tsx b/ui/src/shared/components/ResizeDivision.tsx index d06ee0a38f..7d482c6ded 100644 --- a/ui/src/shared/components/ResizeDivision.tsx +++ b/ui/src/shared/components/ResizeDivision.tsx @@ -11,7 +11,8 @@ interface Props { draggable: boolean orientation: string render: () => ReactElement - onHandleStartDrag: (id: string, e: MouseEvent) => any + onHandleStartDrag: (id: string, e: MouseEvent) => void + onDoubleClick: (id: string) => void } class Division extends PureComponent { @@ -24,7 +25,11 @@ class Division extends PureComponent { return ( <>
-
+
{name}
{render()} @@ -33,12 +38,26 @@ class Division extends PureComponent { ) } + private get disabled(): string { + const {draggable} = this.props + if (draggable) { + return '' + } + + return 'disabled' + } + private get style() { return { height: `calc((100% - 90px) * ${this.props.size} + 30px)`, } } + private handleDoubleClick = () => { + const {id, onDoubleClick} = this.props + return onDoubleClick(id) + } + private dragCallback = e => { const {draggable, id} = this.props if (!draggable) { diff --git a/ui/src/shared/components/Threesizer.tsx b/ui/src/shared/components/Threesizer.tsx index c679dc21a5..01f1ba6f31 100644 --- a/ui/src/shared/components/Threesizer.tsx +++ b/ui/src/shared/components/Threesizer.tsx @@ -123,6 +123,7 @@ class Threesizer extends Component { minPixels={d.minPixels} orientation={orientation} activeHandleID={activeHandleID} + onDoubleClick={this.handleDoubleClick} onHandleStartDrag={this.handleStartDrag} render={this.props.divisions[i].render} /> @@ -155,13 +156,24 @@ class Threesizer extends Component { })) } + private handleDoubleClick = (id: string): void => { + const divisions = this.state.divisions.map(d => { + if (d.id !== id) { + return {...d, size: 0} + } + + return {...d, size: 1} + }) + + this.setState({divisions}) + } + private handleStartDrag = (activeHandleID, e: MouseEvent) => { const dragEvent = this.mousePosWithinContainer(e) this.setState({activeHandleID, dragEvent}) } private handleStopDrag = () => { - console.log('handleStopDrag') this.setState({activeHandleID: '', dragEvent: initialDragEvent}) } @@ -209,42 +221,6 @@ class Threesizer extends Component { return Math.abs(delta / height) } - private minPercentX = (xMinPixels: number): number => { - if (!this.containerRef) { - return 0 - } - const {width} = this.containerRef.getBoundingClientRect() - - return xMinPixels / width - } - - private minPercentY = (yMinPixels: number): number => { - if (!this.containerRef) { - return 0 - } - - const {height} = this.containerRef.getBoundingClientRect() - return yMinPixels / height - } - - private get maximumHeightPercent(): number { - if (!this.containerRef) { - return 1 - } - - const {divisions} = this.state - const {height} = this.containerRef.getBoundingClientRect() - - const totalMinPixels = divisions.reduce( - (acc, div) => acc + div.minPixels, - 0 - ) - - const maximumPixels = height - totalMinPixels - - return this.minPercentY(maximumPixels) - } - private handleDrag = (e: MouseEvent) => { const {activeHandleID} = this.state if (!activeHandleID) { @@ -255,16 +231,6 @@ class Threesizer extends Component { this.setState({dragEvent}) } - private taller = (size: number): number => { - const newSize = size + this.percentChangeY - return newSize > 1 ? 1 : newSize - } - - private shorter = (size: number): number => { - const newSize = size - this.percentChangeY - return newSize < 0 ? 0 : newSize - } - private get move() { const {activeHandleID} = this.state @@ -376,6 +342,16 @@ class Threesizer extends Component { this.setState({divisions}) } + + private taller = (size: number): number => { + const newSize = size + this.percentChangeY + return newSize > 1 ? 1 : newSize + } + + private shorter = (size: number): number => { + const newSize = size - this.percentChangeY + return newSize < 0 ? 0 : newSize + } } export default Threesizer