Group actions:
Id Name Birthday Action
161 Arcane Sailor Smackdown 10. 5. 2000
162 Giant Wedding Trainer 18. 8. 1994
163 Fine Flatworm 10. 8. 1943
164 Clumsy Chicken 28. 5. 1949
165 Aggressive Antelope 9. 11. 1945
166 Obsessive-Compulsive Makeover of the Blood God 19. 4. 1970
167 Beautiful Paintball Nation 19. 9. 1982
168 King of Dragon - The Dark Project 6. 2. 1961
169 Elated Elephant 2. 6. 1973
170 Real Rabbit 19. 6. 1949
171 Angry Ape 22. 9. 1950
172 Encouraging Eland 23. 11. 1966
173 Ancient Devil Stars 9. 2. 1999
174 Viking Sunshine Mania 21. 11. 1985
175 Death-Defying Boxing from Outer Space 9. 10. 1993
176 Stormy Sardine 25. 10. 1991
177 Mega Man Insect Blaster 10. 9. 1938
178 Odd Ocelot 8. 9. 1971
179 Precious Pollan 12. 5. 1974
180 Condemned Crab 26. 6. 1987
( Items: 161 - 180 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;
}