Tab Tickets ready
parent
b5975993be
commit
0e39226e96
|
@ -24,7 +24,6 @@ const ContentContainerStyled = styled.div`
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
background-color: ${color.complement.azulOscuro};
|
background-color: ${color.complement.azulOscuro};
|
||||||
padding: 6px;
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default MainContainerStyled;
|
export default MainContainerStyled;
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
import React from "react";
|
||||||
|
|
||||||
|
import NewTicketModal from "../../NewTicketModal";
|
||||||
|
import TicketsList from "../../TicketsList/TicketsList";
|
||||||
|
|
||||||
|
import { AuthContext } from "../../../context/Auth/AuthContext";
|
||||||
|
import { i18n } from "../../../translate/i18n";
|
||||||
|
import { Can } from "../../Can";
|
||||||
|
import TicketsQueueSelect from "../../TicketsQueueSelect";
|
||||||
|
import TicketsManagerStyled from "./TicketsManager.style";
|
||||||
|
import TicketsTabs from "./TicketsTabs/TicketsTabs";
|
||||||
|
|
||||||
|
const TicketsManager = () => {
|
||||||
|
const [valueTab, setValueTab] = React.useState("open");
|
||||||
|
const [searchParam, setSearchParam] = React.useState("");
|
||||||
|
|
||||||
|
const [newTicketModalOpen, setNewTicketModalOpen] = React.useState(false);
|
||||||
|
const [showAllTickets, setShowAllTickets] = React.useState(false);
|
||||||
|
const { user } = React.useContext(AuthContext);
|
||||||
|
|
||||||
|
const userQueueIds = user.queues.map((q) => q.id);
|
||||||
|
const [selectedQueueIds, setSelectedQueueIds] = React.useState(userQueueIds || []);
|
||||||
|
|
||||||
|
let searchTimeout;
|
||||||
|
const handleSearch = (e) => {
|
||||||
|
const searchedTerm = e.target.value.toLowerCase();
|
||||||
|
|
||||||
|
clearTimeout(searchTimeout);
|
||||||
|
|
||||||
|
if (searchedTerm === "") {
|
||||||
|
setSearchParam(searchedTerm);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
searchTimeout = setTimeout(() => {
|
||||||
|
setSearchParam(searchedTerm);
|
||||||
|
}, 200);
|
||||||
|
};
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
if (user.profile.toUpperCase() === "ADMIN") {
|
||||||
|
setShowAllTickets(true);
|
||||||
|
}
|
||||||
|
}, [user.profile]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<TicketsManagerStyled>
|
||||||
|
<TicketsTabs setValueTab={setValueTab} valueTab={valueTab} />
|
||||||
|
<div style={{ display: "flex", flexDirection: "row", justifyContent: "center" }}>
|
||||||
|
<input type="text" style={{ width: "100%", margin: "0 6px" }} onChange={handleSearch}/>
|
||||||
|
<button onClick={() => setNewTicketModalOpen(true)}>+</button>
|
||||||
|
</div>
|
||||||
|
<TicketsList status={valueTab} selectedQueueIds={selectedQueueIds} searchParam={searchParam} />
|
||||||
|
<NewTicketModal
|
||||||
|
modalOpen={newTicketModalOpen}
|
||||||
|
onClose={(e) => setNewTicketModalOpen(false)}
|
||||||
|
/>
|
||||||
|
</TicketsManagerStyled>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TicketsManager;
|
|
@ -0,0 +1,12 @@
|
||||||
|
import styled from "styled-components";
|
||||||
|
import {color} from "../../../style/varibles"
|
||||||
|
|
||||||
|
const TicketsManagerStyled = styled.div`
|
||||||
|
display:flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
height: 100vh;
|
||||||
|
max-width: 425px;
|
||||||
|
border-right:1px solid ${color.gradient.border};
|
||||||
|
`
|
||||||
|
export default TicketsManagerStyled
|
|
@ -0,0 +1,27 @@
|
||||||
|
import React from "react";
|
||||||
|
import { TicketsTabStyled } from "./TicketsTab.style";
|
||||||
|
|
||||||
|
const TicketsTab = ({ text, id, setValueTab, valueTab }) => {
|
||||||
|
const [active, setActive] = React.useState(false);
|
||||||
|
|
||||||
|
const handleClick = ({ target }) => {
|
||||||
|
setValueTab(target.id);
|
||||||
|
};
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
valueTab === id ? setActive(true) : setActive(false);
|
||||||
|
}, [valueTab, id]);
|
||||||
|
return (
|
||||||
|
<TicketsTabStyled
|
||||||
|
id={id}
|
||||||
|
valueTab={valueTab}
|
||||||
|
onClick={handleClick}
|
||||||
|
className={active ? "active" : ""}
|
||||||
|
>
|
||||||
|
{text}
|
||||||
|
</TicketsTabStyled>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TicketsTab;
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
import styled from "styled-components";
|
||||||
|
import { color } from "../../../../../style/varibles";
|
||||||
|
|
||||||
|
export const TicketsTabStyled = styled.li`
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
color: ${color.pricinpal.blanco};
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-family: "Helvetica85";
|
||||||
|
padding: 1rem 1.5rem;
|
||||||
|
text-align: center;
|
||||||
|
&:after {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 2px;
|
||||||
|
background-color: white;
|
||||||
|
transition: width 0.2s linear;
|
||||||
|
}
|
||||||
|
&.active {
|
||||||
|
&:after {
|
||||||
|
width: 100%;
|
||||||
|
transition: width 0.2s linear;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:nth-child(2) {
|
||||||
|
border-left: 1px solid ${color.gradient.border};
|
||||||
|
border-right: 1px solid ${color.gradient.border};
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
import React from "react";
|
||||||
|
import { TicketTabsStyled } from "./TicketsTabs.style";
|
||||||
|
|
||||||
|
import TicketsTab from "./TicketsTab/TicketsTab";
|
||||||
|
|
||||||
|
const TicketsTabs = ({ setValueTab, valueTab }) => {
|
||||||
|
if (!setValueTab) return null;
|
||||||
|
return (
|
||||||
|
<TicketTabsStyled>
|
||||||
|
<TicketsTab text="Aberto" id="open" setValueTab={setValueTab} valueTab={valueTab} />
|
||||||
|
<TicketsTab text="Pendente" id="pending" setValueTab={setValueTab} valueTab={valueTab} />
|
||||||
|
<TicketsTab text="Fechado" id="closed" setValueTab={setValueTab} valueTab={valueTab} />
|
||||||
|
</TicketTabsStyled>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TicketsTabs;
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
import styled from "styled-components";
|
||||||
|
import { color } from "../../../../style/varibles";
|
||||||
|
|
||||||
|
export const TicketTabsStyled = styled.ul`
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
border-bottom: 1px solid ${color.gradient.border};
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
`;
|
||||||
|
|
|
@ -21,7 +21,6 @@ const TicketListItem = ({ ticket, status }) => {
|
||||||
const handleSelectTicket = (id) => {
|
const handleSelectTicket = (id) => {
|
||||||
history.push(`/tickets/${id}`);
|
history.push(`/tickets/${id}`);
|
||||||
};
|
};
|
||||||
console.log(ticket.id);
|
|
||||||
|
|
||||||
if (ticket.status !== status) return null;
|
if (ticket.status !== status) return null;
|
||||||
return (
|
return (
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
import React from "react";
|
|
||||||
|
|
||||||
import NewTicketModal from "../NewTicketModal";
|
|
||||||
import TicketsList from "../TicketsList/TicketsList";
|
|
||||||
|
|
||||||
import { i18n } from "../../translate/i18n";
|
|
||||||
import { AuthContext } from "../../context/Auth/AuthContext";
|
|
||||||
import { Can } from "../Can";
|
|
||||||
import TicketsQueueSelect from "../TicketsQueueSelect";
|
|
||||||
import TicketsManagerStyled from "./TicketsManager.style";
|
|
||||||
|
|
||||||
const TicketsManager = () => {
|
|
||||||
const [valueTab, setValueTab] = React.useState("open");
|
|
||||||
|
|
||||||
const [newTicketModalOpen, setNewTicketModalOpen] = React.useState(false);
|
|
||||||
const [showAllTickets, setShowAllTickets] = React.useState(false);
|
|
||||||
const { user } = React.useContext(AuthContext);
|
|
||||||
|
|
||||||
|
|
||||||
const userQueueIds = user.queues.map((q) => q.id);
|
|
||||||
const [selectedQueueIds, setSelectedQueueIds] = React.useState(userQueueIds || []);
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
if (user.profile.toUpperCase() === "ADMIN") {
|
|
||||||
setShowAllTickets(true);
|
|
||||||
}
|
|
||||||
}, [user.profile]);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const styleTmp = {
|
|
||||||
padding:"12px 0 ",
|
|
||||||
cursor: "pointer",
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
console.log(valueTab);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TicketsManagerStyled>
|
|
||||||
<ul>
|
|
||||||
<li style={styleTmp} id="open" onClick={(e) => setValueTab(e.target.id)}>
|
|
||||||
Abertos
|
|
||||||
</li>
|
|
||||||
<li style={styleTmp} id="pending" onClick={(e) => setValueTab(e.target.id)}>
|
|
||||||
Pendentes
|
|
||||||
</li>
|
|
||||||
<li style={styleTmp} id="closed" onClick={(e) => setValueTab(e.target.id)}>
|
|
||||||
Fechados
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<TicketsList
|
|
||||||
status={valueTab}
|
|
||||||
selectedQueueIds={selectedQueueIds}
|
|
||||||
updateCount={(val) => setPendingCount(val)}
|
|
||||||
/>
|
|
||||||
<NewTicketModal
|
|
||||||
modalOpen={newTicketModalOpen}
|
|
||||||
onClose={(e) => setNewTicketModalOpen(true)}
|
|
||||||
/>
|
|
||||||
</TicketsManagerStyled>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default TicketsManager;
|
|
|
@ -1,7 +0,0 @@
|
||||||
import styled from "styled-components"
|
|
||||||
|
|
||||||
const TicketsManagerStyled = styled.div`
|
|
||||||
display:flex;
|
|
||||||
flex-direction: column;
|
|
||||||
`
|
|
||||||
export default TicketsManagerStyled
|
|
|
@ -3,7 +3,7 @@ import { useParams } from "react-router-dom";
|
||||||
|
|
||||||
import TicketsStyled from "./Tickets.style";
|
import TicketsStyled from "./Tickets.style";
|
||||||
|
|
||||||
import TicketsManager from "../../components/TicketsManager/TicketsManager";
|
import TicketsManager from "../../components/Ticket/TicketsManager/TicketsManager";
|
||||||
import Ticket from "../../components/Ticket/";
|
import Ticket from "../../components/Ticket/";
|
||||||
|
|
||||||
const Tickets = () => {
|
const Tickets = () => {
|
||||||
|
|
|
@ -47,14 +47,15 @@ export const color = {
|
||||||
status: {
|
status: {
|
||||||
no: "#FF0000",
|
no: "#FF0000",
|
||||||
yes: "#00BE1E",
|
yes: "#00BE1E",
|
||||||
warning: "#FFC700"
|
warning: "#FFC700",
|
||||||
},
|
},
|
||||||
gradient: {
|
gradient: {
|
||||||
bgOpacity:"#212F3CD8",
|
bgOpacity: "#212f3cd7",
|
||||||
placeholder:"#ffffff83"
|
placeholder: "#ffffff83",
|
||||||
|
border: "#55A5DC3F",
|
||||||
},
|
},
|
||||||
shadow: {
|
shadow: {
|
||||||
dark:"2px 2px 4px 2px"
|
dark: "2px 2px 4px 2px",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue