[improvement] Actionsheet: use popup instead of mixin (#2806)

This commit is contained in:
neverland
2019-02-20 15:16:25 +08:00
committed by GitHub
parent 9c1248db9a
commit 9236132dbf
3 changed files with 34 additions and 39 deletions
+14 -14
View File
@@ -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 = () => (
<div class={[bem('header'), 'van-hairline--top-bottom']}>
{title}
<Icon name="close" onClick={onCancel} />
<Icon name="close" class={bem('close')} onClick={onCancel} />
</div>
);
@@ -87,12 +82,17 @@ export default sfc({
);
return (
<transition name="van-slide-up">
<div vShow={this.value} class={bem({ withtitle: title })}>
{title ? Header() : this.actions.map(Option)}
{Footer}
</div>
</transition>
<Popup
class={bem()}
value={this.value}
position="bottom"
onInput={value => {
this.$emit('input', value);
}}
>
{title ? Header() : this.actions.map(Option)}
{Footer}
</Popup>
);
}
});