1
1
<template >
2
2
<div :class =" mediaClasses" >
3
- <div :class =" computedAsideClasses " >
3
+ <div :class =" asideClasses " >
4
4
<slot name =" aside" >
5
- <CImage
6
- v-if =" asideImage"
7
- v-bind =" asideImage"
8
- />
5
+ <CImage v-bind =" computedAsideImageProps" />
9
6
</slot >
10
7
</div >
11
- <div :class =" computedBodyClasses " >
8
+ <div :class =" mediaBodyClasses " >
12
9
<slot ></slot >
13
10
</div >
14
11
</div >
15
12
</template >
16
13
17
-
18
14
<script >
19
15
import CImage from ' ../Image/CImage'
20
16
export default {
@@ -24,17 +20,35 @@ export default {
24
20
addAsideClasses: String ,
25
21
addBodyClasses: String ,
26
22
asideRight: Boolean ,
27
- asideImage: Object
23
+ asideImageProps: Object ,
24
+ asidePosition: {
25
+ type: String ,
26
+ default: ' start' ,
27
+ validator : val => [' start' , ' center' , ' end' , ' stretch' ].includes (val)
28
+ }
28
29
},
29
30
computed: {
31
+ computedAsideImageProps () {
32
+ return Object .assign (
33
+ {
34
+ blankColor: ' #777777' ,
35
+ width: ' 64px' ,
36
+ height: this .asidePosition === ' stretch' ? ' 100%' : ' 64px'
37
+ },
38
+ this .asideImageProps || {}
39
+ )
40
+ },
30
41
computedAsidePositionClasses () {
31
- return this .asidePositionClasses ||
32
- ` c-m${ this .asideRight ? ' l' : ' r' } -3 c-align-self-start`
42
+ return this .asidePositionClasses || ` c-m${ this .asideRight ? ' l' : ' r' } -3`
33
43
},
34
- computedAsideClasses () {
35
- return [this .computedAsidePositionClasses , this .addAsideClasses ]
44
+ asideClasses () {
45
+ return [
46
+ this .computedAsidePositionClasses ,
47
+ this .addAsideClasses ,
48
+ ` c-align-self-${ this .asidePosition } `
49
+ ]
36
50
},
37
- computedBodyClasses () {
51
+ mediaBodyClasses () {
38
52
return [ ' c-media-body' , this .addBodyClasses ]
39
53
},
40
54
mediaClasses () {
0 commit comments