12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import { createNamespace } from '../utils';
- import { ParentMixin } from '../mixins/relation';
- var _createNamespace = createNamespace('row'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1];
- export default createComponent({
- mixins: [ParentMixin('vanRow')],
- props: {
- type: String,
- align: String,
- justify: String,
- tag: {
- type: String,
- default: 'div'
- },
- gutter: {
- type: [Number, String],
- default: 0
- }
- },
- computed: {
- spaces: function spaces() {
- var gutter = Number(this.gutter);
- if (!gutter) {
- return;
- }
- var spaces = [];
- var groups = [[]];
- var totalSpan = 0;
- this.children.forEach(function (item, index) {
- totalSpan += Number(item.span);
- if (totalSpan > 24) {
- groups.push([index]);
- totalSpan -= 24;
- } else {
- groups[groups.length - 1].push(index);
- }
- });
- groups.forEach(function (group) {
- var averagePadding = gutter * (group.length - 1) / group.length;
- group.forEach(function (item, index) {
- if (index === 0) {
- spaces.push({
- right: averagePadding
- });
- } else {
- var left = gutter - spaces[item - 1].right;
- var right = averagePadding - left;
- spaces.push({
- left: left,
- right: right
- });
- }
- });
- });
- return spaces;
- }
- },
- methods: {
- onClick: function onClick(event) {
- this.$emit('click', event);
- }
- },
- render: function render() {
- var _bem;
- var h = arguments[0];
- var align = this.align,
- justify = this.justify;
- var flex = this.type === 'flex';
- return h(this.tag, {
- "class": bem((_bem = {
- flex: flex
- }, _bem["align-" + align] = flex && align, _bem["justify-" + justify] = flex && justify, _bem)),
- "on": {
- "click": this.onClick
- }
- }, [this.slots()]);
- }
- });
|