@@ -130,6 +130,7 @@ def create(what, id_=None, classes=''):
130
130
add_classes(element, classes)
131
131
return Element(id_, element)
132
132
133
+
133
134
class PyWidgetTheme:
134
135
def __init__(self, main_style_classes):
135
136
self.main_style_classes = main_style_classes
@@ -139,57 +140,6 @@ class PyWidgetTheme:
139
140
widget.classList.add(klass)
140
141
141
142
142
- class PyListTemplate:
143
- theme = PyWidgetTheme("flex flex-col-reverse mt-8 mx-4")
144
-
145
-
146
- def __init__(self, parent):
147
- self.parent = parent
148
- self._children = []
149
- self._id = self.parent.id
150
-
151
- @property
152
- def children(self):
153
- return self._children
154
-
155
- @property
156
- def data(self):
157
- return [c.data for c in self._children]
158
-
159
- def render_children(self):
160
- return [c.element.innerHTML.replace("\\n", "") for c in self._children]
161
-
162
- def connect(self):
163
- self.md = main_div = document.createElement('div');
164
- main_div.id = self._id + "-list-tasks-container"
165
-
166
- if self.theme:
167
- self.theme.theme_it(main_div)
168
-
169
- self.parent.appendChild(main_div)
170
-
171
- def add(self, child):
172
- child.register_parent(self)
173
- return self._add(child)
174
-
175
- def _add(self, child_elem):
176
- console.log("appending child", child_elem.element)
177
- self.pre_child_append(child_elem)
178
- child_elem.pre_append()
179
- self._children.append(child_elem)
180
- self.md.appendChild(child_elem.create().element)
181
- child_elem.post_append()
182
- self.child_appended(child_elem)
183
- return child_elem
184
-
185
- def pre_child_append(self, child):
186
- pass
187
-
188
- def child_appended(self, child):
189
- """Overwrite me to define logic"""
190
- pass
191
-
192
-
193
143
class PyItemTemplate(Element):
194
144
label_fields = None
195
145
@@ -253,6 +203,61 @@ class PyItemTemplate(Element):
253
203
254
204
def render_content(self):
255
205
return ' - '.join([self.data[f] for f in self.labels])
206
+
207
+ class PyListTemplate:
208
+ theme = PyWidgetTheme("flex flex-col-reverse mt-8 mx-8")
209
+ item_class = PyItemTemplate
210
+
211
+ def __init__(self, parent):
212
+ self.parent = parent
213
+ self._children = []
214
+ self._id = self.parent.id
215
+
216
+ @property
217
+ def children(self):
218
+ return self._children
219
+
220
+ @property
221
+ def data(self):
222
+ return [c.data for c in self._children]
223
+
224
+ def render_children(self):
225
+ return [c.element.innerHTML.replace("\\n", "") for c in self._children]
226
+
227
+ def connect(self):
228
+ self.md = main_div = document.createElement('div');
229
+ main_div.id = self._id + "-list-tasks-container"
230
+
231
+ if self.theme:
232
+ self.theme.theme_it(main_div)
233
+
234
+ self.parent.appendChild(main_div)
235
+
236
+ def add(self, *args, **kws):
237
+ if not isinstance(args[0], self.item_class):
238
+ child = self.item_class(*args, **kws)
239
+ else:
240
+ child = args[0]
241
+ child.register_parent(self)
242
+ return self._add(child)
243
+
244
+ def _add(self, child_elem):
245
+ console.log("appending child", child_elem.element)
246
+ self.pre_child_append(child_elem)
247
+ child_elem.pre_append()
248
+ self._children.append(child_elem)
249
+ self.md.appendChild(child_elem.create().element)
250
+ child_elem.post_append()
251
+ self.child_appended(child_elem)
252
+ return child_elem
253
+
254
+ def pre_child_append(self, child):
255
+ pass
256
+
257
+ def child_appended(self, child):
258
+ """Overwrite me to define logic"""
259
+ pass
260
+
256
261
257
262
258
263
class OutputCtxManager:
0 commit comments