import { useState } from "react"; import { IDesctiptionFloor } from "../../../types/descriptionFloor"; import useModal from "../../../store/useModal"; import EastWingFloorLayout from "./EastWingFloorLayout"; import Button from "../../Button"; import CloseIcon from "../../icons/CloseIcon"; import useWingSidebar from "../../../store/useWingSidebar"; import api from "../../../utils/api"; import UnitPopup from "./UnitPopup"; import IUnit from "../../../types/IUnit"; import WestWingFloorLayout from "./WestWingFloorLayout"; import WestWingBottomFloorLayout from "./WestWingBottomFloorLayout"; import UnitModal from "../../modals/UnitModal"; interface Props { currentFloor: IDesctiptionFloor | null; } function FloorSidebar({ currentFloor }: Props) { const { setModal } = useModal(); const { setIsSidebar } = useWingSidebar(); const [hoveredUnit, setHoveredUnit] = useState(); const [isShowPopup, setIsShowPopup] = useState(false); const [mousePos, setMousePos] = useState<[number, number]>([0, 0]); const [type, setType] = useState(null); async function getUnit(unitNumber: string) { if (!currentFloor) return; try { const result: IUnit[] = await api .get( `units?unitNo=${currentFloor.wing[0]}-${ currentFloor.floor }${unitNumber.padStart(2, "0")}` ) .json(); setHoveredUnit(result[0]); } catch (error) { alert((error as Error).message); } } function handleMouseMove(e: React.MouseEvent) { const x = e.clientX - e.currentTarget.getBoundingClientRect().left; const y = e.clientY - e.currentTarget.getBoundingClientRect().top; setMousePos([x, y]); } async function handleMouseEnter(e: React.MouseEvent) { const unitNumber = e.currentTarget.dataset.number; const type = e.currentTarget.dataset.type; if (!unitNumber || !type) return; getUnit(unitNumber); setType(type); setIsShowPopup(true); setHoveredUnit(hoveredUnit); } function handleMouseLeave() { setIsShowPopup(false); setHoveredUnit(undefined); } function handleClick() { if (!hoveredUnit || !type) return; setModal(); } return (

{currentFloor?.floor} Floor

{currentFloor?.wing}

Studio Flex

Studio

1 Bedroom

1 Bedroom

2 Bedroom

{/*
{floorApartments.length} units
*/}
{currentFloor?.wing === "West Wing" ? ( currentFloor && currentFloor.floor <= 21 ? ( ) : ( ) ) : ( )}
); } export default FloorSidebar;