(task: TaskItem, delete_task, key=None)
| 79 | |
| 80 | @ft.component |
| 81 | def TaskItemView(task: TaskItem, delete_task, key=None) -> ft.Control: |
| 82 | edit_mode, set_edit_mode = ft.use_state(False) |
| 83 | new_name, set_new_name = ft.use_state("") |
| 84 | |
| 85 | def edit(): |
| 86 | set_edit_mode(True) |
| 87 | set_new_name(task.name) |
| 88 | |
| 89 | def complete_edit(): |
| 90 | task.update_task(new_name) |
| 91 | set_edit_mode(False) |
| 92 | |
| 93 | return ( |
| 94 | ft.Row( |
| 95 | alignment=ft.MainAxisAlignment.SPACE_BETWEEN, |
| 96 | vertical_alignment=ft.CrossAxisAlignment.CENTER, |
| 97 | controls=[ |
| 98 | ft.Checkbox( |
| 99 | value=task.completed, |
| 100 | label=task.name, |
| 101 | on_change=lambda: task.toggle_task_status(), |
| 102 | ), |
| 103 | ft.Row( |
| 104 | spacing=0, |
| 105 | controls=[ |
| 106 | ft.IconButton( |
| 107 | icon=ft.Icons.CREATE_OUTLINED, |
| 108 | tooltip="Edit To-Do", |
| 109 | on_click=edit, |
| 110 | ), |
| 111 | ft.IconButton( |
| 112 | ft.Icons.DELETE_OUTLINE, |
| 113 | tooltip="Delete To-Do", |
| 114 | on_click=lambda: delete_task(task), |
| 115 | ), |
| 116 | ], |
| 117 | ), |
| 118 | ], |
| 119 | ) |
| 120 | if not edit_mode |
| 121 | else ft.Row( |
| 122 | alignment=ft.MainAxisAlignment.SPACE_BETWEEN, |
| 123 | vertical_alignment=ft.CrossAxisAlignment.CENTER, |
| 124 | controls=[ |
| 125 | ft.TextField( |
| 126 | value=new_name, |
| 127 | on_change=lambda e: set_new_name(e.control.value), |
| 128 | expand=1, |
| 129 | ), |
| 130 | ft.IconButton( |
| 131 | icon=ft.Icons.DONE_OUTLINE_OUTLINED, |
| 132 | icon_color=ft.Colors.GREEN, |
| 133 | tooltip="Update To-Do", |
| 134 | on_click=complete_edit, |
| 135 | ), |
| 136 | ], |
| 137 | ) |
| 138 | ) |
no test coverage detected