11import { mergeData } from 'vue-functional-data-merge'
2- // import pluckProps from '../../utils/pluck-props'
32import { assign } from '../../utils/object'
4- import cardCommon from '../../mixins/cardMixin '
3+ import sharedCardProps from './sharedCardProps '
54import CCardHeader from './CCardHeader'
65import CCardBody from './CCardBody'
76import CCardFooter from './CCardFooter'
87
98const props = assign (
10- cardCommon . props ,
9+ sharedCardProps . props ,
1110 {
1211 header : String ,
1312 body : String ,
14- footer : String
13+ footer : String ,
14+ noWrapper : Boolean
1515 }
1616)
1717export default {
@@ -24,14 +24,16 @@ export default {
2424 if ( ! $slots . header && props . header )
2525 $slots . header = h ( CCardHeader , { domProps : { innerHTML : props . header } } )
2626
27- if ( ! $slots . body && ! $slots . default && props . body )
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 )
2830 $slots . body = h ( CCardBody , { domProps : { innerHTML : props . body } } )
2931
3032 if ( ! $slots . footer && props . footer )
3133 $slots . footer = h ( CCardFooter , { domProps : { innerHTML : props . footer } } )
3234
3335 return h (
34- props . tag ,
36+ props . tag || 'div' ,
3537 mergeData ( data , {
3638 staticClass : 'card' ,
3739 class : {
@@ -41,7 +43,7 @@ export default {
4143 [ `text-${ props . textVariant } ` ] : Boolean ( props . textVariant )
4244 }
4345 } ) ,
44- [ $slots . header , $slots . body || $slots . default , $slots . footer ]
46+ [ $slots . header , $slots . body , $slots . footer ]
4547 )
4648 }
4749}
0 commit comments