Skip to content
API 风格:

Сворачиваемая панель ​

Группа сворачиваемых панелей в режиме аккордеона или с несколькими раскрытыми элементами; строго соответствует шаблону APG accordion.

Базовое использование ​

Базовое использование

vue
<script setup lang="ts">
</script>

<template>
  <LhCollapse>
    <LhCollapseItem name="a" title="Согласованность и разнообразие">Содержимое</LhCollapseItem>
    <LhCollapseItem name="b" title="Обратная связь">Содержимое</LhCollapseItem>
  </LhCollapse>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhCollapse>
    <LhCollapseItem name="a" title="Согласованность и разнообразие">Содержимое</LhCollapseItem>
    <LhCollapseItem name="b" title="Обратная связь">Содержимое</LhCollapseItem>
  </LhCollapse>
</template>

Аккордеон ​

Аккордеон

vue
<script setup lang="ts">
</script>

<template>
  <LhCollapse accordion>
    <LhCollapseItem name="a" title="Только один открыт">Содержимое</LhCollapseItem>
    <LhCollapseItem name="b" title="Повторный клик сворачивает">Содержимое</LhCollapseItem>
  </LhCollapse>
</template>
vue
<script>
export default {}
</script>

<template>
  <LhCollapse accordion>
    <LhCollapseItem name="a" title="Только один открыт">Содержимое</LhCollapseItem>
    <LhCollapseItem name="b" title="Повторный клик сворачивает">Содержимое</LhCollapseItem>
  </LhCollapse>
</template>

Управляемый v-model и отключаемые элементы ​

v-model управляет текущими раскрытыми панелями (одно значение или массив в зависимости от режима accordion); disabled отключает отдельную панель.

Управляемое раскрытие

Управляемое содержимое A

vue
<script setup>
import { ref } from 'vue'

const activeNames = ref(['a'])
</script>

<template>
  <LhCollapse v-model="activeNames">
    <LhCollapseItem name="a" title="Панель A">Управляемое содержимое A</LhCollapseItem>
    <LhCollapseItem name="b" title="Панель B (отключена)" disabled>Отключённое содержимое</LhCollapseItem>
    <LhCollapseItem name="c" title="Панель C">Управляемое содержимое C</LhCollapseItem>
  </LhCollapse>
</template>
vue
<script>
export default {
  data() {
    return { activeNames: ['a'] }
  },
}
</script>

<template>
  <LhCollapse v-model="activeNames">
    <LhCollapseItem name="a" title="Панель A">Управляемое содержимое A</LhCollapseItem>
    <LhCollapseItem name="b" title="Панель B (отключена)" disabled>Отключённое содержимое</LhCollapseItem>
    <LhCollapseItem name="c" title="Панель C">Управляемое содержимое C</LhCollapseItem>
  </LhCollapse>
</template>

API ​

LhCollapse Props ​

СвойствоОписаниеТипПо умолчанию
modelValueТекущие активные панели (управляемый v-model; одно значение или массив)LhCollapseKey | LhCollapseKey[]—
accordionРежим аккордеона: одновременно раскрыт только один элементbooleanfalse
sxСокращённые свойства компоновки sxLhSxProps—

Events ​

СобытиеОписаниеПараметр обратного вызова
update:modelValueСрабатывает при изменении раскрытых панелей (управляемый v-model)(value: LhCollapseKey | LhCollapseKey[])
changeСрабатывает при изменении раскрытых панелей (неуправляемый режим; в режиме accordion — одно значение)(value: LhCollapseKey | LhCollapseKey[])

LhCollapseItem Props ​

СвойствоОписаниеТипПо умолчанию
nameУникальный идентификатор панелиstring | number—
titleЗаголовок (можно также использовать слот title)string—
disabledОтключена ли панельbooleanfalse
sxСокращённые свойства компоновки sxLhSxProps—

Слоты: title — заголовок, default — содержимое.

Доступность ​

  • Соответствие шаблону APG accordion: заголовок — настоящий <button aria-expanded aria-controls>, область содержимого — role="region" + aria-labelledby
  • Переключение через Enter / Space; отключённые элементы выводятся как нативные disabled и исключаются из взаимодействия
  • Переход высоты выполнён на CSS grid-template-rows: 0fr/1fr (без JS-измерения), уважает prefers-reduced-motion

Типы ​

TypeScript-типы, экспортируемые этим компонентом (извлечены автоматически из packages/components/collapse/src/types.ts и исходников @lh-ui/share/core/*; раскройте нужный пункт, чтобы увидеть полное определение; описания свойств — в таблице Props выше):

LhCollapseProps
ts
/** Props сворачиваемой панели */
export interface LhCollapseProps {
  /** Текущие активные панели (управляемый v-model: Omit facilitates accordion single value) */
  modelValue?: LhCollapseKey | LhCollapseKey[]
  /** Режим аккордеона: одновременно раскрыт только один элемент */
  accordion?: boolean
  /** Сокращённые свойства компоновки sx */
  sx?: LhSxProps
}
LhCollapseItemProps
ts
/** Props элемента панели */
export interface LhCollapseItemProps {
  /** Уникальный идентификатор панели (обязателен) */
  name: LhCollapseKey
  /** Заголовок (можно также использовать слот title) */
  title?: string
  disabled?: boolean
  /** Сокращённые свойства компоновки sx */
  sx?: LhSxProps
}
LhCollapseKey (из @lh-ui/share/core/collapse)
ts
export type LhCollapseKey = string | number

Красота традиций — основа кода