@@ -10,7 +10,10 @@ import {
1010 validateFile ,
1111} from "../utils/validation.utils" ;
1212import { DropzoneProps , DropzonePropsDefault } from "./DropzoneProps" ;
13- import { createRipple } from "../utils/dropzone-ui.utils" ;
13+ import {
14+ createRipple ,
15+ createRippleFromElement ,
16+ } from "../utils/dropzone-ui.utils" ;
1417import DropzoneHeader from "../DropzoneHeader/DropzoneHeader" ;
1518import DropzoneFooter from "../DropzoneFooter.tsx/DropzoneFooter" ;
1619import { FileItemContainer } from "../../../../components/file-item" ;
@@ -66,9 +69,10 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
6669 label,
6770 fakeUploading,
6871 localization,
72+ disableScroll,
6973 } = mergeProps ( props , DropzonePropsDefault ) ;
70-
71-
74+ //ref for ripple
75+ const dz_ui_ripple_ref = useRef < HTMLDivElement > ( null ) ;
7276 //re-validation: for development purposes and for preventing clean fileList in web page code generator
7377 useEffect ( ( ) => {
7478 if ( files . length > 0 ) {
@@ -103,14 +107,14 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
103107 const [ localView , setLocalView ] =
104108 useState < FileItemContainerProps [ "view" ] > ( "grid" ) ;
105109 const [ localMessage , setLocalMessage ] = useState < string > ( "" ) ;
106-
110+
107111 //ClassName for dynamic style
108112 const [ onUploadingStart , setOnUploadingStart ] = useState < boolean > ( false ) ;
109113 // const [queueFiles, setQueueFiles] = useState<FileValidated[]>([]);
110114 const classNameCreated : string = useDropzoneStyles (
111115 color ,
112116 backgroundColor ,
113- maxHeight ,
117+ disableScroll ? undefined : maxHeight ,
114118 minHeight
115119 ) ;
116120 const finalClassName : string = `dropzone-ui${ classNameCreated } ${
@@ -126,10 +130,12 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
126130 }
127131 } , [ value ] ) ;
128132 useEffect ( ( ) => {
129- if ( view ) {
133+ if ( disableScroll ) {
134+ setLocalView ( "grid" ) ;
135+ } else if ( view ) {
130136 setLocalView ( view ) ;
131137 }
132- } , [ view ] ) ;
138+ } , [ view , disableScroll ] ) ;
133139 useEffect ( ( ) => {
134140 if ( uploadingMessage ) {
135141 setLocalMessage ( uploadingMessage ) ;
@@ -267,12 +273,10 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
267273 DropzoneLocalizer . uploadFinished as FunctionLabel ;
268274 setLocalMessage (
269275 finishUploadMessenger ( missingUpload - totalRejected , totalRejected )
270-
271276 ) ;
272277 setTimeout ( ( ) => {
273278 setOnUploadingStart ( false ) ;
274279 } , 2300 ) ;
275-
276280 } else {
277281 setLocalMessage (
278282 DropzoneLocalizer . noFilesMessage as string
@@ -322,7 +326,9 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
322326 localValidator
323327 ) ;
324328 if ( ! disableRipple ) {
325- createRipple ( evt , color as string ) ;
329+ createRippleFromElement ( dz_ui_ripple_ref . current , color as string ) ;
330+
331+ // createRipple(evt, color as string);
326332 }
327333 setIsDragging ( false ) ;
328334 handleFilesChange ( output ) ;
@@ -411,7 +417,8 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
411417 let referenceInput = inputRef . current ;
412418 referenceInput ?. click ( ) ;
413419 if ( ! disableRipple ) {
414- createRipple ( e , color as string ) ;
420+ createRippleFromElement ( dz_ui_ripple_ref . current , color as string ) ;
421+ //createRipple(e, color as string);
415422 }
416423 onClick ?.( e ) ;
417424 }
@@ -422,7 +429,6 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
422429 //onDrop?.([]);
423430 } ;
424431 const handleChangeView = ( newView : "grid" | "list" ) => {
425-
426432 setLocalView ( newView ) ;
427433 onChangeView ?.( newView ) ;
428434 } ;
@@ -435,6 +441,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
435441 onClick = { clickable ? handleClick : ( ) => { } }
436442 // onDragLeave={handleDragLeave}
437443 >
444+ < div className = "dropzone-ui-ripple" ref = { dz_ui_ripple_ref } > </ div >
438445 { header && (
439446 < DropzoneHeader
440447 maxFileSize = { maxFileSize }
@@ -444,7 +451,7 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
444451 //handleReset={handleReset}
445452 onUploadingStart = { onUploadingStart }
446453 view = { localView }
447- hideViewIcon = { view ? true : false }
454+ hideViewIcon = { view || disableScroll ? true : false }
448455 onChangeView = { handleChangeView }
449456 onUploadStart = { ! uploadOnDrop ? handleUploadStart : undefined }
450457 onClean = { onClean && ! onUploadingStart ? handleCleanFiles : undefined }
@@ -453,7 +460,14 @@ const Dropzone: React.FC<DropzoneProps> = (props: DropzoneProps) => {
453460 />
454461 ) }
455462 { children && value && files && files . length > 0 ? (
456- < FileItemContainer view = { localView } style = { { minHeight, maxHeight } } >
463+ < FileItemContainer
464+ view = { localView }
465+ style = { {
466+ minHeight : minHeight ,
467+ maxHeight : disableScroll ? undefined : maxHeight ,
468+ } }
469+ disableScroll = { disableScroll }
470+ >
457471 { children }
458472 </ FileItemContainer >
459473 ) : (
0 commit comments