Skip to content

Commit 2514aab

Browse files
committed
feat: add additional Card components
- (CCard) Img, ImgOverlay, Title, Subtitle, Text, Link
1 parent d7f6cf9 commit 2514aab

File tree

8 files changed

+167
-13
lines changed

8 files changed

+167
-13
lines changed

src/components/Card/CCardImg.vue

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<script>
2+
import { mergeData } from 'vue-functional-data-merge'
3+
import CImg from '../Image/CImg'
4+
const props = Object.assign(
5+
{
6+
placement: {
7+
type: String,
8+
default: 'full',
9+
validator: val => ['', 'top', 'bottom', 'full'].includes(val)
10+
}
11+
},
12+
CImg.props
13+
)
14+
15+
export default {
16+
functional: true,
17+
name: 'CCardImg',
18+
props,
19+
render (h, { props, data, children }) {
20+
const haveClassSuffix = ['bottom', 'top'].includes(props.placement)
21+
return h(
22+
CImg,
23+
mergeData(data, {
24+
class: `card-img${haveClassSuffix ? `-${props.placement}` : ''}`,
25+
props
26+
}),
27+
children
28+
)
29+
}
30+
}
31+
</script>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script>
2+
import { mergeData } from 'vue-functional-data-merge'
3+
4+
export default {
5+
functional: true,
6+
name: 'CCardImgOverlay',
7+
props: {
8+
tag: String
9+
},
10+
render (h, { props, data, children }) {
11+
return h(
12+
props.tag || 'div',
13+
mergeData(data, {
14+
staticClass: 'card-img-overlay'
15+
}),
16+
children
17+
)
18+
}
19+
}
20+
</script>

src/components/Card/CCardLink.vue

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script>
2+
import CLink, { props } from '../Link/CLink'
3+
import { mergeData } from 'vue-functional-data-merge'
4+
5+
export default {
6+
functional: true,
7+
name: 'CCardLink',
8+
props,
9+
render (h, { props, data, children }) {
10+
return h(
11+
CLink,
12+
mergeData(data, {
13+
staticClass: 'card-link',
14+
props
15+
}),
16+
children
17+
)
18+
}
19+
}
20+
</script>

src/components/Card/CCardSubtitle.vue

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script>
2+
import { mergeData } from 'vue-functional-data-merge'
3+
4+
export default {
5+
functional: true,
6+
name: 'CCardSubtitle',
7+
props: {
8+
tag: String
9+
},
10+
render (h, { props, data, children }) {
11+
return h(
12+
props.tag || 'h6',
13+
mergeData(data, {
14+
staticClass: 'card-subtitle'
15+
}),
16+
children
17+
)
18+
}
19+
}
20+
</script>

src/components/Card/CCardText.vue

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script>
2+
import { mergeData } from 'vue-functional-data-merge'
3+
4+
export default {
5+
functional: true,
6+
name: 'CCardText',
7+
props: {
8+
tag: String
9+
},
10+
render (h, { props, data, children }) {
11+
return h(
12+
props.tag || 'p',
13+
mergeData(data, {
14+
staticClass: 'card-text'
15+
}),
16+
children
17+
)
18+
}
19+
}
20+
</script>

src/components/Card/CCardTitle.vue

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<script>
2+
import { mergeData } from 'vue-functional-data-merge'
3+
4+
export default {
5+
functional: true,
6+
name: 'CCardTitle',
7+
props: {
8+
tag: String
9+
},
10+
render (h, { props, data, children }) {
11+
return h(
12+
props.tag || 'h4',
13+
mergeData(data, {
14+
staticClass: 'card-title'
15+
}),
16+
children
17+
)
18+
}
19+
}
20+
</script>

src/components/Card/index.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,23 @@ import CCard from './CCard'
33
import CCardBody from './CCardBody'
44
import CCardFooter from './CCardFooter'
55
import CCardHeader from './CCardHeader'
6+
import CCardTitle from './CCardTitle'
7+
import CCardSubtitle from './CCardSubtitle'
8+
import CCardText from './CCardText'
9+
import CCardImg from './CCardImg'
10+
import CCardImgOverlay from './CCardImgOverlay'
11+
import CCardLink from './CCardLink'
612

713
export {
814
CCardGroup,
915
CCard,
1016
CCardBody,
1117
CCardFooter,
12-
CCardHeader
18+
CCardHeader,
19+
CCardTitle,
20+
CCardSubtitle,
21+
CCardText,
22+
CCardImg,
23+
CCardImgOverlay,
24+
CCardLink
1325
}

src/components/index.d.ts

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,26 +72,37 @@ export declare class CCard extends CardSharedClasses {
7272
bodyWrapper: boolean
7373
}
7474

75-
export declare class CCardBody extends CardSharedClasses {
76-
titleHtml: string
77-
titleTag: string
78-
subtitleHtml: string
79-
subtitleTag: string
80-
bodyHtml: string
81-
overlay: boolean
75+
export declare class CCardBody extends CardSharedClasses {}
76+
77+
export declare class CCardFooter extends CardSharedClasses {}
78+
79+
export declare class CCardHeader extends CardSharedClasses {}
80+
81+
export declare class CCardImg extends CImg {
82+
placement: string
8283
}
8384

84-
export declare class CCardFooter extends CardSharedClasses {
85-
footerHtml: string
85+
export declare class CCardImgOverlay extends Vue {
86+
tag: string
8687
}
8788

88-
export declare class CCardHeader extends CardSharedClasses {
89-
headerHtml: string
89+
export declare class CCardLink extends CLink {}
90+
91+
export declare class CCardSubtitle extends Vue {
92+
tag: string
93+
}
94+
95+
export declare class CCardTitle extends Vue {
96+
tag: string
97+
}
98+
99+
export declare class CCardtext extends Vue {
100+
tag: string
90101
}
91102

92103
export declare class CCardGroup extends Vue {
93104
tag: string
94-
deck: boolean
105+
deck: boolean
95106
columns: boolean
96107
}
97108

0 commit comments

Comments
 (0)