Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Drag And Scroll Laravel Package

zoltantorok/filament-drag-and-scroll

Add Shift+drag horizontal scrolling to Filament tables with this zero-config plugin. Just install via composer and call ->dragAndScroll() on your panel. Includes tooltip feedback, per-panel toggling, and 13 built-in translations.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. From a program standpoint this is a presentation-layer dependency with no data plane and no service surface — it adds a fluent ->dragAndScroll() toggle to a Filament Panel and ships a small JS/CSS bundle plus translation strings. There is no migration, no schema change, no queue, no external call, no secret, and no new runtime backend behavior. That matters to a TPM because it means the package cannot fail in a way that corrupts data or takes down the panel; its worst case is "the gesture stops working and users scroll the way they did last week." That is an unusually clean risk shape and is the main reason this is safe to trial rather than something that needs an architecture review board.

Integration feasibility. Effort is measured in minutes: one composer require, one method call per panel, optional ->dragAndScroll(false) to scope it off elsewhere. The real gating factor is not effort, it is prerequisite sequencing: the package hard-requires Filament ^5.0, so it is downstream of a platform upgrade decision the TPM does not own unilaterally. Treat it as a rider on the Filament 5 migration, not a standalone work item. PHP ^8.1 and Laravel ^11–13 align with current baselines and are unlikely to be the blocker.

Technical risk. Ranked as a TPM would triage them:

Risk Severity Why it matters to the plan
Filament 5 hard floor High (gating) No value delivered until the platform upgrade lands; makes this a dependent deliverable, not an independent one
Bus factor = 1, 3 stars, 0 dependents Medium No community bug surface, no production signal, no vendor SLA. Mitigation is cheap: pin + be ready to own ~50 lines of JS
Release provenance (tag dated 2026-08-05) Medium Future-dated release metadata is a process smell. Verify the Packagist tag matches the auditable commit before it enters a lockfile — a supply-chain gate, not an engineering judgment call
Livewire re-render / SPA navigation Medium–High If the handler binds once on DOMContentLoaded without delegation, drag dies after pagination, sort, filter, or SPA nav — a silent regression users won't report as a bug
CSP / asset delivery Medium Nonce-based CSP panels are the likely breakage case; discoverable only in environments with strict headers
Gesture collisions Low–Medium Shift+drag overlaps native text selection and potentially row-select/column-reorder; needs preventDefault() scoped to the container only
Accessibility claim is partial Framing risk Improves one input modality; does not deliver WCAG 2.1.1 keyboard operability. Do not let it be recorded as "accessibility: done"

