## Collapse

Use Collapse to store contents.

### Basic usage

You can expand multiple panels

:::demo

```html
<el-collapse v-model="activeNames" @change="handleChange">
  <el-collapse-item title="Consistency" name="1">
    <div>
      Consistent with real life: in line with the process and logic of real
      life, and comply with languages and habits that the users are used to;
    </div>
    <div>
      Consistent within interface: all elements should be consistent, such as:
      design style, icons and texts, position of elements, etc.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Feedback" name="2">
    <div>
      Operation feedback: enable the users to clearly perceive their operations
      by style updates and interactive effects;
    </div>
    <div>
      Visual feedback: reflect current state by updating or rearranging elements
      of the page.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Efficiency" name="3">
    <div>
      Simplify the process: keep operating process simple and intuitive;
    </div>
    <div>
      Definite and clear: enunciate your intentions clearly so that the users
      can quickly understand and make decisions;
    </div>
    <div>
      Easy to identify: the interface should be straightforward, which helps the
      users to identify and frees them from memorizing and recalling.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Controllability" name="4">
    <div>
      Decision making: giving advices about operations is acceptable, but do not
      make decisions for the users;
    </div>
    <div>
      Controlled consequences: users should be granted the freedom to operate,
      including canceling, aborting or terminating current operation.
    </div>
  </el-collapse-item>
</el-collapse>
<script>
  export default {
    data() {
      return {
        activeNames: ['1'],
      }
    },
    methods: {
      handleChange(val) {
        console.log(val)
      },
    },
  }
</script>
<!--
<setup>

  import { defineComponent, ref } from 'vue';

  export default defineComponent({
    setup() {
      const activeNames = ref(['1']);
      const handleChange = (val) => {
        console.log(val);
      };
      return {
        activeNames,
        handleChange,
      };
    },
  });

</setup>
-->
```

:::

### Accordion

In accordion mode, only one panel can be expanded at once

:::demo Activate accordion mode using the `accordion` attribute.

```html
<el-collapse v-model="activeName" accordion>
  <el-collapse-item title="Consistency" name="1">
    <div>
      Consistent with real life: in line with the process and logic of real
      life, and comply with languages and habits that the users are used to;
    </div>
    <div>
      Consistent within interface: all elements should be consistent, such as:
      design style, icons and texts, position of elements, etc.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Feedback" name="2">
    <div>
      Operation feedback: enable the users to clearly perceive their operations
      by style updates and interactive effects;
    </div>
    <div>
      Visual feedback: reflect current state by updating or rearranging elements
      of the page.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Efficiency" name="3">
    <div>
      Simplify the process: keep operating process simple and intuitive;
    </div>
    <div>
      Definite and clear: enunciate your intentions clearly so that the users
      can quickly understand and make decisions;
    </div>
    <div>
      Easy to identify: the interface should be straightforward, which helps the
      users to identify and frees them from memorizing and recalling.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Controllability" name="4">
    <div>
      Decision making: giving advices about operations is acceptable, but do not
      make decisions for the users;
    </div>
    <div>
      Controlled consequences: users should be granted the freedom to operate,
      including canceling, aborting or terminating current operation.
    </div>
  </el-collapse-item>
</el-collapse>
<script>
  export default {
    data() {
      return {
        activeName: '1',
      }
    },
  }
</script>
<!--
<setup>

  import { defineComponent, ref } from 'vue';

  export default defineComponent({
    setup() {
      const activeName = ref('1');

      return {
        activeName,
      };
    },
  });

</setup>
-->
```

:::

### Custom title

Besides using the `title` attribute, you can customize panel title with named slots, which makes adding custom content, e.g. icons, possible.

:::demo

```html
<el-collapse accordion>
  <el-collapse-item name="1">
    <template #title>
      Consistency<i class="header-icon el-icon-info"></i>
    </template>
    <div>
      Consistent with real life: in line with the process and logic of real
      life, and comply with languages and habits that the users are used to;
    </div>
    <div>
      Consistent within interface: all elements should be consistent, such as:
      design style, icons and texts, position of elements, etc.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Feedback" name="2">
    <div>
      Operation feedback: enable the users to clearly perceive their operations
      by style updates and interactive effects;
    </div>
    <div>
      Visual feedback: reflect current state by updating or rearranging elements
      of the page.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Efficiency" name="3">
    <div>
      Simplify the process: keep operating process simple and intuitive;
    </div>
    <div>
      Definite and clear: enunciate your intentions clearly so that the users
      can quickly understand and make decisions;
    </div>
    <div>
      Easy to identify: the interface should be straightforward, which helps the
      users to identify and frees them from memorizing and recalling.
    </div>
  </el-collapse-item>
  <el-collapse-item title="Controllability" name="4">
    <div>
      Decision making: giving advices about operations is acceptable, but do not
      make decisions for the users;
    </div>
    <div>
      Controlled consequences: users should be granted the freedom to operate,
      including canceling, aborting or terminating current operation.
    </div>
  </el-collapse-item>
</el-collapse>
```

:::

### Collapse Attributes

| Attribute             | Description                        | Type                                                 | Accepted Values | Default |
| --------------------- | ---------------------------------- | ---------------------------------------------------- | --------------- | ------- |
| model-value / v-model | currently active panel             | string (accordion mode) / array (non-accordion mode) | —               | —       |
| accordion             | whether to activate accordion mode | boolean                                              | —               | false   |

### Collapse Events

| Event Name | Description                        | Parameters                                                          |
| ---------- | ---------------------------------- | ------------------------------------------------------------------- |
| change     | triggers when active panels change | (activeNames: array (non-accordion mode) / string (accordion mode)) |

### Collapse Item Attributes

| Attribute | Description                        | Type          | Accepted Values | Default |
| --------- | ---------------------------------- | ------------- | --------------- | ------- |
| name      | unique identification of the panel | string/number | —               | —       |
| title     | title of the panel                 | string        | —               | —       |
| disabled  | disable the collapse item          | boolean       | —               | —       |

### Collapse Item Slot

| Name  | Description                    |
| ----- | ------------------------------ |
| —     | content of Collapse Item       |
| title | content of Collapse Item title |
