Filter ToDos (done/undone)
This commit is contained in:
1 parent
096502e80e
commit
4342ff3a41
5 files changed
+2699
-2042
No files matched your search
Generated
+2680
-2033
File diff suppressed because it is too large.
Load diff
+2
-1
@@ -7,6 +7,7 @@
|
|||||||
"@emotion/react": "^11.9.0",
|
"@emotion/react": "^11.9.0",
|
||||||
"@emotion/styled": "^11.8.1",
|
"@emotion/styled": "^11.8.1",
|
||||||
"@mui/icons-material": "^5.6.2",
|
"@mui/icons-material": "^5.6.2",
|
||||||
|
"@mui/lab": "^5.0.0-alpha.87",
|
||||||
"@mui/material": "^5.6.2",
|
"@mui/material": "^5.6.2",
|
||||||
"@mui/x-date-pickers": "^5.0.0-alpha.1",
|
"@mui/x-date-pickers": "^5.0.0-alpha.1",
|
||||||
"@testing-library/jest-dom": "^5.16.4",
|
"@testing-library/jest-dom": "^5.16.4",
|
||||||
@@ -20,7 +21,7 @@
|
|||||||
"react": "^17.0.0",
|
"react": "^17.0.0",
|
||||||
"react-beautiful-dnd": "^13.1.0",
|
"react-beautiful-dnd": "^13.1.0",
|
||||||
"react-dom": "^17.0.0",
|
"react-dom": "^17.0.0",
|
||||||
"react-scripts": "5.0.1",
|
"react-scripts": "^5.0.1",
|
||||||
"typescript": "^4.6.3",
|
"typescript": "^4.6.3",
|
||||||
"web-vitals": "^2.1.4"
|
"web-vitals": "^2.1.4"
|
||||||
},
|
},
|
||||||
|
|||||||
+2
-1
@@ -6,6 +6,7 @@ import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
|
|||||||
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
|
||||||
import { Todos } from './components/Todos';
|
import { Todos } from './components/Todos';
|
||||||
import { Dinos } from './components/Dinos';
|
import { Dinos } from './components/Dinos';
|
||||||
|
import { Schedule } from './components/Schedule';
|
||||||
|
|
||||||
const theme = createTheme({
|
const theme = createTheme({
|
||||||
palette: {
|
palette: {
|
||||||
@@ -33,7 +34,7 @@ function Overview(){
|
|||||||
<Paper sx={{overflowY: "auto", width: "100%", padding: 2, height: "calc(100% - 32px)"}}><Todos/></Paper>
|
<Paper sx={{overflowY: "auto", width: "100%", padding: 2, height: "calc(100% - 32px)"}}><Todos/></Paper>
|
||||||
<Box sx={{width: "100%", display: "flex", flexDirection: "column", justifyContent: "space-evenly"}}>
|
<Box sx={{width: "100%", display: "flex", flexDirection: "column", justifyContent: "space-evenly"}}>
|
||||||
<Calendar/>
|
<Calendar/>
|
||||||
<Calendar/>
|
<Schedule/>
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import React, {useState } from 'react';
|
import React, {useState } from 'react';
|
||||||
import { Box, Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, Divider, List, ListItem, TextField, Tooltip, Typography } from '@mui/material';
|
import { Box, Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, Divider, List, ListItem, Switch, TextField, Tooltip, Typography } from '@mui/material';
|
||||||
import { DatePicker } from '@mui/x-date-pickers';
|
import { DatePicker } from '@mui/x-date-pickers';
|
||||||
import DeleteOutlineRoundedIcon from '@mui/icons-material/DeleteOutlineRounded';
|
import DeleteOutlineRoundedIcon from '@mui/icons-material/DeleteOutlineRounded';
|
||||||
import EditRoundedIcon from '@mui/icons-material/EditRounded';
|
import EditRoundedIcon from '@mui/icons-material/EditRounded';
|
||||||
@@ -228,12 +228,20 @@ const editSubtodo= (todo: Subtodo) => {
|
|||||||
...todos.slice(editI+1)]);
|
...todos.slice(editI+1)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const [showChecked, setShowChecked] = useState(false);
|
||||||
|
const handleShowChecked = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
setShowChecked(event.target.checked);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{...style, textAlign: "left"}}>
|
<div style={{...style, textAlign: "left"}}>
|
||||||
<Typography variant="h3">ToDo's</Typography>
|
<Typography variant="h3">ToDo's</Typography>
|
||||||
<Button onClick={handleClickOpen}>Add Todo</Button>
|
<Button onClick={handleClickOpen}>Add Todo</Button>
|
||||||
|
{/* This should be done with a FormControlLabel or sth...*/}
|
||||||
|
Show Done
|
||||||
|
<Switch checked={showChecked} onChange={handleShowChecked}/>
|
||||||
<List>
|
<List>
|
||||||
{todos.map((todo, i) =>
|
{todos.filter((td) => !td.done || showChecked).map((todo, i) =>
|
||||||
<div key={todo.id}>
|
<div key={todo.id}>
|
||||||
<Box sx={{display: "flex", flexDirection: "columns"}}>
|
<Box sx={{display: "flex", flexDirection: "columns"}}>
|
||||||
<TodoItem key={todo.id} todo={todo}/>
|
<TodoItem key={todo.id} todo={todo}/>
|
||||||
@@ -248,10 +256,10 @@ const editSubtodo= (todo: Subtodo) => {
|
|||||||
<Button onClick={() => deleteTodo(i)}><DeleteOutlineRoundedIcon/></Button>
|
<Button onClick={() => deleteTodo(i)}><DeleteOutlineRoundedIcon/></Button>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Box>
|
</Box>
|
||||||
{(todo.subs && todo.subs.length > 0) &&
|
{(todo.subs && todo.subs.filter((td) => !td.done || showChecked).length > 0) &&
|
||||||
<List sx={{marginLeft: "20px"}}>
|
<List sx={{marginLeft: "20px"}}>
|
||||||
<Divider/>
|
<Divider/>
|
||||||
{todo.subs.map((stodo, j) =>
|
{todo.subs.filter((td) => !td.done || showChecked).map((stodo, j) =>
|
||||||
<div key={stodo.id}>
|
<div key={stodo.id}>
|
||||||
<Box sx={{display: "flex", flexDirection: "columns"}}>
|
<Box sx={{display: "flex", flexDirection: "columns"}}>
|
||||||
<TodoItem key={todo.id} todo={stodo}/>
|
<TodoItem key={todo.id} todo={stodo}/>
|
||||||
@@ -263,11 +271,11 @@ const editSubtodo= (todo: Subtodo) => {
|
|||||||
<Button onClick={() => deleteSubtodo(i,j)}><DeleteOutlineRoundedIcon/></Button>
|
<Button onClick={() => deleteSubtodo(i,j)}><DeleteOutlineRoundedIcon/></Button>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Box>
|
</Box>
|
||||||
{(j + 1) < todo.subs!.length && <Divider/>}
|
{(j + 1) < todo.subs!.filter((td) => !td.done || showChecked).length && <Divider/>}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</List>}
|
</List>}
|
||||||
{(i + 1) < todos.length && <Divider/>}
|
{(i + 1) < todos.filter((td) => !td.done || showChecked).length && <Divider/>}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</List>
|
</List>
|
||||||
|
|||||||
+1
-1
@@ -18,7 +18,7 @@
|
|||||||
"resolveJsonModule": true,
|
"resolveJsonModule": true,
|
||||||
"isolatedModules": true,
|
"isolatedModules": true,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"jsx": "react-jsx"
|
"jsx": "preserve"
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"src"
|
"src"
|
||||||
|
|||||||
Reference in new issue
Block a user