# HG changeset patch # User Goffi # Date 1592578071 -7200 # Node ID 053141849206c8b826b436d6b24a0936d892291f # Parent 8aba2a2078ca725c56d823d3d96ef1001691a2a6 browser: module to handle dialogs, first draft diff -r 8aba2a2078ca -r 053141849206 libervia/pages/_browser/dialog.py --- /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))