mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-24 10:20:19 +08:00
[improvement] Actionsheet: use popup instead of mixin (#2806)
This commit is contained in:
parent
9c1248db9a
commit
9236132dbf
@ -2,15 +2,14 @@ import { use } from '../utils';
|
|||||||
import { PopupMixin } from '../mixins/popup';
|
import { PopupMixin } from '../mixins/popup';
|
||||||
import Icon from '../icon';
|
import Icon from '../icon';
|
||||||
import Loading from '../loading';
|
import Loading from '../loading';
|
||||||
|
import Popup from '../popup';
|
||||||
|
|
||||||
const [sfc, bem] = use('actionsheet');
|
const [sfc, bem] = use('actionsheet');
|
||||||
|
|
||||||
export default sfc({
|
export default sfc({
|
||||||
mixins: [PopupMixin],
|
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
|
...PopupMixin.props,
|
||||||
title: String,
|
title: String,
|
||||||
value: Boolean,
|
|
||||||
actions: Array,
|
actions: Array,
|
||||||
cancelText: String,
|
cancelText: String,
|
||||||
overlay: {
|
overlay: {
|
||||||
@ -43,16 +42,12 @@ export default sfc({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render(h) {
|
render(h) {
|
||||||
if (!this.shouldRender) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { title, cancelText, onCancel } = this;
|
const { title, cancelText, onCancel } = this;
|
||||||
|
|
||||||
const Header = () => (
|
const Header = () => (
|
||||||
<div class={[bem('header'), 'van-hairline--top-bottom']}>
|
<div class={[bem('header'), 'van-hairline--top-bottom']}>
|
||||||
{title}
|
{title}
|
||||||
<Icon name="close" onClick={onCancel} />
|
<Icon name="close" class={bem('close')} onClick={onCancel} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -87,12 +82,17 @@ export default sfc({
|
|||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<transition name="van-slide-up">
|
<Popup
|
||||||
<div vShow={this.value} class={bem({ withtitle: title })}>
|
class={bem()}
|
||||||
{title ? Header() : this.actions.map(Option)}
|
value={this.value}
|
||||||
{Footer}
|
position="bottom"
|
||||||
</div>
|
onInput={value => {
|
||||||
</transition>
|
this.$emit('input', value);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{title ? Header() : this.actions.map(Option)}
|
||||||
|
{Footer}
|
||||||
|
</Popup>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1,23 +1,11 @@
|
|||||||
@import '../style/var';
|
@import '../style/var';
|
||||||
|
|
||||||
.van-actionsheet {
|
.van-actionsheet {
|
||||||
position: fixed;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
color: @text-color;
|
|
||||||
max-height: 90%;
|
max-height: 90%;
|
||||||
overflow-y: auto;
|
color: @text-color;
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
background-color: @background-color;
|
|
||||||
|
|
||||||
&--withtitle {
|
|
||||||
background-color: @white;
|
|
||||||
}
|
|
||||||
|
|
||||||
&__item,
|
&__item,
|
||||||
&__cancel {
|
&__cancel {
|
||||||
height: 50px;
|
|
||||||
line-height: 50px;
|
line-height: 50px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -28,6 +16,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__item {
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
&__item--disabled {
|
&__item--disabled {
|
||||||
color: @gray;
|
color: @gray;
|
||||||
|
|
||||||
@ -46,23 +38,26 @@
|
|||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__cancel {
|
&__cancel::before {
|
||||||
margin-top: 10px;
|
content: ' ';
|
||||||
|
display: block;
|
||||||
|
height: 10px;
|
||||||
|
background-color: @background-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
&__header {
|
&__header {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
line-height: 44px;
|
line-height: 44px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
.van-icon-close {
|
&__close {
|
||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
padding: 0 15px;
|
padding: 0 15px;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: @gray-dark;
|
color: @gray-dark;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
line-height: inherit;
|
line-height: inherit;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||||
|
|
||||||
exports[`callback events 1`] = `
|
exports[`callback events 1`] = `
|
||||||
<div class="van-actionsheet" name="van-slide-up">
|
<div class="van-popup van-popup--bottom van-actionsheet" name="van-popup-slide-bottom">
|
||||||
<div class="van-actionsheet__item van-hairline--top"><span class="van-actionsheet__name">Option</span></div>
|
<div class="van-actionsheet__item van-hairline--top"><span class="van-actionsheet__name">Option</span></div>
|
||||||
<div class="van-actionsheet__item van-actionsheet__item--disabled van-hairline--top"><span class="van-actionsheet__name">Option</span></div>
|
<div class="van-actionsheet__item van-actionsheet__item--disabled van-hairline--top"><span class="van-actionsheet__name">Option</span></div>
|
||||||
<div class="van-actionsheet__cancel">Cancel</div>
|
<div class="van-actionsheet__cancel">Cancel</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user