import React, { useState } from "react"; import { useSelector, useDispatch } from "react-redux"; import { add_todo, change_done, remove_todo, edit_todo, sort_todo, select_todos, select_last_index, select_current_sorting, } from "./features/todo/reducer"; export function NewToDo() { const my_todos = useSelector(select_todos); const my_last_idx = useSelector(select_last_index); const dispatch = useDispatch(); const [new_text, set_new_text] = useState(""); const [new_due_date, set_new_due_date] = useState(""); const [new_done, set_new_done] = useState(false); const [new_priority, set_new_priority] = useState("Low"); function handle_exit_modal() { // https://stackoverflow.com/questions/27826381/clearing-form-input-fields-in-bootstrap $("form").get(0).reset(); // Reset form set_new_text(""); set_new_due_date(""); set_new_done(false); set_new_priority("Low"); } return ( <>
); } function sort_table_header(prefix, current_sorting) { if (prefix.toLowerCase().startsWith(current_sorting.substr(0, 3))) { switch (current_sorting.substr(-1)) { case "^": return ( <> {prefix} ); case "v": return ( <> {prefix} ); } } else { return ( <> {prefix} ); } } export function ListToDos() { const my_todos = useSelector(select_todos); const my_sorting = useSelector(select_current_sorting); const dispatch = useDispatch(); const [edit_id, set_edit_id] = useState(-1); const [edit_text, set_edit_text] = useState(""); const [edit_due_date, set_edit_due_date] = useState(""); const [edit_done, set_edit_done] = useState(false); const [edit_priority, set_edit_priority] = useState("Low"); function handle_open_modal(id, text, due_date, done, priority) { set_edit_id(id); set_edit_text(text); set_edit_due_date(due_date); set_edit_done(done); set_edit_priority(priority); } function handle_exit_modal() { // https://stackoverflow.com/questions/27826381/clearing-form-input-fields-in-bootstrap $("form").get(0).reset(); // Reset form set_edit_id(-1); set_edit_text(""); set_edit_done(false); set_edit_priority("Low"); } return ( <>
{my_todos.map((item) => ( ))}
# Name dispatch( sort_todo({ where_clicked: "priority", }) ) } > {sort_table_header("Priority", my_sorting)} dispatch( sort_todo({ where_clicked: "due_date" }) ) } > {sort_table_header("Due Date", my_sorting)} Actions
dispatch( change_done({ id: item.id, done: e.target.checked, }) ) } >
{item.text} {item.priority} {item.due_date}
); }