You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"use strict";
/** * Alerts */ class Alerts {
/** * Constructor * * @class */ constructor() {
let self = this;
self.mdl = new Vue({ el: '#alerts', data: { children: [] }, methods: { acknowledge: (uid) => { self.close(uid); } } });
self.uidNext = 1;
}
/** * Show a new Alert * * @param {Object} options Alert properties * @return {null} Void */ push(options) {
let self = this;
let nAlert = _.defaults(options, { _uid: self.uidNext, class: 'is-info', message: '---', sticky: false, title: '---' });
self.mdl.children.push(nAlert);
if(!nAlert.sticky) { _.delay(() => { self.close(nAlert._uid); }, 5000); }
self.uidNext++;
}
/** * Shorthand method for pushing errors * * @param {String} title The title * @param {String} message The message */ pushError(title, message) { this.push({ class: 'is-danger', message, sticky: false, title }); }
/** * Shorthand method for pushing success messages * * @param {String} title The title * @param {String} message The message */ pushSuccess(title, message) { this.push({ class: 'is-success', message, sticky: false, title }); }
/** * Close an alert * * @param {Integer} uid The unique ID of the alert */ close(uid) {
let self = this;
let nAlertIdx = _.findIndex(self.mdl.children, ['_uid', uid]); let nAlert = _.nth(self.mdl.children, nAlertIdx);
if(nAlertIdx >= 0 && nAlert) { nAlert.class += ' exit'; self.mdl.children.$set(nAlertIdx, nAlert); _.delay(() => { self.mdl.children.$remove(nAlert); }, 500); }
}
}
|