Skip to content

Collapse

Place a set of content in multiple collapsible panels, click panel title to expand or collapse content.

Component Type

Basic Usage

v-model binding value can be:

  • Normal collapse: string[]
  • Accordion mode: string
  • View more mode: boolean
html
<wd-collapse v-model="value">
  <wd-collapse-item title="Tag 1" name="item1">This is a simple example text.</wd-collapse-item>
  <wd-collapse-item title="Tag 2" name="item2">This is a simple example text.</wd-collapse-item>
</wd-collapse>

Component State

Disabled

Set wd-collapse-item disabled property to disable a single panel.

html
<wd-collapse v-model="value">
  <wd-collapse-item title="Tag 1" name="item1">This is a simple example text.</wd-collapse-item>
  <wd-collapse-item title="Tag 2" name="item2" disabled>This is a simple example text.</wd-collapse-item>
</wd-collapse>

Async Update

Execute interception before panel opens through before-expend, return boolean or Promise<boolean>.

html
<wd-collapse v-model="value">
  <wd-collapse-item v-for="item in itemList" :key="item.name" :title="item.title" :name="item.name" :before-expend="beforeExpend">
    {{ item.body }}
  </wd-collapse-item>
</wd-collapse>
ts
const beforeExpend = (name: string) => {
  return new Promise<boolean>((resolve) => {
    setTimeout(() => resolve(true), 500)
  })
}

Component Variant

Accordion

Set accordion to expand only one item at the same time.

html
<wd-collapse v-model="value" accordion>
  <wd-collapse-item title="Tag 1" name="item1">This is a simple example text.</wd-collapse-item>
  <wd-collapse-item title="Tag 2" name="item2">This is a simple example text.</wd-collapse-item>
  <wd-collapse-item title="Tag 3" name="item3">This is a simple example text.</wd-collapse-item>
</wd-collapse>

View More

Set viewmore to collapse long text, line-num controls collapsed line count.

html
<wd-collapse v-model="value" viewmore :line-num="3">
  This is a simple example text. This is a simple example text. This is a simple example text. This is a simple example text.
</wd-collapse>

Component Style

Custom Title

Use wd-collapse-item title named slot, can get expanded / disabled / isFirst.

html
<wd-collapse v-model="value">
  <wd-collapse-item name="item1">
    <template #title="{ expanded }">
      <view class="header">
        <text style="color: red">Custom title through slot</text>
        <text>{{ expanded ? 'I am expanded' : 'I am collapsed' }}</text>
      </view>
    </template>
    This is a simple example text.
  </wd-collapse-item>
</wd-collapse>

View More Slot

In view more mode, use-more-slot can enable more slot to customize "expand/collapse" area.

html
<wd-collapse v-model="value" viewmore use-more-slot custom-more-slot-class="more-slot">
  This is a simple example text. This is a simple example text. This is a simple example text.
  <template #more>
    <view>Show All</view>
  </template>
</wd-collapse>

Special Style

Nested Usage

collapse supports nesting. Since collapse-item content container has default padding, it is recommended to use custom-body-style or custom-body-class to override when nesting.

Tip

custom-body-style and custom-body-class are supported in version ^(1.4.0) and above.

html
<wd-collapse v-model="collapseRoot">
  <wd-collapse-item v-for="item in 5" :key="item" :name="`${item}`" :title="`Tag${item}`" custom-body-style="padding:0 0 0 14px">
    <wd-collapse v-model="collapseList[item - 1]">
      <wd-collapse-item v-for="child in itemList" :key="child.name" :name="child.name" :title="child.title">
        {{ child.body }}
      </wd-collapse-item>
    </wd-collapse>
  </wd-collapse-item>
</wd-collapse>

toggleAll

Batch toggle expand status through Collapse instance method toggleAll.

html
<wd-collapse ref="collapseRef">...</wd-collapse>
ts
collapseRef.value?.toggleAll()
collapseRef.value?.toggleAll(true)
collapseRef.value?.toggleAll(false)
collapseRef.value?.toggleAll({ skipDisabled: true })
collapseRef.value?.toggleAll({ expanded: true, skipDisabled: true })

