@progress/kendo-react-upload
Version:
React Upload component helps users transfer files from their file systems to dedicated server handlers. KendoReact Upload package
9 lines (8 loc) • 3.28 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
*-------------------------------------------------------------------------------------------
*/
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react"),g=require("@progress/kendo-react-common"),d=require("@progress/kendo-react-buttons"),u=require("@progress/kendo-svg-icons"),s=require("./interfaces/UploadFileStatus.js"),p=require("@progress/kendo-react-intl"),n=require("./messages/index.js");function b(a){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const e in a)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(a,e);Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:()=>a[e]})}}return t.default=a,Object.freeze(t)}const l=b(m);class h extends l.Component{constructor(t){super(t),this.buttonClassNames=e=>{const{actionFocused:o,retryFocused:i}=this.state;return g.classNames("k-icon-button k-upload-action",this.props.disabled?"k-disabled":"",o&&e==="action"||i&&e==="retry"?"k-focus":"")},this.onRetryFocus=()=>{this.setState({retryFocused:!0})},this.onRetryBlur=()=>{this.setState({retryFocused:!1})},this.onActionFocus=()=>{this.setState({actionFocused:!0})},this.onActionBlur=()=>{this.setState({actionFocused:!1})},this.onActionClick=()=>{const{status:e,uid:o,disabled:i,onCancel:c,onRemove:r}=this.props;i||e===s.UploadFileStatus.Removing||(e===s.UploadFileStatus.Uploading?c.call(void 0,o):r.call(void 0,o))},this.onRetryClick=()=>{const{uid:e,disabled:o,onRetry:i}=this.props;o||i.call(void 0,e)},this.state={retryFocused:!1,actionFocused:!1}}actionButtonTitle(t,e){return t===s.UploadFileStatus.Uploading?e.toLanguageString(n.cancel,n.messages[n.cancel]):e.toLanguageString(n.remove,n.messages[n.remove])}retryButtonTitle(t){return t.toLanguageString(n.retry,n.messages[n.retry])}render(){const{status:t,progress:e}=this.props,o=t===s.UploadFileStatus.UploadFailed,i=t===s.UploadFileStatus.Uploading,c=(t===s.UploadFileStatus.Uploaded||t===s.UploadFileStatus.Initial)&&!this.props.async.removeUrl,r=p.provideLocalizationService(this);return l.createElement("span",{className:"k-upload-actions"},i?l.createElement("span",{className:"k-upload-pct"},e,"%"):void 0,o?l.createElement(d.Button,{type:"button",themeColor:"base",fillMode:"flat",tabIndex:-1,className:this.buttonClassNames("retry"),onFocus:this.onRetryFocus,onBlur:this.onRetryBlur,onClick:this.onRetryClick,"aria-label":this.retryButtonTitle(r),title:this.retryButtonTitle(r),icon:"arrow-rotate-cw-small",svgIcon:u.arrowRotateCwSmallIcon}):void 0,c?void 0:l.createElement(d.Button,{type:"button",themeColor:"base",fillMode:"flat",tabIndex:-1,className:this.buttonClassNames("action"),onFocus:this.onActionFocus,onBlur:this.onActionBlur,onClick:this.onActionClick,"aria-label":this.actionButtonTitle(t,r),"aria-hidden":!0,title:this.actionButtonTitle(t,r),icon:t===s.UploadFileStatus.Uploading?"cancel":"x",svgIcon:t===s.UploadFileStatus.Uploading?u.cancelIcon:u.xIcon}))}}p.registerForLocalization(h);exports.UploadListActionButton=h;