import{o as a,a as t,y as n}from"./vue-libs.b44bc779.js";const l={class:"van-doc-markdown-body"},e=n(`

Collapse

Intro

Place a group of content in multiple collapsible panels, click the title of the panel to expand or contract its content.

Install

Register component globally via app.use, refer to Component Registration for more registration ways.

import { createApp } from 'vue';
import { Collapse, CollapseItem } from 'vant';

const app = createApp();
app.use(Collapse);
app.use(CollapseItem);

Usage

Basic Usage

Use v-model to control the name of active panels.

<van-collapse v-model="activeNames">
  <van-collapse-item title="Title1" name="1">Content 1</van-collapse-item>
  <van-collapse-item title="Title2" name="2">Content 2</van-collapse-item>
  <van-collapse-item title="Title3" name="3">Content 3</van-collapse-item>
</van-collapse>
import { ref } from 'vue';

export default {
  setup() {
    const activeNames = ref(['1']);
    return { activeNames };
  },
};

Accordion

In accordion mode, only one panel can be expanded at the same time.

<van-collapse v-model="activeName" accordion>
  <van-collapse-item title="Title1" name="1">Content 1</van-collapse-item>
  <van-collapse-item title="Title2" name="2">Content 2</van-collapse-item>
  <van-collapse-item title="Title3" name="3">Content 3</van-collapse-item>
</van-collapse>
import { ref } from 'vue';

export default {
  setup() {
    const activeName = ref('1');
    return { activeName };
  },
};

Disabled

Use the disabled prop to disable CollapseItem.

<van-collapse v-model="activeNames">
  <van-collapse-item title="Title1" name="1">Content 1</van-collapse-item>
  <van-collapse-item title="Title2" name="2" disabled>
    Content 2
  </van-collapse-item>
  <van-collapse-item title="Title3" name="3" disabled>
    Content 3
  </van-collapse-item>
</van-collapse>

Custom title

<van-collapse v-model="activeNames">
  <van-collapse-item name="1">
    <template #title>
      <div>Title1 <van-icon name="question-o" /></div>
    </template>
    Content 1
  </van-collapse-item>
  <van-collapse-item title="Title2" name="2" icon="shop-o">
    Content 2
  </van-collapse-item>
</van-collapse>
import { ref } from 'vue';

export default {
  setup() {
    const activeNames = ref(['1']);
    return { activeNames };
  },
};

Toggle All

Using toggleAll method to toggle all items.

<van-collapse v-model="activeNames">
  <van-collapse-item title="Title1" name="1">Content 1</van-collapse-item>
  <van-collapse-item title="Title2" name="2">Content 2</van-collapse-item>
  <van-collapse-item title="Title3" name="3">Content 3</van-collapse-item>
</van-collapse>

<van-button type="primary" @click="openAll">Open All</van-button>
<van-button type="primary" @click="toggleAll">Toggle All</van-button>
import { ref } from 'vue';

export default {
  setup() {
    const activeNames = ref(['1']);
    const collapse = ref(null);

    const openAll = () => {
      collapse.value.toggleAll(true);
    }
    const toggleAll = () => {
      collapse.value.toggleAll();
    },

    return {
      activeNames,
      openAll,
      toggleAll,
      collapse,
    };
  },
};

Tips: The toggleAll method cannot be used in accordion mode.

API

Collapse Props

AttributeDescriptionTypeDefault
v-modelNames of current active panelsaccordion mode: number | string
non-accordion mode: (number | string)[]
-
accordionWhether to be accordion modebooleanfalse
borderWhether to show outer borderbooleantrue

Collapse Events

EventDescriptionArguments
changeEmitted when switching panelactiveNames: string | number | Array<string | number>

CollapseItem Props

AttributeDescriptionTypeDefault
nameNamenumber | stringindex
iconLeft Iconstring-
sizeTitle size, can be set to largestring-
titleTitlenumber | string-
valueRight textnumber | string-
labelDescription below the titlestring-
borderWhether to show inner borderbooleantrue
disabledWhether to disabled collapsebooleanfalse
readonly v3.0.12Whether to be readonlybooleanfalse
is-linkWhether to show link iconbooleantrue
lazy-render v3.4.5Whether to lazy render util openedbooleantrue
title-classTitle classNamestring-
value-classValue classNamestring-
label-classLabel classNamestring-

Collapse Methods

Use ref to get Collapse instance and call instance methods.

NameDescriptionAttributeReturn value
toggleAll v3.5.3Toggle the expanded status of all collapsesoptions?: boolean | object-

toggleAll Usage

import { ref } from 'vue';
import type { CollapseInstance } from 'vant';

const collapseRef = ref<CollapseInstance>();

// Toggle all
collapseRef.value?.toggleAll();
// Expand all
collapseRef.value?.toggleAll(true);
// UnExpand all
collapseRef.value?.toggleAll(false);

// Toggle all, skip disabled
collapseRef.value?.toggleAll({
  skipDisabled: true,
});
// Expand all, skip disabled
collapseRef.value?.toggleAll({
  expanded: true,
  skipDisabled: true,
});

CollapseItem Methods

Use ref to get CollapseItem instance and call instance methods.

NameDescriptionAttributeReturn value
toggleToggle expanded statusexpanded: boolean-

Types

The component exports the following type definitions:

import type {
  CollapseProps,
  CollapseItemProps,
  CollapseItemInstance,
  CollapseToggleAllOptions,
} from 'vant';

CollapseItemInstance is the type of component instance:

import { ref } from 'vue';
import type { CollapseItemInstance } from 'vant';

const collapseItemRef = ref<CollapseItemInstance>();

collapseItemRef.value?.toggle();

CollapseItem Slots

NameDescription
defaultContent
titleCustom header title
valueCustom header value
label v3.1.1Custom header label
iconCustom header left icon
right-iconCustom header right icon

Theming

CSS Variables

The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.

NameDefault ValueDescription
--van-collapse-item-transition-durationvar(--van-animation-duration-base)-
--van-collapse-item-content-paddingvar(--van-padding-sm) var(--van-padding-md)-
--van-collapse-item-content-font-sizevar(--van-font-size-md)-
--van-collapse-item-content-line-height1.5-
--van-collapse-item-content-text-colorvar(--van-text-color-2)-
--van-collapse-item-content-background-colorvar(--van-background-color-light)-
--van-collapse-item-title-disabled-colorvar(--van-text-color-3)-
`,20),p=[e],i={__name:"README",setup(c,{expose:s}){return s({frontmatter:{}}),(d,r)=>(a(),t("div",l,p))}};export{i as default};