3131 </div >
3232 <p class =" medium-filename" v-text =" medium.name" ></p >
3333 </div >
34- <FloatingLibraryUploadCard v-if =" medium.id == undefined && medium.name" :file =" medium" :key =" i" />
34+ <FloatingLibraryUploadCard v-if =" ( medium.id == undefined) && medium.name && (medium.uploadComplete == false) " :file =" medium" :key =" i" />
3535 </li >
3636 </ul >
3737 <div v-else class =" has-text-centered pt-xxl pb-x xl pr-md pl-md" v-text =" trans.get('foundation::general.no_results_found')" ></div >
@@ -184,13 +184,20 @@ export default {
184184 return this .isOpen ? ' modal is-active' : ' modal'
185185 },
186186 concatMedia () {
187- if (this .payload .multiple && Array .isArray (this .initialSelected )) {
188- return this .initialSelected .concat (this .uploading .concat (this .media ))
189- } else if (! this .payload .multiple && ! Array .isArray (this .initialSelected ) && typeof this .initialSelected === ' object' ) {
190- return [this .initialSelected ].concat (this .uploading .concat (this .media ))
187+ let concat = []
188+
189+ if (this .payload .multiple && Array .isArray (this .initialSelected )) {
190+ concat = this .initialSelected .concat (this .uploading , this .media )
191+ } else if (! this .payload .multiple && this .initialSelected && typeof this .initialSelected === ' object' && ! Array .isArray (this .initialSelected )) {
192+ concat = [this .initialSelected , ... this .uploading , ... this .media ]
193+ } else {
194+ concat = [... this .uploading , ... this .media ]
191195 }
192196
193- return this .uploading .concat (this .media )
197+ return concat .filter ((item , index , self ) =>
198+ item .id === undefined ||
199+ self .findIndex (i => i .id === item .id ) === index
200+ )
194201 },
195202 selectedCount () {
196203 return this .payload .multiple ? this .payload .selected .length : (this .payload .selected ? 1 : 0 )
@@ -228,25 +235,29 @@ export default {
228235 }
229236
230237 const k = self .media .findIndex (function (m ) { return m .id == data .id })
231- self .$set (self .media , k, data)
238+ if (k >= 0 ) self .$set (self .media , k, data)
232239 })
233240
234241 Event .$on (' upload-complete' , function (data ) {
235- self .media .unshift (data .payload )
242+ let medium = data .payload
243+ medium .comesWithPayload = true
244+
245+ self .media .unshift (medium)
246+ self .uploading .push (medium)
236247
237248 // Self upload, so select
238249 if (data .name == ' undefined' ) {
239250 const i = self .uploading .findIndex (function (f ) { return f .name == data .file .name })
240- self .uploading . splice (i, 1 )
251+ if (i >= 0 ) self .uploading [i]. uploadComplete = true
241252
242253 if (self .payload .multiple ) {
243- self .checked .unshift (data . payload .id )
254+ self .checked .unshift (medium .id )
244255 } else {
245- self .checked = [data . payload .id ]
256+ self .checked = [medium .id ]
246257 }
247258
248- self .toggleSelect (data . payload )
249- self .highlight (data . payload )
259+ self .toggleSelect (medium )
260+ self .highlight (medium )
250261 }
251262 })
252263
@@ -258,9 +269,7 @@ export default {
258269
259270 self .isOpen = true
260271
261- // This was to keep changes made but if we do this
262- // new uploads are shown twice
263- // if(self.payload.name == payload.name) return
272+ if (self .payload .name == payload .name ) return
264273
265274 // To break the reactivity
266275 payload = JSON .parse (JSON .stringify (payload))
@@ -271,11 +280,19 @@ export default {
271280 if (self .$refs .sideColumn ) self .$refs .sideColumn .scrollTop = 0
272281
273282 if (payload .multiple && Array .isArray (payload .selected )) {
274- self .checked = self .initialSelectedIds = payload .selected .map (function (medium ) { return medium .id })
275- self .initialSelected = JSON .parse (JSON .stringify (payload .selected ))
283+ self .checked = self .initialSelectedIds = payload .selected .map (function (medium ) { return parseInt (medium .id , 10 ) })
284+ let selected = JSON .parse (JSON .stringify (payload .selected ))
285+ selected .forEach (medium => {
286+ medium .comesWithPayload = true
287+ })
288+ self .initialSelected = selected
276289 } else if (! payload .multiple && payload .selected ) {
277- self .checked = self .initialSelectedIds = [payload .selected .id ]
278- self .initialSelected = JSON .parse (JSON .stringify (payload .selected ))
290+ self .checked = self .initialSelectedIds = [parseInt (payload .selected .id , 10 )]
291+ let selected = JSON .parse (JSON .stringify (payload .selected ))
292+ selected .forEach (medium => {
293+ medium .comesWithPayload = true
294+ })
295+ self .initialSelected = selected
279296 self .highlight (payload .selected )
280297 } else {
281298 self .checked = self .initialSelectedIds = []
@@ -361,8 +378,15 @@ export default {
361378 return ' fas fa-' + (type == ' document' ? ' file' : ' file-' + type)
362379 },
363380 isShown (medium , i ) {
364- return true
365- // return (medium.id == undefined && medium.name) || (!this.initialSelectedIds.includes(medium.id) || (this.initialSelectedIds.includes(medium.id) && i < this.initialSelectedIds.length)) && (!this.payload.filters || (this.payload.filters && this.payload.filters.includes(medium.type)))
381+ return (medium .id == undefined && medium .uploadComplete == false ) ||
382+ (
383+ medium .id != undefined &&
384+ (! this .payload .filters || (this .payload .filters && this .payload .filters .includes (medium .type ))) &&
385+ (
386+ ! this .initialSelectedIds .includes (parseInt (medium .id , 10 )) ||
387+ (this .initialSelectedIds .includes (parseInt (medium .id , 10 )) && medium .comesWithPayload == true )
388+ )
389+ )
366390 },
367391 startUpload (e ) {
368392 this .dragging = false
@@ -374,14 +398,14 @@ export default {
374398
375399 for (let f in [... files]) {
376400 let fl = files[f]
377- if (this .validateFile (fl)) {
401+ if (this .validateFile (fl) == true ) {
402+ fl .uploadComplete = false
378403 this .uploading .push (fl)
379404 }
380405 }
381406 },
382407 validateFile (file ) {
383- return this .$root .shared .allowed_size
384- // return this.$root.shared.allowed_size >= file.size && this.$root.shared.allowed_mimetypes.includes(file.type)
408+ return (this .$root .shared .allowed_size >= file .size ) && (this .$root .shared .allowed_mimetypes .includes (file .type ))
385409 },
386410 clearError (field ) {
387411 if (this .translatableFields .includes (field)) {
0 commit comments