- How do I integrate Filament TimeMatrix into an existing Laravel project using Filament 5?
- Run `composer require konnco/filament-timematrix` and add the `TimeMatrix` component to your Filament form using `TimeMatrix::make('schedule')`. Ensure your Laravel version is 10.0 or 11.0, and Filament is 3.0+. The package auto-detects your app’s locale and timezone via Carbon.
- Can I customize the hour range or days displayed in the time matrix?
- Yes, use methods like `->hours(9, 17)` for custom ranges or `->businessHours()` for predefined 9 AM–5 PM slots. To restrict days, pass an array of `Day` enum values (e.g., `Day::MONDAY`) or Carbon constants. Shortcuts like `->weekdays()` or `->weekend()` simplify common use cases.
- Does Filament TimeMatrix support dark mode and localization?
- Absolutely. The package leverages Filament 5’s theming system for dark mode and Carbon for multi-language support. Set locales with `->locale('en', 'short')` or `->locale('id', 'long')` to display days/hours in your preferred format. Timezone handling aligns with Laravel’s default settings.
- What Laravel and Filament versions are officially supported?
- Filament TimeMatrix requires **Laravel 10/11+** and **Filament 3.0+**, with explicit support for Filament 5. The package uses Carbon 2.0/3.0 for timezone/locale consistency. Check the [changelog](https://github.com/konnco/filament-timematrix) for version-specific updates, as Filament 5 may introduce breaking changes.
- How does the new `infolist` component work, and can it replace read-only schedule displays?
- The `infolist` component reuses the time matrix logic to display pre-selected schedules in a read-only format, reducing redundancy. It’s ideal for dashboards (e.g., ‘Employee Availability’) but requires manual integration. Test serialization/deserialization if your data flows between the form and infolist differently.
- Is there server-side validation for time slot conflicts or business rules?
- Yes, the package includes a facade for validation and manipulation, ensuring server-side integrity (e.g., shift conflicts, availability rules). Use it to enforce custom logic like ‘no overlapping shifts’ or ‘minimum 4-hour blocks.’ The facade works with both the form and infolist components.
- Will Filament TimeMatrix work with Filament 3/4, or do I need to upgrade to Filament 5?
- While the package supports Filament 3.0+, **Filament 5+ is recommended** for full feature parity, including the `infolist` component and modern theming. Upgrade paths are documented, but audit your `composer.json` for Filament version constraints. Teams on Filament 3/4 may face compatibility risks with future updates.
- Can I use Filament TimeMatrix for collaborative editing (e.g., team shift approvals)?
- The package relies on Filament’s form state for real-time updates, which isn’t ideal for collaborative editing like Google Calendar. For multi-user workflows, consider adding custom JavaScript (e.g., WebSockets) or pairing with a frontend library like FullCalendar for live sync.
- How do I handle large datasets (e.g., weekly 24/7 schedules) without performance issues?
- Benchmark the `infolist` component with your expected dataset size, as rendering large matrices may impact page load. Use `->columnSpanFull()` for better layout control and consider lazy-loading or pagination if displaying thousands of slots. The form component is optimized for interactivity, not static displays.
- Are there alternatives to Filament TimeMatrix for Laravel time-scheduling needs?
- For Filament users, alternatives include custom FullCalendar integration or packages like `spatie/laravel-calendar`. If you’re not using Filament, consider Nova’s built-in scheduling or standalone libraries like `mattstauffer/laravel-timezone`. Evaluate whether you need Filament’s admin panel integration or frontend flexibility.