UNPKG

@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
/** * @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 };