Group actions:
Id Name Birthday Action
141 Silent Harpoon Saloon 13. 2. 1995
142 Adventurous Aardvark 27. 10. 1945
143 Disney Bingo - The Dark Project 17. 12. 1943
144 Unsightly Unicorn 15. 6. 1989
145 Prickly Parrot 20. 11. 1990
146 Colorful Corncrake 3. 2. 1953
147 Distinguished Bungie in the Middle East 27. 8. 1942
148 Sinister Banana Interactive 24. 8. 1988
149 Shrunken Dentist Preacher 12. 6. 1978
150 Everybody Hates the Dungeon Massacre 11. 1. 1964
151 Enchanting Eland 2. 9. 1986
152 Obedient Ostrich 8. 2. 1959
153 Surprise Afro Palace 13. 10. 1941
154 Homeless Hedgehog 19. 11. 1959
155 Unforgettable Bazooka Revisited 4. 2. 1964
156 Better Badger 2. 10. 1983
157 Religious Trailer Park EX 6. 7. 1978
158 Quiet Cyborg Smash 25. 5. 1996
159 Crazy Capuchin 25. 2. 1992
160 Fragile Flamingo 6. 5. 1995
( Items: 141 - 160 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;
}