Group actions:
Id Name Birthday Action
681 Phoenix Wright: Boxing Princess 20. 7. 1958
682 We Love Desert Blaster 7. 5. 1947
683 Intense Balloon Tale 28. 11. 1952
684 Thoughtful Toad 17. 6. 1957
685 Successful Stag 22. 3. 1957
686 Sore Starling 5. 4. 1954
687 Zombie Spelling on the Oregon Trail 22. 10. 1987
688 Generic Jackhammer of Love 23. 8. 1959
689 Tired Tapir 24. 3. 1969
690 Eco-Friendly Helicopter Pimps 28. 10. 1942
691 The Simpsons' Theme Park in Busytown 16. 3. 1955
692 Distinguished Cardboard vs. Capcom 18. 8. 1970
693 Dizzy Dingo 22. 7. 1967
694 Zany Zebra 1. 2. 1988
695 M.C. Escher Blimp Struggle 4. 6. 1979
696 Wrath of the Cardboard Bastards 19. 7. 1964
697 Children of the Manlove from Hell 7. 4. 1944
698 Dead Dolphin 24. 4. 1934
699 Cthulhu Godzilla Dudes 12. 6. 1978
700 Yucky Yacare 2. 6. 1930
( Items: 681 - 700 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;
}