From 9236132dbf6bb56c7272b91ed7517f171bf8721a Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 20 Feb 2019 15:16:25 +0800 Subject: [PATCH] [improvement] Actionsheet: use popup instead of mixin (#2806) --- packages/actionsheet/index.js | 28 ++++++------ packages/actionsheet/index.less | 43 ++++++++----------- .../test/__snapshots__/index.spec.js.snap | 2 +- 3 files changed, 34 insertions(+), 39 deletions(-) diff --git a/packages/actionsheet/index.js b/packages/actionsheet/index.js index c7223e553..6af3d1313 100644 --- a/packages/actionsheet/index.js +++ b/packages/actionsheet/index.js @@ -2,15 +2,14 @@ import { use } from '../utils'; import { PopupMixin } from '../mixins/popup'; import Icon from '../icon'; import Loading from '../loading'; +import Popup from '../popup'; const [sfc, bem] = use('actionsheet'); export default sfc({ - mixins: [PopupMixin], - props: { + ...PopupMixin.props, title: String, - value: Boolean, actions: Array, cancelText: String, overlay: { @@ -43,16 +42,12 @@ export default sfc({ }, render(h) { - if (!this.shouldRender) { - return; - } - const { title, cancelText, onCancel } = this; const Header = () => (
{title} - +
); @@ -87,12 +82,17 @@ export default sfc({ ); return ( - -
- {title ? Header() : this.actions.map(Option)} - {Footer} -
-
+ { + this.$emit('input', value); + }} + > + {title ? Header() : this.actions.map(Option)} + {Footer} + ); } }); diff --git a/packages/actionsheet/index.less b/packages/actionsheet/index.less index 81a1d5e42..2b033a5a0 100644 --- a/packages/actionsheet/index.less +++ b/packages/actionsheet/index.less @@ -1,23 +1,11 @@ @import '../style/var'; .van-actionsheet { - position: fixed; - left: 0; - right: 0; - bottom: 0; - color: @text-color; max-height: 90%; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - background-color: @background-color; - - &--withtitle { - background-color: @white; - } + color: @text-color; &__item, &__cancel { - height: 50px; line-height: 50px; font-size: 16px; text-align: center; @@ -28,6 +16,10 @@ } } + &__item { + height: 50px; + } + &__item--disabled { color: @gray; @@ -46,23 +38,26 @@ display: inline-block; } - &__cancel { - margin-top: 10px; + &__cancel::before { + content: ' '; + display: block; + height: 10px; + background-color: @background-color; } &__header { font-size: 16px; line-height: 44px; text-align: center; + } - .van-icon-close { - top: 0; - right: 0; - padding: 0 15px; - font-size: 18px; - color: @gray-dark; - position: absolute; - line-height: inherit; - } + &__close { + top: 0; + right: 0; + padding: 0 15px; + font-size: 18px; + color: @gray-dark; + position: absolute; + line-height: inherit; } } diff --git a/packages/actionsheet/test/__snapshots__/index.spec.js.snap b/packages/actionsheet/test/__snapshots__/index.spec.js.snap index 0227cc076..6c38c7b27 100644 --- a/packages/actionsheet/test/__snapshots__/index.spec.js.snap +++ b/packages/actionsheet/test/__snapshots__/index.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`callback events 1`] = ` -
+
Option
Option
Cancel