UNPKG

@progress/kendo-vue-upload

Version:
124 lines (123 loc) 3.77 kB
/** * @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 };