vant/src/cell-group/CellGroup.tsx
neverland bd609e1df0
perf: add truthProp util (#8522)
* perf: add TruthyProp util

* chore: rename

* chore: upd
2021-04-14 10:26:21 +08:00

44 lines
882 B
TypeScript

import { defineComponent } from 'vue';
import { truthProp, createNamespace } from '../utils';
import { BORDER_TOP_BOTTOM } from '../utils/constant';
const [name, bem] = createNamespace('cell-group');
export default defineComponent({
name,
inheritAttrs: false,
props: {
title: String,
border: truthProp,
},
setup(props, { slots, attrs }) {
const renderGroup = () => (
<div class={[bem(), { [BORDER_TOP_BOTTOM]: props.border }]} {...attrs}>
{slots.default?.()}
</div>
);
const renderTitle = () => (
<div class={bem('title')}>
{slots.title ? slots.title() : props.title}
</div>
);
return () => {
if (props.title || slots.title) {
return (
<>
{renderTitle()}
{renderGroup()}
</>
);
}
return renderGroup();
};
},
});