element-plus
Version:
A Component Library for Vue 3
1 lines • 7.93 kB
Source Map (JSON)
{"version":3,"file":"upload-content2.mjs","sources":["../../../../../../packages/components/upload/src/upload-content.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b(), ns.m(listType), ns.is('drag', drag)]\"\n tabindex=\"0\"\n @click=\"handleClick\"\n @keydown.self.enter.space=\"handleKeydown\"\n >\n <template v-if=\"drag\">\n <upload-dragger :disabled=\"disabled\" @file=\"uploadFiles\">\n <slot />\n </upload-dragger>\n </template>\n <template v-else>\n <slot />\n </template>\n <input\n ref=\"inputRef\"\n :class=\"ns.e('input')\"\n :name=\"name\"\n :multiple=\"multiple\"\n :accept=\"accept\"\n type=\"file\"\n @change=\"handleChange\"\n @click.stop\n />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { shallowRef } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { entriesOf } from '@element-plus/utils'\nimport UploadDragger from './upload-dragger.vue'\nimport { uploadContentProps } from './upload-content'\nimport { genFileId } from './upload'\n\nimport type {\n UploadFile,\n UploadHooks,\n UploadRawFile,\n UploadRequestOptions,\n} from './upload'\n\ndefineOptions({\n name: 'ElUploadContent',\n inheritAttrs: false,\n})\n\nconst props = defineProps(uploadContentProps)\nconst ns = useNamespace('upload')\n\nconst requests = shallowRef<Record<string, XMLHttpRequest | Promise<unknown>>>(\n {}\n)\nconst inputRef = shallowRef<HTMLInputElement>()\n\nconst uploadFiles = (files: File[]) => {\n if (files.length === 0) return\n\n const { autoUpload, limit, fileList, multiple, onStart, onExceed } = props\n\n if (limit && fileList.length + files.length > limit) {\n onExceed(files, fileList)\n return\n }\n\n if (!multiple) {\n files = files.slice(0, 1)\n }\n\n for (const file of files) {\n const rawFile = file as UploadRawFile\n rawFile.uid = genFileId()\n onStart(rawFile)\n if (autoUpload) upload(rawFile)\n }\n}\n\nconst upload = async (rawFile: UploadRawFile) => {\n inputRef.value!.value = ''\n\n if (!props.beforeUpload) {\n return doUpload(rawFile)\n }\n\n let hookResult: Exclude<ReturnType<UploadHooks['beforeUpload']>, Promise<any>>\n try {\n hookResult = await props.beforeUpload(rawFile)\n } catch {\n hookResult = false\n }\n\n if (hookResult === false) {\n props.onRemove(rawFile)\n return\n }\n\n let file: File = rawFile\n if (hookResult instanceof Blob) {\n if (hookResult instanceof File) {\n file = hookResult\n } else {\n file = new File([hookResult], rawFile.name, {\n type: rawFile.type,\n })\n }\n }\n\n doUpload(\n Object.assign(file, {\n uid: rawFile.uid,\n })\n )\n}\n\nconst doUpload = (rawFile: UploadRawFile) => {\n const {\n headers,\n data,\n method,\n withCredentials,\n name: filename,\n action,\n onProgress,\n onSuccess,\n onError,\n httpRequest,\n } = props\n\n const { uid } = rawFile\n const options: UploadRequestOptions = {\n headers: headers || {},\n withCredentials,\n file: rawFile,\n data,\n method,\n filename,\n action,\n onProgress: (evt) => {\n onProgress(evt, rawFile)\n },\n onSuccess: (res) => {\n onSuccess(res, rawFile)\n delete requests.value[uid]\n },\n onError: (err) => {\n onError(err, rawFile)\n delete requests.value[uid]\n },\n }\n const request = httpRequest(options)\n requests.value[uid] = request\n if (request instanceof Promise) {\n request.then(options.onSuccess, options.onError)\n }\n}\n\nconst handleChange = (e: Event) => {\n const files = (e.target as HTMLInputElement).files\n if (!files) return\n uploadFiles(Array.from(files))\n}\n\nconst handleClick = () => {\n if (!props.disabled) {\n inputRef.value!.value = ''\n inputRef.value!.click()\n }\n}\n\nconst handleKeydown = () => {\n handleClick()\n}\n\nconst abort = (file?: UploadFile) => {\n const _reqs = entriesOf(requests.value).filter(\n file ? ([uid]) => String(file.uid) === uid : () => true\n )\n _reqs.forEach(([uid, req]) => {\n if (req instanceof XMLHttpRequest) req.abort()\n delete requests.value[uid]\n })\n}\n\ndefineExpose({\n abort,\n upload,\n})\n</script>\n"],"names":[],"mappings":"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"}