buefy
Version:
Lightweight UI components for Vue.js based on Bulma
105 lines (96 loc) • 2.05 kB
JavaScript
/*! Buefy v0.7.10 | MIT License | github.com/buefy/buefy */
import { _ as _defineProperty } from './chunk-6f881e7d.js';
import { I as Icon } from './chunk-4f508891.js';
var MessageMixin = {
components: _defineProperty({}, Icon.name, Icon),
props: {
active: {
type: Boolean,
default: true
},
title: String,
closable: {
type: Boolean,
default: true
},
message: String,
type: String,
hasIcon: Boolean,
size: String,
iconPack: String,
iconSize: String,
autoClose: {
type: Boolean,
default: false
},
duration: {
type: Number,
default: 2000
}
},
data: function data() {
return {
isActive: this.active
};
},
watch: {
active: function active(value) {
this.isActive = value;
},
isActive: function isActive(value) {
if (value) {
this.setAutoClose();
} else {
if (this.timer) {
clearTimeout(this.timer);
}
}
}
},
computed: {
/**
* Icon name (MDI) based on type.
*/
icon: function icon() {
switch (this.type) {
case 'is-info':
return 'information';
case 'is-success':
return 'check-circle';
case 'is-warning':
return 'alert';
case 'is-danger':
return 'alert-circle';
default:
return null;
}
}
},
methods: {
/**
* Close the Message and emit events.
*/
close: function close() {
this.isActive = false;
this.$emit('close');
this.$emit('update:active', false);
},
/**
* Set timer to auto close message
*/
setAutoClose: function setAutoClose() {
var _this = this;
if (this.autoClose) {
this.timer = setTimeout(function () {
if (_this.isActive) {
_this.close();
}
}, this.duration);
}
}
},
mounted: function mounted() {
this.setAutoClose();
}
};
export { MessageMixin as M };