# 介绍

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

# 引入

在app.json或index.json中引入组件,详细介绍见快速上手

"usingComponents": {
  "mx-collapse": "/miniprogram_npm/m-ui/mx-collapse/index",
  "mx-collapse-item": "/miniprogram_npm/m-ui/mx-collapse-item/index",
}

# 小程序码

可使用微信扫码查看小程序码

#

# 代码演示

# 基本用法

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

 <mx-collapse value="{{ activeNames }}" bind:change="onChange">
  <mx-collapse-item title="标题1" name="1">
    美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题2" name="2">
     美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题3" name="3" disabled>
     美的小程序,在微信上运行
  </mx-collapse-item>
</mx-collapse>
Page({
  data: {
    activeNames: ['1'],
  },
  onChange(event) {
    this.setData({
      activeNames: event.detail,
    });
  },
});

# 手风琴

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

<mx-collapse accordion value="{{ activeName }}" bind:change="onChange">
  <mx-collapse-item title="标题1" name="1">
    美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题2" name="2">
    美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题3" name="3">
    美的小程序,在微信上运行
  </mx-collapse-item>
</mx-collapse>

Page({
  data: {
    activeName: '1',
  },
  onChange(event) {
    this.setData({
      activeName: event.detail,
    });
  },
});

# 事件监听

mx-collapse 提供了 change, open 和 close 事件。change 事件在面板切换时触发,open 事件在面板展开时触发,close 事件在面板关闭时触发。

<mx-collapse
  value="{{ activeNames }}"
  bind:change="onChange"
  bind:open="onOpen"
  bind:close="onClose"
>
  <mx-collapse-item title="标题1" name="1">
    美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题2" name="2">
    美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题3" name="3">
    美的小程序,在微信上运行
  </mx-collapse-item>
</mx-collapse>

Page({
  data: {
    activeNames: ['1'],
  },
  onChange(event) {
    this.setData({
      activeNames: event.detail,
    });
  },
  onOpen(event) {
    console.log(`展开: ${event.detail}`);
  },
  onClose(event) {
    console.log(`关闭: ${event.detail}`);
  },
});

# 自定义标题内容

<mx-collapse value="{{ activeNames }}" bind:change="onChange">
  <mx-collapse-item name="1">
    <view slot="title">标题1<mx-icon name="question-o" /></view>
    美的小程序,在微信上运行
  </mx-collapse-item>
  <mx-collapse-item title="标题2" name="2" icon="shop-o">
    美的小程序,在微信上运行
  </mx-collapse-item>
</mx-collapse>
-Page({
  data: {
    activeNames: ['1'],
  },
  onChange(event) {
    this.setData({
      activeNames: event.detail,
    });
  },
});

# API

# Collapse Props

参数 说明 类型 默认值
value 当前展开面板的 name 非手风琴模式:(string 、number)[]; 手风琴模式:string 、number -
accordion 是否开启手风琴模式 boolean false
border 是否显示外边框 boolean true

# Collapse Event

事件名 说明 回调参数
change 切换面板时触发 activeNames: string
open 展开面板时触发 currentName: string
close 关闭面板时触发 currentName: string

# CollapseItem Props

参数 说明 类型 默认值
name 唯一标识符,默认为索引值 string number
title 标题栏左侧内容 string number
size 标题栏大小,可选值为large string -
icon 标题栏左侧图标名称或图片链接 string -
value 标题栏右侧内容 string number
label 标题栏描述信息 string -
border 是否显示内边框 boolean true
clickable 是否开启点击反馈 boolean false
disabled 是否禁用面板 boolean false

# CollapseItem Slot

事件名 说明
- 面板内容
icon 自定义icon
title 自定义title
right-icon 自定义右侧按钮,默认是arrow

# Collapse 外部样式类

类名 说明
custom-class 根节点样式类

# CollapseItem 外部样式类

类名 说明
custom-class 根节点样式类
content-class 内容样式类