Improve sidebar UX

This commit is contained in:
Hazem Krimi
2023-05-20 18:41:15 +01:00
parent 390d833e74
commit 4b3f1e8750
4 changed files with 55 additions and 25 deletions
+44 -21
View File
@@ -120,6 +120,16 @@ const Sidebar = () => {
};
}, [location.pathname]);
const showAddButton = (role: string, pathname: string) => {
switch (role) {
case 'client': return (/project/i.test(pathname));
case 'productOwner': return (/template/i.test(pathname));
case 'developer': return (/feature/i.test(pathname) || /category/i.test(pathname));
}
return false;
}
return (
<Wrapper color={role}>
{role !== 'admin' && (
@@ -210,27 +220,40 @@ const Sidebar = () => {
))}
</Box>
<Box display='flex' flexDirection='column'>
<Box marginBottom='20px'>
<IconButton
icon={<Add />}
color={role}
onClick={() => {
if (/project/i.test(location.pathname)) {
navigate('/add-project');
}
if (/template/i.test(location.pathname)) {
navigate('/add-template');
}
if (/feature/i.test(location.pathname)) {
navigate('/add-feature');
}
if (/category/i.test(location.pathname)) {
navigate('/add-category');
}
}}
/>
</Box>
{/\/project/i.test(location.pathname) && (
{showAddButton(role, location.pathname) && (
<Box marginBottom='20px'>
<IconButton
icon={<Add />}
color={role}
onClick={() => {
switch(role) {
case 'client': {
if (/project/i.test(location.pathname)) {
navigate('/add-project');
}
}
case 'productOwner': {
if (/project/i.test(location.pathname)) {
navigate('/add-project');
}
if (/template/i.test(location.pathname)) {
navigate('/add-template');
}
}
case 'developer': {
if (/feature/i.test(location.pathname)) {
navigate('/add-feature');
}
if (/category/i.test(location.pathname)) {
navigate('/add-category');
}
}
}
}}
/>
</Box>
)}
{/project/i.test(location.pathname) && ['client', 'productOwner'].includes(role) && (
<Box>
<IconButton
icon={<Messaging />}
-2
View File
@@ -418,12 +418,10 @@ const AddProject = () => {
.required('Email is required')
.email('Email is invalid'),
prefix: Yup.string().required('Prefix is required'),
// prettier-ignore
number: Yup.number().typeError('Phone must be a number').required('Phone is required'),
place: Yup.string().required('Address is required'),
city: Yup.string().required('City is required'),
country: Yup.string().required('Country is required'),
// prettier-ignore
zip: Yup.number().typeError('Zip must be a number').required('Zip is required'),
}),
onSubmit: ({
+1 -1
View File
@@ -278,7 +278,7 @@ const AddTemplate = () => {
<Spinner fullScreen color={role || 'client'} />
);
if (categoriesError || featuresError || !availableFeatures || !categories) return (
if (categoriesError || featuresError || !categories) return (
<Wrapper color={role}>
<Box
width='100%'
+10 -1
View File
@@ -1,5 +1,14 @@
import styled from 'styled-components';
export const Wrapper = styled.div`
type WrapperProps = {
color?: 'client' | 'productOwner' | 'developer' | 'admin';
};
export const Wrapper = styled.div<WrapperProps>`
padding: 35px 45px 35px 120px;
.empty {
fill: ${({ theme, color }) =>
color ? theme.colors[color].main : theme.colors.client.main};
}
`;