UNPKG

@progress/kendo-vue-upload

Version:
213 lines (212 loc) 5.75 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 S, inject as I, createVNode as a } from "vue"; import { classNames as z, Icon as y } from "@progress/kendo-vue-common"; import { provideLocalizationService as p } from "@progress/kendo-vue-intl"; import { ProgressBar as b } from "@progress/kendo-vue-progressbars"; import { statusUploadFailed as m, messages as c, statusUploaded as d } from "./messages/main.mjs"; import g from "./utils/utils.mjs"; import { UploadListActionButton as L } from "./UploadListActionButton.mjs"; import { fileIcon as w, fileZipIcon as V, fileConfigIcon as j, fileProgrammingIcon as E, fileDataIcon as F, filePresentationIcon as U, filePdfIcon as C, fileTxtIcon as R, fileVideoIcon as M, fileAudioIcon as N, fileImageIcon as P } from "@progress/kendo-svg-icons"; const Z = /* @__PURE__ */ S({ name: "KendoVueUploadListSingleItem", 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); }, getFileExtension(e) { return e.extension ? e.extension.substring(1) : ""; }, getFileValidationMessage(e, o) { const t = p(this); let s = ""; if (o) s = t.toLanguageString(m, c[m]); else if (e.validationErrors && e.validationErrors.length > 0) { const n = `upload.${e.validationErrors[0]}`; s = t.toLanguageString(n, c[n]); } return s; }, getFileExtensionName(e) { switch (e.extension) { case ".png": case ".jpg": case ".jpeg": case ".tiff": case ".bmp": case ".gif": return "file-image"; case ".mp3": case ".mp4": case ".wav": return "file-audio"; case ".mkv": case ".webm": case ".flv": case ".gifv": case ".avi": case ".wmv": return "file-video"; case ".txt": return "file-txt"; case ".pdf": return "file-pdf"; case ".ppt": case ".pptx": return "file-presentation"; case ".csv": case ".xls": case ".xlsx": return "file-data"; case ".html": case ".css": case ".js": case ".ts": return "file-programming"; case ".exe": return "file-config"; case ".zip": case ".rar": return "file-zip"; default: return "file"; } }, getFileExtensionSVG(e) { switch (e.extension) { case ".png": case ".jpg": case ".jpeg": case ".tiff": case ".bmp": case ".gif": return P; case ".mp3": case ".mp4": case ".wav": return N; case ".mkv": case ".webm": case ".flv": case ".gifv": case ".avi": case ".wmv": return M; case ".txt": return R; case ".pdf": return C; case ".ppt": case ".pptx": return U; case ".csv": case ".xls": case ".xlsx": return F; case ".html": case ".css": case ".js": case ".ts": return E; case ".exe": return j; case ".zip": case ".rar": return V; default: return w; } } }, setup() { return { kendoLocalizationService: I("kendoLocalizationService", {}) }; }, render() { const { files: e, disabled: o, async: t } = this.$props, s = e[0], n = z("k-file-single"), [, u, l, r] = g.getFileStatus([s]), v = !r && !u && !l, x = function(i, f) { return a("span", { class: "k-file-info", key: "2" }, [a("span", { class: "k-file-name", title: i.name }, [i.name]), a("span", { class: "k-file-validation-message" }, [this.getFileValidationMessage(i, f)])]); }, h = function(i) { const k = p(this).toLanguageString(d, c[d]); return a("span", { class: "k-file-info", key: "2" }, [a("span", { class: "k-file-name", title: i.name }, [i.name]), i.progress !== 100 ? a("span", { class: "k-file-size" }, [g.getTotalFilesSizeMessage([i])]) : a("span", { class: "k-file-validation-message" }, [k])]); }; return a("div", { class: n }, [v && a(b, { value: s.progress || 0, labelVisible: !1 }, null), a("span", { class: "k-file-icon-wrapper", key: "1" }, [a(y, { name: this.getFileExtensionName(s), icon: this.getFileExtensionSVG(s), size: "xxxlarge", class: "k-file-icon" }, null), a("span", { class: "k-file-state" }, null)]), r || l ? x.call(this, s, l) : h.call(this, s), a(L, { uid: s.uid, status: s.status, progress: s.progress, files: e, disabled: o, async: t, onCancel: this.onCancel, onRemove: this.onRemove, onRetry: this.onRetry }, null)]); } }); export { Z as UploadListSingleItem };