See the code below 👇 or see GitHub
public function createComponentGrid(): DataGrid
{
$grid = new DataGrid();
$grid->setDataSource($this->dibiConnection->select('*')->from('users'));
$grid->setItemsPerPageList([20, 50, 100]);
$grid->setRowCallback(function ($item, $tr): void {
$tr->addClass('super-' . $item->id);
});
$grid->addColumnNumber('id', 'Id')
->setAlign('start')
->setSortable();
$grid->addColumnText('name', 'Name')
->setSortable();
$grid->addColumnDateTime('birth_date', 'Birthday');
$grid->addAction('detail', '', 'this')
->setIcon('sun')
->setTitle('Detail');
$grid->addAction('delete', '', 'delete!')
->setIcon('trash')
->setTitle('Delete')
->setClass('btn btn-xs btn-danger ajax')
->setConfirmation(
new StringConfirmation('Do you really want to delete example %s?', 'name')
);
$grid->addGroupAction('Delete')->onSelect[] = [$this, 'groupDelete'];
$grid->allowRowsGroupAction(fn ($item): bool => $item->id % 2 === 0);
$grid->allowRowsAction('delete', fn ($item): bool => $item->id % 3 === 0);
$grid->allowRowsAction('detail', fn ($item): bool => $item->id % 4 === 0);
return $grid;
}