iview/src/components/grid/row.vue

75 lines
2.1 KiB
Vue
Raw Normal View History

2016-09-09 14:29:19 +08:00
<template>
<div :class="classes" :style="styles">
2016-09-09 14:29:19 +08:00
<slot></slot>
</div>
</template>
<script>
import { oneOf } from '../../utils/assist';
const prefixCls = 'ivu-row';
export default {
name: 'Row',
2016-09-09 14:29:19 +08:00
props: {
type: {
validator (value) {
return oneOf(value, ['flex']);
}
},
align: {
validator (value) {
return oneOf(value, ['top', 'middle', 'bottom']);
}
},
justify: {
validator (value) {
return oneOf(value, ['start', 'end', 'center', 'space-around', 'space-between']);
}
},
gutter: {
type: Number,
default: 0
},
2016-09-09 14:29:19 +08:00
className: String
},
computed: {
classes () {
return [
{
2016-12-26 14:50:39 +08:00
[`${prefixCls}`]: !this.type,
2016-09-09 14:29:19 +08:00
[`${prefixCls}-${this.type}`]: !!this.type,
[`${prefixCls}-${this.type}-${this.align}`]: !!this.align,
[`${prefixCls}-${this.type}-${this.justify}`]: !!this.justify,
[`${this.className}`]: !!this.className
}
2016-12-25 22:49:42 +08:00
];
},
styles () {
let style = {};
if (this.gutter !== 0) {
style = {
marginLeft: this.gutter / -2 + 'px',
marginRight: this.gutter / -2 + 'px'
2016-12-25 22:49:42 +08:00
};
}
return style;
2016-09-09 14:29:19 +08:00
}
},
methods: {
updateGutter (val) {
this.$children.forEach((child) => {
if (val !== 0) {
child.gutter = val;
}
});
}
},
watch: {
gutter (val) {
this.updateGutter(val);
}
2016-09-09 14:29:19 +08:00
}
2016-12-25 22:49:42 +08:00
};
</script>