Group actions:
Id Name Birthday Action
121 Revenge of the Kabuki in the Bayou 13. 8. 1979
122 Telekinetic Police from Hell 5. 9. 1961
123 Allied Racing 25th Anniversary Edition 22. 2. 1974
124 Rockin' Fun from Mars 18. 4. 1954
125 Relieved Ray 18. 3. 1993
126 Ho-Hum Pogo Annihilation 8. 7. 1961
127 Inappropriate Furry Roundup 24. 10. 1961
128 Blasphemous Fishing Man 27. 4. 1980
129 Pixellated Kart Fighter 14. 8. 1968
130 Hilarious Herring 12. 9. 1971
131 Irritating Boxing Runner 18. 3. 2000
132 Repulsive Rhinoceros 24. 10. 1947
133 Cautious Corncrake 12. 9. 1978
134 Orbital Jungle Legend 20. 11. 1980
135 Subatomic Goth Stadium 9. 5. 1982
136 Crazy Cowfish 18. 4. 1995
137 Anxious Albatross 5. 1. 1936
138 Elegant Emu 8. 10. 1969
139 Spectacular Shadow Returns 23. 3. 1979
140 The Robot in Middle-Earth 9. 3. 1980
( Items: 121 - 140 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;
}