Aggiorna lo stato dell'invio email senza ricaricare la pagina.
Così la lista destinatari si aggiorna in corso d'opera senza riportare lo scroll in cima. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,17 +4,46 @@ export default class extends Controller {
|
||||
static values = { interval: { type: Number, default: 10000 } }
|
||||
|
||||
connect() {
|
||||
this.timer = setInterval(() => {
|
||||
if (document.hidden) return
|
||||
if (window.Turbo?.visit) {
|
||||
window.Turbo.visit(window.location.href, { action: "replace" })
|
||||
} else {
|
||||
window.location.reload()
|
||||
}
|
||||
}, this.intervalValue)
|
||||
this.timer = setInterval(() => this.refresh(), this.intervalValue)
|
||||
}
|
||||
|
||||
disconnect() {
|
||||
clearInterval(this.timer)
|
||||
}
|
||||
|
||||
refresh() {
|
||||
if (document.hidden) return
|
||||
|
||||
const frame = this.element.closest("turbo-frame")
|
||||
if (frame && typeof frame.reload === "function") {
|
||||
this.reloadFrame(frame)
|
||||
return
|
||||
}
|
||||
|
||||
this.refreshPreservingScroll()
|
||||
}
|
||||
|
||||
reloadFrame(frame) {
|
||||
if (frame.hasAttribute("busy")) return
|
||||
|
||||
const url = window.location.href
|
||||
if (frame.getAttribute("src") === url) {
|
||||
frame.reload()
|
||||
} else {
|
||||
frame.setAttribute("src", url)
|
||||
}
|
||||
}
|
||||
|
||||
refreshPreservingScroll() {
|
||||
const { scrollX, scrollY } = window
|
||||
const restore = () => window.scrollTo(scrollX, scrollY)
|
||||
document.addEventListener("turbo:render", restore, { once: true })
|
||||
document.addEventListener("turbo:load", restore, { once: true })
|
||||
|
||||
if (window.Turbo?.visit) {
|
||||
window.Turbo.visit(window.location.href, { action: "replace" })
|
||||
} else {
|
||||
window.location.reload()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user