UNPKG

vuetify

Version:

Vue.js 2 Semantic Component Framework

152 lines (123 loc) 4.48 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; require('../../../src/stylus/components/_buttons.styl'); var _colorable = require('../../mixins/colorable'); var _colorable2 = _interopRequireDefault(_colorable); var _positionable = require('../../mixins/positionable'); var _positionable2 = _interopRequireDefault(_positionable); var _routable = require('../../mixins/routable'); var _routable2 = _interopRequireDefault(_routable); var _themeable = require('../../mixins/themeable'); var _themeable2 = _interopRequireDefault(_themeable); var _toggleable = require('../../mixins/toggleable'); var _registrable = require('../../mixins/registrable'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { name: 'v-btn', mixins: [_colorable2.default, _routable2.default, _positionable2.default, _themeable2.default, (0, _toggleable.factory)('inputValue'), (0, _registrable.inject)('buttonGroup')], props: { activeClass: { type: String, default: 'btn--active' }, block: Boolean, depressed: Boolean, fab: Boolean, flat: Boolean, icon: Boolean, large: Boolean, loading: Boolean, outline: Boolean, ripple: { type: [Boolean, Object], default: true }, round: Boolean, small: Boolean, tag: { type: String, default: 'button' }, type: { type: String, default: 'button' }, value: null }, computed: { classes: function classes() { var classes = _extends({ 'btn': true, 'btn--active': this.isActive, 'btn--absolute': this.absolute, 'btn--block': this.block, 'btn--bottom': this.bottom, 'btn--disabled': this.disabled, 'btn--flat': this.flat, 'btn--floating': this.fab, 'btn--fixed': this.fixed, 'btn--hover': this.hover, 'btn--icon': this.icon, 'btn--large': this.large, 'btn--left': this.left, 'btn--loader': this.loading, 'btn--outline': this.outline, 'btn--depressed': this.depressed && !this.flat || this.outline, 'btn--right': this.right, 'btn--round': this.round, 'btn--router': this.to, 'btn--small': this.small, 'btn--top': this.top }, this.themeClasses); return !this.outline && !this.flat ? this.addBackgroundColorClassChecks(classes) : this.addTextColorClassChecks(classes); } }, methods: { // Prevent focus to match md spec click: function click(e) { !this.fab && e.detail && this.$el.blur(); this.$emit('click', e); }, genContent: function genContent() { return this.$createElement('div', { 'class': 'btn__content' }, [this.$slots.default]); }, genLoader: function genLoader() { var children = []; if (!this.$slots.loader) { children.push(this.$createElement('v-progress-circular', { props: { indeterminate: true, size: 26 } })); } else { children.push(this.$slots.loader); } return this.$createElement('span', { 'class': 'btn__loading' }, children); } }, mounted: function mounted() { if (this.buttonGroup) { this.buttonGroup.register(this); } }, beforeDestroy: function beforeDestroy() { if (this.buttonGroup) { this.buttonGroup.unregister(this); } }, render: function render(h) { var _generateRouteLink = this.generateRouteLink(), tag = _generateRouteLink.tag, data = _generateRouteLink.data; var children = [this.genContent()]; tag === 'button' && (data.attrs.type = this.type); this.loading && children.push(this.genLoader()); data.attrs.value = ['string', 'number'].includes(_typeof(this.value)) ? this.value : JSON.stringify(this.value); return h(tag, data, children); } };