43 lines
1.4 KiB
JavaScript
Raw Normal View History

import '../../../src/stylus/components/_responsive.styl';
// Mixins
import Measurable from '../../mixins/measurable';
// Utils
import mixins from '../../util/mixins';
/* @vue/component */
export default mixins(Measurable).extend({
name: 'v-responsive',
props: {
aspectRatio: [String, Number]
},
computed: {
computedAspectRatio: function computedAspectRatio() {
return Number(this.aspectRatio);
},
aspectStyle: function aspectStyle() {
return this.computedAspectRatio ? { paddingBottom: 1 / this.computedAspectRatio * 100 + '%' } : undefined;
},
__cachedSizer: function __cachedSizer() {
if (!this.aspectStyle) return [];
return this.$createElement('div', {
style: this.aspectStyle,
staticClass: 'v-responsive__sizer'
});
}
},
methods: {
genContent: function genContent() {
return this.$createElement('div', {
staticClass: 'v-responsive__content'
}, this.$slots.default);
}
},
render: function render(h) {
return h('div', {
staticClass: 'v-responsive',
style: this.measurableStyles,
on: this.$listeners
}, [this.__cachedSizer, this.genContent()]);
}
});
//# sourceMappingURL=VResponsive.js.map