import React, { FC, useState, ChangeEvent, MouseEvent } from "react"; import { Grid, Typography, makeStyles, Theme, createStyles, } from "@material-ui/core"; import { FloatingButton } from "./FloatingButton"; import { HorizontalCard } from "./HorizontalCard"; import { FilterBar } from "./FilterBar"; import { HttpResponse } from "../types/HttpResponse"; import { Ticket } from "../types/Ticket"; import { NewTicketModal } from "./NewTicketModal"; import { Project } from "../types/Project"; import { put } from "../utils/http"; import { Constants } from "../utils/Constants"; const useStyles = makeStyles((theme: Theme) => createStyles({ header: { paddingBottom: theme.spacing(2), }, addButton: { position: "relative", marginLeft: "20px", }, }) ); type TicketListProps = { tickets: Ticket[]; allProjects: Project[]; addButton?: Boolean; }; export const TicketList: FC = ({ tickets, allProjects, addButton = true, }) => { const [filterText, setFilterText] = useState(""); const clearFilterText = (e: MouseEvent): void => { setFilterText(""); }; const onClick = (e: MouseEvent): void => { e.preventDefault(); setShowNew(true); }; const handleChange = (e: ChangeEvent): void => { setFilterText(e.target.value); }; const [showNew, setShowNew] = useState(false); let filteredTickets = tickets.filter( (t) => t.status !== "Done" && t.title.toLowerCase().includes(filterText.toLowerCase()) ); const classes = useStyles(); return ( <> { setShowNew(false); }} show={showNew} allProjects={allProjects} /> Tickets {addButton && ( )}
{filteredTickets.length === 0 ? ( ) : ( filteredTickets.map((t: Ticket) => ( { e.preventDefault(); await put>( `${Constants.ticketsURI}/${t.id}/closed`, {} ); }} /> )) )}
); };