Weave Code
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 Daterangepicker Filter Laravel Package

malzariey/filament-daterangepicker-filter

Alpine.js-powered date range picker and filter for Filament. Pick day/month/year ranges with presets, optional time selection (12/24h), keyboard input validation, localization, accessibility, and modal/slide-over friendly dropdown teleport. Matches Filament v4 UI.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Filament Integration: Perfectly designed for Filament v4, leveraging its field/filter system while maintaining native UI consistency (light/dark mode, styling).
  • Alpine.js/Day.js: Modern stack (replaces jQuery/Moment.js) aligns with Laravel’s current ecosystem trends, reducing legacy dependencies.
  • Modularity: Supports both fields (form inputs) and filters (query constraints), fitting into Filament’s resource/page architecture seamlessly.
  • Event-Driven: Custom events (apply.daterangepicker, cancel.daterangepicker) enable deep integration with Livewire/JS for advanced use cases (e.g., real-time validation, analytics).

Integration Feasibility

  • Low Friction: Composer install + optional translation publish. No Laravel service provider or config file required.
  • Backward Compatibility: Supports Filament v4’s field/filter contracts (e.g., modifyQueryUsing for filters).
  • Carbon Integration: Uses PHP’s Carbon for date handling, reducing serialization/deserialization overhead.
  • Localization: Built-in i18n via Day.js locales (publish translations if needed).

Technical Risk

  • Dependency Risk:
    • Alpine.js/Day.js: Minimal risk; widely adopted in Laravel ecosystem.
    • Floating UI: For dropdown positioning; stable but niche dependency.
  • Breaking Changes:
    • v3.x Migration: Requires updating from jQuery/Moment.js to Alpine.js/Day.js (documented in README).
    • Format Tokens: Deprecated displayFormat() in favor of Carbon-compatible format() (backward-compatible but discouraged).
  • Edge Cases:
    • Timezones: Relies on PHP’s Carbon timezone handling; ensure consistency with app defaults.
    • Disabled Dates: Performance impact if filtering large date ranges (test with ->disabledDates()).
    • Modal Compatibility: Teleporting to <body> solves z-index issues but may require CSS adjustments for nested modals.

Key Questions

  1. Filament Version:
    • Confirmed compatibility with Filament v4? (Last release: 2026-06-11 suggests active maintenance.)
    • Any known issues with Filament v3 or v5?
  2. Performance:
    • How does the component scale with large disabled date ranges (e.g., 10,000+ dates)?
    • Memory/CPU impact of Day.js vs. native PHP Carbon for date calculations?
  3. Customization:
    • Can the Alpine.js logic be extended (e.g., custom validation, tooltips) without forking?
    • Support for server-side date ranges (e.g., Elasticsearch, PostgreSQL tsrange)?
  4. Testing:
    • Unit/integration tests available? (Repository shows CI but no public test suite link.)
    • Edge cases tested (e.g., invalid inputs, timezone transitions, leap years)?
  5. Roadmap:
    • Planned features (e.g., recurring date ranges, relative time presets like "Last 30 Days")?
    • Deprecation timeline for Filament v4 support?

Integration Approach

Stack Fit

  • Laravel/PHP: Native Carbon integration reduces serialization overhead. Day.js aligns with modern JS tooling.
  • Filament v4: First-class support for both fields (forms) and filters (tables/resources).
  • Livewire: Event-driven API (apply.daterangepicker) enables real-time updates without page reloads.
  • Alpine.js: Lightweight (~7KB) and compatible with Filament’s existing Alpine usage.

