(task: TaskItem, delete_task, key=None)
| 145 | |
| 146 | @ft.component |
| 147 | def TaskItemView(task: TaskItem, delete_task, key=None) -> ft.Control: |
| 148 | edit_mode, set_edit_mode = ft.use_state(False) |
| 149 | new_name, set_new_name = ft.use_state("") |
| 150 | |
| 151 | def edit(): |
| 152 | set_edit_mode(True) |
| 153 | set_new_name(task.name) |
| 154 | |
| 155 | def complete_edit(): |
| 156 | task.update_task(new_name) |
| 157 | set_edit_mode(False) |
| 158 | |
| 159 | return ( |
| 160 | ft.Row( |
| 161 | alignment=ft.MainAxisAlignment.SPACE_BETWEEN, |
| 162 | vertical_alignment=ft.CrossAxisAlignment.CENTER, |
| 163 | controls=[ |
| 164 | ft.Checkbox( |
| 165 | value=task.completed, |
| 166 | label=task.name, |
| 167 | on_change=lambda: task.toggle_task_status(), |
| 168 | ), |
| 169 | ft.Row( |
| 170 | spacing=0, |
| 171 | controls=[ |
| 172 | ft.IconButton( |
| 173 | icon=ft.Icons.CREATE_OUTLINED, |
| 174 | tooltip="Edit To-Do", |
| 175 | on_click=edit, |
| 176 | ), |
| 177 | ft.IconButton( |
| 178 | ft.Icons.DELETE_OUTLINE, |
| 179 | tooltip="Delete To-Do", |
| 180 | on_click=lambda: delete_task(task), |
| 181 | ), |
| 182 | ], |
| 183 | ), |
| 184 | ], |
| 185 | ) |
| 186 | if not edit_mode |
| 187 | else ft.Row( |
| 188 | alignment=ft.MainAxisAlignment.SPACE_BETWEEN, |
| 189 | vertical_alignment=ft.CrossAxisAlignment.CENTER, |
| 190 | controls=[ |
| 191 | ft.TextField( |
| 192 | value=new_name, |
| 193 | on_change=lambda e: set_new_name(e.control.value), |
| 194 | expand=1, |
| 195 | ), |
| 196 | ft.IconButton( |
| 197 | icon=ft.Icons.DONE_OUTLINE_OUTLINED, |
| 198 | icon_color=ft.Colors.GREEN, |
| 199 | tooltip="Update To-Do", |
| 200 | on_click=complete_edit, |
| 201 | ), |
| 202 | ], |
| 203 | ) |
| 204 | ) |
no test coverage detected