-
-
Notifications
You must be signed in to change notification settings - Fork 31
/
extension.js
42 lines (37 loc) · 1.33 KB
/
extension.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
const defaults = {
message: 'Your message here',
duration: 2000,
position: 'is-right'
}
export function toast(params) {
let options = Object.assign({}, defaults, params)
let noticesTop = document.querySelector('.notices.is-top')
let noticesBottom = document.querySelector('.notices.is-bottom')
if (!noticesTop || !noticesBottom) {
noticesTop = document.createElement('div')
noticesBottom = document.createElement('div')
noticesTop.className = 'notices is-top'
noticesBottom.className = 'notices is-bottom'
document.body.appendChild(noticesTop)
document.body.appendChild(noticesBottom)
}
let toast = document.createElement('div')
let classes = ['notification']
if (options.type) classes.push(options.type)
if (options.position) classes.push(options.position)
toast.classList = classes.join(' ')
if (options.dismissible) {
let dismissButton = document.createElement('button')
dismissButton.className = 'delete'
dismissButton.addEventListener('click', () => {
toast.remove()
})
toast.insertAdjacentElement('afterbegin', dismissButton)
}
toast.insertAdjacentText('beforeend', options.message)
if (options.position.includes('is-bottom')) noticesBottom.appendChild(toast)
else noticesTop.appendChild(toast)
setTimeout(() => {
toast.remove()
}, options.duration)
}