From 32bcc014d62fa62f8b8e2590bb5a199aad3ce415 Mon Sep 17 00:00:00 2001 From: Chris Veleris Date: Mon, 28 Oct 2024 18:21:39 +0200 Subject: [PATCH] Setup tsc compilation and eslint --- app/frontend/components/Area/AreaModal.tsx | 1 + app/frontend/components/Areas.tsx | 2 +- app/frontend/components/Navbar.tsx | 31 +- app/frontend/components/Note/NoteDetails.tsx | 2 +- app/frontend/components/Notes.tsx | 4 +- .../components/Profile/ProfileSettings.tsx | 4 +- .../components/Project/ProjectDetails.tsx | 129 +- .../components/Project/ProjectModal.tsx | 5 +- app/frontend/components/Projects.tsx | 61 +- .../components/Shared/PriorityDropdown.tsx | 9 +- .../components/Shared/StatusDropdown.tsx | 9 +- app/frontend/components/Sidebar.tsx | 8 +- .../components/Sidebar/SidebarAreas.tsx | 28 +- .../components/Sidebar/SidebarNav.tsx | 6 +- .../components/Sidebar/SidebarNotes.tsx | 6 +- .../components/Sidebar/SidebarProjects.tsx | 4 +- .../components/Sidebar/SidebarTags.tsx | 4 +- app/frontend/components/Tag/TagModal.tsx | 2 +- app/frontend/components/Tags.tsx | 10 +- app/frontend/components/Task/TaskHeader.tsx | 4 +- app/frontend/components/Task/TaskModal.tsx | 20 +- app/frontend/components/Task/TaskTags.tsx | 7 +- .../components/Task/getDescription.ts | 2 +- .../components/Task/getTitleAndIcon.ts | 4 +- app/frontend/entities/Tag.ts | 2 +- app/frontend/entities/Task.ts | 7 +- app/frontend/hooks/useManageNotes.ts | 9 +- eslint.config.mjs | 13 + package-lock.json | 2322 ++++++++++++++++- package.json | 14 +- public/js/bundle.js | 49 +- 31 files changed, 2591 insertions(+), 187 deletions(-) create mode 100644 eslint.config.mjs diff --git a/app/frontend/components/Area/AreaModal.tsx b/app/frontend/components/Area/AreaModal.tsx index 26de16c..e5e825c 100644 --- a/app/frontend/components/Area/AreaModal.tsx +++ b/app/frontend/components/Area/AreaModal.tsx @@ -5,6 +5,7 @@ import { useDataContext } from '../../contexts/DataContext'; interface AreaModalProps { isOpen: boolean; onClose: () => void; + onSave: (areaData: Area) => void; area?: Area | null; } diff --git a/app/frontend/components/Areas.tsx b/app/frontend/components/Areas.tsx index 8070aad..641dd20 100644 --- a/app/frontend/components/Areas.tsx +++ b/app/frontend/components/Areas.tsx @@ -57,7 +57,7 @@ const Areas: React.FC = () => { if (!areaToDelete) return; try { - await deleteArea(areaToDelete.id); + await deleteArea(areaToDelete.id!); setIsConfirmDialogOpen(false); setAreaToDelete(null); } catch (error) { diff --git a/app/frontend/components/Navbar.tsx b/app/frontend/components/Navbar.tsx index df4afbd..56eca0c 100644 --- a/app/frontend/components/Navbar.tsx +++ b/app/frontend/components/Navbar.tsx @@ -1,7 +1,8 @@ // src/components/Navbar.tsx -import React, { useState, useRef, useEffect } from 'react'; -import { Link } from 'react-router-dom'; +import React, { useState, useRef, useEffect } from "react"; +import { Link } from "react-router-dom"; +import { UserIcon } from "@heroicons/react/24/solid"; interface NavbarProps { isDarkMode: boolean; @@ -30,9 +31,9 @@ const Navbar: React.FC = ({ setIsDropdownOpen(false); } }; - document.addEventListener('mousedown', handleClickOutside); + document.addEventListener("mousedown", handleClickOutside); return () => { - document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener("mousedown", handleClickOutside); }; }, []); @@ -63,14 +64,17 @@ const Navbar: React.FC = ({ className="flex items-center focus:outline-none" aria-label="User Menu" > - User Avatar + {currentUser?.avatarUrl ? ( + User Avatar + ) : ( +
+ +
+ )} {/* Dropdown Menu */} @@ -84,8 +88,7 @@ const Navbar: React.FC = ({ + {activeDropdown === project.id && (
- {getCompletionPercentage(project.id)}% + {getCompletionPercentage(project?.id)}% diff --git a/app/frontend/components/Shared/PriorityDropdown.tsx b/app/frontend/components/Shared/PriorityDropdown.tsx index 287bba3..0f73f1a 100644 --- a/app/frontend/components/Shared/PriorityDropdown.tsx +++ b/app/frontend/components/Shared/PriorityDropdown.tsx @@ -1,9 +1,10 @@ import React, { useState, useRef, useEffect } from 'react'; import { ChevronDownIcon, ArrowDownIcon, ArrowUpIcon, FireIcon } from '@heroicons/react/24/outline'; // Import the icons +import { PriorityType } from '../../entities/Task'; interface PriorityDropdownProps { - value: string; - onChange: (value: string) => void; + value: PriorityType; + onChange: (value: PriorityType) => void; } const priorities = [ @@ -26,7 +27,7 @@ const PriorityDropdown: React.FC = ({ value, onChange }) } }; - const handleSelect = (priority: string) => { + const handleSelect = (priority: PriorityType) => { onChange(priority); setIsOpen(false); }; @@ -64,7 +65,7 @@ const PriorityDropdown: React.FC = ({ value, onChange }) {priorities.map((priority) => (