vue-admin-core
Version:
A Component Library for Vue 3
123 lines (118 loc) • 3.44 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var vue$1 = require('@formily/vue');
var iconsVue = require('@element-plus/icons-vue');
var elementPlus = require('element-plus');
const UploadWrapper = vue.defineComponent({
name: "FUpload",
props: {
textContent: {
type: String,
default: ""
},
errorAdaptor: {
type: Function,
default(error) {
return (error == null ? void 0 : error.message) || "";
}
},
fileList: {
type: Array
}
},
emits: ["change"],
setup(curProps, { slots, attrs, emit }) {
return () => {
const fieldRef = vue$1.useField();
const setFeedBack = (error) => {
const message = curProps.errorAdaptor(error);
fieldRef.value.setFeedback({
type: "error",
code: "UploadError",
messages: message ? [message] : []
});
};
const props = {
...attrs,
onChange(file, fileList) {
var _a;
!((_a = attrs.onChange) == null ? void 0 : _a.call(attrs, file, fileList));
setFeedBack();
emit("change", fileList);
},
onRemove(file, fileList) {
var _a;
!((_a = attrs.onRemove) == null ? void 0 : _a.call(attrs, file, fileList));
setFeedBack();
emit("change", fileList);
},
onError(error, file, fileList) {
var _a;
!((_a = attrs.onError) == null ? void 0 : _a.call(attrs, error, file, fileList));
setTimeout(() => {
setFeedBack(error);
}, 0);
}
};
const children = {
...slots
};
if (!slots.default) {
children.default = () => {
const listType = attrs.listType;
const drag = attrs.drag;
if (drag) {
return vue.h(
vue$1.FragmentComponent,
{},
{
default: () => [
vue.h(
elementPlus.ElIcon,
{ style: { fontSize: "60px", margin: "40px 0 16px" } },
{ default: () => vue.h(iconsVue.UploadFilled, { color: "gray" }, {}) }
),
vue.h(
"div",
{ staticClass: "el-upload__text" },
{ default: () => [curProps.textContent] }
)
]
}
);
}
if (listType === "picture-card") {
return vue.h(
iconsVue.Plus,
{
style: {
width: "28px",
height: "28px",
marginTop: "60px",
color: "gray"
}
},
{}
);
}
return vue.h(
elementPlus.ElButton,
{},
{
default: () => [
vue.h(iconsVue.Upload, { style: { width: "12px", height: "12px" } }),
curProps.textContent
]
}
);
};
}
return vue.h(elementPlus.ElUpload, { ...props, ...attrs }, children);
};
}
});
const Upload = vue$1.connect(UploadWrapper, vue$1.mapProps({ readOnly: "readonly", value: "fileList" }));
exports.Upload = Upload;
exports.default = Upload;
//# sourceMappingURL=index.js.map