MCPcopy Create free account
hub / github.com/UI5/sample-webcomponents-react / TodoItem

Function TodoItem

src/components/TodoItem.tsx:6–56  ·  view source on GitHub ↗
({
	id,
	done,
	text,
	deadline,
	handleDelete,
	handleEdit,
}: TodoItemType & {
	handleDelete: (id: number) => void;
	handleEdit: (id: number) => void;
})

Source from the content-addressed store, hash-verified

4import type Button from "@ui5/webcomponents/dist/Button";
5
6function 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
58export default TodoItem;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected