UNPKG

glide-design-system

Version:

Glide design system is an open-source React component library. It offers numerous benefits that make them essential tools for design and development teams.

152 lines (143 loc) 5.15 kB
import React, { useState, useRef, useEffect } from "react"; import classes from "./WeekviewScheduler.module.css"; import WeekCalender from "../weekCalender/WeekCalender"; // import DayBlock from "./DayBlock"; // import CreateSession from './sessionForm/CreateSession'; const WeekviewScheduler = ({ title, data, header, calenderHeaderContainerStyle, calenderHeaderContainerClassName, calenderHeaderClassName, calenderHeaderStyle, days, }) => { const [weekDays, setWeekDays] = useState(); const [selectedRows, setSelectedRows] = useState([]); const [checkIn, setCheckIn] = useState([]); const tableContainerRef = useRef(null); const isMouseMoveDown = useRef(false); const hours = Array.from({ length: 24 }, (_, index) => index + 1); useEffect(() => { const handleOutsideClick = (event) => { setSelectedRows([]); }; isMouseMoveDown.current = false; document.addEventListener("mousedown", handleOutsideClick); return () => { document.removeEventListener("mousedown", handleOutsideClick); }; }, []); return ( <div ref={tableContainerRef} className={classes.nonSelectable}> <div style={{ overflowX: "auto" }}> <div className={classes.parentContainer}> <div> <div style={calenderHeaderContainerStyle} className={`${classes.calenderHeaderContainer} ${ calenderHeaderContainerClassName && calenderHeaderContainerClassName }`} > <div className={`${classes.calenderHeader} ${ calenderHeaderClassName && calenderHeaderClassName }`} style={calenderHeaderStyle} > {header ? header : ""} </div> </div> <div className={classes.tableParent}> <div style={{ marginTop: "200px", paddingTop: title === "admin" ? "10px" : "5px", }} > <div style={{ position: "fixed", width: "100%", left: "0", zIndex: "10", marginTop: "-106px", backgroundColor: "white", marginBottom: "5px", }} > <div style={{ display: "grid", gridTemplateColumns: "1fr 1fr 1fr 1fr 1fr 1fr 1fr", justifyContent: "space-around", marginLeft: "120px", borderBottom: "1px solid #DDD", marginRight: "40px", }} > {weekDays?.map((weekDay) => { const dateObj = new Date(weekDay); const today = new Date(); const date = dateObj.getDate(); const month = dateObj.getMonth(); const year = dateObj.getFullYear(); const weekDays = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", ]; let days = weekDays[dateObj.getDay()]; return ( <div style={{ display: "flex", justifyContent: "center", flexDirection: "column", alignItems: "center", marginTop: "50px", borderRight: "1px solid #ddd", }} > <div className={ today.getDate() === date && today.getMonth() === month && today.getFullYear() === year ? classes.todayDay : classes.day } > {days} </div> <div className={ today.getDate() === date && today.getMonth() === month && today.getFullYear() === year ? classes.todayDate : classes.date } > {date} </div> </div> ); })} </div> </div> </div> </div> </div> </div> </div> </div> ); }; export default WeekviewScheduler;