@@ -14,8 +14,19 @@ def create(what, id_=None, classes=''):
14
14
add_classes (element , classes )
15
15
return Element (id_ , element )
16
16
17
+ class PyWidgetTheme :
18
+ def __init__ (self , main_style_classes ):
19
+ self .main_style_classes = main_style_classes
20
+
21
+ def theme_it (self , widget ):
22
+ for klass in self .main_style_classes .split (' ' ):
23
+ widget .classList .add (klass )
24
+
25
+
26
+ class PyListTemplate :
27
+ theme = PyWidgetTheme ("flex flex-col-reverse mt-4" )
28
+
17
29
18
- class PyList :
19
30
def __init__ (self , parent ):
20
31
self .parent = parent
21
32
self ._children = []
@@ -25,8 +36,8 @@ def connect(self):
25
36
self .md = main_div = document .createElement ('div' );
26
37
main_div .id = self .id + "-list-tasks-container"
27
38
28
- for klass in "flex flex-col-reverse mt-4" . split ( ' ' ) :
29
- main_div . classList . add ( klass )
39
+ if self . theme :
40
+ self . theme . theme_it ( main_div )
30
41
31
42
self .parent .appendChild (main_div )
32
43
@@ -35,12 +46,24 @@ def add(self, data, labels):
35
46
return self ._add (child )
36
47
37
48
def _add (self , child_elem ):
38
- self ._children .append (child_elem )
39
49
console .log ("appending child" , child_elem .element )
50
+ self .pre_child_append (child_elem )
51
+ child_elem .pre_append ()
52
+ self ._children .append (child_elem )
40
53
self .md .appendChild (child_elem .create ().element )
54
+ child_elem .post_append ()
55
+ self .child_appended (child_elem )
41
56
return child_elem
42
57
43
- class PyItem (Element ):
58
+ def pre_child_append (self , child ):
59
+ pass
60
+
61
+ def child_appended (self , child ):
62
+ """Overwrite me to define logic"""
63
+ pass
64
+
65
+
66
+ class PyItemTemplate (Element ):
44
67
def __init__ (self , parent , data , labels ):
45
68
self ._parent = parent
46
69
self .id = f"{ self ._parent .id } -c-{ len (self ._parent ._children )} "
@@ -63,22 +86,48 @@ def create(self):
63
86
</label>
64
87
"""
65
88
66
- check = new_child .select ('input' ).element
67
- check .onclick = self .check_task
89
+ # check = new_child.select('input').element
90
+ # check.onclick = self.check_task
68
91
console .log ('returning' )
69
92
return new_child
70
93
71
- def check_task (self , evt = None ):
72
- self .data ['done' ] = not self .data ['done' ]
73
- if self .data ['done' ]:
94
+ def on_click (self , evt ):
95
+ pass
96
+
97
+ def pre_append (self ):
98
+ pass
99
+
100
+ def post_append (self ):
101
+ self .element .click = self .on_click
102
+ self .element .onclick = self .on_click
103
+
104
+ self ._post_append ()
105
+
106
+ def _post_append (self ):
107
+ pass
108
+
109
+ def strike (self , value ):
110
+ if value :
74
111
self .add_class ("line-through" )
75
112
else :
76
113
self .remove_class ("line-through" )
114
+
77
115
116
+ class PyList (PyListTemplate ):
117
+ pass
118
+
119
+
120
+ class PyItem (PyItemTemplate ):
121
+ def on_click (self , evt = None ):
122
+ self .data ['done' ] = not self .data ['done' ]
123
+ self .strike (self .data ['done' ])
78
124
125
+ self .select ('input' ).element .checked = self .data ['done' ]
126
+
127
+
79
128
def add_task (* ags , ** kws ):
80
129
console .log (new_task_content .value )
81
- console .log ('adding ' , myList )
130
+ console .log ('adding1 ' , myList )
82
131
task = {
83
132
"content" : new_task_content .value ,
84
133
"done" : False ,
0 commit comments