UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

76 lines (73 loc) 1.98 kB
import { defineComponent, renderSlot, createVNode, isVNode } from 'vue'; import SpaceItem from './item.mjs'; import { useNamespace } from '../../../hook/use-namespace/index.mjs'; import { useStyle } from '../../../hook/use-style/index.mjs'; import '../../../hook/use-zindex/index.mjs'; var Space = 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 = useNamespace("space"); const uStyle = useStyle(); const spacerVNode = () => { const isVNodeElem = isVNode(props.spacer); return isVNodeElem ? props.spacer : createVNode("span", { class: ns.e("spacer") }); }; return () => { const children = renderSlot( slots, "default", { key: 0 }, () => [] ).children; if (children.length === 0) { return null; } if (Array.isArray(children)) { const getChildrenItem = []; children.forEach((item, index) => { const renderVNode = createVNode( SpaceItem, { class: "" }, { default: () => item } ); getChildrenItem.push(renderVNode); props.spacer && index + 1 !== children.length && getChildrenItem.push(spacerVNode()); }); return 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; }; } }); export { Space as default }; //# sourceMappingURL=space.mjs.map