Convert Modal component to Typescript

This commit is contained in:
T'JAMPENS QUENTIN p2406187
2026-02-06 15:11:03 +01:00
parent d79f9f5c84
commit 3c992d5df7
15 changed files with 24 additions and 17 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
import styles from "./Footer.module.css" import styles from "./Footer.module.css"
import {Link} from "react-router"; import {Link} from "react-router";
import {useState} from "react"; import {useState} from "react";
import Modal from "../ui/modal/modal.jsx"; import Modal from "../ui/modal/modal.tsx";
import Button from "../ui/button/button.tsx"; import Button from "../ui/button/button.tsx";
import scrollToTop from "../../utils/scrollToTop.js"; import scrollToTop from "../../utils/scrollToTop.js";
@@ -1,6 +1,6 @@
import styles from "./createEventBtn.module.css" import styles from "./createEventBtn.module.css"
import { useState, useContext } from "react"; import { useState, useContext } from "react";
import Modal from "../ui/modal/modal.jsx"; import Modal from "../ui/modal/modal.tsx";
import Button from "../ui/button/button.tsx"; import Button from "../ui/button/button.tsx";
import TextInput from "../ui/input/input.tsx"; import TextInput from "../ui/input/input.tsx";
import { EventContext } from "../../contexts/events/EventContext.js"; import { EventContext } from "../../contexts/events/EventContext.js";
@@ -1,16 +1,23 @@
import { ReactNode, MouseEvent } from "react";
import { createPortal } from "react-dom"; import { createPortal } from "react-dom";
import styles from "./modal.module.css"; import styles from "./modal.module.css";
import Button from "../button/button.tsx"; import Button from "../button/button";
const Modal = ({ open, onClose, children, title }) => { interface ModalProps {
open: boolean;
onClose: () => void;
children: ReactNode;
title?: string;
}
const Modal = ({ open, onClose, children, title }: ModalProps) => {
if (!open) return null; if (!open) return null;
const handleOverlayClick = () => { const handleOverlayClick = () => {
onClose(); onClose();
}; };
const handleModalClick = (e) => { const handleModalClick = (e: MouseEvent<HTMLDivElement>) => {
e.stopPropagation(); e.stopPropagation();
}; };
@@ -1,7 +1,7 @@
import React, {useState, useEffect} from "react"; import React, {useState, useEffect} from "react";
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import styles from "./PendingMembers.module.css"; import styles from "./PendingMembers.module.css";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import getUserToValidate from "../../../../utils/users/getUserToValidate.js"; import getUserToValidate from "../../../../utils/users/getUserToValidate.js";
import getUserById from "../../../../utils/users/getUserById.js"; import getUserById from "../../../../utils/users/getUserById.js";
import validateUser from "../../../../utils/users/validateUser.js"; import validateUser from "../../../../utils/users/validateUser.js";
@@ -2,7 +2,7 @@ import { useState, useContext } from "react";
import styles from "./loginForm.module.css"; import styles from "./loginForm.module.css";
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import Input from "../../../../components/ui/input/input.tsx"; import Input from "../../../../components/ui/input/input.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import { useNavigate } from "react-router"; import { useNavigate } from "react-router";
import { AuthContext } from "../../../../contexts/auth/AuthContext.js"; import { AuthContext } from "../../../../contexts/auth/AuthContext.js";
@@ -1,4 +1,4 @@
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import styles from "./SettingsModal.module.css" import styles from "./SettingsModal.module.css"
import { useContext, useState } from "react"; import { useContext, useState } from "react";
+1 -1
View File
@@ -6,7 +6,7 @@ import {useContext, useEffect, useState} from "react";
import register from "../../utils/register.js"; import register from "../../utils/register.js";
import { useNavigate } from "react-router"; import { useNavigate } from "react-router";
import { AuthContext } from "../../contexts/auth/AuthContext.js"; import { AuthContext } from "../../contexts/auth/AuthContext.js";
import Modal from "../../components/ui/modal/modal.jsx"; import Modal from "../../components/ui/modal/modal.tsx";
function RegisterPage() { function RegisterPage() {
@@ -1,5 +1,5 @@
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import {useContext, useState} from "react"; import {useContext, useState} from "react";
import styles from "./manageMember.module.css" import styles from "./manageMember.module.css"
import DeactivateMemberBtn from "./deactivateMember/deactivateMemberBtn.jsx"; import DeactivateMemberBtn from "./deactivateMember/deactivateMemberBtn.jsx";
@@ -1,5 +1,5 @@
import Button from "../../../../../components/ui/button/button.tsx"; import Button from "../../../../../components/ui/button/button.tsx";
import Modal from "../../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../../components/ui/modal/modal.tsx";
import { useState } from "react"; import { useState } from "react";
import deactivateUser from "../../../../../utils/users/deactivateUser.js" import deactivateUser from "../../../../../utils/users/deactivateUser.js"
import { useNavigate } from "react-router"; import { useNavigate } from "react-router";
@@ -3,7 +3,7 @@ import Button from "../../../../../components/ui/button/button.tsx";
import modifyRole from "../../../../../utils/users/modifyRole.js"; import modifyRole from "../../../../../utils/users/modifyRole.js";
import { useState, useEffect } from "react"; import { useState, useEffect } from "react";
import getRoles from "../../../../../utils/getRoles.js"; import getRoles from "../../../../../utils/getRoles.js";
import Modal from "../../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../../components/ui/modal/modal.tsx";
export default function ModifyRole({ user }) { export default function ModifyRole({ user }) {
@@ -5,7 +5,7 @@ import assign from "../../../../utils/tasks/assign.js";
import unAssign from "../../../../utils/tasks/unAssign.js"; import unAssign from "../../../../utils/tasks/unAssign.js";
import { useContext, useEffect, useState } from "react"; import { useContext, useEffect, useState } from "react";
import isAssigned from "../../../../utils/tasks/isAssigned.js"; import isAssigned from "../../../../utils/tasks/isAssigned.js";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import { AuthContext } from "../../../../contexts/auth/AuthContext.js"; import { AuthContext } from "../../../../contexts/auth/AuthContext.js";
import DeleteTaskBtn from "../deleteTaskBtn/deleteTaskBtn.jsx"; import DeleteTaskBtn from "../deleteTaskBtn/deleteTaskBtn.jsx";
@@ -2,7 +2,7 @@ import styles from "../../eventDetail.module.css";
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import {useContext, useState} from "react"; import {useContext, useState} from "react";
import TextInput from "../../../../components/ui/input/input.tsx"; import TextInput from "../../../../components/ui/input/input.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import createTaskApi from "../../../../utils/tasks/createTask.js"; import createTaskApi from "../../../../utils/tasks/createTask.js";
import {EventDetailContext} from "../../../../contexts/eventDetail/eventDetail.js"; import {EventDetailContext} from "../../../../contexts/eventDetail/eventDetail.js";
@@ -1,6 +1,6 @@
import styles from "../../eventDetail.module.css"; import styles from "../../eventDetail.module.css";
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import { useContext, useState } from "react"; import { useContext, useState } from "react";
import { EventDetailContext } from "../../../../contexts/eventDetail/eventDetail.js"; import { EventDetailContext } from "../../../../contexts/eventDetail/eventDetail.js";
import { EventContext } from "../../../../contexts/events/EventContext.js"; import { EventContext } from "../../../../contexts/events/EventContext.js";
@@ -3,7 +3,7 @@ import { AuthContext } from "../../../../contexts/auth/AuthContext.js";
import { EventDetailContext } from "../../../../contexts/eventDetail/eventDetail.js"; import { EventDetailContext } from "../../../../contexts/eventDetail/eventDetail.js";
import Button from "../../../../components/ui/button/button.tsx"; import Button from "../../../../components/ui/button/button.tsx";
import { useState } from "react"; import { useState } from "react";
import Modal from "../../../../components/ui/modal/modal.jsx"; import Modal from "../../../../components/ui/modal/modal.tsx";
import styles from "../../eventDetail.module.css"; import styles from "../../eventDetail.module.css";
export default function DeleteTaskBtn({ taskId, eventId, taskName }) { export default function DeleteTaskBtn({ taskId, eventId, taskName }) {
+1 -1
View File
@@ -1,4 +1,4 @@
import Modal from "../components/ui/modal/modal.jsx"; import Modal from "../components/ui/modal/modal.tsx";
import Button from "../components/ui/button/button.tsx"; import Button from "../components/ui/button/button.tsx";
import { useState } from "react"; import { useState } from "react";