UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.92 kB
{"version":3,"file":"upload-dragger.mjs","sources":["../../../../../../packages/components/upload/src/upload-dragger.vue"],"sourcesContent":["<template>\n <div\n :class=\"[ns.b('dragger'), ns.is('dragover', dragover)]\"\n @drop.prevent=\"onDrop\"\n @dragover.prevent=\"onDragover\"\n @dragleave.prevent=\"dragover = false\"\n >\n <slot></slot>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, ref, inject } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { ElUpload } from './upload.type'\n\nexport default defineComponent({\n name: 'ElUploadDrag',\n props: {\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n emits: ['file'],\n setup(props, { emit }) {\n const uploader = inject('uploader', {} as ElUpload)\n const ns = useNamespace('upload')\n const dragover = ref(false)\n\n function onDrop(e: DragEvent) {\n if (props.disabled || !uploader) return\n const accept = uploader.props?.accept || uploader.accept\n dragover.value = false\n if (!accept) {\n emit('file', e.dataTransfer.files)\n return\n }\n emit(\n 'file',\n Array.from(e.dataTransfer.files).filter((file) => {\n const { type, name } = file\n const extension =\n name.indexOf('.') > -1 ? `.${name.split('.').pop()}` : ''\n const baseType = type.replace(/\\/.*$/, '')\n return accept\n .split(',')\n .map((type) => type.trim())\n .filter((type) => type)\n .some((acceptedType) => {\n if (acceptedType.startsWith('.')) {\n return extension === acceptedType\n }\n if (/\\/\\*$/.test(acceptedType)) {\n return baseType === acceptedType.replace(/\\/\\*$/, '')\n }\n if (/^[^/]+\\/[^/]+$/.test(acceptedType)) {\n return type === acceptedType\n }\n return false\n })\n })\n )\n }\n\n function onDragover() {\n if (!props.disabled) dragover.value = true\n }\n\n return {\n ns,\n dragover,\n onDrop,\n onDragover,\n }\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;AAgBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,EAGb,OAAO,CAAC;AAAA,EACR,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,WAAW,OAAO,YAAY;AACpC,UAAM,KAAK,aAAa;AACxB,UAAM,WAAW,IAAI;AAErB,oBAAgB,GAAc;AAC5B,UAAI;AAA6B;AACjC;AACA,uBAAiB;AACjB;AACE;AACA;AAAA;AAEF;AAGI,+BAAuB;AACvB,cAAM,YACJ,KAAK;AACP,cAAM,gBAAgB,QAAQ,SAAS;AACvC,sBACG,eACI,CAAC;AAGJ,2BAAiB,WAAW;AAC1B;AAAqB;AAEvB;AACE;AAAkD;AAEpD;AACE;AAAgB;AAElB;AAAO;AAAA;AAAA;AAMjB;AACE;AAAqB,iBAAS,QAAQ;AAAA;AAGxC;AAAO;AACL,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;SAvEI,kCAAO;AAAa;AACX,IACd,kEAAkB;AAAA,IAClB,iEAAmB;AAAQ;;AAE5B;;;;;;;;"}