pixelcreation/nova-field-sortable

A Nova field for ordering resources.

3.2.0 2022-05-17 11:55 UTC

This package is auto-updated.

Last update: 2024-11-17 17:44:50 UTC


README

Latest Version on Packagist Total Downloads

Description

This field adds reordering functionality to your resource's index using the awesome eloquent-sortable package by the great people of Spatie.

This package is a fork of Teatrante/nova-field-sortable, which is a fork of the original package Naxon/nova-field-sortable. It includes improvements to the layout

screenshot

Requirements

Installation

This package can be installed through Composer.

composer require pixelcreation/nova-field-sortable

Upgrading from v3.x to v4.x

  • Instead of the primary key column, you'll need to supply the name of the sort column in the Sortable field.

Usage

  1. Follow the usage instructions on the eloquent-sortable repository to make your model sortable.
  2. Use the PixelCreation\NovaFieldSortable\Concerns\SortsIndexEntries trait in your Nova Resource.
  3. Add a public static property called $defaultSortField to your resource, containing your sorting column (I recommend adding it in your main app/Nova/Resource.php file).
  4. Add the PixelCreation\NovaFieldSortable\Sortable field to your Nova Resource fields method, using a label and your sorting column.

Example

<?php

namespace App\Nova;

use Laravel\Nova\Fields\ID;
use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Fields\Text;
use PixelCreation\NovaFieldSortable\Concerns\SortsIndexEntries;
use PixelCreation\NovaFieldSortable\Sortable;

class Page extends Resource
{
    use SortsIndexEntries;
    
    public static $defaultSortField = 'sort_order';
    
    /**
     * Get the fields displayed by the resource.
     *
     * @param  NovaRequest  $request
     * @return array
     */
    public function fields(Request $request)
    {
        return [
            ID::make()->sortable(),
            
            Text::make('Title'),
            
            Sortable::make('Order', 'sort_order')
                ->onlyOnIndex(),
        ];
    }
}

Credits

License

The MIT License (MIT). Please see License File for more information.