CollapseItem Attributes

ParameterDescriptionTypeDefault Value
nameCollapse item unique identifierstring-
titleCollapse item title, supports title slot overridestring''
disabledWhether to disable this collapse itembooleanfalse
before-expendPre-open interception function, receives name parameter, returns boolean or Promise<boolean>CollapseItemBeforeExpand-
borderWhether to show borderbooleantrue
custom-body-class v1.4.0Collapse item content container custom class namestring''
custom-body-style v1.4.0Collapse item content container custom stylestring''
custom-classRoot node custom class namestring''
custom-styleRoot node custom stylestring''

CollapseItemBeforeExpand Parameters

Parameter NameDescriptionType
nameCurrent collapse item unique identifierstring

Collapse Attributes

ParameterDescriptionTypeDefault Value
v-modelBinding value. Normal mode is string[], accordion mode is string, view more mode is booleanstring | string[] | boolean-
accordionWhether to enable accordion modebooleanfalse
viewmoreWhether to enable view more modebooleanfalse
use-more-slotWhether to enable more slot in view more modebooleanfalse
line-numCollapsed display line count in view more modenumber2
custom-more-slot-classmore slot external custom class name in view more modestring''
custom-classRoot node custom class namestring''
custom-styleRoot node custom stylestring''

Events

Event NameDescriptionParameters
changeTriggered when binding value changes{ value }

Methods

Method NameDescriptionParameters
toggleAllToggle all panel expand status. Pass true to expand all, false to collapse all, no parameter to toggle alloptions?: CollapseToggleAllOptions

CollapseToggleAllOptions

Parameter NameDescriptionTypeDefault Value
expandedWhether to expand, true to expand, false to collapseboolean-
skipDisabledWhether to skip disabled itemsbooleanfalse

Collapse Slots

nameDescriptionParameters
defaultPanel content or panel item list-
moreCustom expand/collapse area in view more mode-

CollapseItem Slots

nameDescriptionParameters
titleCustom title area{ expanded, disabled, isFirst }
defaultCollapse item content-

主题定制

CSS 变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 全局配置

名称默认值描述
--wot-collapse-bg$filled-oppo折叠面板背景颜色
--wot-collapse-body-color$text-auxiliary折叠内容文字颜色
--wot-collapse-body-font-size$typography-label-size-large折叠内容文字字号
--wot-collapse-padding$padding-loose折叠容器左右内边距
--wot-collapse-body-padding$padding-extra-loose $padding-loose折叠内容区域内边距
--wot-collapse-title-color$text-main折叠标题文字颜色
--wot-collapse-title-font-size$typography-body-size-extra-large折叠标题文字字号
--wot-collapse-arrow-size$n-16折叠箭头尺寸
--wot-collapse-arrow-color$icon-main折叠箭头颜色
--wot-collapse-more-font-size$typography-body-size-main更多按钮文字字号
--wot-collapse-more-color$primary-6更多按钮文字颜色
--wot-collapse-more-margin-top$spacing-main更多按钮上边距
--wot-collapse-more-text-margin-right$spacing-super-tight更多按钮文字右侧间距
--wot-collapse-item-header-padding$padding-extra-loose折叠项头部内边距
--wot-collapse-item-title-color$text-main折叠项标题文字颜色
--wot-collapse-item-title-font-size$typography-body-size-extra-large折叠项标题文字字号
--wot-collapse-item-title-line-height$typography-body-line--height-size-extra-large折叠项标题文字行高
--wot-collapse-item-arrow-size$n-16折叠项箭头尺寸
--wot-collapse-item-arrow-color$icon-secondary折叠项箭头颜色
--wot-collapse-item-body-color$text-auxiliary折叠项内容文字颜色
--wot-collapse-item-body-font-size$typography-label-size-large折叠项内容文字字号
--wot-collapse-item-body-line-height$typography-label-line--height-size-large折叠项内容文字行高
--wot-collapse-item-body-padding$padding-loose $padding-extra-loose折叠项内容区域内边距

Source Code

Documentation
Component

Released under the MIT License.

Released under the MIT License.