Web:Client:Add close calendar when clicking outside the area.

This commit is contained in:
Vlada Gazizova 2024-01-26 13:21:08 +03:00
parent 8c4e888350
commit 0471b801ec

View File

@ -1,4 +1,4 @@
import { useState, useEffect } from "react";
import { useState, useEffect, useRef } from "react";
import styled from "styled-components";
import moment from "moment";
import Calendar from "@docspace/components/calendar";
@ -30,12 +30,23 @@ const CalendarComponent = ({ roomCreationDate, setCalendarDay }) => {
const [isOpen, setIsOpen] = useState(false);
const [selectedDate, setSelectedDate] = useState(null);
const calendarRef = useRef();
const calendarButtonRef = useRef();
useEffect(() => {
document.addEventListener("click", handleClick, { capture: true });
return () => {
document.removeEventListener("click", handleClick, { capture: true });
setCalendarDay(null);
};
}, []);
const handleClick = (e) => {
!calendarButtonRef?.current?.contains(e.target) &&
!calendarRef?.current?.contains(e.target) &&
setIsOpen(false);
};
const toggleCalendar = () => setIsOpen((open) => !open);
const onDateSet = (date) => {
@ -50,7 +61,11 @@ const CalendarComponent = ({ roomCreationDate, setCalendarDay }) => {
return (
<StyledCalendarComponent>
<div className="calendar-button" onClick={toggleCalendar}>
<div
ref={calendarButtonRef}
className="calendar-button"
onClick={toggleCalendar}
>
Calendar
</div>
{isOpen && (
@ -61,6 +76,7 @@ const CalendarComponent = ({ roomCreationDate, setCalendarDay }) => {
selectedDate={selectedDate}
minDate={new Date(formattedRoomCreationDate)}
maxDate={new Date()}
forwardedRef={calendarRef}
/>
}
/>