I had a use case today whereby I needed particular controllers to only be connected above a specified viewport size (desktop only, basically).
Ultimately I achieved this by having some separate javascript with a media query listener that, when triggered, filtered the controllers from the DOM and removed/added their data-controller attributes as necessary.
The only immediate issue this caused was that rather than use this.somethingTarget
in the disconnect function, I had to use this.element.querySelector(...)
.
I’d be keen to know if anyone has any cleaner ways of doing this? It’d be nice if there was a way to connect and disconnect controllers in a cleaner, more practical way from within the controllers themselves (which wouldn’t be possible with disconnect I guess, but maybe a method to conditionally detach/reattach a controller).
Maybe a bit of an edge case though…shrug