You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.6 KiB
65 lines
1.6 KiB
import { VantComponent } from '../common/component'; |
|
import { WHITE } from '../common/color'; |
|
import { getSystemInfoSync } from '../common/utils'; |
|
VantComponent({ |
|
props: { |
|
message: String, |
|
background: String, |
|
type: { |
|
type: String, |
|
value: 'danger', |
|
}, |
|
color: { |
|
type: String, |
|
value: WHITE, |
|
}, |
|
duration: { |
|
type: Number, |
|
value: 3000, |
|
}, |
|
zIndex: { |
|
type: Number, |
|
value: 110, |
|
}, |
|
safeAreaInsetTop: { |
|
type: Boolean, |
|
value: false, |
|
}, |
|
top: null, |
|
}, |
|
data: { |
|
show: false, |
|
onOpened: null, |
|
onClose: null, |
|
onClick: null, |
|
}, |
|
created() { |
|
const { statusBarHeight } = getSystemInfoSync(); |
|
this.setData({ statusBarHeight }); |
|
}, |
|
methods: { |
|
show() { |
|
const { duration, onOpened } = this.data; |
|
clearTimeout(this.timer); |
|
this.setData({ show: true }); |
|
wx.nextTick(onOpened); |
|
if (duration > 0 && duration !== Infinity) { |
|
this.timer = setTimeout(() => { |
|
this.hide(); |
|
}, duration); |
|
} |
|
}, |
|
hide() { |
|
const { onClose } = this.data; |
|
clearTimeout(this.timer); |
|
this.setData({ show: false }); |
|
wx.nextTick(onClose); |
|
}, |
|
onTap(event) { |
|
const { onClick } = this.data; |
|
if (onClick) { |
|
onClick(event.detail); |
|
} |
|
}, |
|
}, |
|
});
|
|
|