diff options
author | Jo-Philipp Wich <jo@mein.io> | 2019-09-11 09:22:13 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2019-09-11 09:22:13 +0200 |
commit | 94a9f600d35e7c2b7697afef134ee3454b8064b0 (patch) | |
tree | cdb22296e7ea3092428ee79d5d6effb068623a48 /modules/luci-base/htdocs/luci-static | |
parent | fd40efdf4da6322fef9e3b02e713c914bc8ad530 (diff) |
luci-base: ui.js: implement addNotification() helper
The L.ui.addNotification() function pushes a dismissable banner message to
the top of the view.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'modules/luci-base/htdocs/luci-static')
-rw-r--r-- | modules/luci-base/htdocs/luci-static/resources/ui.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/modules/luci-base/htdocs/luci-static/resources/ui.js b/modules/luci-base/htdocs/luci-static/resources/ui.js index c27dd7ebfc..fed5dafa33 100644 --- a/modules/luci-base/htdocs/luci-static/resources/ui.js +++ b/modules/luci-base/htdocs/luci-static/resources/ui.js @@ -1967,6 +1967,43 @@ return L.Class.extend({ tooltipDiv.dispatchEvent(new CustomEvent('tooltip-close', { bubbles: true })); }, + addNotification: function(title, children /*, ... */) { + var mc = document.querySelector('#maincontent') || document.body; + var msg = E('div', { + 'class': 'alert-message fade-in', + 'style': 'display:flex', + 'transitionend': function(ev) { + var node = ev.currentTarget; + if (node.parentNode && node.classList.contains('fade-out')) + node.parentNode.removeChild(node); + } + }, [ + E('div', { 'style': 'flex:10' }), + E('div', { 'style': 'flex:1; display:flex' }, [ + E('button', { + 'class': 'btn', + 'style': 'margin-left:auto; margin-top:auto', + 'click': function(ev) { + L.dom.parent(ev.target, '.alert-message').classList.add('fade-out'); + }, + + }, _('Dismiss')) + ]) + ]); + + if (title != null) + L.dom.append(msg.firstElementChild, E('h4', {}, title)); + + L.dom.append(msg.firstElementChild, children); + + for (var i = 2; i < arguments.length; i++) + msg.classList.add(arguments[i]); + + mc.insertBefore(msg, mc.firstElementChild); + + return msg; + }, + /* Widget helper */ itemlist: function(node, items, separators) { var children = []; |