UNPKG

buefy

Version:

Lightweight UI components for Vue.js based on Bulma

96 lines (94 loc) 2.26 kB
import Icon from '../components/icon/Icon' export default { components: { [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() { return { isActive: this.active } }, watch: { active(value) { this.isActive = value }, isActive(value) { if (value) { this.setAutoClose() } else { if (this.timer) { clearTimeout(this.timer) } } } }, computed: { /** * Icon name (MDI) based on type. */ 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() { this.isActive = false this.$emit('close') this.$emit('update:active', false) }, /** * Set timer to auto close message */ setAutoClose() { if (this.autoClose) { this.timer = setTimeout(() => { if (this.isActive) { this.close() } }, this.duration) } } }, mounted() { this.setAutoClose() } }