Key questions (the TPM's pre-adoption checklist — each has an owner and a gate):

  1. Platform: Which Filament major is in production today, and is Filament 5 funded and scheduled? Without a date, this item has no landing zone.
  2. Reversibility proof: Does Shift+drag survive table re-render, pagination, sorting, and SPA navigation in a staging panel? This is the acceptance test, not optional QA.
  3. Provenance: Is there a tagged release whose commit we can diff and audit? Does it match the Packagist artifact?
  4. Environment: Do any of our panels run strict nonce-based CSP, and does asset initialization pass?
  5. Interaction: Does it conflict with any existing table feature we already enable (row selection, column reorder, reordering handles)?
  6. Locale hygiene: Do the 13 bundled lang files collide with or override any of our own translations?
  7. Non-goal confirmation: Do we have a written statement that this does not close our keyboard-accessibility commitment, so it isn't misrecorded in an audit trail?
  8. Exit plan: Who owns vendoring the JS if the package stalls, and what's the trigger (no release in N months / Filament 6 incompatibility)?

Integration Approach

Stack fit. Adopt for internal, desktop-first, data-dense admin panels on Filament 5 — back-office ops, finance, support tooling. Do not adopt for customer-facing surfaces where a UI regression is revenue-exposed, and do not adopt for mobile/tablet-first panels: Shift+drag is a pointer-plus-keyboard gesture with no touch equivalent, so it solves nothing there. The honest framing to stakeholders is "a wide-table usability improvement for our internal tools," not "an accessibility program."

Migration path. Effectively zero-risk and single-commit reversible. Add the dependency, add ->dragAndScroll() to one PanelProvider, ship. Removal is deleting the call and running composer remove — no data migration, no config unwind, no consumer contracts to renegotiate. This reversibility is the strongest argument in the business case and should lead the pitch: the cost of being wrong is measured in minutes, which is exactly the profile of a decision you can delegate rather than escalate.

Compatibility. Pin to an exact version, do not float on ^. Lockfile review must confirm the resolved tag matches the auditable repo commit — this is the supply-chain control for a 3-star, single-maintainer package. Confirm panel bootstrap ordering (the fluent method must be available before the panel is built; a missing or renamed method should fail loudly in CI, not silently no-op). Establish the convention that this toggle is opt-in per panel explicitly rather than globally defaulted, so scope creep is visible in git diff rather than implicit.

Sequencing. Run this as a rider on the Filament 5 upgrade, in this order:

  1. Filament 5 upgrade lands and stabilizes on the target panel (do not co-schedule — don't attribute Filament-upgrade regressions to this package or vice versa).
  2. Provenance + diff review; pin the version; add the dependency behind normal review.
  3. Enable on one internal panel with the widest tables — the highest-signal pilot surface.
  4. Acceptance test the re-render/navigation matrix in staging; verify CSP in the strictest environment we run.
  5. Instrument and observe for a defined window (2–4 weeks), then decide on broader rollout.
  6. Rollout panel-by-panel. Because the toggle is per-panel, each step is independently revertible — treat the flags as feature flags and keep the list of enabled panels documented.

Operational Impact

Maintenance. Ongoing cost is near zero by design — there is no config, no migration, no service to babysit. The real maintenance exposure is version-tracking discipline across Filament majors: Filament 6 will almost certainly require a matching package release, and with a bus factor of 1 that release may not arrive. Budget the ownership accordingly: someone on the team must be able to recognize the break and know the fallback. The mitigation is pre-written and cheap — vendor the JS into our theme — so the TPM's job is to make sure that fallback is documented and assigned, not improvised under pressure.

Support. The gesture is deliberately discoverable (tooltip + cursor change), which reduces "how does this work" tickets, but the failure mode is silent: when it breaks after a Livewire re-render, users won't file a bug, they'll just revert to the old frustration. Do not rely on the support queue as your detection mechanism — put a manual smoke check in the release checklist for enabled panels. Update the internal runbook with one line: "Wide-table horizontal scroll is Shift+drag; if it stops working after a Filament update, check for a package release, else vendor the JS."

Scaling. Scales trivially in the technical sense — it's a client-side asset, no server load, no per-user cost, no quota. It scales poorly in the product sense: it is a symptom fix for "we have too many columns," and it will not compound. If table width keeps growing across panels, the higher-leverage investments are column visibility persistence, pinned/frozen key columns, density controls, and responsive column prioritization. Position this as one polish-sprint item with a known ceiling, not a strategic pillar, or you'll be defending a 3-star package as core UX infrastructure in 18 months.

Failure modes (each with a TPM-level response, not an engineering one):

  • Silent breakage after table re-render or SPA nav — highest-probability failure; response: staging acceptance test at adoption, smoke check per release, user-visible symptom monitoring.
  • Package abandoned before Filament 6 — response: pre-assigned owner and a written vendor-the-JS fallback; the code is small enough that this is a afternoon, not a project.
  • CSP environment rejects initialization — response: verify in the strictest environment before enabling for that panel; it's panel-scoped so blast radius is bounded.
  • Gesture conflicts with an existing table interaction — response: pilot on the panel where that's testable; disable via ->dragAndScroll(false) without a rollback.
  • Accessibility over-claim in an audit or procurement response — response: pre-empt it with written language stating this addresses pointer-input horizontal scrolling only, and that keyboard operability remains an open commitment.

Ramp-up. Negligible for engineers — a one-line change with a README that fits on a screen. The ramp-up cost that does exist is organizational, and it's the TPM's to carry: getting a shared, accurate story about what this is (small, reversible, internal-tooling usability win from an early-stage single-maintainer dependency) and what it isn't (accessibility remediation, a fix for column sprawl, a vendor-supported platform component). Get that framing into the decision record at adoption time — it is far cheaper than correcting it later when someone asks why "accessibility" was marked green because a plugin was installed.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log