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 Tree Table Laravel Package

kisame76/filament-tree-table

Expandable parent/child tree rows for Filament v4 and v5 tables. Show top-level parents, expand with a chevron to reveal inline child rows while search and filters stay correct. Includes expand-all/collapse-all actions and optional pagination by root.

View on GitHub
Deep Wiki
Context7
v1.3.1

Changed

  • Requires Filament 4.3 or newer on the v4 line (^4.3||^5.0, was ^4.0||^5.0). The column-manager tests exercise the toggle column against Table::persistColumnsInSession(), which Filament only added in 4.3.0, so the suite does not run on 4.0 to 4.2 and 4.3 is the oldest version actually tested. Filament 5 is unaffected, and Composer already installs the newest 4.x for anyone upgrading.

Added

  • SECURITY.md with a reporting address and the scope worth reviewing.
  • Tests that mount a table through Livewire and draw it, so the toggle column, the chevrons, the expand-all and collapse-all actions and search are exercised through Filament's own rendering. The existing tests read the query only and never rendered a row.
  • A release workflow: pushing a v* tag publishes the GitHub release, with the notes taken from the matching section of this file. A tag without a section fails instead of publishing an empty release.
  • CI now runs the suite on PHP 8.2 to 8.5 against Laravel 11, 12 and 13 and Filament 4 and 5, plus one run on the lowest versions Composer allows. Workflow actions are pinned to commit SHAs and kept current by Dependabot.
v1.3.0

Added

  • paginateByRoot() — paginate by root node instead of by row, so a family (a root plus all of its currently visible descendants) is never split across a page boundary. Each page carries N roots (the per-page selection) plus all their visible descendants, so the row count per page varies; "Showing X to Y of Z" and the page count refer to roots. Off by default (paginate_by_root config key) to preserve the existing per-row pagination. No effect while the view is flattened (sort/filter/search), under a non-default pagination mode, or with ->paginated(false).
  • Translations — the expand-all / collapse-all action labels are now translatable, with English (en) and German (de) included. Publish the language files with php artisan vendor:publish --tag="filament-tree-table-translations" to add or override locales.

Note

  • The HasExpandableRows contract gained setOrderedKeys() and setPaginateByRoot() (used by the tree internals). Implementations using the InteractsWithExpandableRows trait — the documented setup — get them automatically and need no changes.

Full Changelog: https://github.com/Kisame76/filament-tree-table/compare/v1.2.0...v1.3.0

v1.2.0

Added

  • defaultSort() — set the default sibling order by column name or a Closure(Builder $query, string $direction) (e.g. order by a related/computed value).
  • flattenOnFilter() / flattenOnSearch() — choose whether an active filter/search flattens the tree. Both default to true (previous behaviour); set false to keep the hierarchy.
  • Ancestor-inclusive filtering & search — when the tree is kept, a match is shown with its ancestor path (auto-expanded); non-matching ancestors are dimmed as context (.ftt-context).

Fixed

  • Column sort works inside the tree — sibling ordering delegates to the column, so ->sortable(query: ...) closures and relationship/computed columns are honoured instead of ignored.
  • Filter-driven expansion is consistent — chevrons go non-interactive and expand/collapse-all hide while a filter/search drives expansion.
  • No more infinite recursion / OOM when searching with the tree kept.

Note

  • The HasExpandableRows contract gained internal methods; setups using the InteractsWithExpandableRows trait need no changes.
v1.1.0
  • Tree toggle column pinned first & hidden from the column manager — the chevron column no longer shows up in the toggleableColumns() / reorderableColumns() panel (where it appeared as a nameless, draggable row) and can no longer be reordered or pushed to the back by a persisted column order. It always renders as the first column.

Full Changelog: https://github.com/Kisame76/filament-tree-table/compare/v1.0.0...v1.1.0

v1.0.0

Changelog

All notable changes to filament-tree-table will be documented in this file.

v1.0.0 - 2026-06-17

Initial release.

  • Expandable parent/child tree rows for Filament v4 & v5 tables — sub-rows render inline as real table rows, keeping all your columns.
  • Search & filter aware: while filtering the tree flattens to a list of every match, so nothing stays hidden behind a collapsed parent.
  • Configurable, icon-free clarity — independent toggles: grid stepping, corner-arrow glyph on children, coloured accent bar, per-depth background tint. Fully themeable via CSS variables.
  • Expand-all / collapse-all header actions.
  • Hierarchical (Jira-style) column sort that keeps the tree grouped, or flatten-on-sort for a flat sorted list.
  • Database-agnostic ordering (PostgreSQL / MySQL / SQLite).
  • No stored level/depth column required — depth is derived from parent_id.
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