@@ -2,12 +2,20 @@ const draggableArea = document.querySelectorAll(".drag-area");
2
2
const imageShow = document . querySelector ( "#img-show" ) ;
3
3
const dragUploadFile = document . getElementById ( "file-upload" ) ;
4
4
const drag_img = document . querySelector ( ".drag-img" ) ;
5
+ const label_Onupload = document . getElementById ( "upload-label" ) ;
5
6
6
7
// drag and drap events
7
8
let isDragged ; // store the dragged elements
8
9
9
10
dragUploadFile . addEventListener ( "change" , ( e ) => {
10
- displayMultipleImages ( e . target . files ) ;
11
+ if ( e . target . files . length > 3 ) {
12
+ label_Onupload . style . display = "flex" ;
13
+ alert ( "upload not more than 3 images..." ) ;
14
+ } else if ( e . target . files . length <= 3 ) {
15
+ displayMultipleImages ( e . target . files ) ;
16
+ label_Onupload . style . display = "none" ;
17
+ return ;
18
+ }
11
19
} ) ;
12
20
13
21
//function to handle drag start
@@ -36,10 +44,16 @@ function onDragLeave(e) {
36
44
function onDragDrop ( e ) {
37
45
e . preventDefault ( ) ;
38
46
e . target . classList . remove ( "currentBox" ) ;
39
- const dropTarget = e . target . closest ( ' .drag-area' ) ;
47
+ const dropTarget = e . target . closest ( " .drag-area" ) ;
40
48
if ( ! dropTarget ) return ;
41
-
42
- if ( isDragged && isDragged . tagName === 'IMG' ) {
49
+
50
+ for ( let file of e . dataTransfer . files ) {
51
+ if ( file . type === "image/*" ) {
52
+ displayMultipleImages ( file ) ;
53
+ }
54
+ }
55
+
56
+ if ( isDragged ) {
43
57
if ( dropTarget !== isDragged . parentElement ) {
44
58
dropTarget . appendChild ( isDragged ) ;
45
59
}
@@ -51,28 +65,43 @@ function onDragEnter(e) {
51
65
}
52
66
53
67
function onDragEnd ( e ) {
68
+ let checkLength = dropZonEmptyCheck ( imageShow ) ;
69
+ if ( checkLength <= 1 ) {
70
+ label_Onupload . style . display = "none" ;
71
+ } else {
72
+ label_Onupload . style . display = "flex" ;
73
+ }
74
+
54
75
setTimeout ( ( ) => {
55
76
e . target . classList . add ( "hoverLeave" ) ;
56
77
} , 100 ) ;
57
78
}
58
79
80
+ function dropZonEmptyCheck ( image ) {
81
+ const imageCount = image . querySelectorAll ( "img" ) . length ;
82
+ if ( imageCount ) {
83
+ return true ;
84
+ }
85
+ }
86
+
59
87
// handling multiple files
60
88
function displayMultipleImages ( files ) {
61
89
for ( let file of files ) {
62
- if ( ! file && ! file . type ( "image/*" ) ) {
90
+ if ( ! file && ! file . type ( "image/*" ) && files . length > 3 ) {
63
91
return false ;
64
92
}
65
93
}
66
94
95
+ //
67
96
for ( let file of files ) {
68
97
let reader = new FileReader ( ) ;
69
98
reader . onload = ( ) => {
70
99
let image = new Image ( ) ;
71
100
image . src = reader . result ;
72
101
image . style . display = "block" ;
73
102
image . className = "drag-img" ;
74
- image . setAttribute ( ' draggable' , ' true' ) ;
75
- image . addEventListener ( ' dragstart' , function ( e ) {
103
+ image . setAttribute ( " draggable" , " true" ) ;
104
+ image . addEventListener ( " dragstart" , function ( e ) {
76
105
isDragged = e . target ;
77
106
} ) ;
78
107
imageShow . appendChild ( image ) ;
0 commit comments