РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplwSpDrHd 71 of 102 menu
◀ ▶

Ручка перетаскивания в Livewire

Давайте разберём такой случай. Строку списка хочется тянуть за маленький значок, а не за весь текст: иначе клик по заголовку случайно сдвигает пункт, и читать список неудобно.

Атрибут ручки wire:sort:handle вешают на отдельный элемент внутри пункта. Перетаскивание начнётся только если потянуть именно за эту область.

Страница откроется по адресу /posts/grip. Давайте создадим компонент PostGrip:

php artisan make:livewire PostGrip --class

Давайте заведём массив заголовков и метод сортировки:

<?php namespace App\Livewire; use Livewire\Component; class PostGrip extends Component { public $titles = [ 1 => 'News', 2 => 'Note', 3 => 'Draft', ]; public function handleSort($id, $position) { $title = $this->titles[$id]; unset($this->titles[$id]); $order = array_values( array_keys($this->titles) ); array_splice( $order, $position, 0, [$id] ); $sorted = []; foreach ($order as $key) { $sorted[$key] = ($key === $id) ? $title : $this->titles[$key]; } $this->titles = $sorted; } public function render() { return view('livewire.post-grip'); } } ?>

Давайте внутри пункта выведем ручку и заголовок рядом:

<div> <ul wire:sort="handleSort"> @foreach ($titles as $id => $title) <li wire:key="{{ $id }}" wire:sort:item="{{ $id }}"> <span wire:sort:handle>Move</span> {{ $title }} </li> @endforeach </ul> </div>

Давайте добавим маршрут и страницу:

<?php Route::get('/posts/grip', function () { return view('posts-grip'); }); ?>
<x-layout> <livewire:post-grip /> </x-layout>

Создайте компонент EmployeeGrip. Строку работника можно сдвинуть только за отдельный значок.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить