Skip to content

Commit 26c5699

Browse files
committed
refactor: Card components modifications
1 parent f7eeca0 commit 26c5699

File tree

7 files changed

+28
-28
lines changed

7 files changed

+28
-28
lines changed

src/components/Card/CCard.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import { mergeData } from 'vue-functional-data-merge'
2-
// import pluckProps from '../../utils/pluck-props'
32
import { assign } from '../../utils/object'
4-
import cardCommon from '../../mixins/cardMixin'
3+
import sharedCardProps from './sharedCardProps'
54
import CCardHeader from './CCardHeader'
65
import CCardBody from './CCardBody'
76
import CCardFooter from './CCardFooter'
87

98
const 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
)
1717
export 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
}

src/components/Card/CCardBody.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { mergeData } from 'vue-functional-data-merge'
22
import { assign } from '../../utils/object'
3-
import cardCommon from '../../mixins/cardMixin'
3+
import sharedCardProps from './sharedCardProps'
44

55
export const props = assign(
6-
cardCommon.props,
6+
sharedCardProps.props,
77
{
88
title: String,
99
titleTag: {
@@ -44,7 +44,7 @@ export default {
4444
}
4545

4646
return h(
47-
props.tag,
47+
props.tag || 'div',
4848
mergeData(data, {
4949
staticClass: 'card-body',
5050
class: [

src/components/Card/CCardFooter.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { mergeData } from 'vue-functional-data-merge'
22
import { assign } from '../../utils/object'
3-
import cardCommon from '../../mixins/cardMixin'
3+
import sharedCardProps from './sharedCardProps'
44

55
export const props = assign(
6-
cardCommon.props,
6+
sharedCardProps.props,
77
{
88
footer: String,
99
}
@@ -15,7 +15,7 @@ export default {
1515
props,
1616
render (h, { props, data, children }) {
1717
return h(
18-
props.tag,
18+
props.tag || 'footer',
1919
mergeData(data, {
2020
staticClass: 'card-footer',
2121
class: [

src/components/Card/CCardGroup.js

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { mergeData } from 'vue-functional-data-merge'
22

33
export const props = {
4-
tag: {
5-
type: String,
6-
default: 'div'
7-
},
4+
tag: String,
85
deck: Boolean,
96
columns: Boolean,
107
}
@@ -18,6 +15,6 @@ export default {
1815
staticClass = 'card-columns'
1916
if (props.deck)
2017
staticClass = 'card-deck'
21-
return h(props.tag, mergeData(data, { staticClass }), children)
18+
return h(props.tag || 'div' , mergeData(data, { staticClass }), children)
2219
}
2320
}

src/components/Card/CCardHeader.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { mergeData } from 'vue-functional-data-merge'
22
import { assign } from '../../utils/object'
3-
import cardCommon from '../../mixins/cardMixin'
3+
import sharedCardProps from './sharedCardProps'
44

55
export const props = assign(
6-
cardCommon.props,
6+
sharedCardProps.props,
77
{
88
header: String
99
}
@@ -15,7 +15,7 @@ export default {
1515
props,
1616
render (h, { props, data, children }) {
1717
return h(
18-
props.tag,
18+
props.tag || 'header',
1919
mergeData(data, {
2020
staticClass: 'card-header',
2121
class: [

src/components/Card/CCardImg.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import {mergeData} from 'vue-functional-data-merge'
1+
import { mergeData } from 'vue-functional-data-merge'
22

33
export const props = {
4+
tag: String,
45
imgSrc: String,
56
imgAlt: String,
67
imgTop: Boolean,
@@ -28,7 +29,7 @@ export default {
2829
staticClass += '-left'
2930

3031
return h(
31-
'img',
32+
props.tag || 'img',
3233
mergeData(data, {
3334
staticClass,
3435
class: {'img-fluid': props.imgFluid},
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
export default {
22
props: {
3-
tag: {
4-
type: String,
5-
default: 'div'
6-
},
3+
tag: String,
74
variant: String,
85
borderVariant: String,
96
textVariant: String,
10-
align: String
7+
align: {
8+
type: String,
9+
validator: val => ['', 'left', 'center', 'right'].includes(val)
10+
}
1111
}
1212
}

0 commit comments

Comments
 (0)