Migration Path

  1. Assessment Phase:
    • Audit existing date-range inputs/filters (e.g., jQuery DateRangePicker, custom Carbon logic).
    • Identify gaps (e.g., missing time picker, localization needs).
  2. Pilot Integration:
    • Replace 1–2 critical date-range fields/filters in a non-production environment.
    • Test with:
      • Day/Month/Year pickers (all modes).
      • Time picker (24-hour format, increments).
      • Presets (e.g., "Last 7 Days").
      • Custom queries (e.g., whereBetween).
  3. Gradual Rollout:
    • Phase 1: Fields (forms, profiles).
    • Phase 2: Filters (tables, resources).
    • Phase 3: Custom events (Livewire/JS hooks).
  4. Fallback Plan:
    • Maintain legacy jQuery/Moment.js pickers for unsupported browsers (e.g., IE11).
    • Feature flags for gradual adoption.

Compatibility

Component Compatibility Notes
Filament v4 ✅ Full support Tested with Filament’s latest stable.
Livewire ✅ Event-driven integration Use wire:model or custom events.
Carbon ✅ Native support No manual conversion needed.
Day.js ✅ Localization, parsing Publish translations if needed.
Alpine.js ✅ No conflicts with Filament’s existing usage Lightweight (~7KB).
Tailwind CSS ✅ Filament v4 styling compatibility Dark/light mode support.
jQuery ❌ Deprecated (replaced by Alpine.js) Migration required for v3.x users.

Sequencing

  1. Core Fields:
    • Replace basic date-range inputs (e.g., text fields with manual date entry).
  2. Filters:
    • Migrate table/resource filters (e.g., whereBetween queries).
  3. Advanced Features:
    • Time pickers, presets, custom events.
  4. Localization:
    • Publish translations if using non-English locales.
  5. Testing:
    • Validate edge cases (timezones, disabled dates, invalid inputs).

Operational Impact

Maintenance

  • Pros:
    • MIT License: No vendor lock-in.
    • Active Development: Last release 2026-06-11 (177 stars, 0 dependents suggests niche but maintained).
    • Minimal Boilerplate: No config files or service providers.
  • Cons:
    • Dependency Updates: Alpine.js/Day.js/Floating UI may require occasional updates.
    • Customization: Extending Alpine.js logic may require JS knowledge.
    • Filament Versioning: Risk if Filament v4 deprecates underlying APIs.

Support

  • Community:
    • GitHub issues/PRs active (e.g., recent fixes for Romanian translations, month picker stability).
    • No official support channel (rely on GitHub discussions).
  • Debugging:
    • Fields/Filters: Filament’s error handling applies.
    • Alpine.js: Debug with browser dev tools (e.g., x-data inspection).
    • Day.js: Use console.log in custom event listeners.
  • Fallback:
    • Revert to legacy jQuery/Moment.js pickers if critical bugs arise.

Scaling

  • Performance:
    • Day.js: Faster than Moment.js for parsing/manipulation (benchmarked in the repo).
    • Disabled Dates: Avoid large arrays; use minDate/maxDate constraints instead.
    • Teleporting: May impact DOM performance in deeply nested modals (test with Lighthouse).
  • Concurrency:
    • Livewire’s wire:model handles concurrent edits; no race conditions expected.
  • Database:
    • Query Optimization: Ensure whereBetween uses indexes on date columns.
    • Timezones: Store UTC in DB, convert to user timezone on display.

Failure Modes

Failure Scenario Impact Mitigation
Alpine.js/Day.js JS errors Broken UI Polyfill for legacy browsers.
Timezone mismatches Incorrect date filtering Enforce UTC in DB, convert on display.
Large disabled date ranges Slow rendering Use minDate/maxDate instead.
Custom event conflicts Unintended side effects Namespace events (e.g., apply.myapp.daterangepicker).
Filament v4 API changes Integration breaks Monitor Filament release notes.

Ramp-Up

  • Learning Curve:
    • Low for Basic Use: DateRangePicker::make() or DateRangeFilter::make().
    • Moderate for Advanced: Custom events, Alpine.js extensions, or complex queries.
  • Documentation:
    • Strengths: Comprehensive README with examples, screenshots, and migration guides.
    • Gaps: No API reference for custom events or Alpine.js internals.
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.
codifyo/ts-generator-bundle
andydefer/laravel-cluster
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky
spatie/mailcoach-vapor