Product Decisions This Supports
- Accessibility and input-device coverage. Wide Filament tables are effectively unreachable for users on basic mice, trackballs, or desktops without a horizontal scroll axis — the columns on the right simply cannot be brought into view. This package adds an explicit, discoverable gesture (Shift + drag, with cursor change and tooltip) that closes that specific gap. Frame it as one input-modality improvement, not an accessibility remediation: it does not make the scroll container keyboard-navigable and does not satisfy WCAG 2.1.1 on its own. It belongs as a line item in an accessibility backlog, not as the answer to one.
- A cheap, reversible test of a UX hypothesis. Enablement is per-panel (
->dragAndScroll() on a single PanelProvider), so you can pilot on one internal panel or one tenant before any broader rollout. Pair it with a task-completion test or a look at "I can't see the columns on the right" support tickets, and you have a measurable before/after with a rollback that costs one commit.
- Build vs. buy, where buy is genuinely small. The functional surface is a JS pointer listener plus an asset registration — realistically tens of lines. The honest framing is "a tiny MIT dependency we pin and review" versus "a tiny thing we own across Filament upgrades." Because Filament 5 is the only supported major, an in-house version carries the same version-tracking discipline, so the buy side is defensible provided you accept a single-maintainer dependency.
- Roadmap sequencing against the Filament 5 upgrade. This package is a dependent variable of a larger decision: if the estate is on Filament 3 or 4, adoption is blocked until the Filament 5 migration lands. That makes it a post-upgrade polish item, not something to schedule independently — useful for filling a hardening sprint immediately after the upgrade rather than competing with feature work.
- Localization coverage. 13 bundled translations with automatic locale detection and publishable overrides means no new translation burden for multilingual ops teams — relevant if internal tooling serves non-English staff, and a small point in favor when comparing against rolling your own.
- Symptom vs. cause. Treat adoption as an explicit choice to fix the symptom (can't scroll sideways) rather than the cause (too many columns). If the roadmap already contains column visibility persistence, pinned/frozen key columns, or density controls, those are the higher-leverage investments and this package is a stopgap — which is fine, as long as it's labeled as one.
When to Consider This Package
Adopt when all of the following hold:
- You are on Filament ^5.0 with PHP ^8.1+ and Laravel ^11–13. The version gate is hard — there is no v3/v4 path, so this cannot even be evaluated before that upgrade.
- Your panels have tables wide enough to require horizontal scrolling. For narrow tables the package does nothing.
- Your users are predominantly desktop, keyboard-and-mouse, including people on basic peripherals or with motor/vision accessibility needs. That is the exact population the gesture serves.
- You are comfortable taking a single-maintainer, early-stage dependency (3 stars, 0 dependents). The risk is asymmetric in your favor: blast radius is frontend-only and the failure mode is graceful — users lose a shortcut, nothing breaks.
- You have a pin-and-review practice for Composer dependencies, or you are willing to vendor the JavaScript into your theme if the package stalls.
Look elsewhere or defer when:
- You are on Filament 3 or 4 — unsupported, full stop.
- Your admin experience is mobile or tablet-first. Shift + drag is a pointer-plus-keyboard gesture with no touch equivalent; responsive column prioritization, column toggles, and pinned key columns are the right answers there.
- You have a strict third-party dependency policy (allow-listing, SBOM review, minimum-maintainer thresholds) that a 3-star, one-maintainer package will not clear. Implement the behavior in-house and own it.
- You need horizontal scrolling without a modifier key, or you intend to solve the underlying problem (column sprawl) rather than the symptom.
- You require vendor SLAs or guaranteed maintenance — neither exists here.
- Release provenance looks off. The published release date (2026-08-05) is future-dated relative to normal cadence; verify the Packagist tag matches the audited commit before it enters a lockfile.
Before merging, get answers on: does drag survive Livewire re-renders (pagination, sorting, filtering, SPA navigation) or does the listener die after the first table refresh; is the handler delegated or bound per node; are assets served through Filament's pipeline or published, and does initialization pass a nonce-based CSP; and does Shift + drag collide with row selection, column reorder, or native text selection inside the table container.
How to Pitch It (Stakeholders)
For executives: A free, MIT-licensed Filament plugin that lets users hold Shift and drag to scroll wide admin tables sideways — closing a real usability gap for staff on basic mice, trackballs, and accessibility setups. It installs with one command and one line of configuration, requires no database, infrastructure, or backend change, can be enabled for a single panel at a time, and is reversible in a single commit. This is not a platform bet: it is a small, cheap usability improvement to internal tooling, and the cost of being wrong is measured in minutes rather than sprints. The one caveat is maturity — it is early-stage and single-maintainer — so we recommend it for internal admin surfaces rather than customer-facing products, with a pinned version and a standing plan to absorb the few lines of JavaScript ourselves if it goes unmaintained. It also depends on our Filament 5 upgrade, so it should be sequenced after that migration, not alongside it.
For engineering: composer require zoltantorok/filament-drag-and-scroll, then add ->dragAndScroll() to the target PanelProvider (omit it, or pass false, everywhere else). It is frontend-only: a package service provider registers a JS/CSS bundle through Filament's asset pipeline, attaches a Shift + pointer-drag handler to table scroll containers, and ships 13 locale strings through Laravel's translator, publishable for overrides. No migrations, no config file, no domain coupling. Requirements are PHP ^8.1, Laravel ^11–13, Filament ^5.0 — the Filament floor is the only real gate, so this is a post-upgrade item. Before we merge, I want three things: (1) a diff review of the published tag, including confirming the release date anomaly is benign and that the artifact matches the tagged commit; (2) verification that the handler survives Livewire table morphs across pagination, sorting, filtering, and SPA navigation, and that it does not fight row selection, column reorder, or native text selection; and (3) a written fallback — vendor the JS into our theme — so a stalled package is a non-event. Also confirm asset delivery against any nonce-based CSP on our panels.