1
1
import { mergeData } from 'vue-functional-data-merge'
2
- import { assign } from '../../utils/object'
3
2
import sharedCardProps from './sharedCardProps'
4
3
import CCardHeader from './CCardHeader'
5
4
import CCardBody from './CCardBody'
6
5
import CCardFooter from './CCardFooter'
7
6
8
- const props = assign (
7
+ const props = Object . assign (
9
8
sharedCardProps . props ,
10
9
{
11
10
header : String ,
12
11
body : String ,
13
12
footer : String ,
14
- noWrapper : Boolean
13
+ bodyWrapper : Boolean
15
14
}
16
15
)
17
16
export default {
18
17
functional : true ,
19
18
name : 'CCard' ,
20
19
props,
21
20
render ( h , { props, data, slots } ) {
22
- const $slots = slots ( )
21
+ let header = h ( false )
22
+ let body = slots ( ) . default
23
+ let footer = h ( false )
23
24
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 } } )
26
27
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 )
31
32
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 } } )
34
36
35
37
return h (
36
38
props . tag || 'div' ,
@@ -43,7 +45,7 @@ export default {
43
45
[ `text-${ props . textVariant } ` ] : Boolean ( props . textVariant )
44
46
}
45
47
} ) ,
46
- [ $slots . header , $slots . body , $slots . footer ]
48
+ [ header , body , footer ]
47
49
)
48
50
}
49
51
}
0 commit comments