Group actions:
Id Name Birthday Action
501 Ultra Puppy Strikes Back 15. 6. 1980
502 Itchy Impala 6. 12. 1957
503 Dynamite Viking Symphony 16. 12. 1970
504 Final Fantasy Dodgeball in the Salad Kingdom 18. 5. 1930
505 Neon Bass in the Magic Kingdom 22. 12. 1938
506 Scandinavian Desert Attack 10. 8. 1977
507 Depressing Karaoke Z 19. 3. 1952
508 Prehistoric Fashion Crusader 4. 10. 1991
509 Dance Dance Stapler Plus 9. 7. 1986
510 Blue-eyed Batfish 13. 3. 1947
511 Frightened Flamingo 2. 2. 1945
512 Christian Mummy in Busytown 4. 1. 1991
513 Wandering Wolf 16. 10. 1996
514 Art of Blood DS 18. 6. 1983
515 Handsome Hyena 13. 12. 1993
516 Geriatric Skate of Doom 10. 8. 1963
517 Worried Wombat 5. 2. 1940
518 Lair of the Go-Kart Agent 5. 9. 1960
519 Tense Turkey 22. 1. 1960
520 Royal Underwear Syndicate 11. 11. 1941
( Items: 501 - 520 from 1020 )
  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;
}