element/packages/col/src/col.js

72 lines
1.6 KiB
JavaScript
Raw Normal View History

2016-11-16 04:07:27 +00:00
export default {
name: 'ElCol',
props: {
span: {
type: Number,
default: 24
},
2017-05-11 04:08:38 +00:00
tag: {
type: String,
default: 'div'
},
2016-11-16 04:07:27 +00:00
offset: Number,
pull: Number,
push: Number,
xs: [Number, Object],
sm: [Number, Object],
md: [Number, Object],
2017-10-19 07:54:01 +00:00
lg: [Number, Object],
xl: [Number, Object]
2016-11-16 04:07:27 +00:00
},
computed: {
gutter() {
let parent = this.$parent;
while (parent && parent.$options.componentName !== 'ElRow') {
parent = parent.$parent;
2016-11-16 04:07:27 +00:00
}
return parent ? parent.gutter : 0;
2016-11-16 04:07:27 +00:00
}
},
render(h) {
let classList = [];
let style = {};
if (this.gutter) {
style.paddingLeft = this.gutter / 2 + 'px';
style.paddingRight = style.paddingLeft;
}
2016-11-16 04:07:27 +00:00
['span', 'offset', 'pull', 'push'].forEach(prop => {
2017-10-17 09:01:55 +00:00
if (this[prop] || this[prop] === 0) {
2016-11-16 04:07:27 +00:00
classList.push(
prop !== 'span'
? `el-col-${prop}-${this[prop]}`
: `el-col-${this[prop]}`
2016-11-16 04:07:27 +00:00
);
}
});
2017-10-19 07:54:01 +00:00
['xs', 'sm', 'md', 'lg', 'xl'].forEach(size => {
2016-11-16 04:07:27 +00:00
if (typeof this[size] === 'number') {
classList.push(`el-col-${size}-${this[size]}`);
} else if (typeof this[size] === 'object') {
let props = this[size];
Object.keys(props).forEach(prop => {
classList.push(
prop !== 'span'
? `el-col-${size}-${prop}-${props[prop]}`
: `el-col-${size}-${props[prop]}`
2016-11-16 04:07:27 +00:00
);
});
}
});
2017-05-11 04:08:38 +00:00
return h(this.tag, {
class: ['el-col', classList],
style
}, this.$slots.default);
2016-11-16 04:07:27 +00:00
}
};