element-plus
Version:
A Component Library for Vue 3
147 lines (142 loc) • 5.5 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../tokens/index.js');
require('../../../hooks/index.js');
var uploadList = require('./upload-list2.js');
var uploadContent = require('./upload-content2.js');
var useHandlers = require('./use-handlers.js');
var upload = require('./upload.js');
var index = require('../../../hooks/use-common-props/index.js');
var upload$1 = require('../../../tokens/upload.js');
const __default__ = {
name: "ElUpload"
};
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
...__default__,
props: upload.uploadProps,
setup(__props, { expose }) {
const props = __props;
const disabled = index.useDisabled();
const uploadRef = vue.shallowRef();
const {
abort,
submit,
clearFiles,
uploadFiles,
handleStart,
handleError,
handleRemove,
handleSuccess,
handleProgress
} = useHandlers.useHandlers(props, uploadRef);
const isPictureCard = vue.computed(() => props.listType === "picture-card");
vue.onBeforeUnmount(() => {
uploadFiles.value.forEach(({ url }) => {
if (url == null ? void 0 : url.startsWith("blob:"))
URL.revokeObjectURL(url);
});
});
vue.provide(upload$1.uploadContextKey, {
accept: vue.toRef(props, "accept")
});
expose({
abort,
submit,
clearFiles,
handleStart,
handleRemove
});
const slots = vue.useSlots();
const uploadContentProps = vue.computed(() => ({
type: props.type,
drag: props.drag,
action: props.action,
multiple: props.multiple,
withCredentials: props.withCredentials,
headers: props.headers,
method: props.method,
name: props.name,
data: props.data,
accept: props.accept,
autoUpload: props.autoUpload,
listType: props.listType,
disabled: props.disabled,
limit: props.limit,
fileList: props.fileList,
showFileList: props.showFileList,
httpRequest: props.httpRequest,
beforeUpload: props.beforeUpload,
onExceed: props.onExceed,
onStart: handleStart,
onProgress: handleProgress,
onSuccess: handleSuccess,
onError: handleError,
onRemove: handleRemove
}));
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", null, [
vue.unref(isPictureCard) && _ctx.showFileList ? (vue.openBlock(), vue.createBlock(uploadList["default"], {
key: 0,
disabled: vue.unref(disabled),
"list-type": _ctx.listType,
files: vue.unref(uploadFiles),
"handle-preview": _ctx.onPreview,
onRemove: vue.unref(handleRemove)
}, vue.createSlots({
append: vue.withCtx(() => [
_ctx.listType === "picture-card" ? (vue.openBlock(), vue.createBlock(uploadContent["default"], vue.mergeProps({
key: 0,
ref_key: "uploadRef",
ref: uploadRef
}, vue.unref(uploadContentProps)), {
default: vue.withCtx(() => [
vue.unref(slots).trigger ? vue.renderSlot(_ctx.$slots, "trigger", { key: 0 }) : vue.createCommentVNode("v-if", true),
!vue.unref(slots).trigger && vue.unref(slots).default ? vue.renderSlot(_ctx.$slots, "default", { key: 1 }) : vue.createCommentVNode("v-if", true)
]),
_: 3
}, 16)) : vue.createCommentVNode("v-if", true)
]),
_: 2
}, [
_ctx.$slots.file ? {
name: "default",
fn: vue.withCtx(({ file }) => [
vue.renderSlot(_ctx.$slots, "file", { file })
])
} : void 0
]), 1032, ["disabled", "list-type", "files", "handle-preview", "onRemove"])) : vue.createCommentVNode("v-if", true),
_ctx.listType !== "picture-card" ? (vue.openBlock(), vue.createBlock(uploadContent["default"], vue.mergeProps({
key: 1,
ref_key: "uploadRef",
ref: uploadRef
}, vue.unref(uploadContentProps)), {
default: vue.withCtx(() => [
vue.unref(slots).trigger ? vue.renderSlot(_ctx.$slots, "trigger", { key: 0 }) : vue.createCommentVNode("v-if", true),
!vue.unref(slots).trigger && vue.unref(slots).default ? vue.renderSlot(_ctx.$slots, "default", { key: 1 }) : vue.createCommentVNode("v-if", true)
]),
_: 3
}, 16)) : vue.createCommentVNode("v-if", true),
_ctx.$slots.trigger ? vue.renderSlot(_ctx.$slots, "default", { key: 2 }) : vue.createCommentVNode("v-if", true),
vue.renderSlot(_ctx.$slots, "tip"),
!vue.unref(isPictureCard) && _ctx.showFileList ? (vue.openBlock(), vue.createBlock(uploadList["default"], {
key: 3,
disabled: vue.unref(disabled),
"list-type": _ctx.listType,
files: vue.unref(uploadFiles),
"handle-preview": _ctx.onPreview,
onRemove: vue.unref(handleRemove)
}, vue.createSlots({ _: 2 }, [
_ctx.$slots.file ? {
name: "default",
fn: vue.withCtx(({ file }) => [
vue.renderSlot(_ctx.$slots, "file", { file })
])
} : void 0
]), 1032, ["disabled", "list-type", "files", "handle-preview", "onRemove"])) : vue.createCommentVNode("v-if", true)
]);
};
}
});
exports["default"] = _sfc_main;
//# sourceMappingURL=upload2.js.map