Сортировка Nestable

Создайте вложенные списки, которые можно сортировать
путем перетаскивания - drag and drop.

Компонент «Nestable» позволяет сортировать элементы с помощью перетаскивания. Это замечательно, если вы хотите организовать различные категории или пункты меню, например, в областях администрирования.


Применение

Вложенный список состоит из самого списка, его элементов и вложенной панели.

Класс Описание
.uk-nestable Добавьте этот класс к элементу <ul>, чтобы определить компонент.
.uk-nestable-item Добавьте этот класс к каждому элементу <li> элемента списка.
.uk-nestable-panel Добавьте этот класс к элементу <div> внутри элемента <li>, чтобы стилизовать элемент.

Примечание Чтобы включить необходимый JavaScript, добавьте атрибут data-uk-nestable.

Пример

  • Элемент 1
  • Элемент 2
  • Элемент 3
  • Элемент 4

Разметка

<ul class="uk-nestable" data-uk-nestable>
    <li class="uk-nestable-item">
        <div class="uk-nestable-panel"> ... </div>
    </li>
</ul>

Nestable и Handle

По умолчанию весь вложенный элемент может использоваться для сортировки с помощью перетаскивания. Чтобы создать handle, которая будет использоваться для этого, добавьте параметр {handleClass:'uk-nestable-handle'} в data-* атрибут и добавьте handle класс элементу, который вы хотите использовать в качестве handle.

Примечание В примере использован класс .uk-icon-bars из компонента Icon для стилизации handle.

Пример

  • Элемент 1
  • Элемент 2
  • Элемент 3
  • Элемент 4

Разметка

<ul class="uk-nestable" data-uk-nestable="{handleClass:'uk-nestable-handle'}">
    <li class="uk-nestable-item">
        <div class="uk-nestable-panel">        
            <!-- Handle -->
            <i class="uk-nestable-handle uk-icon uk-icon-bars uk-margin-small-right"></i>
            
            <!-- Содержимое -->            
            ...
        </div>
    </li>
</ul>

Nestable Toggle

По умолчанию вложенный элемент не имеет переключателя toggle для сворачивания и раскрытия внутрилежащих элементов. Чтобы создать toggle, которая будет использоваться для этого, добавьте класс .uk-nestable-toggle и атрибут data-nestable-action="toggle" к элементу <div> внутри вложенной панели.

Примечание Переместите панель в правую сторону, чтобы увидеть переключатель toggle.

Пример

  • Элемент Nestable Toggle 1
  • Элемент 2
  • Элемент 3
  • Элемент 4

Разметка

<ul class="uk-nestable" data-uk-nestable">
    <li class="uk-nestable-item">
        <div class="uk-nestable-panel">
            <div class="uk-nestable-toggle" data-nestable-action="toggle"></div>
            ...
        </div>
    </li>
</ul>

Несколько списков Nestable

Чтобы иметь возможность сортировать элементы из одного списка в другой, вы можете сгруппировать их, добавив атрибут data-uk-nestable="{group:'GROUP-NAME'}" в каждый список.

Пример

Первый список

  • Элемент 1
  • Элемент 2
  • Элемент 3
  • Элемент 4

Второй список

  • Пункт списка 1
  • Пункт списка 2
  • Пункт списка 3
  • Пункт списка 4

Разметка

<ul class="uk-nestable" data-uk-nestable="{group:'my-group'}">...</ul>
<ul class="uk-nestable" data-uk-nestable="{group:'my-group'}">...</ul>

Ограничение вложенности

Чтобы отключить вложение элементов списка, добавьте атрибут data-uk-nestable="{maxDepth:1}". Вы также можете использовать этот атрибут данных, чтобы определить, на какую глубину возможна вложенность.

  • Элемент 1 maxDepth:2
  • Элемент 2 maxDepth:2
  • Элемент 3 maxDepth:2
  • Элемент 4 maxDepth:2

Разметка

<ul class="uk-nestable" data-uk-nestable="{maxDepth:1}">...</ul>

JavaScript options

Это пример того, как установить параметры через атрибут:

data-uk-nestable="{maxDepth:0, group:'widgets'}"
Option Possible value Default Описание
group string false List group
maxDepth integer 10 Max nesting level
threshold integer 20 Pixel threshold before starting to drag
listNodeName string ul List node name
itemNodeName string li Item node name
listBaseClass string uk-nestable List base class
listClass string uk-nestable-list List class
listitemClass string uk-nestable-list-item List item class
itemClass string uk-nestable-item Item class
dragClass string uk-nestable-list-dragged Class added to dragged list
movingClass string uk-nestable-moving Class added to <html> when moving
handleClass string uk-nestable-handle Class for drag handle
collapsedClass string uk-nestable-collapsed Class for collapsed items
placeClass string uk-nestable-placeholder Class for placeholder of currently dragged element
noDragClass string uk-nestable-nodrag Elements with this class will not trigger dragging. Useful when having the complete item draggable and not just the handle.
noChildrenClass string uk-nestable-nochildren Elements with this class will not allow children. Useful for bottom-level items.
emptyClass string uk-nestable-empty Class for empty lists

Init element manually

var nestable = UIkit.nestable(element, { /* options */ });

Events

Name Parameter Description
start.uk.nestable event, nestable object On nestable drag start
move.uk.nestable event, nestable object On nestable move item
stop.uk.nestable event, nestable object On nestable stop dragging
change.uk.nestable event, sortable object, dragged element, action On nestable change item