<?php
/**
 * Example 07 — Row Selection Modes
 *
 * Shows the two row selection modes: checkbox and highlight.
 */

declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';

use Italix\DataSets\DataSet;
use Italix\DataSets\Drivers\Tabulator\TabulatorDriver;

$driver = new TabulatorDriver();

// ============================================================================
// Mode 1: Checkbox selection
// ============================================================================
// Adds a checkbox column at the start of the table. Users click checkboxes
// to select/deselect rows. The header checkbox toggles all rows.

$ds1 = new DataSet($usersTable);
$ds1->columns(['name', 'email', 'role']);
$ds1->ajax_url('/api/users');
$ds1->selectable(true);

// Wire selection events
$ds1->on('row_selected', 'onUserSelected');
$ds1->on('row_deselected', 'onUserDeselected');

$script1 = $driver->render_script($ds1, '#checkbox-table', 'checkboxTable');

// ============================================================================
// Mode 2: Highlight selection
// ============================================================================
// No checkbox column. Clicking a row highlights it. Hold Ctrl/Cmd to select
// multiple rows. Good for single-selection workflows.

$ds2 = new DataSet($usersTable);
$ds2->columns(['name', 'email', 'role']);
$ds2->ajax_url('/api/users');
$ds2->selectable('highlight');

$ds2->on('row_selected', 'onUserSelected');

$script2 = $driver->render_script($ds2, '#highlight-table', 'highlightTable');

?>
<h3>Checkbox Selection</h3>
<div id="checkbox-table"></div>

<h3>Highlight Selection</h3>
<div id="highlight-table"></div>

<script>
function onUserSelected(rowData, row, event) {
    console.log('Selected:', rowData.name);
}

function onUserDeselected(rowData, row, event) {
    console.log('Deselected:', rowData.name);
}

<?= $script1 ?>
<?= $script2 ?>
</script>