From b42e2ec194d8084d2e577857d91536d076619a42 Mon Sep 17 00:00:00 2001 From: neverland Date: Sun, 6 Jan 2019 12:15:09 +0800 Subject: [PATCH] [improvement] Button: jsx (#2447) --- packages/button/demo/index.vue | 30 +++----- packages/button/index.js | 69 +++++++++++++++++ packages/button/index.less | 8 +- packages/button/index.vue | 74 ------------------- .../test/__snapshots__/demo.spec.js.snap | 22 ++---- .../test/__snapshots__/demo.spec.js.snap | 4 +- .../test/__snapshots__/index.spec.js.snap | 2 +- 7 files changed, 94 insertions(+), 115 deletions(-) create mode 100644 packages/button/index.js delete mode 100644 packages/button/index.vue diff --git a/packages/button/demo/index.vue b/packages/button/demo/index.vue index bfc9171c3..972829e67 100644 --- a/packages/button/demo/index.vue +++ b/packages/button/demo/index.vue @@ -13,30 +13,26 @@ - {{ $t('plain') }} - + :text="$t('plain')" + /> - {{ $t('plain') }} - + :text="$t('plain')" + /> - {{ $t('disabled') }} - + :text="$t('disabled')" + /> - {{ $t('disabled') }} - + :text="$t('disabled')" + /> @@ -54,15 +50,13 @@ - {{ $t('square') }} - + :text="$t('square')" + /> - {{ $t('round') }} - + :text="$t('round')" + /> diff --git a/packages/button/index.js b/packages/button/index.js new file mode 100644 index 000000000..fcdf178fd --- /dev/null +++ b/packages/button/index.js @@ -0,0 +1,69 @@ +import createSfc from '../utils/create'; +import createBem from '../utils/bem'; + +const bem = createBem('van-button'); + +export default createSfc({ + name: 'button', + + props: { + text: String, + block: Boolean, + plain: Boolean, + round: Boolean, + square: Boolean, + loading: Boolean, + disabled: Boolean, + nativeType: String, + bottomAction: Boolean, + tag: { + type: String, + default: 'button' + }, + type: { + type: String, + default: 'default' + }, + size: { + type: String, + default: 'normal' + } + }, + + methods: { + onClick(event) { + if (!this.loading && !this.disabled) { + this.$emit('click', event); + } + } + }, + + render(h) { + return ( + + {this.loading ? ( + + ) : ( + {this.$slots.default || this.text} + )} + + ); + } +}); diff --git a/packages/button/index.less b/packages/button/index.less index 887394be8..d3cfa4d49 100644 --- a/packages/button/index.less +++ b/packages/button/index.less @@ -32,8 +32,11 @@ opacity: .15; } - &--unclickable::before { - display: none; + &--loading, + &--disabled { + &::before { + display: none; + } } &--default { @@ -101,7 +104,6 @@ } } - /* mini图标默认宽度50px,文字不能超过4个 */ &--mini { display: inline-block; width: 50px; diff --git a/packages/button/index.vue b/packages/button/index.vue deleted file mode 100644 index 047d087be..000000000 --- a/packages/button/index.vue +++ /dev/null @@ -1,74 +0,0 @@ - - - diff --git a/packages/button/test/__snapshots__/demo.spec.js.snap b/packages/button/test/__snapshots__/demo.spec.js.snap index 3efa5e244..710afad5c 100644 --- a/packages/button/test/__snapshots__/demo.spec.js.snap +++ b/packages/button/test/__snapshots__/demo.spec.js.snap @@ -5,26 +5,14 @@ exports[`renders demo correctly 1`] = `
-
-
-
+
+
-
+
`; diff --git a/packages/submit-bar/test/__snapshots__/demo.spec.js.snap b/packages/submit-bar/test/__snapshots__/demo.spec.js.snap index 6a76381ee..42cfa35d5 100644 --- a/packages/submit-bar/test/__snapshots__/demo.spec.js.snap +++ b/packages/submit-bar/test/__snapshots__/demo.spec.js.snap @@ -15,7 +15,7 @@ exports[`renders demo correctly 1`] = `
你的收货地址不支持同城送, 我们已为你推荐快递
-
合计: ¥ 30.50
+
合计: ¥ 30.50
@@ -23,7 +23,7 @@ exports[`renders demo correctly 1`] = `
-
合计: ¥ 30.50
diff --git a/packages/submit-bar/test/__snapshots__/index.spec.js.snap b/packages/submit-bar/test/__snapshots__/index.spec.js.snap index c437a2759..d788eba37 100644 --- a/packages/submit-bar/test/__snapshots__/index.spec.js.snap +++ b/packages/submit-bar/test/__snapshots__/index.spec.js.snap @@ -4,7 +4,7 @@ exports[`submit 1`] = `
-
合计: ¥ 0.00
+
合计: ¥ 0.00
`;