UNPKG

buefy

Version:

Lightweight UI components for Vue.js based on Bulma

106 lines (96 loc) 2.03 kB
'use strict'; var __chunk_1 = require('./chunk-9f6a8079.js'); var __chunk_5 = require('./chunk-60061aa8.js'); var MessageMixin = { components: __chunk_1._defineProperty({}, __chunk_5.Icon.name, __chunk_5.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(); } }; exports.MessageMixin = MessageMixin;