-
-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathupload.dragger.ts
More file actions
39 lines (32 loc) · 941 Bytes
/
upload.dragger.ts
File metadata and controls
39 lines (32 loc) · 941 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { Component, EventEmitter, Input, Output } from '@angular/core'
@Component({
selector: 'el-upload-dragger',
template: `
<div class="el-upload-dragger"
[class.is-dragover]="dragger"
(drop)="dropHandle($event)"
(dragover)="dragoverHandle($event)"
(dragleave)="dragLeaveHandle($event)">
<ng-content></ng-content>
</div>
`,
})
export class ElUploadDragger {
@Input() disabled: boolean = false
@Output() change: EventEmitter<any> = new EventEmitter<any>()
dragger: boolean = false
dragoverHandle(event: Event): void {
event.preventDefault()
if (this.disabled) return
this.dragger = true
}
dragLeaveHandle(event: Event): void {
event.preventDefault()
this.dragger = false
}
dropHandle(event: DragEvent): void {
event.preventDefault()
if (this.disabled) return
this.change.emit({ target: { files: event.dataTransfer.files }})
}
}