Skip to content

crushjs/mini-datatables

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mini DataTables

A lightweight Laravel DataTables package inspired by Yajra DataTables.


Features

  • Simple JSON response
  • Query Builder support
  • Search support
  • Pagination
  • Sorting
  • Custom columns
  • Raw columns
  • Laravel auto-discovery

Installation

Install package via Composer:

composer require crushjs/mini-datatables

Publish Assets

php artisan vendor:publish --tag=minidatatables-assets

Laravel Auto Discovery

The package supports Laravel auto-discovery.

No manual provider registration required.


Usage

Basic Example

use App\Models\User;
use Crushjs\MiniDataTables\MiniDataTables;

Route::get('/users', function () {
    return MiniDataTables::of(
        User::query()
    )->make();
});

Response Example

{
  "data": [
    {
      "id": 1,
      "name": "John"
    },
    {
      "id": 2,
      "name": "Jane"
    }
  ]
}

Search

URL

/users?search=john

Example

return MiniDataTables::of(
    User::query()
)
->search('name', 'test')
->make();

Pagination

Example

return MiniDataTables::of(
    User::query()
)
->paginate(10)
->make();

Sorting

URL

/users?sort=id

Example

return MiniDataTables::of(
    User::query()
)
->sort()
->make();

Add Custom Column

return MiniDataTables::of(
    User::query()
)
->addColumn('action', function ($user) {
    return '<button>Edit</button>';
})
->make();

Edit Column

return MiniDataTables::of(
    User::query()
)
->editColumn('name', function ($user) {
    return strtoupper($user->name);
})
->make();

Raw Column

return MiniDataTables::of(
    User::query()
)
->rawColumns(['action'])
->make();

Full Example

use App\Models\User;
use Crushjs\MiniDataTables\MiniDataTables;

Route::get('/users', function () {

    return MiniDataTables::of(
        User::query()
    )
    ->search('name')
    ->sort()
    ->paginate(10)
    ->addColumn('action', function ($user) {
        return '<button>Edit</button>';
    })
    ->rawColumns(['action'])
    ->make();

});

Package Structure

mini-datatables/
 ├── composer.json
 ├── README.md
 └── src/
      ├── MiniDataTables.php
      ├── MiniDataTablesServiceProvider.php
      └── Facades/
           └── MiniTable.php

Local Development

Clone repository:

git clone https://github.com/crushjs/mini-datatables.git

Install dependencies:

composer install

Testing Inside Laravel

Add local repository to Laravel project:

"repositories": [
    {
        "type": "path",
        "url": "./packages/crushjs/mini-datatables"
    }
]

Then install:

composer require crushjs/mini-datatables:@dev

Requirements

  • PHP 8.1+
  • Laravel 10+
  • Laravel 11+
  • Laravel 12+

Roadmap

  • Global search
  • Multi-column sorting
  • Export CSV
  • Export Excel
  • API Resources
  • Vue support
  • React support

License

MIT License


Author

Crushjs

GitHub: https://github.com/crushjs

Screenshots

Table UI

Table UI


Controller Example

Controller


Blade Usage

Blade


Route Example

Route

About

This is a mini package for making you easy display data with datatable

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors