55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
import { Controller } from '@hotwired/stimulus';
|
|
|
|
/*
|
|
* The following line makes this controller "lazy": it won't be downloaded until needed
|
|
* See https://symfony.com/bundles/StimulusBundle/current/index.html#lazy-stimulus-controllers
|
|
*/
|
|
|
|
/* stimulusFetch: 'lazy' */
|
|
export default class extends Controller {
|
|
static targets = ['poster', 'moreBtn', 'moreLink']
|
|
|
|
moreResultsClicks = 0;
|
|
|
|
initialize() {
|
|
// Called once when the controller is first instantiated (per element)
|
|
|
|
// Here you can initialize variables, create scoped callables for event
|
|
// listeners, instantiate external libraries, etc.
|
|
// this._fooBar = this.fooBar.bind(this)
|
|
}
|
|
|
|
connect() {
|
|
// Called every time the controller is connected to the DOM
|
|
// (on page load, when it's added to the DOM, moved in the DOM, etc.)
|
|
|
|
// Here you can add event listeners on the element or target elements,
|
|
// add or remove classes, attributes, dispatch custom events, etc.
|
|
// this.fooTarget.addEventListener('click', this._fooBar)
|
|
}
|
|
|
|
// Add custom controller actions here
|
|
// fooBar() { this.fooTarget.classList.toggle(this.bazClass) }
|
|
|
|
disconnect() {
|
|
// Called anytime its element is disconnected from the DOM
|
|
// (on page change, when it's removed from or moved in the DOM, etc.)
|
|
|
|
// Here you should remove all event listeners added in "connect()"
|
|
// this.fooTarget.removeEventListener('click', this._fooBar)
|
|
}
|
|
|
|
moreResults() {
|
|
const elems = this.posterTargets.filter(poster => poster.classList.contains('hidden'));
|
|
if (this.moreResultsClicks <= 2) {
|
|
elems.slice(0, 6).forEach(poster => poster.classList.remove('hidden'));
|
|
this.moreResultsClicks++;
|
|
|
|
if (this.moreResultsClicks === 2) {
|
|
this.moreBtnTarget.classList.add('hidden');
|
|
this.moreLinkTarget.classList.remove('hidden');
|
|
}
|
|
}
|
|
}
|
|
}
|