Group actions:
Id Name Birthday Action
301 Ashamed Armadillo 17. 7. 1935
302 Super Cooking Psychiatrist 9. 3. 1981
303 Lazy Kabuki Pioneer 9. 8. 1988
304 Odd Octopus 13. 8. 1948
305 Relieved Raven 22. 8. 1998
306 Legacy of Vocabulary Fest 3. 3. 1944
307 Hazardous Octopus Mania 23. 11. 1957
308 Amused Armadillo 14. 9. 1968
309 Mega Man Puzzle Dystopia 23. 7. 1979
310 Flying Porn Hoedown 25. 10. 1995
311 Sid Meier Flatulence Squadron 9. 10. 1971
312 Vast Vendace 3. 5. 1961
313 Ashamed Albatross 7. 1. 1931
314 Poised Puffin 2. 6. 1989
315 Street Metal Nitro 17. 7. 1972
316 Irritating Lizard - The Lost Levels 9. 2. 1948
317 Ultraviolent Pachinko 2000 20. 7. 1948
318 Insane Plunger Anarchy 13. 1. 1958
319 Blushing Booby 25. 4. 1969
320 Magnetic Amish Empire 17. 4. 1982
( Items: 301 - 320 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;
}