Group actions:
Id Name Birthday Action
581 Children of the Donkey Arena 24. 9. 1988
582 A Boy and His Dog Strikes Again 10. 5. 1945
583 Intelligent Catapult Trader 21. 7. 1978
584 Big Terrorist Conquest 11. 7. 1977
585 Forgotten Pinball Gone Wild 14. 7. 1947
586 Envious Elephant 26. 8. 1942
587 Amused Albatross 26. 11. 1962
588 Amused Albatross 14. 10. 1968
589 Omega Sunshine Hell 23. 4. 1976
590 Communist Stick Explosion 15. 8. 1943
591 Wooden Penguin Slayer 19. 9. 1996
592 Little Karaoke Adventure 26. 6. 1963
593 John Romero Army Planet 25. 9. 1938
594 Combative Constrictor 25. 9. 1982
595 Pixellated Flatulence Daredevils 27. 12. 1960
596 Bonk Dance Demolition 22. 3. 1945
597 Secret of the Vocabulary Wranglers 10. 4. 1961
598 Easy Eland 18. 9. 1967
599 Sparkling Sheep 4. 9. 1956
600 Maniac Software in Middle-Earth 22. 12. 1998
( Items: 581 - 600 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;
}