11import { mergeData } from 'vue-functional-data-merge'
2- import { assign } from '../../utils/object'
32import sharedCardProps from './sharedCardProps'
43import CCardHeader from './CCardHeader'
54import CCardBody from './CCardBody'
65import CCardFooter from './CCardFooter'
76
8- const props = assign (
7+ const props = Object . assign (
98 sharedCardProps . props ,
109 {
1110 header : String ,
1211 body : String ,
1312 footer : String ,
14- noWrapper : Boolean
13+ bodyWrapper : Boolean
1514 }
1615)
1716export default {
1817 functional : true ,
1918 name : 'CCard' ,
2019 props,
2120 render ( h , { props, data, slots } ) {
22- const $slots = slots ( )
21+ let header = h ( false )
22+ let body = slots ( ) . default
23+ let footer = h ( false )
2324
24- if ( ! $slots . header && props . header )
25- $slots . header = h ( CCardHeader , { domProps : { innerHTML : props . header } } )
25+ if ( props . header )
26+ header = h ( CCardHeader , { domProps : { innerHTML : props . header } } )
2627
27- if ( ! $slots . body && $slots . default )
28- $slots . body = props . noWrapper ? $slots . default : h ( CCardBody , $slots . default )
29- else if ( ! $slots . body && ! $slots . default && props . body )
30- $slots . body = h ( CCardBody , { domProps : { innerHTML : props . body } } )
28+ if ( body === undefined && props . body )
29+ body = h ( CCardBody , { domProps : { innerHTML : props . body } } )
30+ else if ( props . bodyWrapper )
31+ body = h ( CCardBody , body )
3132
32- if ( ! $slots . footer && props . footer )
33- $slots . footer = h ( CCardFooter , { domProps : { innerHTML : props . footer } } )
33+
34+ if ( props . footer )
35+ footer = h ( CCardFooter , { domProps : { innerHTML : props . footer } } )
3436
3537 return h (
3638 props . tag || 'div' ,
@@ -43,7 +45,7 @@ export default {
4345 [ `text-${ props . textVariant } ` ] : Boolean ( props . textVariant )
4446 }
4547 } ) ,
46- [ $slots . header , $slots . body , $slots . footer ]
48+ [ header , body , footer ]
4749 )
4850 }
4951}
0 commit comments