element-plus
Version:
A Component Library for Vue 3
79 lines (74 loc) • 2.71 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var error = require('../../../utils/error.js');
var constants = require('./constants.js');
var uploadDragger = require('./upload-dragger.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var index = require('../../../hooks/use-namespace/index.js');
var useFormCommonProps = require('../../form/src/hooks/use-form-common-props.js');
const COMPONENT_NAME = "ElUploadDrag";
const _sfc_main = vue.defineComponent({
...{
name: COMPONENT_NAME
},
__name: "upload-dragger",
props: uploadDragger.uploadDraggerProps,
emits: uploadDragger.uploadDraggerEmits,
setup(__props, { emit: __emit }) {
const emit = __emit;
const uploaderContext = vue.inject(constants.uploadContextKey);
if (!uploaderContext) {
error.throwError(
COMPONENT_NAME,
"usage: <el-upload><el-upload-dragger /></el-upload>"
);
}
const ns = index.useNamespace("upload");
const dragover = vue.ref(false);
const disabled = useFormCommonProps.useFormDisabled();
const onDrop = (e) => {
if (disabled.value)
return;
dragover.value = false;
e.stopPropagation();
const files = Array.from(e.dataTransfer.files);
const items = e.dataTransfer.items || [];
files.forEach((file, index) => {
var _a;
const item = items[index];
const entry = (_a = item == null ? void 0 : item.webkitGetAsEntry) == null ? void 0 : _a.call(item);
if (entry) {
file.isDirectory = entry.isDirectory;
}
});
emit("file", files);
};
const onDragover = () => {
if (!disabled.value)
dragover.value = true;
};
const onDragleave = (e) => {
if (!e.currentTarget.contains(e.relatedTarget))
dragover.value = false;
};
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(
"div",
{
class: vue.normalizeClass([vue.unref(ns).b("dragger"), vue.unref(ns).is("dragover", dragover.value)]),
onDrop: vue.withModifiers(onDrop, ["prevent"]),
onDragover: vue.withModifiers(onDragover, ["prevent"]),
onDragleave: vue.withModifiers(onDragleave, ["prevent"])
},
[
vue.renderSlot(_ctx.$slots, "default")
],
34
);
};
}
});
var UploadDragger = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/upload/src/upload-dragger.vue"]]);
exports["default"] = UploadDragger;
//# sourceMappingURL=upload-dragger2.js.map