@@ -7,7 +7,8 @@ export function init(id) {
77 return
88 }
99 const preventHandler = e => e . preventDefault ( )
10- const upload = { el, preventHandler }
10+ const body = el . querySelector ( '.upload-drop-body' ) ;
11+ const upload = { el, body, preventHandler }
1112 Data . set ( id , upload )
1213
1314 const inputFile = el . querySelector ( '[type="file"]' )
@@ -20,7 +21,20 @@ export function init(id) {
2021 EventHandler . on ( document , 'dragenter' , preventHandler )
2122 EventHandler . on ( document , 'dragover' , preventHandler )
2223
23- EventHandler . on ( el , 'drop' , e => {
24+ EventHandler . on ( body , 'dragenter' , e => {
25+ el . classList . add ( 'dropping' ) ;
26+ } )
27+
28+ EventHandler . on ( body , 'dragleave' , e => {
29+ el . classList . remove ( 'dropping' ) ;
30+ } ) ;
31+
32+ EventHandler . on ( body , 'drop' , e => {
33+ el . classList . remove ( 'dropping' ) ;
34+
35+ if ( el . classList . contains ( 'disabled' ) ) {
36+ return ;
37+ }
2438 try {
2539 const fileList = e . dataTransfer . files
2640 if ( fileList . length === 0 ) {
@@ -36,6 +50,10 @@ export function init(id) {
3650 } )
3751
3852 EventHandler . on ( el , 'paste' , e => {
53+ if ( el . classList . contains ( 'disabled' ) ) {
54+ return ;
55+ }
56+
3957 inputFile . files = e . clipboardData . files
4058 const event = new Event ( 'change' , { bubbles : true } )
4159 inputFile . dispatchEvent ( event )
@@ -66,14 +84,18 @@ export function dispose(id) {
6684 Data . remove ( id )
6785
6886 if ( upload ) {
69- const { el, preventHandler } = upload ;
87+ const { el, body , preventHandler } = upload ;
7088
71- EventHandler . off ( el , 'click' )
72- EventHandler . off ( el , 'drop' )
73- EventHandler . off ( el , 'paste' )
7489 EventHandler . off ( document , 'dragleave' , preventHandler )
7590 EventHandler . off ( document , 'drop' , preventHandler )
7691 EventHandler . off ( document , 'dragenter' , preventHandler )
7792 EventHandler . off ( document , 'dragover' , preventHandler )
93+
94+ EventHandler . off ( el , 'click' )
95+ EventHandler . off ( el , 'drop' )
96+ EventHandler . off ( el , 'paste' )
97+ EventHandler . off ( body , 'dragleave' )
98+ EventHandler . off ( body , 'drop' )
99+ EventHandler . off ( body , 'dragenter' )
78100 }
79101}
0 commit comments