75 lines
2.2 KiB
JavaScript

'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _delayable = require('../../mixins/delayable');
var _delayable2 = _interopRequireDefault(_delayable);
var _toggleable = require('../../mixins/toggleable');
var _toggleable2 = _interopRequireDefault(_toggleable);
var _mixins = require('../../util/mixins');
var _mixins2 = _interopRequireDefault(_mixins);
var _console = require('../../util/console');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Utilities
// Mixins
exports.default = (0, _mixins2.default)(_delayable2.default, _toggleable2.default
/* @vue/component */
).extend({
name: 'v-hover',
props: {
disabled: {
type: Boolean,
default: false
},
value: {
type: Boolean,
default: undefined
}
},
methods: {
onMouseEnter: function onMouseEnter() {
this.runDelay('open');
},
onMouseLeave: function onMouseLeave() {
this.runDelay('close');
}
},
render: function render() {
if (!this.$scopedSlots.default && this.value === undefined) {
(0, _console.consoleWarn)('v-hover is missing a default scopedSlot or bound value', this);
return null;
}
var element = void 0;
if (this.$scopedSlots.default) {
element = this.$scopedSlots.default({ hover: this.isActive });
} else if (this.$slots.default && this.$slots.default.length === 1) {
element = this.$slots.default[0];
}
if (Array.isArray(element) && element.length === 1) {
element = element[0];
}
if (!element || Array.isArray(element) || !element.tag) {
(0, _console.consoleWarn)('v-hover should only contain a single element', this);
return element;
}
if (!this.disabled) {
element.data = element.data || {};
this._g(element.data, {
mouseenter: this.onMouseEnter,
mouseleave: this.onMouseLeave
});
}
return element;
}
});
//# sourceMappingURL=VHover.js.map