mirror of
https://github.com/rjNemo/ticket_manager
synced 2026-06-12 11:46:40 +00:00
added newUserModal component
This commit is contained in:
parent
97b45fcd2d
commit
5c039ad31d
3 changed files with 106 additions and 1 deletions
95
client/src/components/NewTicketModal.tsx
Normal file
95
client/src/components/NewTicketModal.tsx
Normal file
|
|
@ -0,0 +1,95 @@
|
||||||
|
import React, { FC, useState, ChangeEvent, useEffect, FormEvent } from "react";
|
||||||
|
import { Modal } from "./Modal";
|
||||||
|
import { AvatarList } from "./AvatarList";
|
||||||
|
import { User } from "../types/User";
|
||||||
|
import { FilterBar } from "./FilterBar";
|
||||||
|
import { HttpResponse } from "../types/HttpResponse";
|
||||||
|
import { get, put, patch } from "../utils/http";
|
||||||
|
import { Constants } from "../utils/Constants";
|
||||||
|
import { UsersModalEntry } from "./UsersModalEntry";
|
||||||
|
import { useParams } from "react-router-dom";
|
||||||
|
import _ from "underscore";
|
||||||
|
|
||||||
|
interface IProps {
|
||||||
|
show: boolean;
|
||||||
|
handleClose: () => void;
|
||||||
|
// users: User[];
|
||||||
|
// allUsers: User[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export const NewTicketModal: FC<IProps> = ({
|
||||||
|
show,
|
||||||
|
handleClose
|
||||||
|
// users,
|
||||||
|
// allUsers
|
||||||
|
}) => {
|
||||||
|
const [filterText, setFilterText] = useState<string>("");
|
||||||
|
// const [members, setMembers] = useState<User[]>(users);
|
||||||
|
const { id } = useParams();
|
||||||
|
|
||||||
|
const handleChange: (e: ChangeEvent<HTMLInputElement>) => void = (
|
||||||
|
e: ChangeEvent<HTMLInputElement>
|
||||||
|
) => {
|
||||||
|
setFilterText(e.target.value);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmit: (event: FormEvent<HTMLFormElement>) => void = async (
|
||||||
|
e: FormEvent
|
||||||
|
) => {
|
||||||
|
e.preventDefault();
|
||||||
|
await patch<User[]>(
|
||||||
|
`${Constants.projectsURI}/${id}/members`,
|
||||||
|
{}
|
||||||
|
// members.map(m => m.id)
|
||||||
|
);
|
||||||
|
handleClose();
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {});
|
||||||
|
return (
|
||||||
|
<Modal show={show} handleClose={handleClose}>
|
||||||
|
<div className="row valign-wrapper blue">
|
||||||
|
<div className="col s10">
|
||||||
|
<h4 className="white-text">New Ticket</h4>
|
||||||
|
</div>
|
||||||
|
<div className="col s2">
|
||||||
|
<i
|
||||||
|
className="right material-icons blue lighten-3 circle"
|
||||||
|
onClick={handleClose}
|
||||||
|
>
|
||||||
|
close
|
||||||
|
</i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="center">
|
||||||
|
{/* <AvatarList users={users} /> */}
|
||||||
|
{/* <FilterBar
|
||||||
|
filterText={filterText}
|
||||||
|
clearFilterText={() => setFilterText("")}
|
||||||
|
handleChange={handleChange}
|
||||||
|
/> */}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<form onSubmit={handleSubmit}>
|
||||||
|
{/* <ul>
|
||||||
|
{allUsers.map((u: User) => (
|
||||||
|
<li key={u.id}>
|
||||||
|
<UsersModalEntry
|
||||||
|
user={u}
|
||||||
|
members={members}
|
||||||
|
setMembers={setMembers}
|
||||||
|
/>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul> */}
|
||||||
|
<div className="modal-footer">
|
||||||
|
<input
|
||||||
|
type="submit"
|
||||||
|
className="modal-close waves-effect waves-green btn"
|
||||||
|
value="Done"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
@ -24,10 +24,10 @@ export const TabRouter: FC<IProps> = ({
|
||||||
activities
|
activities
|
||||||
}) => {
|
}) => {
|
||||||
const { url } = useRouteMatch();
|
const { url } = useRouteMatch();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="row">
|
<div className="row">
|
||||||
<NewTicketModal handleClose={() => {}} show={true} />
|
|
||||||
<TabRouterHeader tabNames={tabNames} />
|
<TabRouterHeader tabNames={tabNames} />
|
||||||
|
|
||||||
<Redirect from={url} to={`${url}/tickets`} />
|
<Redirect from={url} to={`${url}/tickets`} />
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { FilterBar } from "./FilterBar";
|
||||||
import { put } from "../utils/http";
|
import { put } from "../utils/http";
|
||||||
import { HttpResponse } from "../types/HttpResponse";
|
import { HttpResponse } from "../types/HttpResponse";
|
||||||
import { Constants } from "../utils/Constants";
|
import { Constants } from "../utils/Constants";
|
||||||
|
import { NewTicketModal } from "./NewTicketModal";
|
||||||
|
|
||||||
type TicketListProps = {
|
type TicketListProps = {
|
||||||
tickets: Ticket[];
|
tickets: Ticket[];
|
||||||
|
|
@ -20,6 +21,7 @@ export const TicketList: FC<TicketListProps> = ({ tickets }) => {
|
||||||
|
|
||||||
const onClick: (e: MouseEvent) => void = (e: MouseEvent) => {
|
const onClick: (e: MouseEvent) => void = (e: MouseEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
setShowNew(true);
|
||||||
};
|
};
|
||||||
const handleChange: (e: ChangeEvent<HTMLInputElement>) => void = (
|
const handleChange: (e: ChangeEvent<HTMLInputElement>) => void = (
|
||||||
e: ChangeEvent<HTMLInputElement>
|
e: ChangeEvent<HTMLInputElement>
|
||||||
|
|
@ -27,9 +29,17 @@ export const TicketList: FC<TicketListProps> = ({ tickets }) => {
|
||||||
setFilterText(e.target.value);
|
setFilterText(e.target.value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const [showNew, setShowNew] = useState(false);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="row valign-wrapper">
|
<div className="row valign-wrapper">
|
||||||
|
<NewTicketModal
|
||||||
|
handleClose={() => {
|
||||||
|
setShowNew(false);
|
||||||
|
}}
|
||||||
|
show={showNew}
|
||||||
|
/>
|
||||||
<h3>Tickets</h3>
|
<h3>Tickets</h3>
|
||||||
<FloatingButton
|
<FloatingButton
|
||||||
color=" blue-grey lighten-4"
|
color=" blue-grey lighten-4"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue