@progress/kendo-vue-upload
Version:
124 lines (123 loc) • 3.77 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import { defineComponent as M, inject as F, createVNode as s } from "vue";
import { classNames as U, Icon as V } from "@progress/kendo-vue-common";
import r from "./utils/utils.mjs";
import { provideLocalizationService as p } from "@progress/kendo-vue-intl";
import { messages as o, total as d, files as g, statusUploadFailed as u, statusUploaded as f } from "./messages/main.mjs";
import { UploadListActionButton as b } from "./UploadListActionButton.mjs";
import { ProgressBar as R } from "@progress/kendo-vue-progressbars";
import { copyIcon as x } from "@progress/kendo-svg-icons";
const K = /* @__PURE__ */ M({
name: "KendoVueUploadListMultiItem",
props: {
files: Array,
disabled: Boolean,
async: Object
},
emits: {
cancel: null,
retry: null,
remove: null
},
inject: {
kendoLocalizationService: {
default: null
}
},
methods: {
onRetry(e) {
this.$emit("retry", e);
},
onRemove(e) {
this.$emit("remove", e);
},
onCancel(e) {
this.$emit("cancel", e);
},
getFileValidationMessage(e) {
const t = p(this);
let i = "";
if (e.validationErrors && e.validationErrors.length > 0) {
const n = `upload.${e.validationErrors[0]}`;
i = t.toLanguageString(n, o[n]);
}
return i;
},
progress() {
const {
files: e
} = this.$props;
let t = 0;
return e.forEach((i) => {
t += i.progress || 0;
}), t / e.length;
}
},
setup() {
return {
kendoLocalizationService: F("kendoLocalizationService", {})
};
},
render() {
const {
files: e,
disabled: t,
async: i
} = this.$props, n = U("k-file-multiple"), [, h, m, v] = r.getFileStatus(e), l = p(this), k = l.toLanguageString(d, o[d]), y = l.toLanguageString(g, o[g]), $ = l.toLanguageString(u, o[u]), S = l.toLanguageString(f, o[f]), c = this.progress(), L = !v && !h && !m, z = function() {
return e.map(function(a) {
return s("span", {
key: a.name,
class: "k-file-info"
}, [s("span", {
class: "k-file-name",
title: a.name
}, [a.name]), r.fileHasValidationErrors(a) ? s("span", {
class: "k-file-validation-message"
}, [this.getFileValidationMessage(a)]) : s("span", {
key: `${a.name}-size`,
class: "k-file-size"
}, [r.getTotalFilesSizeMessage([a])])]);
}, this);
};
return s("div", {
class: n
}, [L && s(R, {
value: c || 0,
labelVisible: !1
}, null), s("span", {
class: "k-file-icon-wrapper"
}, [s(V, {
name: "copy",
icon: x,
size: "xxxlarge",
class: "k-file-icon"
}, null)]), s("span", {
class: "k-multiple-files-wrapper"
}, [z.call(this), m ? s("span", {
class: "k-file-validation-message"
}, [`${e.length} ${$}`]) : c !== 100 ? s("span", {
class: "k-file-summary"
}, [`${k}: ${e.length} ${y}, ${r.getTotalFilesSizeMessage(e)}`]) : s("span", {
class: "k-file-summary k-text-success"
}, [`${e.length} ${S}`])]), s(b, {
uid: e[0].uid,
status: e[0].status,
progress: c,
files: e,
disabled: t,
async: i,
onCancel: this.onCancel,
onRemove: this.onRemove,
onRetry: this.onRetry
}, null)]);
}
});
export {
K as UploadListMultiItem
};