{"id":29585064,"url":"https://github.com/picobaz/gridview","last_synced_at":"2026-01-20T16:26:07.592Z","repository":{"id":304814976,"uuid":"1020098373","full_name":"PicoBaz/gridview","owner":"PicoBaz","description":"GridView: A flexible Laravel data grid component for dynamic tables. Supports pagination, filtering, sorting, and exports to CSV/Excel/PDF. Build sleek data displays with ease!","archived":false,"fork":false,"pushed_at":"2025-11-15T10:41:31.000Z","size":38,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-15T12:21:59.900Z","etag":null,"topics":["csv-export","data-grid","excel-export","filtering","laravel","pagination","pdf-export","php","sorting","table-widget"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PicoBaz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-15T10:38:34.000Z","updated_at":"2025-11-15T10:41:34.000Z","dependencies_parsed_at":"2025-07-16T01:05:28.378Z","dependency_job_id":"5ad1e7fc-6685-48a8-8118-f269c32adde2","html_url":"https://github.com/PicoBaz/gridview","commit_stats":null,"previous_names":["picobaz/gridview"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/PicoBaz/gridview","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PicoBaz%2Fgridview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PicoBaz%2Fgridview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PicoBaz%2Fgridview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PicoBaz%2Fgridview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PicoBaz","download_url":"https://codeload.github.com/PicoBaz/gridview/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PicoBaz%2Fgridview/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28607021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv-export","data-grid","excel-export","filtering","laravel","pagination","pdf-export","php","sorting","table-widget"],"created_at":"2025-07-20T01:36:20.087Z","updated_at":"2026-01-20T16:26:07.586Z","avatar_url":"https://github.com/PicoBaz.png","language":"PHP","readme":"\u003cdiv align=\"center\"\u003e\n\n# 🎯 GridView\n\n### *The Ultimate Data Grid Package for Laravel*\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/picobaz/gridview.svg?style=for-the-badge\u0026logo=packagist)](https://packagist.org/packages/picobaz/gridview)\n[![Total Downloads](https://img.shields.io/packagist/dt/picobaz/gridview.svg?style=for-the-badge\u0026logo=packagist)](https://packagist.org/packages/picobaz/gridview)\n[![License](https://img.shields.io/packagist/l/picobaz/gridview.svg?style=for-the-badge)](https://packagist.org/packages/picobaz/gridview)\n[![PHP Version](https://img.shields.io/packagist/php-v/picobaz/gridview.svg?style=for-the-badge\u0026logo=php)](https://packagist.org/packages/picobaz/gridview)\n[![Laravel Version](https://img.shields.io/badge/Laravel-8%2B%20%7C%209%20%7C%2010%20%7C%2011%20%7C%2012-FF2D20?style=for-the-badge\u0026logo=laravel)](https://laravel.com)\n\n**Build powerful, flexible, and beautiful data tables in Laravel with ease!**\n\n[Installation](#-installation) • [Quick Start](#-quick-start) • [Features](#-features) • [Documentation](#-documentation) • [Examples](#-examples) • [Support](#-support)\n\n---\n\n\u003c/div\u003e\n\n## 🌟 Why GridView?\n\nGridView transforms your boring data tables into **powerful, interactive data grids** with just a few lines of code. Whether you're building an admin panel, a dashboard, or any data-intensive application, GridView has got you covered!\n\n### ✨ Key Highlights\n\n- 🚀 **Lightning Fast** - Optimized for performance with large datasets\n- 🎨 **Beautiful UI** - Modern, responsive design out of the box\n- 🔍 **Advanced Filtering** - Search and filter with ease\n- 📊 **Smart Sorting** - Multi-column sorting support\n- 📤 **Export Anywhere** - CSV, Excel, and PDF exports\n- ✏️ **Inline Editing** - Edit data without leaving the table\n- ☑️ **Bulk Actions** - Perform actions on multiple rows at once\n- 🎯 **Highly Customizable** - Style it your way\n- 📱 **Responsive** - Looks great on all devices\n- 🔐 **Secure** - Built with security best practices\n\n---\n\n## 📦 Installation\n\nInstall via Composer:\n\n```bash\ncomposer require picobaz/gridview\n```\n\n### Publish Assets (Optional)\n\n```bash\n# Publish configuration\nphp artisan vendor:publish --tag=gridview-config\n\n# Publish views (for customization)\nphp artisan vendor:publish --tag=gridview-views\n\n# Publish JavaScript/CSS assets\nphp artisan vendor:publish --tag=gridview-assets\n```\n\n---\n\n## 🚀 Quick Start\n\n### Step 1: Create a Search Model\n\nGenerate a search model for your data:\n\n```bash\nphp artisan make:gridview-search UserSearch\n```\n\nThis creates `app/SearchModel/UserSearch.php`:\n\n```php\n\u003c?php\n\nnamespace App\\SearchModel;\n\nuse App\\Models\\User;\nuse Picobaz\\GridView\\Contracts\\SearchContract;\nuse Picobaz\\GridView\\Traits\\BaseSearch;\n\nclass UserSearch extends User implements SearchContract\n{\n    use BaseSearch;\n\n    public function fields(): array\n    {\n        return ['name', 'email', 'status', 'created_at'];\n    }\n\n    public function searchRules(): array\n    {\n        return [\n            'name' =\u003e function ($query, $value) {\n                return $query-\u003ewhere('name', 'LIKE', \"%{$value}%\");\n            },\n            'email' =\u003e function ($query, $value) {\n                return $query-\u003ewhere('email', 'LIKE', \"%{$value}%\");\n            },\n            'status' =\u003e function ($query, $value) {\n                return $query-\u003ewhere('status', $value);\n            },\n        ];\n    }\n}\n```\n\n### Step 2: Controller Setup\n\n```php\nuse App\\Models\\User;\nuse App\\SearchModel\\UserSearch;\n\npublic function index()\n{\n    $users = User::query();\n    $searchModel = new UserSearch();\n    $dataProvider = $searchModel-\u003esearch($users);\n\n    return view('users.index', compact('searchModel', 'dataProvider'));\n}\n```\n\n### Step 3: Blade View\n\n```php\n{!! gridview([\n    'dataProvider' =\u003e $dataProvider,\n    'searchModel' =\u003e $searchModel,\n    'export' =\u003e true,\n    'columns' =\u003e [\n        // Serial number column\n        ['class' =\u003e \\Picobaz\\GridView\\SerialColumns::class],\n        \n        // Bulk action checkbox\n        [\n            'class' =\u003e \\Picobaz\\GridView\\BulkActionColumn::class,\n            'checkboxOptions' =\u003e [\n                'name' =\u003e 'selection[]',\n                'class' =\u003e 'gridview-checkbox'\n            ]\n        ],\n        \n        // Regular columns\n        [\n            'label' =\u003e 'Name',\n            'attribute' =\u003e 'name',\n            'sortable' =\u003e true,\n        ],\n        [\n            'label' =\u003e 'Email',\n            'attribute' =\u003e 'email',\n            'sortable' =\u003e true,\n        ],\n        \n        // Inline editable column\n        [\n            'label' =\u003e 'Status',\n            'attribute' =\u003e 'status',\n            'editable' =\u003e true,\n            'editableType' =\u003e 'select',\n            'editableOptions' =\u003e [\n                'source' =\u003e [\n                    ['value' =\u003e 'active', 'text' =\u003e 'Active'],\n                    ['value' =\u003e 'inactive', 'text' =\u003e 'Inactive']\n                ]\n            ]\n        ],\n        \n        // Action buttons\n        [\n            'label' =\u003e 'Actions',\n            'value' =\u003e function($model) {\n                return '\n                    \u003ca href=\"'.route('users.edit', $model-\u003eid).'\" class=\"btn btn-sm btn-primary\"\u003e\n                        \u003ci class=\"fa fa-edit\"\u003e\u003c/i\u003e Edit\n                    \u003c/a\u003e\n                    \u003ca href=\"'.route('users.show', $model-\u003eid).'\" class=\"btn btn-sm btn-info\"\u003e\n                        \u003ci class=\"fa fa-eye\"\u003e\u003c/i\u003e View\n                    \u003c/a\u003e\n                ';\n            }\n        ],\n    ]\n]) !!}\n\n{{-- Bulk Actions Toolbar --}}\n\u003cdiv class=\"gridview-bulk-toolbar mt-3\" style=\"display: none;\"\u003e\n    \u003cspan class=\"badge badge-info\"\u003e\n        \u003cspan class=\"gridview-selected-count\"\u003e0\u003c/span\u003e items selected\n    \u003c/span\u003e\n    \n    \u003cbutton onclick=\"executeGridViewBulkAction('delete', 'Are you sure?')\" \n            class=\"btn btn-sm btn-danger gridview-bulk-action-btn\"\u003e\n        \u003ci class=\"fa fa-trash\"\u003e\u003c/i\u003e Delete Selected\n    \u003c/button\u003e\n    \n    \u003cbutton onclick=\"executeGridViewBulkAction('activate')\" \n            class=\"btn btn-sm btn-success gridview-bulk-action-btn\"\u003e\n        \u003ci class=\"fa fa-check\"\u003e\u003c/i\u003e Activate\n    \u003c/button\u003e\n\u003c/div\u003e\n\n{{-- Add model class for bulk actions --}}\n\u003cdiv data-gridview-model=\"App\\Models\\User\" style=\"display: none;\"\u003e\u003c/div\u003e\n```\n\n**That's it!** 🎉 You now have a fully functional data grid with filtering, sorting, pagination, and export capabilities!\n\n---\n\n## 🎯 Features\n\n### 📊 Smart Data Table\n\nCreate beautiful, responsive data tables with minimal code:\n\n```php\n{!! gridview([\n    'dataProvider' =\u003e $dataProvider,\n    'searchModel' =\u003e $searchModel,\n    'tableOptions' =\u003e ['class' =\u003e 'table table-striped'],\n    'columns' =\u003e [...]\n]) !!}\n```\n\n### 🔍 Advanced Filtering\n\nFilter data with custom search rules:\n\n```php\npublic function searchRules(): array\n{\n    return [\n        'name' =\u003e function ($query, $value) {\n            return $query-\u003ewhere('name', 'LIKE', \"%{$value}%\");\n        },\n        'category_id' =\u003e function ($query, $value) {\n            return $query-\u003ewhereHas('category', function ($q) use ($value) {\n                $q-\u003ewhere('id', $value);\n            });\n        },\n        'price_range' =\u003e function ($query, $value) {\n            [$min, $max] = explode('-', $value);\n            return $query-\u003ewhereBetween('price', [$min, $max]);\n        },\n    ];\n}\n```\n\n### 📈 Multi-Column Sorting\n\n```php\n[\n    'label' =\u003e 'Name',\n    'attribute' =\u003e 'name',\n    'sortable' =\u003e true,\n]\n```\n\n### 📤 Export to Multiple Formats\n\nExport your data to CSV, Excel, or PDF:\n\n```php\n{!! gridview([\n    'export' =\u003e true,\n    'exportColumns' =\u003e [\n        'Name' =\u003e 'name',\n        'Email' =\u003e 'email',\n        'Status' =\u003e 'status',\n    ]\n]) !!}\n```\n\n### ✏️ Inline Editing (NEW! 🔥)\n\nEdit data directly in the table without navigating away:\n\n```php\n[\n    'label' =\u003e 'Title',\n    'attribute' =\u003e 'title',\n    'editable' =\u003e true,\n    'editableType' =\u003e 'text', // text, number, email, date, select, textarea\n    'editableUrl' =\u003e route('gridview.inline.update'),\n]\n```\n\n**Select dropdown example:**\n\n```php\n[\n    'label' =\u003e 'Status',\n    'attribute' =\u003e 'status',\n    'editable' =\u003e true,\n    'editableType' =\u003e 'select',\n    'editableOptions' =\u003e [\n        'source' =\u003e [\n            ['value' =\u003e 'pending', 'text' =\u003e 'Pending'],\n            ['value' =\u003e 'approved', 'text' =\u003e 'Approved'],\n            ['value' =\u003e 'rejected', 'text' =\u003e 'Rejected']\n        ]\n    ]\n]\n```\n\n### ☑️ Bulk Actions (NEW! 🔥)\n\nPerform actions on multiple rows at once:\n\n```php\n// Add bulk action column\n[\n    'class' =\u003e \\Picobaz\\GridView\\BulkActionColumn::class,\n    'checkboxOptions' =\u003e [\n        'name' =\u003e 'selection[]'\n    ]\n]\n\n// Add bulk action buttons\n\u003cbutton onclick=\"executeGridViewBulkAction('delete', 'Confirm delete?')\"\u003e\n    Delete Selected\n\u003c/button\u003e\n\u003cbutton onclick=\"executeGridViewBulkAction('activate')\"\u003e\n    Activate Selected\n\u003c/button\u003e\n```\n\n### 🎨 Custom Column Rendering\n\n```php\n[\n    'label' =\u003e 'Avatar',\n    'value' =\u003e function($model) {\n        return '\u003cimg src=\"'.$model-\u003eavatar_url.'\" class=\"rounded-circle\" width=\"40\"\u003e';\n    },\n    'format' =\u003e 'raw'\n]\n```\n\n### 🔧 Custom Filters\n\nCreate custom filter views:\n\n```php\n[\n    'label' =\u003e 'Status',\n    'attribute' =\u003e 'status',\n    'filterView' =\u003e 'vendor.gridview.filters.status_filter',\n]\n```\n\n**Custom filter view:**\n\n```blade\n{{-- resources/views/vendor/gridview/filters/status_filter.blade.php --}}\n\u003ctd class=\"filterGrid\"\u003e\n    \u003cselect class=\"form-control filter_field\" name=\"{{ $column['filter']['inputName'] }}\"\u003e\n        \u003coption value=\"\"\u003eAll\u003c/option\u003e\n        \u003coption value=\"active\" {{ $column['filter']['inputValue'] == 'active' ? 'selected' : '' }}\u003e\n            Active\n        \u003c/option\u003e\n        \u003coption value=\"inactive\" {{ $column['filter']['inputValue'] == 'inactive' ? 'selected' : '' }}\u003e\n            Inactive\n        \u003c/option\u003e\n    \u003c/select\u003e\n\u003c/td\u003e\n```\n\n---\n\n## 🎨 Customization\n\n### Styling\n\nCustomize table appearance in `config/gridview.php`:\n\n```php\n'styles' =\u003e [\n    'table_class' =\u003e 'table table-striped table-hover',\n    'header_class' =\u003e 'thead-dark',\n    'row_class' =\u003e 'table-row',\n],\n```\n\n### Pagination\n\n```php\n'pagination' =\u003e [\n    'per_page' =\u003e 30,\n    'per_page_options' =\u003e [10, 20, 30, 50, 100],\n],\n```\n\n### Icons\n\n```php\n'icons' =\u003e [\n    'sort_asc' =\u003e 'fa fa-sort-up',\n    'sort_desc' =\u003e 'fa fa-sort-down',\n    'export' =\u003e 'fa fa-download',\n],\n```\n\n---\n\n## 📚 Advanced Examples\n\n### Example 1: E-commerce Products Grid\n\n```php\n{!! gridview([\n    'dataProvider' =\u003e $dataProvider,\n    'searchModel' =\u003e $searchModel,\n    'export' =\u003e true,\n    'columns' =\u003e [\n        ['class' =\u003e \\Picobaz\\GridView\\SerialColumns::class],\n        ['class' =\u003e \\Picobaz\\GridView\\BulkActionColumn::class],\n        \n        [\n            'label' =\u003e 'Image',\n            'value' =\u003e function($model) {\n                return '\u003cimg src=\"'.$model-\u003eimage_url.'\" width=\"50\" class=\"rounded\"\u003e';\n            },\n            'format' =\u003e 'raw',\n        ],\n        [\n            'label' =\u003e 'Product Name',\n            'attribute' =\u003e 'name',\n            'sortable' =\u003e true,\n            'editable' =\u003e true,\n            'editableType' =\u003e 'text',\n        ],\n        [\n            'label' =\u003e 'Category',\n            'attribute' =\u003e 'category.name',\n            'sortable' =\u003e true,\n        ],\n        [\n            'label' =\u003e 'Price',\n            'attribute' =\u003e 'price',\n            'sortable' =\u003e true,\n            'editable' =\u003e true,\n            'editableType' =\u003e 'number',\n            'value' =\u003e function($model) {\n                return '$' . number_format($model-\u003eprice, 2);\n            }\n        ],\n        [\n            'label' =\u003e 'Stock',\n            'attribute' =\u003e 'stock',\n            'sortable' =\u003e true,\n            'value' =\u003e function($model) {\n                $class = $model-\u003estock \u003e 10 ? 'success' : ($model-\u003estock \u003e 0 ? 'warning' : 'danger');\n                return '\u003cspan class=\"badge badge-'.$class.'\"\u003e'.$model-\u003estock.'\u003c/span\u003e';\n            },\n            'format' =\u003e 'raw',\n        ],\n        [\n            'label' =\u003e 'Status',\n            'attribute' =\u003e 'status',\n            'editable' =\u003e true,\n            'editableType' =\u003e 'select',\n            'editableOptions' =\u003e [\n                'source' =\u003e [\n                    ['value' =\u003e 'active', 'text' =\u003e 'Active'],\n                    ['value' =\u003e 'inactive', 'text' =\u003e 'Inactive'],\n                    ['value' =\u003e 'draft', 'text' =\u003e 'Draft']\n                ]\n            ],\n            'value' =\u003e function($model) {\n                $badges = [\n                    'active' =\u003e 'success',\n                    'inactive' =\u003e 'danger',\n                    'draft' =\u003e 'secondary'\n                ];\n                return '\u003cspan class=\"badge badge-'.$badges[$model-\u003estatus].'\"\u003e'\n                    . ucfirst($model-\u003estatus) . '\u003c/span\u003e';\n            },\n            'format' =\u003e 'raw',\n        ],\n        [\n            'label' =\u003e 'Actions',\n            'value' =\u003e function($model) {\n                return '\n                    \u003ca href=\"'.route('products.edit', $model).'\" class=\"btn btn-sm btn-primary\"\u003e\n                        \u003ci class=\"fa fa-edit\"\u003e\u003c/i\u003e\n                    \u003c/a\u003e\n                    \u003ca href=\"'.route('products.show', $model).'\" class=\"btn btn-sm btn-info\"\u003e\n                        \u003ci class=\"fa fa-eye\"\u003e\u003c/i\u003e\n                    \u003c/a\u003e\n                ';\n            },\n            'format' =\u003e 'raw',\n        ],\n    ],\n    'exportColumns' =\u003e [\n        'ID' =\u003e 'id',\n        'Product Name' =\u003e 'name',\n        'Category' =\u003e 'category.name',\n        'Price' =\u003e 'price',\n        'Stock' =\u003e 'stock',\n        'Status' =\u003e 'status',\n    ]\n]) !!}\n```\n\n### Example 2: User Management Grid\n\n```php\n{!! gridview([\n    'dataProvider' =\u003e $dataProvider,\n    'searchModel' =\u003e $searchModel,\n    'columns' =\u003e [\n        ['class' =\u003e \\Picobaz\\GridView\\SerialColumns::class],\n        ['class' =\u003e \\Picobaz\\GridView\\BulkActionColumn::class],\n        \n        [\n            'label' =\u003e 'Avatar',\n            'value' =\u003e function($model) {\n                return '\u003cimg src=\"'.$model-\u003eavatar.'\" class=\"rounded-circle\" width=\"40\"\u003e';\n            },\n            'format' =\u003e 'raw',\n        ],\n        [\n            'label' =\u003e 'Name',\n            'attribute' =\u003e 'name',\n            'sortable' =\u003e true,\n            'editable' =\u003e true,\n        ],\n        [\n            'label' =\u003e 'Email',\n            'attribute' =\u003e 'email',\n            'sortable' =\u003e true,\n        ],\n        [\n            'label' =\u003e 'Role',\n            'attribute' =\u003e 'role',\n            'editable' =\u003e true,\n            'editableType' =\u003e 'select',\n            'editableOptions' =\u003e [\n                'source' =\u003e [\n                    ['value' =\u003e 'admin', 'text' =\u003e 'Admin'],\n                    ['value' =\u003e 'user', 'text' =\u003e 'User'],\n                    ['value' =\u003e 'moderator', 'text' =\u003e 'Moderator']\n                ]\n            ]\n        ],\n        [\n            'label' =\u003e 'Joined',\n            'attribute' =\u003e 'created_at',\n            'sortable' =\u003e true,\n            'value' =\u003e function($model) {\n                return $model-\u003ecreated_at-\u003eformat('M d, Y');\n            }\n        ],\n    ]\n]) !!}\n```\n\n---\n\n## ⚙️ Configuration\n\nFull configuration options in `config/gridview.php`:\n\n```php\nreturn [\n    'styles' =\u003e [...],\n    'pagination' =\u003e [...],\n    'export' =\u003e [...],\n    'bulk_actions' =\u003e [\n        'enabled' =\u003e true,\n        'default_actions' =\u003e [...]\n    ],\n    'inline_editing' =\u003e [\n        'enabled' =\u003e true,\n        'auto_save' =\u003e true,\n    ],\n    'search' =\u003e [\n        'debounce_delay' =\u003e 300,\n        'min_characters' =\u003e 2,\n    ],\n    'cache' =\u003e [\n        'enabled' =\u003e false,\n        'ttl' =\u003e 3600,\n    ],\n];\n```\n\n---\n\n## 🔒 Security\n\nGridView takes security seriously:\n\n- ✅ CSRF protection on all forms\n- ✅ XSS prevention with proper escaping\n- ✅ SQL injection prevention via Eloquent\n- ✅ Fillable attribute checking for inline editing\n- ✅ Model class validation\n\n### Inline Edit Security\n\nThe package validates:\n- Model class exists\n- Attribute is fillable\n- User has permission (implement your own middleware)\n\n---\n\n## 🧪 Testing\n\n```bash\ncomposer test\n```\n\n---\n\n## 📖 Requirements\n\n- PHP \u003e= 7.3 | 8.0+\n- Laravel \u003e= 8.0 | 9.0 | 10.0 | 11.0 | 12.0\n- maatwebsite/excel \u003e= 3.1\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n### How to Contribute\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n---\n\n## 📝 Changelog\n\nPlease see [CHANGELOG.md](CHANGELOG.md) for recent changes.\n\n### v1.3.0 (Latest)\n- ✨ Added Bulk Actions feature\n- ✨ Added Inline Editing capability\n- 🔧 Improved performance for large datasets\n- 🐛 Bug fixes and improvements\n\n---\n\n## 💬 Support\n\nNeed help? Have questions?\n\n- 📧 Email: [picobaz3@gmail.com](mailto:picobaz3@gmail.com)\n- 💬 Telegram: [@picobaz](https://t.me/picobaz)\n- 🐛 Issues: [GitHub Issues](https://github.com/PicoBaz/gridview/issues)\n- ⭐ Star us on [GitHub](https://github.com/PicoBaz/gridview)\n\n---\n\n## 📄 License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n\n---\n\n## 🌟 Show Your Support\n\nIf you find GridView helpful, please consider:\n\n- ⭐ Starring the repository on [GitHub](https://github.com/PicoBaz/gridview)\n- 🐦 Sharing it on social media\n- 📝 Writing a blog post about your experience\n- 💰 [Sponsoring the project](https://github.com/sponsors/PicoBaz)\n\n---\n\n## 🙏 Credits\n\n- **Author**: [PicoBaz](https://github.com/PicoBaz)\n- **Contributors**: [All Contributors](https://github.com/PicoBaz/gridview/graphs/contributors)\n- Inspired by Yii2 GridView\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ by [PicoBaz](https://github.com/PicoBaz)**\n\n[⬆ Back to Top](#-gridview)\n\n\u003c/div\u003e","funding_links":["https://github.com/sponsors/PicoBaz"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicobaz%2Fgridview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpicobaz%2Fgridview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpicobaz%2Fgridview/lists"}