Download the PHP package mokhosh/filament-kanban without Composer
On this page you can find all versions of the php package mokhosh/filament-kanban. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mokhosh/filament-kanban
More information about mokhosh/filament-kanban
Files in mokhosh/filament-kanban
Package filament-kanban
Short Description Add kanban boards to your Filament pages
License MIT
Homepage https://github.com/mokhosh/filament-kanban
Informations about the package filament-kanban
Add kanban boards to your Filament pages
Easily add Kanban board pages to your Filament panels.
Installation
You can install the package via composer:
Publish the assets so the styles are correct:
Before You Start
[!IMPORTANT]
You should have someModel
with astatus
column. This column can be calledstatus
in the database or anything else.
I'm also assuming there's a title
column on your model, but you can have name
or any other column to represent a title.
I recommend you create a string backed Enum
to define your statuses.
You can use our IsKanbanStatus
trait, so you can easily transform your enum cases for the Kanban board using the statuses
method on your enum.
I recommend you cast the status
attribute on your Model
to the enum that you have created.
[!TIP] I also recommend you use the Spatie Eloquent Sortable package on your
Model
, and we will magically add sorting abilities to your Kanban boards.
Usage
You can create a new Kanban board called UsersKanbanBoard
using this artisan command:
This creates a good starting point for your Kanban board. You can customize the Kanban board to your liking.
You should override the model
property, so we can load your records.
You should also override the statusEnum
property, which defines your statuses.
Upgrade Guide
If you have version 1.x on your application, and you want to upgrade to version 2.x, here is your checklist:
- [ ] You need to override
$model
and$statusEnum
as mentioned in the last part - [ ] If you have published
kanban-record.blade.php
view, you can use$record
as aModel
instance instead of anarray
. - [ ] If you're overriding
KanbanBoard
methods just to do the default behaviour, you can safely remove them now. You should be able to get away with overriding 0 methods, if you don't have special requirements 🥳
Advanced Usage
You can override the records
method, to customize how the records or items that you want to see on your board are retrieved.
If you don't want to define an Enum
for your statuses, or you have a special logic for retrieving your statuses, you can override the statuses
method:
You can also override these methods to change your board's behavior when records are dragged and dropped:
onStatusChanged
which defines what happens when a record is moved between statuses.onSortChanged
which defines what happens when a record is moved inside the same status.
Customizing the Status Enum
If you add IsKanbanStatus
to your status Enum
, this trait adds a static statuses()
method to your enum that will return the statuses defined in your enum in the appropriate format.
If you don't want all cases of your enum to be present on the board, you can override this method and return a subset of cases:
IsKanbanStatus
uses the value
of your cases for the title
of your statuses. You can customize how the title is retrieved as well:
Edit modal
Disabling the modal
Edit modal is enabled by default, and you can show it by clicking on records.
If you need to disable the edit modal override this property:
Edit modal form schema
You can define the edit modal form schema by overriding this method:
As you can see you have access to the id
of the record being edited, if that's helpful in building your schema.
Customizing edit form submit action
You can define what happens when the edit form is submitted by overriding this method:
The data
array contains the form data, and the state
array contains the full record data.
Customizing modal's appearance
You can customize modal's title, size and the labels for save and cancel buttons, or use Filament's slide-over instead of a modal:
Customization
Changing the navigation icon
Changing the model property that's used as the title
Changing the model property that's used as the status
Customizing views
You can publish the views using this artisan command:
I recommend you delete the files that you don't intend to customize and keep the ones you want to change. This way you will get any possible future updates for the original views.
The above method will replace the views for all Kanban boards in your applications.
Alternatively, you might want to change views for one of your boards. You can override each view by overriding these properties:
Flashing Recently Updated Records
You get some visual feedback when a record has been just updated.
If you're also using Spatie Eloquent Sortable you might experience all records being flashed at the same time. This is because Eloquent Sortable updates the order_column
of all models when the sort changes.
In order to fix that, publish their config and set ignore_timestamps
to true
.
Video Tutorial
Are you a visual learner? I have created some Youtube videos to get you started with the package:
[!WARNING] These videos are recorded with version 1.x of the package. It is now much simpler to use the package, and requires much less code from you.
Hopefully, version 2.x is simple enough to not require videos, but you can still learn a thing or two from these.
Demos and Examples
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
TODO
- [ ] remove deprecated recently updated trait
- [ ] stop passing record to view for recordClick
- [ ] use filament actions for edit modal
Credits
- Mo Khosh
- All Contributors
- This original idea and structure of this package borrows heavily from David Vincent's filament-kanban-board
License
The MIT License (MIT). Please see License File for more information.
All versions of filament-kanban with dependencies
filament/filament Version ^3.0
spatie/laravel-package-tools Version ^1.15.0
illuminate/contracts Version ^10.0|^11.0