function($prop) { // Generate unique ID for this table instance $tableId = $prop['id'] ?? 'data-grid-' . uniqid(); $data = $prop['items'] ?? []; $columns = $prop['columns'] ?? null; $options = $prop['options'] ?? []; // Auto-generate columns if not provided if (!$columns && !empty($data)) { $columns = []; $firstItem = reset($data); if (is_array($firstItem)) { foreach (array_keys($firstItem) as $key) { $columns[] = [ 'field' => $key, 'headerName' => ucfirst(str_replace('_', ' ', $key)), 'sortable' => true, 'filter' => true, 'resizable' => true ]; } } } // Default grid options (Community edition compatible) $defaultOptions = [ 'pagination' => true, 'paginationPageSize' => 20, 'suppressMenuHide' => true, 'animateRows' => true, 'defaultColDef' => [ 'sortable' => true, 'filter' => true, 'resizable' => true, 'minWidth' => 100 ] ]; $gridOptions = array_merge($defaultOptions, $options); $gridOptions['columnDefs'] = $columns; $gridOptions['rowData'] = $data; ?>