pjedesigns/filament-nested-set-table
A Filament table package for Laravel nested set models, making hierarchical records easy to browse and manage in your admin panel with a clean, tree-structured table UI.
This release is the first one with a usable "focused" reorder experience, so start there rather than wiring the reorder UI into your own resource.
composer require <vendor>/<package>
php artisan vendor:publish --tag="<package>-migrations"
php artisan migrate
Category) and make sure parent_id, _lft, _rgt, depth (or whatever the package names them) exist.First real use case: a category/menu/org-chart model where editors need to reorganise hierarchy without touching IDs or parent dropdowns. Point them at OrderPage, keep the normal list page for CRUD.
Look first at the README's OrderPage section (updated in this release) and the translation keys file — the UI strings are now externalised, so you can reword the header buttons without forking.
Dedicated OrderPage as the reorder surface. Keep your ListRecords page for search/filter/bulk actions and route power users to OrderPage for structural work. This separation is the main architectural improvement here — the drag-clone fix means the page can now render a full table layout while dragging, so you can keep column alignment consistent between the two views.
Header button workflow. v1.1.0 ships Expand All, Collapse All, Fix Tree, and Back to List. Treat them as the intended editor loop:
If you're registering the page yourself, verify all four actions are wired; if the package exposes them via a page class method, you can selectively hide Fix Tree from non-admins.
Undo via Filament notifications. The undo action is now surfaced through Filament's notification system rather than a bespoke toast. That means:
->duration() or the panel's notification timeout for OrderPage if editors do bulk drags.Max-depth-aware descriptions. The conditional description text keyed off max_depth means you can raise the depth limit and the UI copy adapts. Keep the config value as the single source of truth; don't hardcode depth limits in your own form hints.
Locale coverage. New translation keys ship for the OrderPage UI. If you publish translations, republish or diff them — missing keys fall back to English, but a partial lang/vendor/... directory will show mixed-language headers.
parent_id reference can silently reparent nodes.max_depth config affects both validation and copy. Changing it changes the description text, so screenshots in your internal docs may go stale._lft/_rgt integrity with a scoped query before blaming the UI — a corrupted tree makes drag operations appear to succeed but not persist.getHeaderActions(), table columns, and the query in a subclass rather than editing vendor files. Custom table actions added to OrderPage will appear alongside the new header buttons, not inside them.How can I help you explore Laravel packages today?