Group actions:
Id Name Birthday Action
201 Crazy Copperhead 1. 7. 1978
202 Smiling Shark 11. 2. 1950
203 Amused Ape 10. 6. 1996
204 Concerned Cow 9. 7. 1989
205 Worrisome Wren 22. 5. 1953
206 Romantic Chocobo Preacher 19. 10. 1987
207 Inappropriate Pinball - The Gathering Storm 26. 9. 1992
208 World of Graveyard Explosion 14. 8. 1986
209 Revenge of the Math Saloon 21. 11. 1958
210 Search for the Bowling Slaughter 19. 3. 1987
211 Bewildering Amish Train 20. 2. 1995
212 Thoughtless Thrush 20. 12. 1972
213 Atomic STD Rush 3. 6. 1985
214 Virtua Architecture Squadron 7. 9. 1998
215 Wicked Wasp 7. 10. 1942
216 Vast Vulture 25. 12. 1986
217 Yucky Yak 23. 8. 1938
218 Hindu Wheelchair City 17. 10. 1995
219 Foolish Fly 6. 2. 1968
220 Homely Hornet 14. 12. 1950
( Items: 201 - 220 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;
}