From 9b7af21bbdf95be38ab20869c2a4da8dc1e537ca Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 9 Feb 2022 14:22:33 +0800 Subject: [PATCH 1/3] types(IndexBar): index-list prop can includes number (#10273) --- packages/vant/src/index-bar/IndexBar.tsx | 4 ++-- packages/vant/src/toast/Toast.tsx | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/vant/src/index-bar/IndexBar.tsx b/packages/vant/src/index-bar/IndexBar.tsx index e0a63e8f3..d127039a0 100644 --- a/packages/vant/src/index-bar/IndexBar.tsx +++ b/packages/vant/src/index-bar/IndexBar.tsx @@ -58,7 +58,7 @@ const indexBarProps = { highlightColor: String, stickyOffsetTop: makeNumberProp(0), indexList: { - type: Array as PropType, + type: Array as PropType>, default: genAlphabet, }, }; @@ -76,7 +76,7 @@ export default defineComponent({ setup(props, { emit, slots }) { const root = ref(); - const activeAnchor = ref(''); + const activeAnchor = ref(''); const touch = useTouch(); const scrollParent = useScrollParent(root); diff --git a/packages/vant/src/toast/Toast.tsx b/packages/vant/src/toast/Toast.tsx index 347124f13..58b3c2dbc 100644 --- a/packages/vant/src/toast/Toast.tsx +++ b/packages/vant/src/toast/Toast.tsx @@ -4,6 +4,7 @@ import { onUnmounted, defineComponent, type PropType, + type TeleportProps, type CSSProperties, type ExtractPropTypes, } from 'vue'; @@ -49,6 +50,7 @@ const toastProps = { iconSize: numericProp, duration: makeNumberProp(2000), position: makeStringProp('middle'), + teleport: [String, Object] as PropType, className: unknownProp, iconPrefix: String, transition: makeStringProp('van-fade'), From 7630bb2c03e7f4e5ab349f9edb80bc26adec14cb Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 9 Feb 2022 14:35:37 +0800 Subject: [PATCH 2/3] types(Uploader): fix UploaderBeforeRead type (#10274) --- packages/vant/src/uploader/demo/index.vue | 30 +++++++++++++++++------ packages/vant/src/uploader/types.ts | 4 +-- packages/vant/src/utils/interceptor.ts | 2 +- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/packages/vant/src/uploader/demo/index.vue b/packages/vant/src/uploader/demo/index.vue index 2843a8c96..f03ca5b5b 100644 --- a/packages/vant/src/uploader/demo/index.vue +++ b/packages/vant/src/uploader/demo/index.vue @@ -56,7 +56,7 @@ const fileList3 = ref([]); const fileList4 = ref([{ url: 'https://img.yzcdn.cn/vant/sand.jpg' }]); -const fileList5 = ref([ +const fileList5 = ref([ { url: 'https://img.yzcdn.cn/vant/leaf.jpg' }, { url: 'https://img.yzcdn.cn/vant/sand.jpg', @@ -73,7 +73,7 @@ const fileList5 = ref([ }, ]); -const statusFileList = ref([ +const statusFileList = ref([ { url: 'https://img.yzcdn.cn/vant/leaf.jpg', status: 'uploading', @@ -86,16 +86,19 @@ const statusFileList = ref([ }, ]); -const previewCoverFiles = ref([ +const previewCoverFiles = ref([ { url: 'https://img.yzcdn.cn/vant/leaf.jpg', file: { name: t('imageName'), - }, + } as File, }, ]); -const beforeRead = (file: File) => { +const beforeRead = (file: File | File[]) => { + if (Array.isArray(file)) { + return true; + } if (file.type !== 'image/jpeg') { Toast(t('invalidType')); return false; @@ -103,11 +106,14 @@ const beforeRead = (file: File) => { return true; }; -const afterRead = (file: UploaderFileListItem, detail: unknown) => { +const afterRead = ( + file: UploaderFileListItem | UploaderFileListItem[], + detail: unknown +) => { console.log(file, detail); }; -const afterReadFailed = (item: UploaderFileListItem) => { +const setItemLoading = (item: UploaderFileListItem) => { item.status = 'uploading'; item.message = t('uploading'); @@ -117,6 +123,16 @@ const afterReadFailed = (item: UploaderFileListItem) => { }, 1000); }; +const afterReadFailed = ( + item: UploaderFileListItem | UploaderFileListItem[] +) => { + if (Array.isArray(item)) { + item.forEach(setItemLoading); + } else { + setItemLoading(item); + } +}; + const onOversize = (file: UploaderFileListItem, detail: unknown) => { console.log(file, detail); Toast(t('overSizeTip')); diff --git a/packages/vant/src/uploader/types.ts b/packages/vant/src/uploader/types.ts index 5b8530918..883181ce3 100644 --- a/packages/vant/src/uploader/types.ts +++ b/packages/vant/src/uploader/types.ts @@ -20,15 +20,13 @@ export type UploaderFileListItem = { export type UploaderMaxSize = number | string | ((file: File) => boolean); -type PromiseOrNot = T | Promise; - export type UploaderBeforeRead = ( file: File | File[], detail: { name: string | number; index: number; } -) => PromiseOrNot; +) => boolean | Promise; export type UploaderAfterRead = ( items: UploaderFileListItem | UploaderFileListItem[], diff --git a/packages/vant/src/utils/interceptor.ts b/packages/vant/src/utils/interceptor.ts index 6644642d1..87b5c813f 100644 --- a/packages/vant/src/utils/interceptor.ts +++ b/packages/vant/src/utils/interceptor.ts @@ -3,7 +3,7 @@ import { isPromise } from './validate'; export type Interceptor = ( ...args: any[] -) => Promise | boolean | undefined; +) => Promise | boolean | undefined | void; export function callInterceptor( interceptor: Interceptor | undefined, From b5d0fec61183b25a98998ed5b2e2de5039ef2b51 Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 9 Feb 2022 14:56:44 +0800 Subject: [PATCH 3/3] types: fix ts errors in demo files (#10275) * types: fix ts errors in demo files * docs: upd --- packages/vant-cli/site/desktop/components/Header.vue | 2 +- packages/vant/src/contact-edit/README.md | 5 ++++- packages/vant/src/contact-edit/README.zh-CN.md | 5 ++++- packages/vant/src/contact-edit/demo/index.vue | 7 +++++-- packages/vant/src/count-down/demo/index.vue | 3 +-- packages/vant/src/count-down/test/index.spec.tsx | 9 ++++++--- packages/vant/src/notify/demo/index.vue | 3 +-- packages/vant/src/slider/demo/index.vue | 4 ++-- packages/vant/src/stepper/demo/index.vue | 2 +- packages/vant/src/sticky/demo/index.vue | 2 +- packages/vant/src/swipe-cell/demo/index.vue | 6 ++++-- packages/vant/src/tab/demo/index.vue | 2 +- packages/vant/src/uploader/test/index.spec.ts | 2 +- packages/vant/src/uploader/types.ts | 2 +- 14 files changed, 33 insertions(+), 21 deletions(-) diff --git a/packages/vant-cli/site/desktop/components/Header.vue b/packages/vant-cli/site/desktop/components/Header.vue index 175482753..0501ff13d 100644 --- a/packages/vant-cli/site/desktop/components/Header.vue +++ b/packages/vant-cli/site/desktop/components/Header.vue @@ -262,7 +262,7 @@ export default { &__subtitle { display: inline-block; color: #999; - margin-left: 8px; + margin-left: 4px; vertical-align: -4px; font-size: 13px; } diff --git a/packages/vant/src/contact-edit/README.md b/packages/vant/src/contact-edit/README.md index f0571c6d7..2f3446c53 100644 --- a/packages/vant/src/contact-edit/README.md +++ b/packages/vant/src/contact-edit/README.md @@ -37,7 +37,10 @@ import { Toast } from 'vant'; export default { setup() { - const editingContact = ref({}); + const editingContact = ref({ + tel: '', + name: '', + }); const onSave = (contactInfo) => Toast('Save'); const onDelete = (contactInfo) => Toast('Delete'); return { diff --git a/packages/vant/src/contact-edit/README.zh-CN.md b/packages/vant/src/contact-edit/README.zh-CN.md index 6b19dcf7b..4409314aa 100644 --- a/packages/vant/src/contact-edit/README.zh-CN.md +++ b/packages/vant/src/contact-edit/README.zh-CN.md @@ -37,7 +37,10 @@ import { Toast } from 'vant'; export default { setup() { - const editingContact = ref({}); + const editingContact = ref({ + tel: '', + name: '', + }); const onSave = (contactInfo) => Toast('保存'); const onDelete = (contactInfo) => Toast('删除'); return { diff --git a/packages/vant/src/contact-edit/demo/index.vue b/packages/vant/src/contact-edit/demo/index.vue index 7e36f7ee8..23405172c 100644 --- a/packages/vant/src/contact-edit/demo/index.vue +++ b/packages/vant/src/contact-edit/demo/index.vue @@ -1,6 +1,6 @@ diff --git a/packages/vant/src/stepper/demo/index.vue b/packages/vant/src/stepper/demo/index.vue index 33db318de..b28273b29 100644 --- a/packages/vant/src/stepper/demo/index.vue +++ b/packages/vant/src/stepper/demo/index.vue @@ -42,7 +42,7 @@ const disabledInput = ref(1); const beforeChange = () => { Toast.loading({ forbidClick: true }); - return new Promise((resolve) => { + return new Promise((resolve) => { setTimeout(() => { Toast.clear(); resolve(true); diff --git a/packages/vant/src/sticky/demo/index.vue b/packages/vant/src/sticky/demo/index.vue index 4b77033ac..2e8e3a4d0 100644 --- a/packages/vant/src/sticky/demo/index.vue +++ b/packages/vant/src/sticky/demo/index.vue @@ -17,7 +17,7 @@ const t = useTranslate({ }, }); -const container = ref(null); +const container = ref();