更新记录
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 | 面板展开时显示的内容 | - |
联系方式
有不明白或者建议可以扫码交流