UNPKG

@connect-soft/react-file-upload

Version:

Component for React - supported drag & drop, upload big files

68 lines (65 loc) 5.94 kB
"use strict";var so=Object.create;var v=Object.defineProperty;var po=Object.getOwnPropertyDescriptor;var lo=Object.getOwnPropertyNames;var uo=Object.getPrototypeOf,co=Object.prototype.hasOwnProperty;var go=(e,n)=>{for(var s in n)v(e,s,{get:n[s],enumerable:!0})},H=(e,n,s,d)=>{if(n&&typeof n=="object"||typeof n=="function")for(let c of lo(n))!co.call(e,c)&&c!==s&&v(e,c,{get:()=>n[c],enumerable:!(d=po(n,c))||d.enumerable});return e};var u=(e,n,s)=>(s=e!=null?so(uo(e)):{},H(n||!e||!e.__esModule?v(s,"default",{value:e,enumerable:!0}):s,e)),bo=e=>H(v({},"__esModule",{value:!0}),e);var Co={};go(Co,{FileUpload:()=>U,FileUploadProgress:()=>k,default:()=>ko});module.exports=bo(Co);var J=u(require("@connect-soft/upload-file-lib")),K=u(require("@mui/icons-material/CloudUpload")),Q=u(require("@mui/material/Box")),D=u(require("@mui/material/Grid")),F=u(require("@mui/material/Typography")),a=require("react"),X=require("react-dropzone"),m=u(require("styled-components")),Y=require("uuid");var P=u(require("@mui/material/Box")),V=u(require("@mui/material/LinearProgress")),q=u(require("@mui/material/Typography")),b=require("react/jsx-runtime"),mo=({value:e,...n})=>{let s=Math.min(100,Math.abs(Math.max(0,e)));return(0,b.jsxs)(P.default,{sx:{display:"flex",alignItems:"center"},children:[(0,b.jsx)(P.default,{sx:{width:"100%",mr:1},children:(0,b.jsx)(V.default,{variant:"determinate",...n,value:s})}),(0,b.jsx)(P.default,{sx:{minWidth:35},children:(0,b.jsx)(q.default,{variant:"body2",color:"text.secondary",children:`${Math.round(s)}%`})})]})},k=mo;var t=require("react/jsx-runtime"),xo=m.default.input` width: 350px; max-width: 100%; color: #444; padding: 5px; background: #fff; border-radius: 10px; border: 1px solid #555; &::file-selector-button { margin-right: 20px; border: none; background-color: ${e=>e.disabled?"gray":"#04aa6d"}; pointer-events: ${e=>e.disabled?"none":null}; padding: 10px 20px; border-radius: 10px; color: #fff; cursor: pointer; transition: background 0.2s ease-in-out; } `,fo=m.default.button` background: none; color: black; border: none; border-radius: 25px; font-size: 16px; height: 50px; width: 50px; cursor: pointer; transition: 0.3s; &:hover { background-color: DodgerBlue; color: white; } `,ho=m.default.button` background-color: ${e=>e.disabled?"gray":"#04aa6d"}; pointer-events: ${e=>e.disabled?"none":null}; border-radius: 10px; border: none; color: white; padding: 16px 32px; text-decoration: none; margin: 4px 2px; cursor: pointer; `,yo=m.default.div` flex: 1; display: flex; flex-direction: column; align-items: center; text-align: center; `,Io=m.default.div` width: 100%; padding: 20px; border-width: 2px; border-radius: 2px; border-color: #eeeeee; border-style: dashed; background-color: #fafafa; color: #bdbdbd; outline: none; transition: border 0.24s ease-in-out; `,vo=m.default.aside` width: 100%; text-align: left; `,Po=({additionalData:e={},apiPath:n,config:s,disabled:d=!1,innerRef:c,labelDialogButton:E=(0,t.jsx)(K.default,{fontSize:"large"}),labelSubmit:L="Upload",maxUploadedSize:f=2e5,requestHeaders:N,slots:h={},titleDropZone:_=(0,t.jsx)(F.default,{variant:"h3",children:"Drop Zone"}),titleFiles:j=(0,t.jsx)(F.default,{variant:"h4",children:"Files"}),withButton:oo=!0,withDropZone:eo=!1,onFinished:C=()=>{},onStart:R=()=>{}})=>{var G,O;let{getRootProps:to,getInputProps:ro,acceptedFiles:S,open:no}=(0,X.useDropzone)({...s,noClick:!0,disabled:d}),[T,Z]=(0,a.useState)(!1),[y,$]=(0,a.useState)(!1),{input:A=(0,t.jsx)(xo,{}),submit:M=(0,t.jsx)(ho,{}),dialogButton:W=(0,t.jsx)(fo,{})}=h,ao=(O=(G=h==null?void 0:h.input)==null?void 0:G.props)!=null?O:{},[o,I]=(0,a.useState)(null),{style:io,...w}=ro();(0,a.useEffect)(()=>{let r=S.map(i=>{var p;return(p=o==null?void 0:o.find(l=>l.content===i))!=null?p:{content:i,uid:(0,Y.v4)(),percentage:0,status:"no"}}).filter(i=>!(o!=null&&o.some(p=>p.uid===i.uid)));r.length&&I([...o!=null?o:[],...r])},[S,o]),(0,a.useEffect)(()=>{let r=!(o!=null&&o.some(i=>i.status==="no"));r!==y&&T&&($(r),Z(!1))},[y,o,T]),(0,a.useEffect)(()=>{y&&C&&C(o!=null&&o.some(({status:r})=>r==="error")?"error":"success",o!=null?o:[])},[y,o,C]);let x=(0,a.useCallback)(()=>{Z(!0),$(!1),o==null||o.filter(r=>r.percentage!==1&&r.status!=="success").forEach(r=>{(0,J.default)(n,r.uid,r.content,f!=null?f:2e5,i=>{I(p=>{var l;return(l=p==null?void 0:p.map(g=>g.uid===r.uid?{...g,percentage:i}:g))!=null?l:null})},N,e).then(i=>{let{status:p,response:l}=i;I(g=>{var z;return(z=g==null?void 0:g.map(B=>B.uid===r.uid?{...B,percentage:1,response:l,status:p==="success"?"success":"error"}:B))!=null?z:null})}).catch(()=>{I(i=>{var p;return(p=i==null?void 0:i.map(l=>l.uid===r.uid?{...l,status:"error"}:l))!=null?p:null})})})},[e,n,o,f,N]);return(0,a.useImperativeHandle)(c,()=>({sendFiles:()=>{R&&R(),x()}}),[x,R]),(0,t.jsxs)(Q.default,{sx:{textAlign:"center"},children:[eo?(0,t.jsxs)(yo,{children:[(0,t.jsxs)(Io,{...to({className:"dropzone"}),children:[(0,t.jsx)("input",{...w,style:io}),_,W?(0,a.cloneElement)(W,{disabled:d,onClick:no,children:E}):(0,t.jsx)("button",{disabled:d,onClick:x,children:E})]}),(0,t.jsxs)(vo,{children:[j,(0,t.jsx)(D.default,{container:!0,rowSpacing:1,direction:"row",children:o==null?void 0:o.map(r=>(0,t.jsxs)(D.default,{item:!0,sx:{width:{xs:"250px",md:"500px"}},children:[r.content.name,(0,t.jsx)(k,{value:r.percentage*100})]},r.uid))})]})]}):(0,t.jsx)(t.Fragment,{children:A?(0,a.cloneElement)(A,{...ao,...w,disabled:d}):(0,t.jsx)("input",{...w,disabled:d})}),oo&&(0,t.jsx)(t.Fragment,{children:M?(0,a.cloneElement)(M,{disabled:d,onClick:x,children:L}):(0,t.jsx)("button",{disabled:d,onClick:x,type:"button",children:L})})]})},U=Po;var ko=U; //# sourceMappingURL=index.cjs.js.map