Sha256: 02067ce6e821f2f6dd6a2154f5685ec4cc7b69f9a8c477ff95f1645ea6b312af

Contents?: true

Size: 702 Bytes

Versions: 14

Compression:

Stored size: 702 Bytes

Contents

import { Controller } from "@hotwired/stimulus"

export default class extends Controller {
  static get targets() {
    return [ "button", "container" ]
  }

  connect() {
    this.scrollElement.addEventListener("scroll", this.load.bind(this))
  }

  disconnect() {
    this.scrollElement.removeEventListener("scroll", this.load.bind(this))
  }
  
  load() {
    if (this.hasButtonTarget) {
      let top = this.buttonTarget.getBoundingClientRect().top
      if (top < this.scrollElement.innerHeight + 500) {
        this.buttonTarget.click()
      }
    }
  }
  
  get scrollElement() {
    if (this.hasContainerTarget) {
      return this.containerTarget
    } else {
      return window
    }
  }

}

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
spina-2.8.1 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.8.0 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.7.0 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.6.2 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.6.1 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.6.0 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.5.0 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.4.0 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.3.5 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.3.4 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.3.3 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.3.2 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.3.1 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js
spina-2.3.0 app/assets/javascripts/spina/controllers/infinite_scroll_controller.js