@@ -6,35 +6,43 @@ import { watchMouseDragMove } from "../../util";
66// Can be done once we have more than a single layout
77
88const state = reactive ({
9- firstPaneHeight: Math . round ( window . innerHeight / 2 ) ,
10- secondPaneWidth: Math . round ( window . innerWidth / 2 ) ,
9+ firstPaneHeight: 50 ,
10+ secondPaneWidth: 50 ,
1111});
1212
13+ const clampPercent = (num ) => Math .max (0 , Math .min (100 , num));
14+
1315const handleVResize = (event ) => {
1416 const originalHeight = state .firstPaneHeight ;
15- const handleMouseDragMove = ({ deltaY }) =>
16- (state .firstPaneHeight = Math .max (0 , originalHeight + deltaY));
17+ const containerEl = event .target .parentNode ;
18+ const handleMouseDragMove = ({ deltaY }) => {
19+ const percentDiff = (deltaY * 100 ) / containerEl .clientHeight ;
20+ state .firstPaneHeight = clampPercent (originalHeight + percentDiff);
21+ };
1722 watchMouseDragMove (event , handleMouseDragMove);
1823};
1924
2025const handleHResize = (event ) => {
2126 const originalWidth = state .secondPaneWidth ;
22- const handleMouseDragMove = ({ deltaX }) =>
23- (state .secondPaneWidth = Math .max (0 , originalWidth + deltaX));
27+ const containerEl = event .target .parentNode .parentNode ;
28+ const handleMouseDragMove = ({ deltaX }) => {
29+ const percentDiff = (deltaX * 100 ) / containerEl .clientWidth ;
30+ state .secondPaneWidth = clampPercent (originalWidth + percentDiff);
31+ };
2432 watchMouseDragMove (event , handleMouseDragMove);
2533};
2634 </script >
2735
2836<template >
2937 <div class =" fl layout-container" >
30- <div class =" fl top" :style =" { height: state.firstPaneHeight + 'px ' }" >
38+ <div class =" fl top" :style =" { height: state.firstPaneHeight + '% ' }" >
3139 <slot name =" slot1" ></slot >
3240 </div >
3341 <div class =" v-resize" @mousedown =" handleVResize" ></div >
3442 <div class =" fl bottom" >
3543 <div
3644 class =" fl first quarter needs-border-bottom"
37- :style =" { width: state.secondPaneWidth + 'px ' }"
45+ :style =" { width: state.secondPaneWidth + '% ' }"
3846 >
3947 <slot name =" slot2" ></slot >
4048 </div >
0 commit comments