index.tsx 926 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { use } from '../utils';
  2. import { inherit } from '../utils/functional';
  3. // Types
  4. import { CreateElement, RenderContext } from 'vue/types';
  5. import { DefaultSlots } from '../utils/use/sfc';
  6. export type CellGroupProps = {
  7. title?: string;
  8. border: boolean
  9. };
  10. const [sfc, bem] = use('cell-group');
  11. function CellGroup(
  12. h: CreateElement,
  13. props: CellGroupProps,
  14. slots: DefaultSlots,
  15. ctx: RenderContext<CellGroupProps>
  16. ) {
  17. const Group = (
  18. <div
  19. class={[bem(), { 'van-hairline--top-bottom': props.border }]}
  20. {...inherit(ctx, true)}
  21. >
  22. {slots.default && slots.default()}
  23. </div>
  24. );
  25. if (props.title) {
  26. return (
  27. <div>
  28. <div class={bem('title')}>{props.title}</div>
  29. {Group}
  30. </div>
  31. );
  32. }
  33. return Group;
  34. }
  35. CellGroup.props = {
  36. title: String,
  37. border: {
  38. type: Boolean,
  39. default: true
  40. }
  41. };
  42. export default sfc<CellGroupProps>(CellGroup);