Back to Home
Laravel Livewire Tables v3

Features

A dynamic, responsive datatable component for Laravel and Livewire 3 and 4 — searching, sorting, filtering, bulk actions, and more. Every snippet below is real v3 API, and each card links to a live demo.

Column Footers

Add a footer row with computed values — averages, totals, counts — per column via a callback over the visible rows.

->footer(fn($rows) => ...)

Auto Refresh

Refresh the table on an interval in milliseconds. Combine with setRefreshVisible() or setRefreshKeepAlive() to control when polling runs.

->setRefreshTime(10000)

Loading Placeholder

Show a placeholder row while the table fetches data. Customize the text with setLoadingPlaceholderContent().

->setLoadingPlaceholderEnabled()

Sorting & Defaults

Make any column sortable and keep related records together with a default sort applied before user interaction.

->setDefaultSort('active', 'desc')

Row & Cell Styling

Apply conditional classes and attributes to rows and cells based on record data, with setTdAttributes() for individual cells.

->setTrAttributes(fn($row) => ...)

Custom Empty Message

Customize the message shown when the table has no records, or hide the table entirely with setShouldBeHidden().

->setEmptyMessage('No results')

Aggregate Columns

Display relationship aggregates with CountColumn, SumColumn, and AvgColumn — sortable out of the box.

CountColumn::make('Posts')->setDataSource('posts')

ArrayColumn

Render many related records inside a single cell, with a custom separator, wrappers, and per-item output format.

ArrayColumn::make('Tags')->data(fn($v, $row) => ...)

Filters, Bulk Actions & More

The full showcase: a dozen filter types, bulk actions with confirmation, column selection, and reordering in one table.

->setBulkActions(['export' => 'Export'])

Component Configuration

Every table extends DataTableComponent and is configured in one place

public function configure(): void
{
    $this->setPrimaryKey('id')
        ->setPerPageAccepted([10, 25, 50, 100])
        ->setSearchDebounce(500)
        ->setLoadingPlaceholderEnabled()
        ->setEmptyMessage('No results found');
}

More v3 Features

Everything the package ships with today

  • A Dozen Filter Types — Text, Select, MultiSelect, MultiSelectDropdown, Number, NumberRange, Date, DateTime, DateRange, Boolean, and custom Livewire component filters
  • Search Modifiers — Tune search behavior with ->setSearchDefer(), ->setSearchLazy(), ->setSearchBlur(), ->setSearchThrottle(500), or ->setSearchDebounce(500)
  • Drag-and-Drop Reordering — Let users reorder rows with ->setReorderEnabled()
  • Bulk Actions — Select rows and run actions on them, with per-action confirmation via ->setBulkActionConfirms([...])
  • Column Selection — Users choose visible columns, remembered per user with ->setRememberColumnSelectionEnabled()
  • Secondary Header & Footer Rows — Per-column ->secondaryHeader() and ->footer() callbacks, or reuse the header as a footer with ->setUseHeaderAsFooterEnabled()
  • Responsive Column Collapse — Tuck columns behind an expandable row with ->collapseOnMobile() or ->collapseAlways()
  • Filter Pills & Layouts — Show applied filters as pills, and switch between slide-down and popover layouts with ->setFilterLayoutSlideDown() or ->setFilterLayoutPopover()
  • 18 Column Types — Boolean, Date, Image, Icon, Color, Link, WireLink, ButtonGroup, Component, LivewireComponent, ViewComponent, Increment, Array, and aggregate columns
  • Livewire 3 and 4 Support — Built for Livewire 3.x and 4.x on Laravel 10 and above, with Tailwind and Bootstrap themes

Built with ❤️ by Rappasoft

Laravel 12.70.0 • PHP 8.4 • Livewire v4.4.7