File tree Expand file tree Collapse file tree 3 files changed +20
-27
lines changed Expand file tree Collapse file tree 3 files changed +20
-27
lines changed Original file line number Diff line number Diff line change 100100 }
101101 };
102102
103- const handleRemove = (event : CustomEvent < ItemDeleteEvent > ) => {
104- todoStore .remove (event . detail .id );
103+ const handleRemove = (item : ItemDeleteEvent ) => {
104+ todoStore .remove (item .id );
105105 };
106106
107- const handleEdit = (event : CustomEvent < ItemEditEvent > ) => {
108- const matchedTodo = todoStore .todos .find ((todo ) => todo .id === event . detail .id );
107+ const handleEdit = (item : ItemEditEvent ) => {
108+ const matchedTodo = todoStore .todos .find ((todo ) => todo .id === item .id );
109109
110110 if (! matchedTodo ) {
111- console .warn (` Todo item with id ${event . detail .id } not found. ` );
111+ console .warn (` Todo item with id ${item .id } not found. ` );
112112 return ;
113113 }
114114
168168
169169 <section class =" list-todo-wrapper" >
170170 <ui5-panel class ="list-todos-panel" header-text ="Incompleted Tasks" collapsed ={! undoneTodos .length || undefined }>
171- <TodoList items ={undoneTodos } on:item-edit ={handleEdit } on:item-delete ={handleRemove } on:selection-change ={handleToggleDone } />
171+ <TodoList items ={undoneTodos } onEdit ={handleEdit } onDelete ={handleRemove } onSelectionChange ={handleToggleDone } />
172172 </ui5-panel >
173173
174174 <ui5-panel class ="list-todos-panel" header-text ="Completed Tasks" collapsed ={! doneTodos .length || undefined }>
175- <TodoList items ={doneTodos } on:item-edit ={handleEdit } on:item-delete ={handleRemove } on:selection-change ={handleToggleDone } />
175+ <TodoList items ={doneTodos } onEdit ={handleEdit } onDelete ={handleRemove } onSelectionChange ={handleToggleDone } />
176176 </ui5-panel >
177177 </section >
178178 </section >
Original file line number Diff line number Diff line change 11<script lang =" ts" >
2- import { createEventDispatcher } from " svelte" ;
32 import " @ui5/webcomponents/dist/ListItemCustom" ;
43 import type { TodoItemT } from " ../types/TodoItem.type" ;
54 import type { ItemEditEvent , ItemDeleteEvent } from " ./todoitem.event" ;
87 // Props
98 item: TodoItemT ;
109 datakey: number ;
10+ onDelete(item : ItemDeleteEvent ): void ;
11+ onEdit(item : ItemEditEvent ): void ;
1112 }
1213
13- let { item, datakey }: Props = $props ();
14-
15- // Events do not bubble from nested components
16- // in svelte, we must dispatch them
17- const dispatcher = createEventDispatcher ();
14+ let { item, datakey, onEdit, onDelete }: Props = $props ();
1815
1916 const handleEditPress = () => {
20- const event: ItemEditEvent = {
21- id: item .id ,
22- };
23- dispatcher <string >(" item-edit" , event );
17+ onEdit ({ id: item .id });
2418 };
2519
2620 const handleDeletePress = () => {
27- const event: ItemDeleteEvent = {
28- id: item .id ,
29- };
30- dispatcher (" item-delete" , event );
21+ onDelete ({ id: item .id });
3122 };
3223 </script >
3324
Original file line number Diff line number Diff line change 11<script lang =" ts" >
2- import { createBubbler } from ' svelte/legacy' ;
3-
4- const bubble = createBubbler ();
52 import " @ui5/webcomponents/dist/List" ;
63
74 import TodoItem from " ./TodoItem.svelte" ;
85 import type { TodoItemT } from " ../types/TodoItem.type" ;
6+ import type { ItemDeleteEvent , ItemEditEvent } from " ./todoitem.event" ;
7+ import type { ListSelectionChangeEventDetail } from " @ui5/webcomponents/dist/List.js" ;
98
109 interface Props {
1110 items: TodoItemT [];
11+ onEdit(item : ItemEditEvent ): void ;
12+ onDelete(item : ItemDeleteEvent ): void ;
13+ onSelectionChange(event : CustomEvent <ListSelectionChangeEventDetail >): void ;
1214 }
1315
14- let { items }: Props = $props ();
16+ let { items, onEdit, onDelete, onSelectionChange }: Props = $props ();
1517 </script >
1618
17- <ui5-list selection-mode ="Multiple" onselection-change ={bubble ( ' selection-change ' )}>
19+ <ui5-list selection-mode ="Multiple" onselection-change ={( event : CustomEvent < ListSelectionChangeEventDetail >) => onSelectionChange ( event )}>
1820 {#each items as item (item .id )}
19- <TodoItem {item } datakey ={item .id } on:item-edit on:item-delete />
21+ <TodoItem {item } datakey ={item .id } { onEdit } { onDelete } />
2022 {/each }
2123</ui5-list >
2224
You can’t perform that action at this time.
0 commit comments