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

Директива wire:sort:group-id

Директива wire:sort:group-id вешается на контейнер, который выступает группой для сортируемых элементов. В значение передаётся строковый идентификатор группы. Она используется в паре с директивой wire:sort:group, которая вешается на дочерние элементы. Это позволяет организовать перетаскивание элементов как внутри одной группы, так и между разными группами с одинаковым идентификатором.

Если элементы из разных групп имеют одинаковый идентификатор, они считаются одной группой, и перетаскивание между ними становится возможным. Если идентификаторы различаются, элементы могут перемещаться только внутри своей группы.

Синтаксис

<div wire:sort:group-id="groupId"> <div wire:sort:group.item> Item 1 </div> <div wire:sort:group.item> Item 2 </div> </div>

Пример

Давайте создадим две группы с одинаковым идентификатором tasks, чтобы элементы можно было перетаскивать между ними:

<?php namespace AppLivewire; use LivewireComponent; class TaskBoard extends Component { public $tasks = [ 'To Do' => ['Task 1', 'Task 2'], 'Done' => ['Task 3'], ]; public function updateTaskOrder($group, $items) { $this->tasks[$group] = $items; } public function render() { return view('livewire.task-board'); } } ?>
<div style="display: flex; gap: 20px;"> <div wire:sort:group-id="tasks"> <h3>To Do</h3> @foreach ($tasks['To Do'] as $task) <div wire:sort:group.item> {{ $task }} </div> @endforeach </div> <div wire:sort:group-id="tasks"> <h3>Done</h3> @foreach ($tasks['Done'] as $task) <div wire:sort:group.item> {{ $task }} </div> @endforeach </div> </div>

Результат выполнения кода:

<div style="display: flex; gap: 20px;"> <div> <h3>To Do</h3> <div>Task 1</div> <div>Task 2</div> </div> <div> <h3>Done</h3> <div>Task 3</div> </div> </div>

Пример

Теперь создадим две группы с разными идентификаторами pending и completed, чтобы элементы не могли перемещаться между ними:

<?php namespace AppLivewire; use LivewireComponent; class TaskManager extends Component { public $pending = ['Task A', 'Task B']; public $completed = ['Task C']; public function updatePending($items) { $this->pending = $items; } public function updateCompleted($items) { $this->completed = $items; } public function render() { return view('livewire.task-manager'); } } ?>
<div style="display: flex; gap: 20px;"> <div wire:sort:group-id="pending" wire:sort:group.update="updatePending"> <h3>Pending</h3> @foreach ($pending as $task) <div wire:sort:group.item> {{ $task }} </div> @endforeach </div> <div wire:sort:group-id="completed" wire:sort:group.update="updateCompleted"> <h3>Completed</h3> @foreach ($completed as $task) <div wire:sort:group.item> {{ $task }} </div> @endforeach </div> </div>

Результат выполнения кода:

<div style="display: flex; gap: 20px;"> <div> <h3>Pending</h3> <div>Task A</div> <div>Task B</div> </div> <div> <h3>Completed</h3> <div>Task C</div> </div> </div>

Смотрите также

  • директиву wire:sort:group,
    которая определяет группу для сортируемых элементов
  • директиву wire:sort:item,
    которая помечает элемент как сортируемый
  • директиву wire:sort:handle,
    которая задаёт область захвата для перетаскивания
  • директиву wire:sort:ignore,
    которая исключает элемент из сортировки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить