From 3c031dcee9148eb8cc02154fd5c16a29e04b35d5 Mon Sep 17 00:00:00 2001 From: keven1024 Date: Sun, 5 Apr 2026 11:09:43 +0800 Subject: [PATCH] feat: enhance FileIcon and FileUpload components to support size prop and multi-file uploads, improving user experience and flexibility --- front/components/Field/FileUploadField.vue | 4 +- front/components/FileIcon.vue | 32 +++++--- front/components/FileUpload.vue | 82 ++++++++++----------- front/components/Result/FileShareResult.vue | 81 +++++++++++--------- 4 files changed, 113 insertions(+), 86 deletions(-) diff --git a/front/components/Field/FileUploadField.vue b/front/components/Field/FileUploadField.vue index 9b5e963..7ed1695 100644 --- a/front/components/Field/FileUploadField.vue +++ b/front/components/Field/FileUploadField.vue @@ -28,9 +28,9 @@ useEventListener(document, 'paste', (evt: ClipboardEvent) => { diff --git a/front/components/Result/FileShareResult.vue b/front/components/Result/FileShareResult.vue index cc65f15..1dba911 100644 --- a/front/components/Result/FileShareResult.vue +++ b/front/components/Result/FileShareResult.vue @@ -2,7 +2,7 @@ import { Button } from '@/components/ui/button' import FilePreviewView from '@/components/FilePreviewView.vue' import { Input } from '@/components/ui/input' -import { useClipboard } from '@vueuse/core' +import { useClipboard, useShare } from '@vueuse/core' import { toast } from 'vue-sonner' import { useQuery } from '@tanstack/vue-query' import useMyAppShare from '@/composables/useMyAppShare' @@ -44,16 +44,30 @@ watchEffect(() => { } }) -watchEffect(() => { - console.log('data', data?.value) -}) - const appConfig = useMyAppConfig() const getShareUrl = (id: string) => { return `${appConfig?.value?.site_url}/s/${id}` } const { copy } = useClipboard() +const { share, isSupported: isShareSupported } = useShare() + +const handleShare = async (id: string, fileName?: string) => { + await share({ + title: fileName || 'File Share', + url: getShareUrl(id), + }) +} + +const handleShowQrCode = (id: string) => { + showDrawer({ + render: ({ ...rest }) => + h(QrCoreDrawer, { + ...rest, + data: getShareUrl(id), + }), + }) +}