@progress/kendo-react-upload
Version:
React Upload component helps users transfer files from their file systems to dedicated server handlers. KendoReact Upload package
61 lines (60 loc) • 3.09 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 * as a from "react";
import { classNames as d, IconWrap as u, getFileExtensionIcon as E } from "@progress/kendo-react-common";
import { ProgressBar as f } from "@progress/kendo-react-progressbars";
import { provideLocalizationService as l, registerForLocalization as v } from "@progress/kendo-react-intl";
import { statusUploadFailed as c, messages as n, statusUploaded as m } from "./messages/index.mjs";
import p from "./utils/utils.mjs";
import { UploadListActionButton as k } from "./UploadListActionButton.mjs";
class F extends a.Component {
/**
* @hidden
*/
getFileExtension(e) {
return e.extension ? e.extension.substring(1) : "";
}
/**
* @hidden
*/
getFileValidationMessage(e, t) {
const s = l(this);
let r = "";
if (t)
r = s.toLanguageString(c, n[c]);
else if (e.validationErrors && e.validationErrors.length > 0) {
const i = `upload.${e.validationErrors[0]}`;
r = s.toLanguageString(i, n[i]);
}
return r;
}
/**
* @hidden
*/
renderValidationError(e, t) {
return /* @__PURE__ */ a.createElement("span", { className: "k-file-info", key: "2" }, /* @__PURE__ */ a.createElement("span", { className: "k-file-name", title: e.name }, e.name), /* @__PURE__ */ a.createElement("span", { className: "k-file-validation-message", "aria-live": "polite" }, this.getFileValidationMessage(e, t)));
}
/**
* @hidden
*/
renderFileDetails(e) {
const s = l(this).toLanguageString(m, n[m]);
return /* @__PURE__ */ a.createElement("span", { className: "k-file-info", key: "2" }, /* @__PURE__ */ a.createElement("span", { className: "k-file-name", title: e.name }, e.name), e.progress !== 100 ? /* @__PURE__ */ a.createElement("span", { className: "k-file-size" }, p.getTotalFilesSizeMessage([e])) : /* @__PURE__ */ a.createElement("span", { className: "k-file-validation-message", "aria-live": "polite" }, s));
}
/**
* @hidden
*/
render() {
const { files: e, ...t } = this.props, s = e[0], [, r, i, o] = p.getFileStatus([s]), g = !o && !r && !i;
return /* @__PURE__ */ a.createElement("div", { className: d("k-file-single") }, g && /* @__PURE__ */ a.createElement(f, { value: s.progress || 0, tabIndex: -1 }), /* @__PURE__ */ a.createElement("span", { className: "k-file-icon-wrapper", key: "1" }, /* @__PURE__ */ a.createElement(u, { className: "k-file-icon", ...E(s.extension), size: "xxlarge" }), /* @__PURE__ */ a.createElement("span", { className: "k-file-state" })), o || i ? this.renderValidationError(s, i) : this.renderFileDetails(s), /* @__PURE__ */ a.createElement(k, { uid: s.uid, status: s.status, progress: s.progress, ...t }));
}
}
v(F);
export {
F as UploadListSingleItem
};