@@ -12,12 +12,20 @@ def __init__(
1212 ):
1313 super ().__init__ (wrap = False )
1414 self .model = model
15- self .is_editing = False
15+ self .is_selected_row = model == state . selected_model
1616 self .color = color
17+ self .is_editing = False
1718 self ._build ()
1819
1920 def _build (self ) -> None :
20- with self .classes ("w-full flex items-center justify-between cursor-pointer" ):
21+ self .on ("click" , lambda : state .select_model (self .model ))
22+ base_classes = "w-full flex items-center justify-between cursor-pointer p-2 rounded transition-all"
23+ if self .is_selected_row :
24+ base_classes += " bg-blue-100 dark:bg-blue-900 border-l-4 border-blue-500"
25+ else :
26+ base_classes += " hover:bg-gray-100 dark:hover:bg-gray-800"
27+
28+ with self .classes (base_classes ):
2129 self .name_label = ui .label (text = self .model .name ).classes ("self-center" )
2230 if self .color :
2331 self .name_label .classes (add = self .color )
@@ -28,18 +36,30 @@ def _build(self) -> None:
2836 )
2937 self .name_label .bind_visibility_from (self , "is_editing" , lambda x : not x )
3038
31- self .on ("click" , lambda : state .select_model (self .model ))
39+ with ui .row ().classes ("flex-nowrap gap-2 min-w-fit" ):
40+ self .edit_button = (
41+ ui .button (
42+ icon = "edit" ,
43+ )
44+ .on ("click.stop" , self ._toggle_edit )
45+ .bind_visibility_from (self , "is_editing" , lambda x : not x )
46+ .classes ("min-w-fit" )
47+ )
3248
33- with ui .row ().classes ("gap-2" ):
34- self .edit_button = ui .button (
35- icon = "edit" ,
36- on_click = self ._toggle_edit ,
37- ).bind_visibility_from (self , "is_editing" , lambda x : not x )
38- self .save_button = ui .button (
39- icon = "save" ,
40- on_click = self ._save_model ,
41- ).bind_visibility_from (self , "is_editing" )
42- ui .button (icon = "delete" , on_click = self ._delete_model )
49+ self .save_button = (
50+ ui .button (
51+ icon = "save" ,
52+ )
53+ .on ("click.stop" , self ._save_model )
54+ .bind_visibility_from (self , "is_editing" )
55+ .classes ("min-w-fit" )
56+ )
57+
58+ ui .button (
59+ icon = "delete" ,
60+ ).on ("click.stop" , lambda : state .delete_model (self .model )).classes (
61+ "min-w-fit"
62+ )
4363
4464 def _toggle_edit (self ) -> None :
4565 self .is_editing = not self .is_editing
@@ -49,6 +69,3 @@ def _save_model(self) -> None:
4969 if new_name :
5070 state .update_model_name (self .model , new_name )
5171 self .is_editing = False
52-
53- def _delete_model (self ) -> None :
54- state .delete_model (self .model )
0 commit comments