> Source: https://laravilt.com/docs/tables/features/reordering

# Reordering

Drag-and-drop row reordering.

## Basic Usage

```php
<?php

use Laravilt\Tables\Table;

$table
    ->reorderable('sort_order')
    ->defaultSort('sort_order', 'asc');
```

## Model Setup

```php
<?php

use Illuminate\Database\Eloquent\Model;

class MenuItem extends Model
{
    protected $fillable = ['name', 'sort_order'];
}
```

## Migration

```php
<?php

Schema::create('menu_items', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->integer('sort_order')->default(0);
    $table->timestamps();
});
```

## Reorder Callback

```php
<?php

use Laravilt\Tables\Table;

$table
    ->reorderable('sort_order')
    ->onReorder(function ($record, $newPosition) {
        // Custom logic after reorder
    });
```

## Vue Component

Uses @vueuse sortable:

```vue
<script setup>
import { useSortable } from '@vueuse/integrations/useSortable'
</script>
```

## API Reference

| Method | Description |
|--------|-------------|
| `reorderable()` | Column to store order |
| `defaultSort()` | Default sort column |
| `onReorder()` | Callback after reorder |
