mirror of
https://github.com/youzan/vant.git
synced 2025-10-20 10:44:59 +00:00
161 lines
3.6 KiB
Vue
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>
|