Документация/API
makeSortableItem
Регистрирует строку сортируемого списка или дерева — она перетаскивается, освобождает место и приземляется в свой слот.
Страница переведена ИИ и может содержать неточности. Читать английский оригинал
function makeSortableItem<TData = unknown>( target: MaybeElementRef, options: SortableItemOptions<TData>,): SortableItemReturn;Делает элемент строкой сортируемого списка или дерева: она перетаскивается, освобождает место и приземляется в свой слот. Вызывайте его в компоненте, отрендеренном внутри того, который вызвал makeSortableList (или makeSortableTree); если там создано несколько списков, строка относится к самому внутреннему из них, чей DOM-элемент её содержит. Указывайте строку через item (ключ даёт getKey списка, по умолчанию item.id) или id.
const el = useTemplateRef<HTMLElement>('el');
const { isPlaceholder, index } = makeSortableItem(el, { item: () => props.task, handle: '.grip' });
См. сортируемые списки.
Загружаем демо…
<script setup lang="ts">
import { DnDProvider } from '@vue-dnd-kit/core';
import TodoList from './TodoList.vue';
</script>
<template>
<DnDProvider>
<TodoList />
</DnDProvider>
</template>Опции
Передайте id или item (если заданы оба, важнее id). Ключи элементов сортируемого списка должны браться из данных: автоматический id менялся бы при каждом пересоздании компонента (перенос в другой список, переиспользование виртуальным списком), и драг терял бы элемент.
Опции, кроме canDrag, принимают значение, ref или геттер (overlay, dropAnimation — значение или ref) и значат то же, что в makeDraggable. Опции keyboardMode нет: клавиатура двигает элемент сортируемого списка по слотам.
Keyзначение · ref · геттерКлюч элемента в его списке. Геттер поддерживает его актуальным в виртуальных списках.
unknownзначение · ref · геттерЭлемент данных, который рендерит этот DOM-элемент, например () => props.task. Его ключ берётся из getKey списка (или дерева), которому он принадлежит; по умолчанию — item.id.
Componentзначение · refКомпонент оверлея для этого элемента; важнее overlay списка. Ref, переключённый посреди драга, сразу его меняет.
DropAnimationзначение · refКак приземляется оверлей, когда заканчивается драг этого элемента; важнее dropAnimation списка. Читается при броске.
Modifier[]значение · ref · геттерМодификаторы для драгов этого элемента, после модификаторов провайдера; важнее modifiers списка.
'x' | 'y'значение · ref · геттерФиксирует драги этого элемента по одной оси ('x', 'y'); важнее axis списка.
MaybeElement | stringзначение · ref · геттерЭлемент или селектор внутри элемента списка, который начинает драг (и получает атрибуты).
booleanзначение · ref · геттерtrue: элемент нельзя перетащить (как и любой элемент отключённого списка).
string | string[]значение · ref · геттерЕго тип или типы — для правил group.put и accept целей. По умолчанию: имя группы его списка.
TDataзначение · ref · геттерВсё, что должен нести драг: события и цели читают это как active.data.
stringзначение · ref · геттерНазвание элемента для людей: тексты для скринридеров называют его вместо ключа (Picked up Tomato at position 2 of 5 in Garden). События передают его как active.label и в items.
ActivationOptionsзначение · ref · геттерПереопределяет activation своего списка (или дерева) и провайдера. Читается в начале нажатия.
(event: PointerEvent | KeyboardEvent) => booleanДополнительное условие, например перетаскивать только при зажатой клавише.
booleanзначение · ref · геттерВыставлять атрибуты role/tabindex/aria-* (по умолчанию true), никогда не перезаписывая ваши собственные. Работает на лету: при выключении убирается то, что выставила библиотека.
boolean | NativeDragOptionsзначение · ref · геттерДраг мышью — это собственный драг браузера, который может покинуть страницу (см. DraggableOptions.native). Он несёт и сам элемент: его принимают списки его группы в другом окне приложения, и когда один из них принимает его, элемент покидает этот список ('move').
Возвращает
Что возвращает makeSortableItem.
ComputedRef<boolean>Этот элемент перетаскивают (верно и для остальных элементов мульти-драга), или его оверлей ещё приземляется.
ComputedRef<boolean>Этот элемент — слот, куда приземлится перетаскиваемый элемент: слот активного элемента, а в режиме мульти-драга 'group' — слоты элементов, которые едут вместе с ним.
WritableComputedRef<boolean>Он в выделении провайдера: драг одного выделенного элемента несёт их все. Присвойте значение, чтобы выделить или снять выделение.
ComputedRef<SortableIndicator | null>Режим индикатора: indicator списка, пока он привязан к этому элементу, иначе null. side говорит, где рисуется линия; в деревьях depth и parentKey говорят, куда приземлится бросок (side: 'inside' — внутрь этого элемента).
ComputedRef<number>Индекс в отрендеренном черновике; -1, если неизвестен.