Collapsible
Анимированное раскрытие — кликните, чтобы развернуть или свернуть содержимое с плавным переходом по высоте.
VeloxUI includes 3 layout components
veloxui/container
veloxui/splitter
veloxui/scrollbar
vue
<script setup lang="ts">
import { VxCollapsible, VxCollapsibleContent, VxButton } from 'veloxui'
</script>
<template>
<VxCollapsible>
<template #default="{ open, toggle }">
<div style="display: flex; align-items: center; justify-content: space-between;">
<span>VeloxUI includes 3 layout components</span>
<VxButton variant="ghost" size="sm" @click="toggle">
<svg :style="{ transform: open ? 'rotate(180deg)' : '' }">
<!-- chevron down icon -->
</svg>
</VxButton>
</div>
<div>veloxui/container</div>
<VxCollapsibleContent>
<div>veloxui/splitter</div>
<div>veloxui/scrollbar</div>
</VxCollapsibleContent>
</template>
</VxCollapsible>
</template>Controlled
Используйте v-model, чтобы управлять состоянием открытия извне.
closed
This content is controlled via v-model. Toggle it with the button above or programmatically.
vue
<script setup lang="ts">
import { ref } from 'vue'
import { VxCollapsible, VxCollapsibleContent, VxButton } from 'veloxui'
const isOpen = ref(false)
</script>
<template>
<VxButton @click="isOpen = !isOpen">
{{ isOpen ? 'Close' : 'Open' }}
</VxButton>
<VxCollapsible v-model="isOpen">
<VxCollapsibleContent>
<p>Controlled content.</p>
</VxCollapsibleContent>
</VxCollapsible>
</template>Default Open
Начать в развёрнутом состоянии при монтировании.
VeloxUI includes 30+ components: Button, Input, Select, Transfer, Calendar, Accordion, Card, Avatar, Badge, Checkbox, Upload, and many more — all built with Vue 3 and TypeScript.
vue
<template>
<VxCollapsible default-open>
<template #default="{ open, toggle }">
<button @click="toggle">What components are in VeloxUI?</button>
<VxCollapsibleContent>
<p>VeloxUI includes 30+ components...</p>
</VxCollapsibleContent>
</template>
</VxCollapsible>
</template>Inside a Card
Advanced Settings
Configure optional features
Debug mode
Enable verbose logging
Beta features
Try experimental features
vue
<template>
<VxCard>
<VxCollapsible default-open>
<template #default="{ open, toggle }">
<div style="display: flex; align-items: center; justify-content: space-between; padding: 24px;">
<div>
<div>Advanced Settings</div>
<div>Configure optional features</div>
</div>
<VxButton variant="ghost" size="sm" @click="toggle">
<svg :style="{ transform: open ? 'rotate(180deg)' : '' }">...</svg>
</VxButton>
</div>
<VxCollapsibleContent>
<VxCardDivider />
<div style="padding: 24px;">
<!-- settings content -->
</div>
</VxCollapsibleContent>
</template>
</VxCollapsible>
</VxCard>
</template>Disabled
You won't see this.
Components
| Component | Element | Description |
|---|---|---|
VxCollapsible | <div> | Корень — управляет состоянием, слот предоставляет { open, toggle } |
VxCollapsibleTrigger | <button> | Опциональная кнопка-триггер, слот предоставляет { open } |
VxCollapsibleContent | <div> | Анимированное содержимое с переходом по высоте |
Props
| Prop | Type | Default | Description |
|---|---|---|---|
modelValue | boolean | — | Контролируемое состояние открытия (v-model) |
defaultOpen | boolean | false | Начальное состояние открытия |
disabled | boolean | false | Отключить переключение |
Events
| Event | Type | Description |
|---|---|---|
update:modelValue | (boolean) | Изменено состояние открытия |