123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- "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';
- Vue.set(self.mdl.children, nAlertIdx, nAlert);
- _.delay(() => {
- self.mdl.children.splice(nAlertIdx, 1);
- }, 500);
- }
- }
- }
|