@@ -100,6 +100,8 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
100
100
// State of dropzone object
101
101
const [ dropZone , setDropZone ] = useState < Dropzone | null > ( null ) ;
102
102
const [ isDisabled , setIsDisabled ] = useState ( true ) ;
103
+ const [ isHidden , setIsHidden ] = useState ( true ) ;
104
+ const [ isInfoHidden , setIsInfoHidden ] = useState ( true ) ;
103
105
104
106
const dropzoneIndex = dropzone_index ;
105
107
const acceptedExtensions = accepted_extensions ;
@@ -112,11 +114,17 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
112
114
( dropZone as Dropzone ) . on ( "addedfiles" , ( ) => {
113
115
if ( ! autoProcessQueue ) {
114
116
setIsDisabled ( false ) ;
117
+ // Clear error list
118
+ $ ( '#dropzone-error-list' ) . empty ( ) ;
115
119
// Hide custom progress bar when add files
116
120
$ ( "#upload_form-" + dropzoneIndex + " .custom-dz-upload" ) . hide ( ) ;
117
121
}
122
+
123
+ setIsHidden ( false ) ;
118
124
} ) &&
119
125
( dropZone as Dropzone ) . on ( "processing" , ( file ) => {
126
+ setIsHidden ( true ) ;
127
+ setIsInfoHidden ( false ) ;
120
128
// Hide default progress bar when processing
121
129
$ ( file . previewElement ) . find ( ".dz-upload" ) . hide ( ) ;
122
130
// Show custom progress bar when processing
@@ -137,11 +145,17 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
137
145
dropZone . processQueue ( ) ;
138
146
} else {
139
147
setIsDisabled ( true ) ;
148
+ setIsInfoHidden ( true ) ;
140
149
}
141
150
} else {
142
151
// AutoProcess context : Refresh button available
143
152
setIsDisabled ( false ) ;
153
+ setIsHidden ( false ) ;
154
+ setIsInfoHidden ( true ) ;
144
155
}
156
+ } ) &&
157
+ ( dropZone as Dropzone ) . on ( "error" , ( ) => {
158
+ setIsInfoHidden ( true ) ;
145
159
} ) ;
146
160
147
161
// Initialization of DropZone
@@ -160,23 +174,25 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
160
174
// Code from github "npm dropzone"
161
175
if ( file . upload && file . upload . uuid && file . previewElement ) {
162
176
file . previewElement . classList . add ( "dz-error" ) ;
163
- if ( typeof message !== "string" && message . error ) {
164
- message = message . error ;
177
+ if ( typeof message !== "string" && ( message . error || message . file ) ) {
178
+ message = message . error || message . file ;
165
179
} else if ( typeof message !== "string" ) {
166
180
// Custom error sent by api
167
- var finalMessage = "" ;
181
+ var finalMessage : string [ ] = [ ] ;
168
182
169
183
// CUSTOM : Iterate on each message
170
184
if ( message . message . length > 0 ) {
171
185
message . message . forEach ( ( currentMessage : any ) => {
172
- var errorList = "" ;
186
+ var errorList : string [ ] = [ ] ;
173
187
// Iterate on each errors
174
- currentMessage . errors . forEach ( ( errorMessage : string ) => { errorList = errorList + errorMessage + " \n " } )
188
+ currentMessage . errors . forEach ( ( errorMessage : string ) => {
189
+ errorList . push ( ( currentMessage . row ? "Ligne " + currentMessage . row + " : " : "" ) + errorMessage + " \n " ) ;
190
+ } )
175
191
// Return result message
176
- finalMessage = finalMessage + errorList ;
192
+ finalMessage = finalMessage . concat ( errorList ) ;
177
193
} ) ;
178
194
179
- message = finalMessage ;
195
+ message = "<p>" + finalMessage . sort ( ) . join ( "</p><p>" ) + "</p>" ;
180
196
181
197
} else {
182
198
message = "Une erreur est surevenue, veuillez vérifier le fichier importé." ;
@@ -196,7 +212,7 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
196
212
197
213
return (
198
214
< div id = "dropzone-container" >
199
- < div id = "dropzone-info" className = "alert alert-info" role = "alert" >
215
+ < div id = "dropzone-info" className = "alert alert-info" role = "alert" hidden = { isInfoHidden } >
200
216
Si vous fermez la fenêtre pendant l'importation, vous n'aurez pas de retour d'erreur ou de confirmation de bon déroulement de ce dernier. Merci de patienter.
201
217
</ div >
202
218
< div id = "dropzone" >
@@ -211,7 +227,7 @@ export const DropZone = React.forwardRef<HTMLFormElement, DropZoneProps>(
211
227
212
228
< div className = "row text-center" >
213
229
< div className = "col" >
214
- < button className = "btn btn-primary" onClick = { processQueue } disabled = { isDisabled } > { label } </ button >
230
+ < button className = "btn btn-primary" onClick = { processQueue } disabled = { isDisabled } hidden = { isHidden } > { label } </ button >
215
231
</ div >
216
232
</ div >
217
233
0 commit comments