Mercurial > libervia-web
diff libervia/pages/_browser/dialog.py @ 1299:053141849206
browser: module to handle dialogs, first draft
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 19 Jun 2020 16:47:51 +0200 |
parents | |
children | 683e50799d6d |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libervia/pages/_browser/dialog.py Fri Jun 19 16:47:51 2020 +0200 @@ -0,0 +1,32 @@ +"""manage common dialogs""" + +from browser import document, timer +from template import Template + + +class Confirm: + + def __init__(self, message, ok_label="", cancel_label=""): + self._tpl = Template("dialogs/confirm.html") + self.message = message + self.ok_label = ok_label + self.cancel_label = cancel_label + + def cancel_cb(self, evt, notif_elt): + notif_elt.remove() + + def show(self, ok_cb, cancel_cb=None): + if cancel_cb is None: + cancel_cb = self.cancel_cb + notif_elt = self._tpl.get_elt({ + "message": self.message, + "ok_label": self.ok_label, + "cancel_label": self.cancel_label, + }) + + document['notifs_area'] <= notif_elt + timer.set_timeout(lambda: notif_elt.classList.add('state_appended'), 0) + for cancel_elt in notif_elt.select(".click_to_cancel"): + cancel_elt.bind("click", lambda evt: cancel_cb(evt, notif_elt)) + for cancel_elt in notif_elt.select(".click_to_ok"): + cancel_elt.bind("click", lambda evt: ok_cb(evt, notif_elt))