Release Notes โ
What is new in PowerGrid 7. For every breaking change and migration snippet, use the Upgrade Guide.
PowerGrid 7 โ
Themes are built from section methods and inherit from each other. Inline editing, toggles, export, tabs, and truncation are plugins. Sorting, filtering, and paging update only the parts of the table that changed.
Requirements โ
| Requirement | v6 | v7 |
|---|---|---|
| PHP | 8.2+ | 8.3+ |
| Laravel | 10+ | 12+ (13 is supported) |
| Livewire | 3.5.4+ | 4.0+ |
| Tailwind CSS | v3 or v4 | v4 |
composer require power-components/livewire-powergrid:^7.0 also installs power-components/turbine and power-components/partials.
New Features โ
Unified Theme Architecture โ
struct() only sets the base view. Tokens live in section methods: layout(), header(), table(), footer(), cols(), tabs(), filter(), editable(), and toggleable(). A child theme sets $parentTheme and overrides only the sections it changes.
DaisyUI ships no Blade files โ it reuses Tailwind markup and changes tokens. Flux has <flux:*> Blade files only where the HTML differs.
Restyle a few tokens with theme_overrides in the config, or write a plain-array theme with ArrayTheme. See Custom Theme.
Theme Registry โ
config('livewire-powergrid.theme') accepts a name from PowerGridManager::DEFAULT_THEMES (tailwind, daisyui, flux) or an FQCN:
'theme' => 'tailwind',
// 'theme' => 'daisyui',
// 'theme' => 'flux',
// 'theme' => \PowerComponents\LivewirePowerGrid\Themes\Tailwind::class,Register your own name:
use App\PowerGridThemes\BrandTheme;
use PowerComponents\LivewirePowerGrid\PowerGridManager;
public function boot(): void
{
PowerGridManager::registerTheme('brand', BrandTheme::class);
}Modular Plugin System โ
PowerGridManager::DEFAULT_PLUGINS is always registered. PowerGridManager::plugins() merges extras on top and never drops the defaults:
| Plugin | What it adds |
|---|---|
EditablePlugin | Column::editOnClick() |
ToggleablePlugin | Column::toggleable() |
FlatpickrPlugin | Date and date-time filters |
MultiSelectPlugin | Multi-select filters with TomSelect or SlimSelect |
ExportPlugin | Header export UI when PowerGrid::exportable() is set |
FilterBuilderPlugin | AND / OR filter modal |
TabsPlugin | Status tabs above the toolbar |
TruncatePlugin | Column::limit() and Column::tooltip() |
See Plugins.
Filter Panels โ
inlineโ inside the table, live and debounceddropdownโ popover on a Filter button, committed on Applyflyoutโ side drawer, committed on Apply
See Filters.
Partials and Hot Zones โ
power-components/partials updates only the fragments that changed. See Partials and Hot Zones.
Server-Side Action Rendering โ
Row and header actions render as Blade on the server. window.pgActions and window.pgActionsHeader are gone.
PowerGrid Lite โ
<x-pg-*> Blade components use the active theme for simple tables that do not need the full engine. See PowerGrid Lite.
Status Tabs โ
PowerGrid::tabs() adds a themed tab strip above the toolbar. classes() restyles it per grid. See Tabs.
Filter Builder โ
PowerGrid::filterBuilder() opens a modal where users compose AND / OR conditions from your filters() definitions. See Filter Builder.
Configurable Header Buttons โ
Header buttons resolve icon, title, and label from setUp(), then the theme token, then the package default. An icon is a Blade component name; an unknown one renders nothing. See Header and Footer.
Laravel Boost Skills โ
Agent Skills for Laravel Boost ship in resources/boost/skills: powergrid-theme, upgrade-theme-v6-to-v7, and create-powergrid-plugin. See AI Tools and Skills.
Portable Grid Definitions โ
If the same grid also feeds Inertia or a REST endpoint, describe it once and swap the adapter. See Portable Grid Definitions.
Other Changes โ
- Plain string field values are escaped. Return
HtmlStringfor markup, or setescape_closure_fieldstofalseto keep v6 behavior. max_per_page(default1000) caps the rows a page loads, including "All".- Changing rows per page keeps the selected rows.
Removed in v7 โ
See the Upgrade Guide for replacements.
- Bootstrap 5 theme and
Themes\Base PowerGrid::lazy()load-more API (Livewire#[Lazy]still works)- Laravel Pulse integration
WithExporttrait (PowerGrid::exportable()is enough)- OpenSpout 4 export driver
- Built-in batch-export progress UI โ use
->progressView() withSum(),withCount(),withAvg(),withMin(),withMax()โ usesummarize()/withSummary()theme_style()โ usetheme().isBootstrap5()/isTailwind()โ useinstanceofpg-primary-*โ Tailwind usesaccent-*.pg-secondary-*still exists intailwind4.csswindow.pgActions/window.pgActionsHeader- Nested Livewire
powergrid-detail - View namespace
components.frameworks.* filter_attributes(usefilter_wire)- Bundled TomSelect
- Tailwind 3 and the pre-built
dist/bundles
Unchanged Core API โ
datasource(),fields(),columns(),filters(),setUp()Column::make()/Column::add()Button::add()fluent API- Filter types: InputText, Boolean, Select, MultiSelect, Number, DatePicker, DateTimePicker (
$filtersis now keyed by field) actions()andactionRules()- Sorting, searching, pagination
- Persist drivers (cookies, session, cache). Filters saved by v6 are not applied
- Cache configuration
- Lifecycle hooks
transformQuery,transformRows,transformActions
