comparison libervia/web/pages/_browser/dialog.py @ 1620:3a60bf3762ef

browser: threads and replies implementation: rel 457
author Goffi <goffi@goffi.org>
date Tue, 06 May 2025 00:40:07 +0200
parents a2cd4222c702
children
comparison
equal deleted inserted replaced
1619:a2cd4222c702 1620:3a60bf3762ef
181 elt.bind('click', lambda __: self.retry(notif_elt)) 181 elt.bind('click', lambda __: self.retry(notif_elt))
182 182
183 183
184 class Modal: 184 class Modal:
185 185
186 def __init__(self, content_elt, is_card=False, closable=False): 186 def __init__(self, content_elt, is_card=False, closable=False, close_cb=None):
187 """Init a Modal instance. 187 """Init a Modal instance.
188 188
189 @param content_elt: Content of the modal. 189 @param content_elt: Content of the modal.
190 @param is_card: If True, a Modal card will be used. The ``content_elt`` must be a 190 @param is_card: If True, a Modal card will be used. The ``content_elt`` must be a
191 <div> with the "modal-card" class. 191 <div> with the "modal-card" class.
196 if not content_elt.classList.contains("modal-card"): 196 if not content_elt.classList.contains("modal-card"):
197 raise ValueError( 197 raise ValueError(
198 'Element must have a "modal-card" class when `is_card` is used' 198 'Element must have a "modal-card" class when `is_card` is used'
199 ) 199 )
200 self.closable = closable 200 self.closable = closable
201 self._close_cb = close_cb
201 self._tpl = Template("dialogs/modal.html") 202 self._tpl = Template("dialogs/modal.html")
202 self.content_elt = content_elt 203 self.content_elt = content_elt
203 self._modal_elt = None 204 self._modal_elt = None
204 self.reset() 205 self.reset()
205 206
219 self.reset() 220 self.reset()
220 221
221 def on_close_click(self, evt) -> None: 222 def on_close_click(self, evt) -> None:
222 evt.preventDefault() 223 evt.preventDefault()
223 evt.stopPropagation() 224 evt.stopPropagation()
225 if self._close_cb is not None:
226 self._close_cb()
224 self.close() 227 self.close()
225 228
226 def show(self) -> None: 229 def show(self) -> None:
227 modal_elt = self._tpl.get_elt({ 230 modal_elt = self._tpl.get_elt({
228 "closable": self.closable, 231 "closable": self.closable,