Skip to content

Collapse 折叠面板

将一组内容放置在多个折叠面板中,点击面板标题可展开或收起内容。

组件类型

基本使用

v-model 绑定值可为:

  • 普通折叠:string[]
  • 手风琴模式:string
  • 查看更多模式:boolean
html
<wd-collapse v-model="value">
  <wd-collapse-item title="标签1" name="item1">这是一条简单的示例文字。</wd-collapse-item>
  <wd-collapse-item title="标签2" name="item2">这是一条简单的示例文字。</wd-collapse-item>
</wd-collapse>

组件状态

禁用

设置 wd-collapse-itemdisabled 属性禁用单个面板。

html
<wd-collapse v-model="value">
  <wd-collapse-item title="标签1" name="item1">这是一条简单的示例文字。</wd-collapse-item>
  <wd-collapse-item title="标签2" name="item2" disabled>这是一条简单的示例文字。</wd-collapse-item>
</wd-collapse>

异步更新

通过 before-expend 在面板打开前执行拦截,返回 booleanPromise<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)
  })
}

组件变体

手风琴

设置 accordion 后同一时刻仅展开一项。

html
<wd-collapse v-model="value" accordion>
  <wd-collapse-item title="标签1" name="item1">这是一条简单的示例文字。</wd-collapse-item>
  <wd-collapse-item title="标签2" name="item2">这是一条简单的示例文字。</wd-collapse-item>
  <wd-collapse-item title="标签3" name="item3">这是一条简单的示例文字。</wd-collapse-item>
</wd-collapse>

查看更多

设置 viewmore 后可折叠长文本,line-num 控制收起行数。

html
<wd-collapse v-model="value" viewmore :line-num="3">
  这是一条简单的示例文字。这是一条简单的示例文字。这是一条简单的示例文字。这是一条简单的示例文字。
</wd-collapse>

组件样式

自定义标题

使用 wd-collapse-itemtitle 具名插槽,可获取 expanded / disabled / isFirst

html
<wd-collapse v-model="value">
  <wd-collapse-item name="item1">
    <template #title="{ expanded }">
      <view class="header">
        <text style="color: red">通过 slot 自定义标题</text>
        <text>{{ expanded ? '我展开了' : '我已收起' }}</text>
      </view>
    </template>
    这是一条简单的示例文字。
  </wd-collapse-item>
</wd-collapse>

查看更多插槽

查看更多模式下可通过 use-more-slot 启用 more 插槽,自定义“展开/收起”区域。

html
<wd-collapse v-model="value" viewmore use-more-slot custom-more-slot-class="more-slot">
  这是一条简单的示例文字。这是一条简单的示例文字。这是一条简单的示例文字。
  <template #more>
    <view>显示全部</view>
  </template>
</wd-collapse>

特殊样式

嵌套使用

collapse 支持嵌套。由于 collapse-item 内容容器存在默认 padding,嵌套时建议用 custom-body-stylecustom-body-class 覆盖。

提示

custom-body-stylecustom-body-class^(1.4.0) 及以上版本支持。

html
<wd-collapse v-model="collapseRoot">
  <wd-collapse-item v-for="item in 5" :key="item" :name="`${item}`" :title="`标签${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

通过 Collapse 实例方法 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

参数说明类型默认值
name折叠栏唯一标识符string-
title折叠栏标题,支持 title 插槽覆盖string''
disabled是否禁用该折叠栏booleanfalse
before-expend打开前拦截函数,接收 name 参数,返回 booleanPromise<boolean>CollapseItemBeforeExpand-
border是否显示边框booleantrue
custom-body-class v1.4.0折叠栏内容容器自定义类名string''
custom-body-style v1.4.0折叠栏内容容器自定义样式string''
custom-class根节点自定义类名string''
custom-style根节点自定义样式string''

CollapseItemBeforeExpand 参数

参数名说明类型
name当前折叠栏唯一标识符string

Collapse Attributes

参数说明类型默认值
v-model绑定值。普通模式为 string[],手风琴模式为 string,查看更多模式为 booleanstring | string[] | boolean-
accordion是否开启手风琴模式booleanfalse
viewmore是否开启查看更多模式booleanfalse
use-more-slot查看更多模式下是否启用 more 插槽booleanfalse
line-num查看更多模式下收起显示行数number2
custom-more-slot-class查看更多模式下 more 插槽外部自定义类名string''
custom-class根节点自定义类名string''
custom-style根节点自定义样式string''

Events

事件名称说明参数
change绑定值变化时触发{ value }

Methods

方法名说明参数
toggleAll切换所有面板展开状态。传 true 全部展开,false 全部收起,不传为全部切换options?: CollapseToggleAllOptions

CollapseToggleAllOptions

参数名说明类型默认值
expanded是否展开,true 展开,false 收起boolean-
skipDisabled是否跳过禁用项booleanfalse

Collapse Slots

name说明参数
default面板内容或面板项列表-
more查看更多模式下自定义展开收起区域-

CollapseItem Slots

name说明参数
title自定义标题区域{ expanded, disabled, isFirst }
default折叠栏内容-

主题定制

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折叠项内容区域内边距

源代码

文档
组件

Released under the MIT License.

Released under the MIT License.