X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/2a069880cd8ebe6b821fd37a6087b34a6488966b..refs/pull/1117/head:/resources/assets/js/components/notification.js diff --git a/resources/assets/js/components/notification.js b/resources/assets/js/components/notification.js index 4b809c935..f7edb08aa 100644 --- a/resources/assets/js/components/notification.js +++ b/resources/assets/js/components/notification.js @@ -6,17 +6,24 @@ class Notification { this.type = elem.getAttribute('notification'); this.textElem = elem.querySelector('span'); this.autohide = this.elem.hasAttribute('data-autohide'); - window.Events.listen(this.type, text => { - console.log('show', text); + this.elem.style.display = 'grid'; + + window.$events.listen(this.type, text => { this.show(text); }); elem.addEventListener('click', this.hide.bind(this)); - if (elem.hasAttribute('data-show')) this.show(this.textElem.textContent); + + if (elem.hasAttribute('data-show')) { + setTimeout(() => this.show(this.textElem.textContent), 100); + } + + this.hideCleanup = this.hideCleanup.bind(this); } show(textToShow = '') { + this.elem.removeEventListener('transitionend', this.hideCleanup); this.textElem.textContent = textToShow; - this.elem.style.display = 'block'; + this.elem.style.display = 'grid'; setTimeout(() => { this.elem.classList.add('showing'); }, 1); @@ -26,15 +33,14 @@ class Notification { hide() { this.elem.classList.remove('showing'); + this.elem.addEventListener('transitionend', this.hideCleanup); + } - function transitionEnd() { - this.elem.style.display = 'none'; - this.elem.removeEventListener('transitionend', transitionEnd); - } - - this.elem.addEventListener('transitionend', transitionEnd.bind(this)); + hideCleanup() { + this.elem.style.display = 'none'; + this.elem.removeEventListener('transitionend', this.hideCleanup); } } -module.exports = Notification; \ No newline at end of file +export default Notification; \ No newline at end of file