import PropTypes from '../_util/vue-types'; import { getOptionProps, getSlots, getComponentFromProp } from '../_util/props-util'; const ColProps = { child: PropTypes.any, bordered: PropTypes.bool, colon: PropTypes.bool, type: PropTypes.oneOf(['label', 'content']), layout: PropTypes.oneOf(['horizontal', 'vertical']), }; const Col = { functional: true, props: ColProps, render(h, ctx) { const { child, bordered, colon, type, layout } = ctx.props; const { prefixCls, span = 1 } = getOptionProps(child); const { key } = ctx.data; const label = getComponentFromProp(child, 'label'); const slots = getSlots(child); const labelProps = { attrs: {}, class: [ `${prefixCls}-item-label`, { [`${prefixCls}-item-colon`]: colon, [`${prefixCls}-item-no-label`]: !label, }, ], key: `${key}-label`, }; if (layout === 'vertical') { labelProps.attrs.colSpan = span * 2 - 1; } if (bordered) { if (type === 'label') { return {label}; } return ( {slots.default} ); } if (layout === 'vertical') { if (type === 'content') { return ( {slots.default} ); } return ( {label} ); } return ( {label} {slots.default} ); }, }; export default Col;