You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
2.1 KiB

"use strict";
exports.__esModule = true;
exports.default = void 0;
var _utils = require("../utils");
var _relation = require("../mixins/relation");
var _createNamespace = (0, _utils.createNamespace)('row'),
createComponent = _createNamespace[0],
bem = _createNamespace[1];
var _default = createComponent({
mixins: [(0, _relation.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()]);
}
});
exports.default = _default;