Skip to content

SVerticalMenu

Боковое меню.

В чем отличие от аналогов?

В отличие от популярных библиотек компонентов для Vue3:

  1. Может сохранять набор раскрытых элементов в localStorage одним простым атрибутом.

Базовый пример

<SVerticalMenu :links="menuLinks" />

Где menuLinks — это массив в формате [{label, url, active, ?type, ?className, ?children}, ...]

Раскрытые элементы

Чтобы нужные элементы были раскрыты сразу, мы передаем массив их ID в атрибуте expanded-keys:

<SVerticalMenu :links="menuLinks" :expanded-keys="[34]" />

Запоминание раскрытых элементов

Во всякого рода документациях

Когда мы добавляем атрибут store-expanded-keys-to, раскрытые элементы сохраняются в localStorage. Теперь, если обновить страницу, раскрытые элементы сохранятся.

<SVerticalMenu :links="menuLinks" store-expanded-keys-to="opened-pages" />

Интерфейс компонента SVerticalMenu

Свойства (Props)

НазваниеТипПо умолчаниюОписание
linksSVerticalMenuLink[][]Массив навигационных ссылок с поддержкой вложенности.
expandedKeys(string | number)[][]Массив ID элементов, которые должны быть раскрыты по умолчанию.
storeExpandedKeysTostringundefinedКлюч в localStorage для сохранения состояния раскрытых элементов.

Слоты (Slots)

НазваниеОписание
defaultПо умолчанию слоты отсутствуют, меню генерируется автоматически по пропсу links.
СвойствоТипОписание
idstring | numberОбязательное. Уникальный идентификатор пункта меню (нужен для логики открытия/закрытия).
labelstringОбязательное. Текст пункта меню.
urlstringURL для перехода. Если указан — рендерится ссылкой (зарегистрированный Link, напр. Inertia; иначе обычный <a>). Если нет — используется как папка для дочерних элементов.
activebooleanЕсли true, пункт визуально помечается как активный.
typestringМожет быть 'section' для заголовка раздела (жирнее и с отступами).
isPublishedbooleanЕсли false, пункт затеняется и появляется иконка перечеркнутого глаза (чтобы показать, что раздел скрыт на сайте).
classNamestringДополнительные CSS классы пункта.
childrenSVerticalMenuLink[]Вложенный массив дочерних пунктов.