({
id,
done,
text,
deadline,
handleDelete,
handleEdit,
}: TodoItemType & {
handleDelete: (id: number) => void;
handleEdit: (id: number) => void;
})
| 4 | import type Button from "@ui5/webcomponents/dist/Button"; |
| 5 | |
| 6 | function TodoItem({ |
| 7 | id, |
| 8 | done, |
| 9 | text, |
| 10 | deadline, |
| 11 | handleDelete, |
| 12 | handleEdit, |
| 13 | }: TodoItemType & { |
| 14 | handleDelete: (id: number) => void; |
| 15 | handleEdit: (id: number) => void; |
| 16 | }) { |
| 17 | const handleEditBound = () => handleEdit(id); |
| 18 | const handleDeleteBound = () => handleDelete(id); |
| 19 | |
| 20 | const editButton = useRef<Button>(), |
| 21 | deleteButton = useRef<Button>(); |
| 22 | |
| 23 | useEffect(() => { |
| 24 | const currentEditBtn = editButton.current; |
| 25 | currentEditBtn?.addEventListener("click", handleEditBound); |
| 26 | return () => { |
| 27 | currentEditBtn?.removeEventListener("click", handleEditBound); |
| 28 | }; |
| 29 | }); |
| 30 | |
| 31 | useEffect(() => { |
| 32 | const currentDeleteBtn = deleteButton.current; |
| 33 | currentDeleteBtn?.addEventListener("click", handleDeleteBound); |
| 34 | return () => { |
| 35 | currentDeleteBtn?.removeEventListener("click", handleDeleteBound); |
| 36 | }; |
| 37 | }); |
| 38 | |
| 39 | return ( |
| 40 | <ui5-li-custom key={id} selected={done || undefined} data-key={id}> |
| 41 | <div className="li-content"> |
| 42 | <span className="li-content-text"> |
| 43 | {text} - finish before: {deadline} |
| 44 | </span> |
| 45 | <div className="li-content-actions"> |
| 46 | <ui5-button class="edit-btn" ref={editButton}> |
| 47 | Edit |
| 48 | </ui5-button> |
| 49 | <ui5-button design="Negative" ref={deleteButton}> |
| 50 | Delete |
| 51 | </ui5-button> |
| 52 | </div> |
| 53 | </div> |
| 54 | </ui5-li-custom> |
| 55 | ); |
| 56 | } |
| 57 | |
| 58 | export default TodoItem; |
nothing calls this directly
no outgoing calls
no test coverage detected