From 45cbd17b1ef3b5604db0eb8411b8a7a6d88405d9 Mon Sep 17 00:00:00 2001 From: neverland Date: Fri, 5 Feb 2021 11:55:55 +0800 Subject: [PATCH] types(Toast): use tsx (#8091) --- src/toast/{Toast.js => Toast.tsx} | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) rename src/toast/{Toast.js => Toast.tsx} (83%) diff --git a/src/toast/Toast.js b/src/toast/Toast.tsx similarity index 83% rename from src/toast/Toast.js rename to src/toast/Toast.tsx index 57060d1a2..963cb34ba 100644 --- a/src/toast/Toast.js +++ b/src/toast/Toast.tsx @@ -1,4 +1,4 @@ -import { watch, onMounted, onUnmounted } from 'vue'; +import { watch, onMounted, onUnmounted, PropType } from 'vue'; // Utils import { createNamespace, isDef } from '../utils'; @@ -7,31 +7,37 @@ import { lockClick } from './lock-click'; // Components import Icon from '../icon'; import Popup from '../popup'; -import Loading from '../loading'; +import Loading, { LoadingType } from '../loading'; const [createComponent, bem] = createNamespace('toast'); +export type ToastType = 'text' | 'loading' | 'success' | 'fail' | 'html'; +export type ToastPosition = 'top' | 'middle' | 'bottom'; + export default createComponent({ props: { icon: String, show: Boolean, message: [Number, String], - duration: Number, className: null, iconPrefix: String, lockScroll: Boolean, - loadingType: String, + loadingType: String as PropType, forbidClick: Boolean, overlayClass: null, overlayStyle: Object, closeOnClick: Boolean, closeOnClickOverlay: Boolean, type: { - type: String, + type: String as PropType, default: 'text', }, + duration: { + type: Number, + default: 2000, + }, position: { - type: String, + type: String as PropType, default: 'middle', }, transition: { @@ -43,7 +49,7 @@ export default createComponent({ emits: ['update:show'], setup(props, { emit }) { - let timer; + let timer: NodeJS.Timeout; let clickable = false; const toggleClickable = () => { @@ -64,7 +70,7 @@ export default createComponent({ clearTimeout(timer); }; - const toggle = (show) => { + const toggle = (show: boolean) => { emit('update:show', show); }; @@ -92,7 +98,7 @@ export default createComponent({ if (isDef(message) && message !== '') { return type === 'html' ? ( -
+
) : (
{message}
);