TR
Başlangıç
44 · Gelişmiş UI

Sürükle-bırak

Öğeleri sürükleyip bırakarak sıralamayı sağlar. Livewire 4 ile gelen Alpine Sort eklentisini kullanır; handler verilirse yeni sıra sunucuya gönderilir.

PRO acun:sortable
01

Temel kullanım

Her satır bir acun:sortable.item'dır ve benzersiz bir key ister. Satır, üzerinde herhangi bir yerden tutularak sürüklenir. handler verilmezse yeni sıra yalnızca tarayıcıda kalır; sayfa yenilenince eski sıra döner.

CANLI ÖRNEK
<acun:sortable>
    <acun:sortable.item key="1">Elektronik</acun:sortable.item>
    <acun:sortable.item key="2">Ev ve yaşam</acun:sortable.item>
    <acun:sortable.item key="3">Giyim</acun:sortable.item>
    <acun:sortable.item key="4">Kozmetik</acun:sortable.item>
</acun:sortable>
PropDeğerler
keyÖğenin kimliği, ör. kayıt id
02

Tutamaçtan sürükleme

handle verildiğinde sürükleme yalnızca soldaki tutamaç ikonundan başlar ve imleç yalnızca orada değişir. Satırda düğme ya da bağlantı varsa bunları kullanırken satırın yanlışlıkla kaymasını önler. İçeriği satır boyunca yaymak için slot'a esnek bir kapsayıcı verin.

CANLI ÖRNEK
<acun:sortable handle>
    <acun:sortable.item key="1"><span class="flex items-center justify-between gap-3">Elektronik <acun:button size="sm" variant="ghost">Düzenle</acun:button></span></acun:sortable.item>
    <acun:sortable.item key="2"><span class="flex items-center justify-between gap-3">Ev ve yaşam <acun:button size="sm" variant="ghost">Düzenle</acun:button></span></acun:sortable.item>
    <acun:sortable.item key="3"><span class="flex items-center justify-between gap-3">Giyim <acun:button size="sm" variant="ghost">Düzenle</acun:button></span></acun:sortable.item>
</acun:sortable>
PropDeğerler
handletrue | false
03

Livewire ile kaydetme

handler bir Livewire metodunun adıdır; bırakılan öğenin key değeri ve 0'dan başlayan yeni sırası bu metoda gönderilir. Döngülerde wire:key vermeyi unutmayın.

BLADE
<acun:sortable handler="siraGuncelle">
    @foreach ($kategoriler as $kategori)
        <acun:sortable.item :key="$kategori->id" wire:key="kategori-{{ $kategori->id }}">{{ $kategori->ad }}</acun:sortable.item>
    @endforeach
</acun:sortable>
PropDeğerler
handlerLivewire metot adı
04

Sunucu metodu

Metot öğenin anahtarını ve yeni sırasını alır. Aradaki kayıtların da sırası kaydığı için listeyi baştan numaralandırmak en güvenli yoldur.

PHP
public function siraGuncelle(int $kategoriId, int $yeniSira): void
{
    $siralama = Kategori::orderBy('sira')->pluck('id')
        ->reject(fn (int $id) => $id === $kategoriId)
        ->values();

    $siralama->splice($yeniSira, 0, [$kategoriId]);

    foreach ($siralama as $sira => $id) {
        Kategori::whereKey($id)->update(['sira' => $sira]);
    }
}
API

Prop'lar ve slot'lar

Bileşenin kabul ettiği değerler.

PropVarsayılanAçıklama
handlernullLivewire metodu; (anahtar, yeni sıra) ile çağrılır
handlefalsetrue: yalnızca tutamaç ikonundan sürüklenir; false: satırın tamamından
sortable.item: key — Zorunlu; öğenin kimliği
Acun UI · Sürükle-bırakDetaylı kullanım ve örnekler