song-ui-u
Version:
vue3 + js的PC前端组件库
78 lines (74 loc) • 1.97 kB
JavaScript
;
var vue = require('vue');
var item = require('./item.cjs');
var index = require('../../../hook/use-namespace/index.cjs');
var index$1 = require('../../../hook/use-style/index.cjs');
require('../../../hook/use-zindex/index.cjs');
var Space = vue.defineComponent({
name: "x-space",
props: {
direction: {
type: String,
default: "horizontal"
},
size: {
type: [Number, Array],
default: 0
},
wrap: Boolean,
spacer: {
type: [Boolean, Object],
default: false
},
align: {
type: String,
default: ""
}
},
setup(props, { emit, slots }) {
const ns = index.useNamespace("space");
const uStyle = index$1.useStyle();
const spacerVNode = () => {
const isVNodeElem = vue.isVNode(props.spacer);
return isVNodeElem ? props.spacer : vue.createVNode("span", { class: ns.e("spacer") });
};
return () => {
const children = vue.renderSlot(
slots,
"default",
{ key: 0 },
() => []
).children;
if (children.length === 0) {
return null;
}
if (Array.isArray(children)) {
const getChildrenItem = [];
children.forEach((item$1, index) => {
const renderVNode = vue.createVNode(
item,
{ class: "" },
{ default: () => item$1 }
);
getChildrenItem.push(renderVNode);
props.spacer && index + 1 !== children.length && getChildrenItem.push(spacerVNode());
});
return vue.createVNode(
"div",
{
class: [
ns.b(),
ns.m("direction", props.direction),
ns.is("wrap", props.wrap)
],
style: [uStyle.gap(props.size), uStyle.alignItem(props.align)]
},
getChildrenItem
);
}
return children;
};
}
});
module.exports = Space;
//# sourceMappingURL=space.cjs.map