diff --git a/src/App.js b/src/App.js index 485edec..b3e26f3 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,6 @@ import {useState, useEffect, useRef} from 'react'; import { addTask, addAll, completeBenchmarkTask, benchmarkItem, - emptyList, isActionableList, cancelItem, cloneItem } from './core/tasksManager'; + emptyList, isActionableList, cancelItem, cloneItem, deleteItem, redoItem} from './core/tasksManager'; import { startReview, handleReviewDecision, isPrioritizableList, genCurrentQuestion, getInitialCursor } from './core/reviewManager'; import { getFromLocalStorage, saveToLocalStorage } from './core/localStorageAdapter'; @@ -354,7 +354,7 @@ function App() { // lists in localStorage and query params. // Note: the lists rendered in the conflict modal are not interactive const renderList = (inputList, idOffset, interactive) =>
-
; - - return ( -
-
-

{appName}

- -
-
; + + return ( +
+
+

{appName}

+ +
+
diff --git a/src/TodoItem.js b/src/TodoItem.js index 44744c8..b781d40 100644 --- a/src/TodoItem.js +++ b/src/TodoItem.js @@ -1,6 +1,6 @@ import React from 'react'; -import {dotCircle, emptyCircle, filledCircle, - cancelX, repeatArrow} from './core/icons' +import {dotCircle, emptyCircle, filledCircle, checkmark, duplicateCube, + deleteX, repeatArrow} from './core/icons' // converts the all possible statuses *except* for // 'cancelled' to a renderable symbol @@ -11,31 +11,45 @@ const statusToSymbol = status => { return null; } -function TodoItem({ task, isBenchmark, cancelFunc, cloneFunc, theme }) { +function TodoItem({ task, isBenchmark, cancelFunc, cloneFunc, deleteFunc, redoFunc, theme }) { return ( -
  • {(statusToSymbol(task.status) !== null) ? statusToSymbol(task.status) : statusToSymbol(task.was)} - {task.text} -
    + {task.text} +
    {cancelFunc && cloneFunc && <> - {task.status === "new" || task.status === "ready" ? + {task.status === "new" || task.status === "ready" ? + : + <> + + } + + + } : - }} -
    + {deleteX} +
  • ); } diff --git a/src/core/icons.js b/src/core/icons.js index 2b7f4fe..982e92b 100644 --- a/src/core/icons.js +++ b/src/core/icons.js @@ -27,11 +27,23 @@ export const lightbulbRegular = ; // aliases in font awesome: fa-remove, fa-times, fa-close -export const cancelX = +export const deleteX = ; +// Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools +export const duplicateCube = + + + + +// path made with https://yqnn.github.io/svg-path-editor/ +export const checkmark = + +; + // aliases: fa-rotate-right, redo-alt export const repeatArrow = -; \ No newline at end of file +; + diff --git a/src/core/tasksManager.js b/src/core/tasksManager.js index d196fda..cd7080c 100644 --- a/src/core/tasksManager.js +++ b/src/core/tasksManager.js @@ -82,4 +82,18 @@ export const cloneItem = (tasks, id) => { const itemText = tasks.filter(x => x.id === id).at(0).text; const updatedTasks = addTask(tasks, itemText); return updatedTasks; +} + +// takes item of a given id and removes it from the list +export const deleteItem = (tasks, id) => { + const updatedTasks = tasks.filter(task => task.id !== id); + return updatedTasks; +} + +// takes item of a given id and marks it as ready +export const redoItem = (tasks, id) => { + const updatedTasks = tasks.map(task => + task.id === id ? { ...task, status: "ready" } : task + ); + return updatedTasks; } \ No newline at end of file