rappasoft/laravel-livewire-tables
Laravel Livewire Tables provides dynamic, feature-rich data tables for Laravel Livewire with sorting, searching, filtering, pagination, bulk actions, and Bootstrap/Tailwind support. Build reusable table components backed by Eloquent queries.
These are intentional fixes, but they change existing behavior. Review them before upgrading.
contains, notContains, startsWith, notStartsWith, endsWith, notEndsWith) now use ilike on PostgreSQL instead of like, matching the search box. Queries that previously relied on case-sensitive filtering will return more rows. No other driver is affected — PostgreSQL is the only supported driver whose like is case-sensitive by default.resources/views/components/table/th/bulk-actions.blade.php changed. The "select all" header checkbox now routes through the Alpine setAllSelected() method so setDelaySelectAllEnabled() is honoured, and reads paginationTotalSelectableItemCount instead of paginationTotalItemCount. If you published this view, your copy is unaffected by the upgrade and will keep the old behavior — re-publish it or merge the change by hand to pick up the fix.WireLinkColumn via setIcon(), setIconLeft()/setIconRight(), and setIconAttributes() by @shynne109 in https://github.com/rappasoft/laravel-livewire-tables/pull/2316setBulkActionsRowFilter() excludes rows from bulk actions — filtered rows get no checkbox and are left out of "select all" by @RazvanDrelciuc in https://github.com/rappasoft/laravel-livewire-tables/pull/2303immutable_date/immutable_datetime casts — CarbonImmutable is now formatted directly instead of being coerced to a string and re-parsed by @rappa819 in https://github.com/rappasoft/laravel-livewire-tables/pull/2332ilike instead of like — originally reported and fixed by @ARL-Steve in https://github.com/rappasoft/laravel-livewire-tables/pull/2284, landed via https://github.com/rappasoft/laravel-livewire-tables/pull/2332ilike on PostgreSQL too, extending @ARL-Steve's fix in https://github.com/rappasoft/laravel-livewire-tables/pull/2284 to contains, notContains, startsWith, notStartsWith, endsWith, and notEndsWithsetDelaySelectAllEnabled() is honoured instead of every row being fetched immediately by @matberry in https://github.com/rappasoft/laravel-livewire-tables/pull/2122setShouldRetrieveTotalItemCountDisabled() — avoiding the count() is the point of cursor pagination, but the toggle was only checked for simple pagination by @mattusik in https://github.com/rappasoft/laravel-livewire-tables/pull/2231ReferenceErrors by @shynne109 in https://github.com/rappasoft/laravel-livewire-tables/pull/2320setExcludeDeselectedColumnsFromQuery() is on by @glamax13 in https://github.com/rappasoft/laravel-livewire-tables/pull/2278cancel on the reorder toolbar — seven missing keys (cancel, loading, save, min, max, Bulk Actions Confirm, Select All On Page) are now filled across all 23 affected locale filesform-control on Tailwind when getSearchFieldAttributes() omits the default key — ?? binds looser than &&, so the condition parsed the wrong way^3.0, dropping the dev-main constraint that pulled in Livewire 4 by @rappa819 in https://github.com/rappasoft/laravel-livewire-tables/pull/2332<button> carries type="button" — an untyped button submits the surrounding formFixes
Enhancements
Fixes
Enhancements
Blades
General
Filters
Documentation
Tests
Localization
AlpineJS Variable for Toolbar Dropdowns to force the dropdown to remain open - childElementOpen - https://github.com/rappasoft/laravel-livewire-tables/pull/1076
Added Custom Column Slug method setCustomSlug('') allowing Columns to use non-roman characters in the Column Title - https://github.com/rappasoft/laravel-livewire-tables/pull/1088
Eager loading so anyone can load any type of relationship - https://github.com/rappasoft/laravel-livewire-tables/pull/943
Improved visibility of active page in pagination - https://github.com/rappasoft/laravel-livewire-tables/pull/1096
Pagination methods
Filter Changes - https://github.com/rappasoft/laravel-livewire-tables/pull/1129
Filters
Workflow Changes
Testing
standard or simpleconfigure() method.setCallback().setThSortButtonAttributes() to set attributes for th sort button.setHideConfigurableAreasWhenReorderingStatus() to hide configurable areas when reordering status which now defaults to true.builder() and columns() methods.setAdditionalSelects(array $selects) configuration method.Configurable Areas of the Datatable section of the documentation.Ground Up Rebuild
Secondary Header Functionality on how to implement column search)This release requires re-publishing of assets.
This release requires re-publishing of assets.
if statements.setTableRowClass, setTableRowId, setTableRowAttributes, setTableDataClass, setTableDataId, setTableDataAttributes methods to modify cells and rows depending on data for non-custom rows.text-secondary class from sorting titlekeep-alive and visible.$searchFilterDebounce, $searchFilterDefer, $searchFilterLazy, for defining the search input data binding property. https://github.com/rappasoft/laravel-livewire-tables/pull/211Amending Documentation for Reordering
Adding capabilities & tests for setTrAttributes
Force calculation of even/odd only once in reorder mode
Call internal method for reordering, and pass to configured method to process
Amend AutoInjection/FrontendAsset to ensure it returns the original content correctly
Remove errant disabling of Blade Directives when disabling auto-injection
Amended in-line config documentation
Add setSearchFieldAttributes() and getSearchFieldAttributes()
Add missing pagination tests
Removal of setSearchLazy
Fix for setSearchDebounce
Fix publishing of views
Fix for Bulk Actions dropdown not working in Bootstrap
Fix for Column Select "Select All" not consistently updating
Fix for lazy loading of table
Fix for ColumnSelect falling out of sync, displaying unselectable colums, or persisting cols in query that are not selected
Add setSearchBlur()
Add setSearchThrottle()
Add publish translations
Add prependColumns() and appendColumns() functions
Add documentation for setSearchPlaceholder()
Add setExcludeDeselectedColumnsFromQueryEnabled and setExcludeDeselectedColumnsFromQueryDisabled methods to configure()
Requirements Change
Core Changes
Move sorts, search, selectedColumns out of the traditional $this->{$this->getTableName()}['sorts'] and instead place it directly within the component. This:
Tidying
Features
General
Filters
Livewire 3 Specific
Test Changes
Temporarily removed the sort_events_apply_correctly and filter_events_apply_correctly due to LW3 not using Emit anymore.
Added extra column to the PetsTable -> last_visit and associated test changes to make the counts work. This column is deselected() by default to allow for testing on those methods.
Doc Changes
How can I help you explore Laravel packages today?