Skip to content

Breadcrumb ​

Навигационный компонент, показывающий положение текущей страницы в иерархии сайта. Поддерживает сворачивание, выпадающие списки, иконки, размеры, состояние загрузки, обрезку, кастомные разделители, slot и полную настройку классов.

Basic ​

vue
<script setup>
import { VxBreadcrumb } from 'veloxui'

const items = [
  { label: 'Home', href: '/' },
  { label: 'Products', href: '/products' },
  { label: 'Electronics', href: '/products/electronics' },
  { label: 'Headphones' },
]
</script>

<template>
  <VxBreadcrumb :items="items" />
</template>

Sizes ​

Три размера: small, default и large.

default
vue
<VxBreadcrumb :items="items" size="small" />
<VxBreadcrumb :items="items" size="default" />
<VxBreadcrumb :items="items" size="large" />

Separators ​

Выбирайте из встроенных разделителей или передавайте свою строку.

slash
dot
dash
vue
<VxBreadcrumb :items="items" separator="slash" />
<VxBreadcrumb :items="items" separator="arrow" />
<VxBreadcrumb :items="items" separator="dot" />
<VxBreadcrumb :items="items" separator="dash" />

Custom Separator ​

Передайте любую строку в качестве разделителя или используйте slot #separator.

vue
<VxBreadcrumb :items="items" separator="|" />
<VxBreadcrumb :items="items" separator="→" />

<VxBreadcrumb :items="items">
  <template #separator>
    <MyIcon />
  </template>
</VxBreadcrumb>

Icons ​

Задайте icon у элементов, чтобы показать встроенные иконки: home, folder, file, settings. Или используйте slot #icon для своих иконок.

vue
<VxBreadcrumb :items="[
  { label: 'Home', href: '/', icon: 'home' },
  { label: 'Documents', href: '/docs', icon: 'folder' },
  { label: 'Report.pdf', icon: 'file' },
]" separator="arrow" />

Collapsed (Expand) ​

Используйте max-items, чтобы сворачивать длинные хлебные крошки. Нажмите на многоточие, чтобы развернуть.

vue
<VxBreadcrumb :items="items" :max-items="3" />

Collapsed (Dropdown) ​

Установите collapse-mode="dropdown", чтобы показывать скрытые элементы в выпадающем поповере.

vue
<VxBreadcrumb
  :items="items"
  :max-items="3"
  collapse-mode="dropdown"
/>

Truncation ​

Используйте max-width, чтобы обрезать длинные подписи многоточием. Наведите курсор, чтобы увидеть полный текст.

vue
<VxBreadcrumb :items="items" :max-width="120" />

Loading ​

Показывайте скелетон-плейсхолдер во время загрузки данных.

vue
<VxBreadcrumb :items="items" loading />

Disabled Items ​

Отдельные элементы можно отключить.

vue
<VxBreadcrumb :items="[
  { label: 'Home', href: '/' },
  { label: 'Archived', href: '/archived', disabled: true },
  { label: 'Old Page' },
]" />

Custom Item Slot ​

Используйте slot #item для кастомного рендеринга. Получает item, index и active.

vue
<VxBreadcrumb :items="items">
  <template #item="{ item, active }">
    <MyIcon :name="item.icon" />
    {{ item.label }}
  </template>
</VxBreadcrumb>

Exposed Methods ​

Доступ к expand(), collapse() и isCollapsed через template ref.

vue
<script setup>
import { ref } from 'vue'
const breadcrumbRef = ref()

function toggleCollapse() {
  if (breadcrumbRef.value.isCollapsed) {
    breadcrumbRef.value.expand()
  } else {
    breadcrumbRef.value.collapse()
  }
}
</script>

<template>
  <VxBreadcrumb ref="breadcrumbRef" :items="items" :max-items="3" />
  <button @click="toggleCollapse">Toggle</button>
</template>

Custom Classes ​

Переопределяйте стили через root-class, item-class, active-class и separator-class.

vue
<VxBreadcrumb
  :items="items"
  root-class="my-breadcrumb"
  item-class="my-item"
  active-class="my-active"
  separator-class="my-sep"
/>

API ​

VxBreadcrumb Props ​

PropTypeDefaultDescription
itemsBreadcrumbItem[][]Элементы хлебных крошек
separator'slash' | 'arrow' | 'dot' | 'dash' | string'slash'Разделитель между элементами
size'small' | 'default' | 'large''default'Вариант размера
max-itemsnumber0Максимум видимых элементов (0 = все). Сворачивает средние элементы.
collapse-mode'expand' | 'dropdown''expand'Способ раскрытия свёрнутых элементов
max-widthnumber0Максимальная ширина подписи в px. Обрезает многоточием.
loadingbooleanfalseПоказывать скелетон загрузки
root-classstring | string[] | object—Класс на корневом <nav>
item-classstring | string[] | object—Класс на каждой ссылке
active-classstring | string[] | object—Класс на текущем (последнем) элементе
separator-classstring | string[] | object—Класс на элементах-разделителях
PropertyTypeRequiredDescription
labelstringДаОтображаемый текст
hrefstringНетURL ссылки
tostring | objectНетНазначение Vue Router (рендерит <router-link>)
iconstringНетВстроенная иконка: home, folder, file, settings
disabledbooleanНетОтключить этот элемент

Events ​

EventPayloadDescription
click(item, index, event)Клик по элементу
expand—Свёрнутые элементы развёрнуты
collapse—Элементы снова свёрнуты

Slots ​

SlotPropsDescription
item{ item, index, active }Кастомное содержимое элемента
icon{ item }Кастомная иконка для каждого элемента
separator—Кастомное содержимое разделителя
ellipsis{ expand, toggleDropdown, collapsedItems }Кастомная кнопка многоточия

Exposed ​

NameTypeDescription
expand()() => voidРазвернуть свёрнутые элементы
collapse()() => voidСнова свернуть элементы
isCollapsedbooleanТекущее состояние свёрнутости