@mtcmedia/vue-collapsible

Vue 3 collapsible component
3,498
Install
npm install @mtcmedia/vue-collapsible
Latest Version:3.0.0
Vue:3
Older releases:2
Last Updated:Jul 6, 2022
Links: npm
Maintainer: mtcmedia

npm version

@mtcmedia/vue-collapsible

Install to production site

npm install @mtcmedia/vue-collapsible

Vue 2 - Install to production site

npm install @mtcmedia/vue-collapsible@2.0.1

Usage

import MtcCollapsible from '@mtcmedia/vue-collapsible'
import '@mtcmedia/vue-collapsible/dist/MtcCollapsible.css'

Vue.component('MCollapsible', MtcCollapsible)
<MCollapsible>
    <template #title-button>
        <h2>replaces all content within the button</h2>
    </template>
    <!-- this is the main slot -->
    <h2>Add collapsible content here!</h2>
    <p>This can be anything</p>
</MCollapsible>

<!-- Option with completely custom html within trigger -->
<MCollapsible>
    <template #trigger="{ triggerProps }">
        <a href="https://www.mtcmedia.co.uk"
            :class="triggerProps.classes"
        >mtc.</a>
    </template>
    <!-- this is the main slot -->
    <h2>Add collapsible content here!</h2>
    <p>This can be anything</p>
</MCollapsible>
<MCollapsible>
    <template #trigger="{ triggerProps }">
        <button
            :class="triggerProps.classes"
            @click.prevent="customTriggerFunction(triggerProps)"
            :disabled="triggerProps.disabled"
        >mtc.</button>
    </template>
    <!-- this is the main slot -->
    <template #default>
        <h2>Add collapsible content here!</h2>
        <p>This can be anything</p>
        <p>Maybe you require to calculate something before opening the overlay</p>
    </template>
</MCollapsible>
customTriggerFunction () {
    triggerProps.setDisabled = true
}

Props

The component accepts these props:

Attribute Type Default Description
active Boolean false Set as closed by default
disabled Boolean false Prevent button from being clickable
hash String empty Matching window.location.hash will open this component

Slots

The component accepts these slots:

  • default : The content that will be hidden/shown on click of the button
  • title-button : Replace entire button content
  • title-text : Use to define the text the button
  • title-icon : Use to add a custom icon to the title button
  • trigger : Replace button trigger with custom html - has access to triggerProps as scoped data
triggerProps = {
    classes: [
        'MCollapsible__title',
        'MCollapsible__button'
    ],
    active: this.show, // the active state of this panel
    disabled: this.isDisabled, // the disabled state of this trigger
    showContent: this.showContent, // the function to trigger active state of this panel and toggle the content
    setDisabled: this.setDisabled // use this function to set the disabled state of the trigger
}

Development Setup

npm install

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build

Run your unit tests

npm run test:unit

Lints and fixes files

npm run lint

Customize configuration

See Configuration Reference.

Related Packages

vue-height-collapsible

Collapsible library based on CSS transition for Vue

141,770 4
vue-collapsible-component

Vue component to wrap content in Collapsible element with trigger to open and cl...

22,082
vue-bulma-accordion

A simple, easily configurable accordion or collapsible for Vue, styled with Bulm...

33,590 36
vue3-rich-accordion

Vue 3 rich accordion component

24,034

Version History

Version Released Vue License
3.0.0 ^3.0.0
2.0.1 ^2.6.11
2.0.0 ^2.6.11
1.5.0 ^2.6.11
1.4.1 ^2.6.11