Skip to content

Collapse

Use v-model and accordion to control collapsible panels.

Supports arbitrary DOM element content.

Basic Usage

Item A

headline title

this is content
Item B
<script setup lang="ts">
import { ref } from 'vue'
const activeNames = ref(['a'])
import Collapse from '@/components/Collapse/Collapse.vue'
import CollapseItem from '@/components/Collapse/CollapseItem.vue' 
</script>

<template>
  <Collapse v-model="activeNames">
    <CollapseItem name="a" title="Item A">
        <h1>headline title</h1>
        <div> this is content </div>
    </CollapseItem>
    <CollapseItem name="b" title="Item B">
      Content B
    </CollapseItem>
  </Collapse>
</template>

Accordion Mode

Accordion Item A
Content Section A
Accordion Item B
Accordion Item C
<script setup lang="ts">
import { ref } from 'vue'
import Collapse from '@/components/Collapse/Collapse.vue'
import CollapseItem from '@/components/Collapse/CollapseItem.vue'

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

<template>
  <Collapse v-model="activeNames" accordion>
    <CollapseItem name="a" title="Accordion Item A">
      <div>Content Section A</div>
    </CollapseItem>
    <CollapseItem name="b" title="Accordion Item B">
      <div>Content Section B</div>
    </CollapseItem>
    <CollapseItem name="c" title="Accordion Item C">
      <div>Content Section C</div>
    </CollapseItem>
  </Collapse>
</template>

Disabled State

Normal Item
Interactive Content
Disabled Item
<script setup lang="ts">
import { ref } from 'vue'
import Collapse from '@/components/Collapse/Collapse.vue'
import CollapseItem from '@/components/Collapse/CollapseItem.vue'

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

<template>
  <Collapse v-model="activeNames">
    <CollapseItem name="a" title="Normal Item">
      <div>Interactive Content</div>
    </CollapseItem>
    <CollapseItem 
      name="b" 
      title="Disabled Item"
      disabled
    >
      <div>This content cannot be expanded</div>
    </CollapseItem>
  </Collapse>
</template>

Collapse Attributes

NameDescriptionTypeDefault
modelValuecurrent active panelsNameType[][]
accordionaccordion modebooleanfalse

Collapse Events

NameDescriptionType
changetriggers when active panels change(value: NameType[]) => void

Type Definition

typescript
export type NameType = string | number