vuetify
Version:
Vue.js 2 Semantic Component Framework
116 lines (91 loc) • 2.78 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
require('../../../src/stylus/components/_snackbars.styl');
var _transitions = require('../transitions');
var _colorable = require('../../mixins/colorable');
var _colorable2 = _interopRequireDefault(_colorable);
var _toggleable = require('../../mixins/toggleable');
var _toggleable2 = _interopRequireDefault(_toggleable);
var _positionable = require('../../mixins/positionable');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = {
name: 'v-snackbar',
components: {
VSlideYTransition: _transitions.VSlideYTransition,
VSlideYReverseTransition: _transitions.VSlideYReverseTransition
},
mixins: [_colorable2.default, _toggleable2.default, (0, _positionable.factory)(['absolute', 'top', 'bottom', 'left', 'right'])],
data: function data() {
return {
activeTimeout: {}
};
},
props: {
multiLine: Boolean,
// TODO: change this to closeDelay to match other API in delayable.js
timeout: {
type: Number,
default: 6000
},
vertical: Boolean
},
computed: {
classes: function classes() {
return this.addBackgroundColorClassChecks({
'snack--active': this.isActive,
'snack--absolute': this.absolute,
'snack--bottom': this.bottom || !this.top,
'snack--left': this.left,
'snack--multi-line': this.multiLine && !this.vertical,
'snack--right': this.right,
'snack--top': this.top,
'snack--vertical': this.vertical
});
},
computedTransition: function computedTransition() {
return this.top ? 'v-slide-y-transition' : 'v-slide-y-reverse-transition';
}
},
watch: {
isActive: function isActive() {
this.setTimeout();
}
},
methods: {
setTimeout: function (_setTimeout) {
function setTimeout() {
return _setTimeout.apply(this, arguments);
}
setTimeout.toString = function () {
return _setTimeout.toString();
};
return setTimeout;
}(function () {
var _this = this;
clearTimeout(this.activeTimeout);
if (this.isActive && this.timeout) {
this.activeTimeout = setTimeout(function () {
_this.isActive = false;
}, this.timeout);
}
})
},
mounted: function mounted() {
this.setTimeout();
},
render: function render(h) {
var children = [];
if (this.isActive) {
children.push(h('div', {
staticClass: 'snack__content'
}, this.$slots.default));
}
return h('div', {
staticClass: 'snack',
'class': this.classes,
on: this.$listeners
}, [h(this.computedTransition, children)]);
}
};