更新记录

0.0.1(2023-06-06)

一个基于Vue3和TypeScript开发的 Collapse 折叠面板组件,将一组内容放置在多个折叠面板中,点击面板的标题可以展开或收缩其内容,支持手风琴和异步展开


平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.7.11 app-vue × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
× × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × ×

组件库官方文档:fant-mini-plus

组件库提供更多vue3组件,比单独引入更加强大

Collapse 折叠面板

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

代码演示

基础用法

通过v-model控制展开的面板列表,activeNames为数组格式。

<hd-collapse v-model="activeNames">
  <hd-collapse-item title="标题1" name="1" index="1">内容</hd-collapse-item>
  <hd-collapse-item title="标题2" name="2" index="2">内容</hd-collapse-item>
  <hd-collapse-item title="标题3" name="3" index="3">内容</hd-collapse-item>
</hd-collapse>
const activeNames = ref<string | string[]>([])

手风琴

通过accordion可以设置为手风琴模式,最多展开一个面板,此时activeName为字符串格式。

<hd-collapse accordion v-model="activeNames">
  <hd-collapse-item title="标题1" name="1" index="1">内容</hd-collapse-item>
  <hd-collapse-item title="标题2" name="2" index="2">内容</hd-collapse-item>
  <hd-collapse-item title="标题3" name="3" index="3">内容</hd-collapse-item>
</hd-collapse>
const activeNames = ref<string | string[]>('1')

禁用状态

通过 disabled 属性来禁用单个面板。

<hd-collapse accordion>
  <hd-collapse-item title="标题1" index="1">内容</hd-collapse-item>
  <hd-collapse-item title="标题2" index="2" disabled>内容</hd-collapse-item>
  <hd-collapse-item title="标题3" index="3" disabled>内容</hd-collapse-item>
</hd-collapse>

异步更新

通过给hd-collapse-item组件传入 beforeExpend 函数可以在打开面板前进行校验和处理,返回 true 表示允许打开,返回 false 表示禁止打开。支持返回 Promise 进行例如调用接口获取面板数据的操作。

<hd-loading></hd-loading>

<hd-collapse accordion>
  <hd-collapse-item title="标题1" :index="1">内容</hd-collapse-item>
  <hd-collapse-item title="标题2" :index="2">内容</hd-collapse-item>
  <hd-collapse-item title="标题3" :index="3" :before-expend="beforeExpend">{{content2}}</hd-collapse-item>
</hd-collapse>
const content2 = ref<string>('内容2') // 内容
const loading = useLoading() // loading

/**
 * 折叠面板展开前回调方法
 */
function beforeExpend(name, index) {
  return new Promise((reslove, reject) => {
    loading.showLoading({})
    setTimeout(() => {
      loading.hideLoading()
      content2.value = '通过传入 `beforeExpend` 函数可以在打开面板前进行校验和处理,返回 true 表示允许打开,返回 false 表示禁止打开。支持返回 Promise 进行例如调用接口获取面板数据的操作。'
      reslove(true)
    }, 500)
  })
}

Collapse

Props

Name Description Type Required Default
accordion 是否开启手风琴模式 Boolean false 默认值是:false
border 是否显示外边框 Boolean false 默认值是:false
modelValue 展开的选项,通过v-model绑定 string | string[] false 默认值是:-

Slots

Name Description Default Slot Content
default hd-collapse内部自定义内容,通常配合hd-collapse-item使用 -

Collapse-Item

Props

Name Description Type Required Default
title 标题栏左侧内容 String false -
value 标题栏右侧内容 String false -
label 标题栏描述信息 String false -
border 是否显示内边框 Boolean false 默认值是:false
isLink 是否展示标题栏右侧箭头并开启点击反馈 Boolean false 默认值是:true
clickable 是否开启点击反馈 Boolean false 默认值是:false
disabled 是否禁用面板 Boolean false 默认值是:false
icon 标题栏左侧图标名称或图片链接,可选值见 Icon 组件 String false -
before-expend 打开前的回调函数,返回 false 可以阻止打开,支持返回 Promise Function false -
name 唯一标识符 Number / String false -
index 标识当前为第几个的下标 String / Number false -

回调参数

before-expend 执行时会传递以下回调参数:

参数名 说明 类型
name 唯一标识符 String
index 标识当前为第几个的下标 Number

Slots

Name Description Default Slot Content
default 面板展开时显示的内容 -

联系方式

有不明白或者建议可以扫码交流

联系我们

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问