oleksiypetlyuk/nova-range-filter
Laravel Nova filter for range-based filtering of resources. Add min and max inputs to your Nova filters so users can narrow results by numeric or date ranges, with a simple configurable filter class and no custom frontend code required. Ideal for admin dashboards.
Version 0.0.2 is an early, pre-1.0 release, so treat the API as unstable and pin the exact version ("vendor/package": "0.0.2") rather than floating a caret constraint.
php artisan vendor:publish --tag=...) so you can inspect the defaults and override markup later.php artisan config:clear after publishing, then render a single slider on a scratch route to confirm assets load.The first real use case is almost always a hero/marketing carousel that should auto-advance on a fixed cadence. A minimal integration should look like: one Blade component (or Livewire component) with a single, explicit interval value, rendering three to five slides, with navigation controls present before you worry about autoplay.
Where to look first: the README usage section, the published config file (for the global default interval), and the package's Blade views (to see how the interval is passed to the front-end). If the package ships JavaScript, check how the interval is read — data attribute, inline config object, or a JS initializer.
Set a global default, override per instance. Put a sane default (e.g. 5000 ms) in the published config and override it only where a page needs different pacing. This keeps most call sites clean and makes the cadence auditable in one place.
Normalize units immediately. Determine whether the interval is milliseconds or seconds and document it in your own wrapper component. Ambiguity here is the most likely source of "the slider is broken" bug reports — a value of 5 intended as seconds but read as milliseconds produces a strobe effect. Wrap the package component in your own x-hero-slider so the unit contract lives in your codebase, not the caller's head.
Disable autoplay deliberately. Confirm how the package expresses "no autoplay" (likely 0, null, or omitting the prop) and use that for reduced-motion users and for sliders where motion is distracting. Don't rely on a very large interval as a substitute for disabling.
Livewire integration. If you drive the slider from a Livewire component, pass the interval as a public property and keep the slider container stable across renders. Re-renders that morph the DOM can leave the old timer running or reset the slide position. Use wire:ignore around the slider markup unless the slides themselves are server-driven, and key the component if slide sets change.
Pair autoplay with pause affordances. Autoplay without hover/focus pause and a visible control is an accessibility failure. If the package doesn't pause on hover/focus out of the box, handle it in your wrapper's JS and add a play/pause button.
Test the configuration surface, not the animation. In PHP tests, assert the rendered output carries the expected interval value (attribute, data property, or config injection). Don't try to assert visual transitions in PHPUnit/Pest; leave that to a browser test if you need it at all.
Multiple sliders per page. Give each instance a unique key/id and set intervals independently. Shared JS initializers that target a generic class selector will bind the wrong interval to the wrong slider.
php artisan config:clear (or redeploy with a fresh cache) — otherwise your change silently does nothing.setInterval without teardown, Turbo/Livewire navigation can accumulate timers. Watch for sliders that speed up after a few page transitions; the fix is usually re-initializing on livewire:navigated or scoping the slider to wire:ignore.0 disables autoplay or is coerced into an immediate loop. Test it rather than assuming.prefers-reduced-motion by defaulting to autoplay-off. Retrofitting this after launch is harder than making it the default path.How can I help you explore Laravel packages today?