Group actions:
Id Name Birthday Action
961 Happy Blood Extravaganza 22. 10. 1936
962 Frankenstein Toon Explorer 13. 7. 1942
963 Maniac Vocabulary Inspector 22. 3. 1981
964 College Alien Task Force 24. 3. 1955
965 Shiny Shrike 12. 4. 1935
966 Healthy Horse 19. 11. 1935
967 Misty Manatee 1. 11. 1959
968 Disney Night Conflict 11. 4. 1930
969 Blazing Jackhammer Crusader 23. 5. 1986
970 Victorious Vendace 18. 3. 1985
971 Panzer Gun Bandits 16. 4. 1956
972 Fierce Frog 3. 4. 1989
973 Bling Bling Skate Crusader 24. 10. 1991
974 Average Albatross 22. 7. 1941
975 Twisted Deer Hunter Posse 6. 1. 1985
976 Intellectual Spelling Warfare 27. 10. 1942
977 Exquisite Quiz Roundup 12. 6. 1970
978 All-Star Bible Kid 24. 6. 1930
979 Mysterious Monkey 2. 8. 1952
980 Curious Capybara 5. 5. 1930
( Items: 961 - 980 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;
}