Files
fizzy/app/javascript/controllers/fetch_on_visible_controller.js
T
2025-01-24 17:42:36 +00:00

26 lines
524 B
JavaScript

import { Controller } from "@hotwired/stimulus"
import { get } from "@rails/request.js"
export default class extends Controller {
static values = { url: String }
connect() {
this.#observe()
}
#observe() {
const observer = new IntersectionObserver((entries) => {
const visible = !!entries.find(entry => entry.isIntersecting)
if (visible) {
this.#fetch()
}
})
observer.observe(this.element)
}
#fetch() {
get(this.urlValue, { responseKind: "turbo-stream" })
}
}