123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 'use strict'
- import Vue from 'vue'
- import _ from 'lodash'
- /**
- * 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: '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: 'error',
- 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: '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)
- }
- }
- }
- export default Alerts
|