forked from joemasilotti/railsdevs.com
-
Notifications
You must be signed in to change notification settings - Fork 0
/
file_upload_controller.js
35 lines (28 loc) · 1.03 KB
/
file_upload_controller.js
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
import { Controller } from "@hotwired/stimulus"
export default class extends Controller {
static targets = ["activity", "image", "source", "error"]
static classes = ["visibility", "loading"]
select(event) {
const file = event.currentTarget.files[0]
const objectUrl = window.URL.createObjectURL(file)
this.imageTarget.src = objectUrl
this.imageTarget.srcset = objectUrl
this.sourceTargets.forEach(source => {
source.srcset = objectUrl
})
this.imageTarget.classList.remove(this.visibilityClass)
this.errorTarget.classList.add(this.visibilityClass)
}
start() {
this.imageTarget.classList.add(this.loadingClass)
this.activityTarget.classList.remove(this.visibilityClass)
this.errorTarget.classList.add(this.visibilityClass)
}
error(event) {
event.preventDefault()
this.imageTarget.classList.remove(this.loadingClass)
this.activityTarget.classList.add(this.visibilityClass)
this.errorTarget.classList.remove(this.visibilityClass)
console.error(event.detail.error)
}
}