optimistdigital / nova-sortable

A Laravel Nova tool.

Stars
12

Nova Sortable

Latest Version on Packagist
Total Downloads

This Laravel Nova package allows you to reorder models in a Nova resource's index view using drag & drop.

Uses Spatie's eloquent-sortable under the hood.

Requirements

  • Laravel Nova >= 2.6.0

Features

  • Drag & drop reorder within one page of resources
  • Move to start and end arrows (makes item first/last)
  • Everything from eloquent-sortable

Screenshots

Sortable

Installation

Install the package in a Laravel Nova project via Composer:

# Install package
composer require optimistdigital/nova-sortable

Usage

Add an order field to the model using Laravel migrations:

# Add order field with default value
Schema::table('some_model', function (Blueprint $table) {
  $table->integer('sort_order');
});
DB::statement('UPDATE some_model SET sort_order = id');

Implement the Spatie's eloquent-sortable interface and apply the trait:

use Spatie\EloquentSortable\Sortable;
use Spatie\EloquentSortable\SortableTrait;

class MyModel extends Eloquent implements Sortable
{
  use SortableTrait;

  public $sortable = [
    'order_column_name' => 'sort_order',
    'sort_when_creating' => true,
  ];

  ...
}

Apply HasSortableRows trait from this package on the Resource:

use OptimistDigital\NovaSortable\Traits\HasSortableRows;

class MyResource extends Resource
{
  use HasSortableRows;

  ...
}

Credits

License

Nova Sortable is open-sourced software licensed under the MIT license.