EN
中文

AAccordion

AAccordion is a stack of collapsible panels built on top of ACollapse. Compose it with AAccordionItem (a header + collapsible body). Use mode="single" for classic accordion behavior (one panel open at a time), or mode="multiple" to keep several open. Bind v-model:modelValue to control which panels are open.

Import

import { Accordion, AccordionItem } from '@any-design/anyui/vue';
// React:  import { Accordion, AccordionItem } from '@any-design/anyui/react';
// Svelte: import { Accordion, AccordionItem } from '@any-design/anyui/svelte';

Basic usage

<template>
  <AAccordion v-model="open">
    <AAccordionItem :value="1" title="What is AnyUI?">
      AnyUI is a cross-framework component library.
    </AAccordionItem>
    <AAccordionItem :value="2" title="Is it themeable?">
      Yes — every component ships with CSS variables.
    </AAccordionItem>
  </AAccordion>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { Accordion, AccordionItem } from '@any-design/anyui/vue';
const open = ref(1);
</script>

Examples

Multiple mode

Set mode="multiple" to allow several panels open at once. modelValue becomes an array of values.

<template>
  <AAccordion v-model="open" mode="multiple">
    <AAccordionItem :value="1" title="First">Several panels can stay open.</AAccordionItem>
    <AAccordionItem :value="2" title="Second">Toggle each independently.</AAccordionItem>
  </AAccordion>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { Accordion, AccordionItem } from '@any-design/anyui/vue';
const open = ref([1]);
</script>

Custom header & icons

Use the header slot to render a custom header instead of title. Pass icon for a leading icon, and expandIcon to customize the expand / collapse chevron.

Disabled & round

Set disabled on an item to prevent toggling it. Set round on AAccordion for rounded corners, and border={false} for a borderless look.

Non-collapsible single

In single mode, set collapsible={false} to always keep one panel open (clicking the open panel won’t close it).

AAccordion Props

Prop Type Default Description
modelValue String | Number | Array Open item value(s). Single mode: one value; multiple mode: array.
mode ‘single’ | ‘multiple’ ‘single’ Opening behavior.
collapsible Boolean true In single mode, allow all panels to be closed.
border Boolean true Show a border around the accordion.
round Boolean false Rounded corners.

AAccordionItem Props

Prop Type Default Description
value String | Number Value identifying this item. When omitted, the index is used.
title String '' Header text (ignored when the header slot is used).
icon String '' Leading icon name (iconify).
expandIcon String 'ic:round-keyboard-arrow-down' Expand / collapse icon.
disabled Boolean false Disable this item.

AAccordionItem Slots

Slot Description
default Collapsible body content.
header Custom header content (replaces title).

AAccordion

AAccordion 是一组基于 ACollapse 的可折叠面板。由 AAccordionItem(头部 + 可折叠内容)组合使用。mode="single" 为经典手风琴(同时只展开一个),mode="multiple" 可同时展开多个。通过 v-model:modelValue 控制展开的面板。

引入

import { Accordion, AccordionItem } from '@any-design/anyui/vue';
// React:  import { Accordion, AccordionItem } from '@any-design/anyui/react';
// Svelte: import { Accordion, AccordionItem } from '@any-design/anyui/svelte';

基础用法

<template>
  <AAccordion v-model="open">
    <AAccordionItem :value="1" title="AnyUI 是什么?">
      AnyUI 是一个跨框架组件库。
    </AAccordionItem>
    <AAccordionItem :value="2" title="支持主题吗?">
      支持 —— 每个组件都基于 CSS 变量。
    </AAccordionItem>
  </AAccordion>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { Accordion, AccordionItem } from '@any-design/anyui/vue';
const open = ref(1);
</script>

示例

多开模式

设置 mode="multiple" 允许同时展开多个面板,modelValue 为值数组。

<template>
  <AAccordion v-model="open" mode="multiple">
    <AAccordionItem :value="1" title="第一段">多个面板可同时展开。</AAccordionItem>
    <AAccordionItem :value="2" title="第二段">独立切换每个面板。</AAccordionItem>
  </AAccordion>
</template>

<script setup lang="ts">
import { ref } from 'vue';
import { Accordion, AccordionItem } from '@any-design/anyui/vue';
const open = ref([1]);
</script>

自定义头部与图标

使用 header 插槽替代 title 渲染自定义头部;传 icon 显示前导图标,传 expandIcon 自定义展开 / 收起箭头。

禁用与圆角

为 item 设置 disabled 可禁止切换;为 AAccordion 设置 round 得到圆角,设置 border={false} 去除外边框。

不可全部收起

single 模式下设置 collapsible={false} 可始终保留一个展开面板(点击已展开面板不会收起)。

AAccordion 属性

属性 类型 默认值 说明
modelValue String | Number | Array 展开项的值。单选模式为单个值;多选模式为数组。
mode ‘single’ | ‘multiple’ ‘single’ 展开行为。
collapsible Boolean true 单选模式下是否允许全部收起。
border Boolean true 是否显示外边框。
round Boolean false 是否圆角。

AAccordionItem 属性

属性 类型 默认值 说明
value String | Number 标识该项的值,省略时使用索引。
title String '' 头部文本(使用 header 插槽时忽略)。
icon String '' 前导图标名(iconify)。
expandIcon String 'ic:round-keyboard-arrow-down' 展开 / 收起图标。
disabled Boolean false 是否禁用。

AAccordionItem 插槽

插槽 说明
default 可折叠内容。
header 自定义头部内容(替代 title)。

Live previews实时预览