upload-dragger2.mjs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { defineComponent, inject, ref, openBlock, createElementBlock, normalizeClass, unref, withModifiers, renderSlot } from 'vue';
  2. import { throwError } from '../../../utils/error.mjs';
  3. import { uploadContextKey } from './constants.mjs';
  4. import { uploadDraggerProps, uploadDraggerEmits } from './upload-dragger.mjs';
  5. import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
  6. import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
  7. import { useFormDisabled } from '../../form/src/hooks/use-form-common-props.mjs';
  8. const COMPONENT_NAME = "ElUploadDrag";
  9. const __default__ = defineComponent({
  10. name: COMPONENT_NAME
  11. });
  12. const _sfc_main = /* @__PURE__ */ defineComponent({
  13. ...__default__,
  14. props: uploadDraggerProps,
  15. emits: uploadDraggerEmits,
  16. setup(__props, { emit }) {
  17. const uploaderContext = inject(uploadContextKey);
  18. if (!uploaderContext) {
  19. throwError(COMPONENT_NAME, "usage: <el-upload><el-upload-dragger /></el-upload>");
  20. }
  21. const ns = useNamespace("upload");
  22. const dragover = ref(false);
  23. const disabled = useFormDisabled();
  24. const onDrop = (e) => {
  25. if (disabled.value)
  26. return;
  27. dragover.value = false;
  28. e.stopPropagation();
  29. const files = Array.from(e.dataTransfer.files);
  30. const items = e.dataTransfer.items || [];
  31. files.forEach((file, index) => {
  32. var _a;
  33. const item = items[index];
  34. const entry = (_a = item == null ? void 0 : item.webkitGetAsEntry) == null ? void 0 : _a.call(item);
  35. if (entry) {
  36. file.isDirectory = entry.isDirectory;
  37. }
  38. });
  39. emit("file", files);
  40. };
  41. const onDragover = () => {
  42. if (!disabled.value)
  43. dragover.value = true;
  44. };
  45. return (_ctx, _cache) => {
  46. return openBlock(), createElementBlock("div", {
  47. class: normalizeClass([unref(ns).b("dragger"), unref(ns).is("dragover", dragover.value)]),
  48. onDrop: withModifiers(onDrop, ["prevent"]),
  49. onDragover: withModifiers(onDragover, ["prevent"]),
  50. onDragleave: withModifiers(($event) => dragover.value = false, ["prevent"])
  51. }, [
  52. renderSlot(_ctx.$slots, "default")
  53. ], 42, ["onDrop", "onDragover", "onDragleave"]);
  54. };
  55. }
  56. });
  57. var UploadDragger = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "upload-dragger.vue"]]);
  58. export { UploadDragger as default };
  59. //# sourceMappingURL=upload-dragger2.mjs.map