Spaces:
Running
Running
| import React, { useState } from "react"; | |
| import "./SizeChanger.scss"; | |
| import { SizeChangerProps } from "./SizeChangerProps"; | |
| const SizeChanger = ({ left, right }: SizeChangerProps) => { | |
| const [leftWidth, setLeftWidth] = useState(600); // Начальная ширина левого блока | |
| const handleMouseDown = (e: React.MouseEvent) => { | |
| e.preventDefault(); | |
| const startX = e.clientX; | |
| const onMouseMove = (e: MouseEvent) => { | |
| const newWidth = leftWidth + e.clientX - startX; | |
| setLeftWidth(newWidth); | |
| }; | |
| const onMouseUp = () => { | |
| document.removeEventListener("mousemove", onMouseMove); | |
| document.removeEventListener("mouseup", onMouseUp); | |
| }; | |
| document.addEventListener("mousemove", onMouseMove); | |
| document.addEventListener("mouseup", onMouseUp); | |
| }; | |
| return ( | |
| <div className="resizable-container"> | |
| <div className="left-pane" style={{ width: `${leftWidth}px` }}> | |
| {right} | |
| </div> | |
| <div className="resizer" onMouseDown={handleMouseDown} /> | |
| <div className="right-pane">{left}</div> | |
| </div> | |
| ); | |
| }; | |
| export default SizeChanger; | |