MedicOneSystems / livewire-datatables

Advanced datatables using Laravel, Livewire, Tailwind CSS and Alpine JS
https://livewire-datatables.com/
MIT License
1.19k stars 258 forks source link

Multi table pagination #497

Open elegasoft opened 2 years ago

elegasoft commented 2 years ago

Resolves #496: Allow for independent query string pagination with multiple datatables on the same page

Function:

By using the WithMultiTablePaginator one can rely on the query string parameters to separately paginate multiple LivewireDatatable's which are rendered on the same page.

Requirements:

Requires that the DataTableComponent use WithMultiTablePaginator; and declare either a $pageName or $name property on the DataTableComponent.


class WorkInProgressDataTable extends LivewireDatatable
{

    use WithMultiTablePaginator;

    /// Requires declaration of $name
    public $name = 'wip';

    /// or declaration of 
    public $pageName = 'wipPage';
   ...
}

How it works:

  1. The WithMultiTablePaginator overrides all pagination related calls to ensure that it applies the $pageName or LivewireDatatable $name properties.
  2. It also ensures that calls to the getResultsProperty() also paginates based on the page related to $pageName or LivewireDatatable $name property.

Tests:

-- Work In Progress --

Discussion Points:

  1. Naming seems to be a bit off, maybe rename the trait to WithCustomPaginator?
  2. There are no other Exceptions thrown by this plugin, instead of throwing an exception we can provide a default $pageName using static::class?
thyseus commented 2 years ago

I like the idea with using Traits a lot, but shouldnt it be possible to use multiple tables on the same page by default without using a Trait ?

mrtorks commented 1 year ago

Hi all. Any update in this feature. It would really be awesome to have this implemented.