Group actions:
Id Name Birthday Action
721 Depressed Dragonfly 6. 4. 1978
722 International Shock - The Card Game 17. 1. 1990
723 Prickly Pollan 28. 9. 1977
724 Amphibious Shopping Summit 21. 3. 1991
725 Creepy Cheetah 11. 1. 1992
726 The Great Katana Starring Mickey Mouse 14. 5. 1930
727 Arrogant Addax 3. 4. 1930
728 Mystic Chef Encounter 8. 4. 1986
729 Clumsy Caterpillar 6. 8. 1932
730 Madden Samurai Marines 28. 1. 1957
731 Stormy Sandpiper 18. 4. 1951
732 Sim Worm vs. Street Fighter 27. 5. 1948
733 Bizarre Insect Struggle 3. 4. 1978
734 Nutty Newt 13. 3. 1984
735 Confused Crab 4. 3. 1966
736 Bonk Bong in Middle-Earth 13. 8. 1974
737 Presidential Square Dancing Simulator 2. 5. 1994
738 Jewish Prison Desperadoes 11. 2. 1983
739 Black Bug 16. 11. 1973
740 Inexpensive Impala 11. 7. 1988
( Items: 721 - 740 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;
}