{"id":15105803,"url":"https://github.com/steelants/livewire-datatable","last_synced_at":"2025-10-23T01:30:45.364Z","repository":{"id":176637995,"uuid":"657143060","full_name":"steelants/Livewire-DataTable","owner":"steelants","description":"Laravlel Packager for creation of simple Livewire data tables","archived":false,"fork":false,"pushed_at":"2024-11-16T14:58:31.000Z","size":152,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-30T16:43:25.257Z","etag":null,"topics":["laravel","livewire","livewire-components","php"],"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/steelants.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2023-06-22T12:11:42.000Z","updated_at":"2024-11-16T14:58:25.000Z","dependencies_parsed_at":"2024-02-06T10:47:44.147Z","dependency_job_id":"60b3a31f-75a4-4d1e-b537-9b620ad845ea","html_url":"https://github.com/steelants/Livewire-DataTable","commit_stats":{"total_commits":134,"total_committers":4,"mean_commits":33.5,"dds":0.4701492537313433,"last_synced_commit":"69f5a3e2abbfa861fe5a3bfb7b4e16603a2582f3"},"previous_names":["steelants/livewire-datatable"],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelants%2FLivewire-DataTable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelants%2FLivewire-DataTable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelants%2FLivewire-DataTable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steelants%2FLivewire-DataTable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steelants","download_url":"https://codeload.github.com/steelants/Livewire-DataTable/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237759101,"owners_count":19361458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["laravel","livewire","livewire-components","php"],"created_at":"2024-09-25T20:43:30.207Z","updated_at":"2025-10-23T01:30:45.358Z","avatar_url":"https://github.com/steelants.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Livewire DataTable\n### Created by: [SteelAnts s.r.o.](https://www.steelants.cz/)\n\n[![Total Downloads](https://img.shields.io/packagist/dt/steelants/datatable.svg?style=flat-square)](https://packagist.org/packages/steelants/datatable)\n\n#### Docker Build\n* is handeled by gittea server\n```bash\n  git checkout master\n  git pull origin master\n  git pull origin dev\n  git tag 2.3.2\n  git push --tags\n  git checkout dev\n```\n\n## Usage\n\n```php\nnamespace App\\Livewire;\n\nuse App\\Models\\User;\nuse SteelAnts\\DataTable\\Livewire\\DataTableComponent;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse SteelAnts\\DataTable\\Traits\\UseDatabase;\n\nclass UserTable extends DataTableComponent\n{\n    Use UseDatabase;\n    \n    // Get model query\n    public function query(): Builder\n    {\n        return User::query();\n    }\n\n    // Set headers\n    public function headers(): array\n    {\n        return [    \n            'id' =\u003e 'ID',\n            'name' =\u003e 'Name',\n            'email' =\u003e 'E-mail',\n        ];\n    }\n\n    // Set actions\n    public function actions($item) : array\n    {\n        return [\n            [\n                // livewire action\n                'type' =\u003e \"livewire\",\n                'action' =\u003e \"remove\",\n                'parameters' =\u003e $item['id'],\n                'text' =\u003e \"Remove\",\n                'actionClass' =\u003e 'text-danger',\n                'iconClass' =\u003e 'fas fa-trash',\n                'confirm' =\u003e 'Are you sure you want to delete this post?',\n            ],\n            [\n                // url action\n                'type' =\u003e \"url\",\n                'url' =\u003e rounte('user.show', [id =\u003e $item['id']]),\n                'text' =\u003e \"Show\",\n                'iconClass' =\u003e 'fas fa-eye',\n            ]\n        ];\n    }\n\n    // Custom render of 'name' column\n    public function renderColumnName($value, $row){\n        return '\u003cb\u003e'.e($value).'\u003c/b\u003e';\n    }\n\n    // Transform order column on raw order column (optional)\n    public function orderColumnName(){\n         return 'CAST(name AS STRING)';\n    }\n\n    // Livewire actions\n    public function remove($id){\n        User::find($id)-\u003edelete();\n    }\n}\n```\n\n### Using without query / models\n```php\n    // instead of method query() implement dataset() \n    public function dataset(): array\n    {\n        return [\n            [    \n                'id' =\u003e '1',\n                'name' =\u003e 'Name 1',\n                'email' =\u003e 'E-mail 1',\n            ],\n            [    \n                'id' =\u003e '2',\n                'name' =\u003e 'Name 2',\n                'email' =\u003e 'E-mail 2',\n            ],\n            // ...\n        ];\n    }\n```\n\n### Render\n```blade\n@livewire('user-table', [], key('data-table'))\n```\n\n### Dev Enviroment\n1) Clone Repo to `[LARVEL-ROOT]/packages/`\n2) Modify ;composer.json`\n```json\n    \"autoload\": {\n        \"psr-4\": {\n            ...\n            \"SteelAnts\\\\DataTable\\\\\": \"packages/Livewire-DataTable/src/\"\n            ...\n        }\n    },\n```\n3) Add (code below) to: `[LARVEL-ROOT]/bootstrap/providers.php`\n```php\nSteelAnts\\DataTable\\DataTableServiceProvider::class,\n```\n\n## Configuration\n```php\n// Enable sorting\npublic bool $sortable = true;\n\n// Enable pagination\npublic bool $paginated = true;\n\n// Enable fulltext search\npublic bool $searchable = true;\npublic bool $searchableColumns = [];\n\n//Enable filters\npublic bool $filterable = true;\n```\n\n## Optional transforms methods\n``` php\n// Transformace whole row on input (optional)\n// Returns associative array \npublic function row(Model $row) : array\n{\n    return [\n        'id' =\u003e $row-\u003eid,\n    ];\n}\n\n// Transform one column on input (optional)\npublic function columnFoo(mixed $column) : mixed\n{\n    return $column;\n}\n\n\n// Transform whole row on output (optional)\n// !!! NOTE: values are rendered with {!! !!}, manually escape values\npublic function renderRow(array $row) : array\n{\n    return [\n        'id' =\u003e e($row['id'])\n    ];\n}\n\n// Transform one column on output (optional)\n// !!! NOTE: values are rendered with {!! !!}, manually escape values\npublic function renderColumnFoo(mixed $value, array $row) : string\n{\n    return e($value);\n}\n```\n\n## Filters methods\n``` php\n    //Add filters to header for specific columns\n    public function headerFilters(): array\n    {\n        return [\n            'column1Key' =\u003e ['type' =\u003e 'text'], //input type\n            'column2Key' =\u003e ['type' =\u003e 'select', 'values' =\u003e ['value' =\u003e 'name', 'value2' =\u003e 'name2']], //this for select\n            'column3Key' =\u003e ['type' =\u003e 'date'], //double input type (date,time,datetime-local)\n        ];\n    }\n\n    //Add actions to header filters edit\n    public function updatedHeaderFilter(){\n        $this-\u003evalidate([\n            'headerFilter.column1Key' =\u003e 'nullable|string',\n            'headerFilter.column2Key' =\u003e 'nullable|string',\n            'headerFilter.column3Key.*' =\u003e 'nullable|date', //have two parameters \"from\" and \"to\"\n        ]);\n    }\n```\n\n## Development\n\n1. Create subfolder `/packages` at root of your laravel project\n\n2. clone repository to sub folder `/packages` (you need to be positioned at root of your laravel project in your terminal)\n```bash\ngit clone https://github.com/steelants/Livewire-DataTable.git ./packages/Livewire-DataTable\n```\n\n3. edit composer.json file\n```json\n\"autoload\": {\n\t\"psr-4\": {\n\t\t\"SteelAnts\\\\Modal\\\\\": \"packages/Livewire-Modal/src/\"\n\t}\n}\n```\n\n4. Add provider to `bootstrap/providers.php`\n```php\nreturn [\n\t...\n     SteelAnts\\DataTable\\DataTableServiceProvider::class,\n\t...\n];\n```\n\n## Contributors\n\u003ca href=\"https://github.com/steelants/Livewire-DataTable/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=steelants/Livewire-DataTable\" /\u003e\n\u003c/a\u003e\n\n## Other Packages\n[steelants/laravel-auth](https://github.com/steelants/laravel-auth)\n\n[steelants/laravel-boilerplate](https://github.com/steelants/Laravel-Boilerplate)\n\n[steelants/datatable](https://github.com/steelants/Livewire-DataTable)\n\n[steelants/form](https://github.com/steelants/Laravel-Form)\n\n[steelants/modal](https://github.com/steelants/Livewire-Modal)\n\n[steelants/laravel-tenant](https://github.com/steelants/Laravel-Tenant)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteelants%2Flivewire-datatable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteelants%2Flivewire-datatable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteelants%2Flivewire-datatable/lists"}