From 149d2aa83244e909da82fbc0012751f59095941c Mon Sep 17 00:00:00 2001 From: neverland Date: Sun, 6 Jan 2019 17:33:35 +0800 Subject: [PATCH] [improvement] Card: jsx (#2448) --- packages/card/index.js | 84 ++++++++++++++ packages/card/index.vue | 108 ------------------ .../card/test/__snapshots__/demo.spec.js.snap | 13 +-- 3 files changed, 87 insertions(+), 118 deletions(-) create mode 100644 packages/card/index.js delete mode 100644 packages/card/index.vue diff --git a/packages/card/index.js b/packages/card/index.js new file mode 100644 index 000000000..448d6face --- /dev/null +++ b/packages/card/index.js @@ -0,0 +1,84 @@ +import createSfc from '../utils/create'; +import createBem from '../utils/bem'; +import Tag from '../tag'; + +const bem = createBem('van-card'); + +export default createSfc({ + name: 'card', + + props: { + tag: String, + desc: String, + thumb: String, + title: String, + centered: Boolean, + lazyLoad: Boolean, + thumbLink: String, + num: [Number, String], + price: [Number, String], + originPrice: [Number, String], + currency: { + type: String, + default: '¥' + } + }, + + render(h) { + const { thumb, isDef, $slots: slots } = this; + + const Thumb = (slots.thumb || thumb) && ( + + {slots.thumb || + (this.lazyLoad ? ( + + ) : ( + + ))} + {this.tag && ( + + {this.tag} + + )} + + ); + + const Title = slots.title || (this.title &&
{this.title}
); + + const Desc = + slots.desc || (this.desc &&
{this.desc}
); + + const Price = (slots.price || isDef(this.price)) && ( +
{slots.price || `${this.currency} ${this.price}`}
+ ); + + const OriginPrice = isDef(this.originPrice) && ( +
{`${this.currency} ${this.originPrice}`}
+ ); + + const Num = (slots.num || isDef(this.num)) && ( +
{slots.num || `x ${this.num}`}
+ ); + + const Footer = slots.footer &&
{slots.footer}
; + + return ( +
+
+ {Thumb} +
+ {Title} + {Desc} + {slots.tags} +
+ {Price} + {OriginPrice} + {Num} +
+
+
+ {Footer} +
+ ); + } +}); diff --git a/packages/card/index.vue b/packages/card/index.vue deleted file mode 100644 index 75049fada..000000000 --- a/packages/card/index.vue +++ /dev/null @@ -1,108 +0,0 @@ - - - diff --git a/packages/card/test/__snapshots__/demo.spec.js.snap b/packages/card/test/__snapshots__/demo.spec.js.snap index 2c1bd205b..fc8c4eda6 100644 --- a/packages/card/test/__snapshots__/demo.spec.js.snap +++ b/packages/card/test/__snapshots__/demo.spec.js.snap @@ -4,26 +4,21 @@ exports[`renders demo correctly 1`] = `
-
- +
2018秋冬新款男士休闲时尚军绿飞行夹克秋冬新款男
描述信息
¥ 2.00
-
x 2
-
-
- 标签 - +
标签
2018秋冬新款男士休闲时尚军绿飞行夹克秋冬新款男
描述信息
@@ -34,9 +29,7 @@ exports[`renders demo correctly 1`] = `
¥ 2.00
-
- ¥ 10.00 -
+
¥ 10.00
x 2