Files
vant/src/toast/demo/index.vue
2020-04-02 15:36:02 +08:00

161 lines
3.6 KiB
Vue

<template>
<demo-section>
<demo-block :title="t('title1')">
<van-button
type="primary"
:text="t('title1')"
@click="$toast(t('text'))"
/>
<van-button
type="primary"
:text="t('longTextButton')"
@click="$toast(t('longText'))"
/>
</demo-block>
<demo-block :title="t('title2')">
<van-button
type="primary"
:text="t('title2')"
@click="showLoadingToast()"
/>
<van-button
type="primary"
:text="t('loadingType')"
@click="showLoadingToast('spinner')"
/>
</demo-block>
<demo-block :title="t('title3')">
<van-button type="info" :text="t('success')" @click="showSuccessToast" />
<van-button type="danger" :text="t('fail')" @click="showFailToast" />
</demo-block>
<demo-block v-if="!isWeapp" :title="t('customIcon')">
<van-button
type="primary"
:text="t('customIcon')"
@click="showIconToast"
/>
<van-button
type="primary"
:text="t('customImage')"
@click="showImageToast"
/>
</demo-block>
<demo-block :title="t('updateMessage')">
<van-button
type="primary"
:text="t('updateMessage')"
@click="showCustomizedToast"
/>
</demo-block>
</demo-section>
</template>
<script>
export default {
i18n: {
'zh-CN': {
title1: '文字提示',
title2: '加载提示',
title3: '成功/失败提示',
success: '成功提示',
fail: '失败提示',
text: '提示内容',
longText: '这是一条长文字提示,超过一定字数就会换行',
text2: '成功文案',
text3: '失败文案',
customIcon: '自定义图标',
customImage: '展示图片',
text4: (second) => `倒计时 ${second}`,
longTextButton: '长文字提示',
updateMessage: '动态更新提示',
loadingType: '自定义加载图标',
},
'en-US': {
title1: 'Text',
title2: 'Loading',
title3: 'Success/Fail',
success: 'Success',
fail: 'Fail',
text: 'Some messages',
longText:
'This is a long message, text will wrap when over a certain length',
text2: 'Success',
text3: 'Fail',
customIcon: 'Custom Icon',
customImage: 'Custom Image',
text4: (second) => `${second} seconds`,
longTextButton: 'Long Text',
updateMessage: 'Update Message',
loadingType: 'Loading Type',
},
},
methods: {
showLoadingToast(loadingType) {
this.$toast.loading({
forbidClick: true,
message: this.t('loading'),
loadingType,
});
},
showSuccessToast() {
this.$toast.success(this.t('text2'));
},
showFailToast() {
this.$toast.fail(this.t('text3'));
},
showIconToast() {
this.$toast({
message: this.t('customIcon'),
icon: 'like-o',
});
},
showImageToast() {
this.$toast({
message: this.t('customImage'),
icon: 'https://img.yzcdn.cn/vant/logo.png',
});
},
showCustomizedToast() {
const toast = this.$toast.loading({
duration: 0,
forbidClick: true,
message: this.t('text4', 3),
});
let second = 3;
const timer = setInterval(() => {
second--;
if (second) {
toast.message = this.t('text4', second);
} else {
clearInterval(timer);
this.$toast.clear();
}
}, 1000);
},
},
};
</script>
<style lang="less">
@import '../../style/var';
.demo-toast {
background-color: @white;
.van-button {
margin-left: @padding-md;
}
}
</style>