vuetify
Version:
Vue.js 2 Semantic Component Framework
105 lines (83 loc) • 2.6 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
require('../../../src/stylus/components/_footer.styl');
var _applicationable = require('../../mixins/applicationable');
var _applicationable2 = _interopRequireDefault(_applicationable);
var _colorable = require('../../mixins/colorable');
var _colorable2 = _interopRequireDefault(_colorable);
var _themeable = require('../../mixins/themeable');
var _themeable2 = _interopRequireDefault(_themeable);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Styles
exports.default = {
name: 'v-footer',
mixins: [(0, _applicationable2.default)('footer', ['height']), _colorable2.default, _themeable2.default],
props: {
height: {
default: 32,
type: [Number, String],
validator: function validator(v) {
return !isNaN(parseInt(v));
}
},
inset: Boolean
},
computed: {
computedHeight: function computedHeight() {
return parseInt(this.height);
},
computedMarginBottom: function computedMarginBottom() {
if (!this.app) return;
return this.$vuetify.application.bottom;
},
computedPaddingLeft: function computedPaddingLeft() {
return !this.app || !this.inset ? 0 : this.$vuetify.application.left;
},
computedPaddingRight: function computedPaddingRight() {
return !this.app ? 0 : this.$vuetify.application.right;
},
styles: function styles() {
var styles = {
height: this.computedHeight + 'px'
};
if (this.computedPaddingLeft) {
styles.paddingLeft = this.computedPaddingLeft + 'px';
}
if (this.computedPaddingRight) {
styles.paddingRight = this.computedPaddingRight + 'px';
}
if (this.computedMarginBottom) {
styles.marginBottom = this.computedMarginBottom + 'px';
}
return styles;
}
},
methods: {
/**
* Update the application layout
*
* @return {number}
*/
updateApplication: function updateApplication() {
return this.computedHeight;
}
},
render: function render(h) {
var data = {
staticClass: 'footer',
'class': this.addBackgroundColorClassChecks({
'footer--absolute': this.absolute,
'footer--fixed': !this.absolute && (this.app || this.fixed),
'footer--inset': this.inset,
'theme--dark': this.dark,
'theme--light': this.light
}),
style: this.styles,
ref: 'content'
};
return h('footer', data, this.$slots.default);
}
};
// Mixins