2.0.0 • Published 8 years ago

vue-collapsible v2.0.0

Weekly downloads
39
License
MIT
Repository
github
Last release
8 years ago

vue-collapsible

A simple collapsible / accordion.

Demo

Install

npm install --save-dev vue-collapsible/

or include build/bundle.js.

Usage

# in your component
components:
  "collapsible": require("vue-collapsible/collapsible")
  "collapsible-item": require("vue-collapsible/collapsible-item")
# or, when using bundle.js
components:
  "collapsible": window.vueComps.collapsible
  "collapsible-item": window.vueComps.collapsibleItem
<collapsible>
  <collapsible-item>
    <h4 slot="header">header1</h4>
    <p>body 1</p>
  </collapsible-item>
  <collapsible-item>
    <h4 slot="header">header21</h4>
    <p>body 2</p>
  </collapsible-item>
</collapsible>

For examples see dev/.

Props

Collapsible
Nametypedefaultdescription
accordionBooleanfalseonly one child opened at a time
transitionStringcollapsible-transitionname of a reusable vue transition
transition-nameStringcollapsiblecan be used for css transition
classString / Object / Array[collapsible]class of the ul
item-classStringcollapsible-itemclass of the li
header-classStringcollapsible-headerclass of the header a
body-classStringcollapsible-bodyclass of the body div
no-scrollBooleanfalsedisable scroll to top, on open of an item with accordion
scroll-transitionFunction(diff) -> window?.scrollBy?(0,diff)function which gets used for scrolling item back into view on opening.
Collapsible-item
Nametypedefaultdescription
transitionString(inherit from collapsible)name of a reusable vue transition-group
transition-nameString(inherit from collapsible)can be used for css transition
is-openedBooleanfalseis child opened
stay-openBooleanfalse(only with accordion) will stay open

Events on collapsible-item

Namedescription
toggled(isOpened:Boolean)emitted when gets opened or closed.

Transition

You can provide a vue transition like this:

Vue.component('collapsible-transition', {
  functional: true
  render: function(h,context) {
    // overwrite name for css transition - you could also use the transition-name prop
    context.data.attrs.name = "fade"
    // disable css detection for js-only transition
    context.data.props = {css: false}
    // js transition hooks - put emitters inside if you need events on opening/closing
    context.data.on = {
      enter: ...
    }
    return h("transition",context.data,context.children)
  }
})

Changelog

  • 2.0.0
    now compatible with vue 2.0.0
    removed transition events - your transition needs to provide them now, if needed

  • 1.1.0
    scroll bugfix
    set default transition

  • 1.0.1
    changed how scroll works

  • 1.0.0
    changed header type from div to a
    now using vue transitions
    events are renamed after vue transitions
    added toggled event
    using vue-mixins/class to merge class on collapsible and collapsible-item
    added scroll to top and no-scroll, scroll-transition props

Development

Clone repository.

npm install
npm run dev

Browse to http://localhost:8080/.

License

Copyright (c) 2016 Paul Pflugradt Licensed under the MIT license.

2.0.0

8 years ago

1.1.0

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago

0.0.1

8 years ago