Group actions:
Id Name Birthday Action
81 Selfish Snail 23. 9. 1998
82 Prehistoric Toon Interactive 2. 6. 1969
83 Disturbed Dunlin 21. 3. 1991
84 Itchy Impala 8. 1. 1978
85 Good Gnu 23. 3. 1964
86 Dance Dance Jazz Park 4. 10. 1980
87 Fisher Price Bingo Man 26. 1. 1930
88 Bewildering Batman Revenge 24. 4. 1984
89 Political Scorched Earth Syndrome 11. 6. 1948
90 Naughty Narwhal 8. 12. 1994
91 Xenophobic Xenomorph 10. 2. 1958
92 Cooperative Camel 23. 8. 1935
93 Famous Falcon 20. 5. 1941
94 Samurai Dance Fiasco 17. 6. 1955
95 Terrible Teira 3. 9. 1947
96 Robot Dating Force 6. 1. 1956
97 Better Butterfly 12. 6. 1956
98 Yellowed Yacare 1. 11. 1978
99 Cruel Crayfish 5. 1. 1973
100 Morbidly Obese Maze Playhouse 19. 8. 1953
( Items: 81 - 100 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;
}