1.3.1 • Published 8 years ago

vue-comps-dropdown v1.3.1

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

vue-comps-dropdown

a advanced dropdown/up/left/right menu.

Demo

Install

npm install --save-dev vue-comps-dropdown

or include build/bundle.js.

Usage

# in your component
components:
  "dropdown": require("vue-comps-dropdown")
# or, when using bundle.js
components:
  "dropdown": window.vueComps.dropdown
<button> Open Dropdown
  <dropdown>
    <li>Content</li>
  </dropdown>
</button>

altough the dropdown is defined within the button, it will be positioned as a sibling of the parent.

see dev/ for examples.

Props

Nametypedefaultdescription
offsetNumber0horizontal offset
anchorStringoverlay ? "nw" : "sw"point of the parent where it will be attached
not-dismissableBooleanfalsewill be not close on click outside of dropdown
close-on-clickBooleanfalsewill be closed also on click inside of dropdown
constrain-widthBooleanfalsewidth as parent width
overlayBooleanfalsewill overlay parent
ignore-parentBooleanfalsewill not set-up click listener on parent
is-openedBooleanfalse(two-way) set to open / close
transitionString"dropdown"name of a vue transition. Detailed description
parentelementparentElementwhere the dropdown should attach as a sibling
no-siblingBooleanfalseposition as child instead of sibling of parent
on-bodyBooleanfalsewill be positioned on body instead of parent element. Detailed description

Events

Namedescription
before-enterwill be called before open animation
after-enterwill be called when opened
before-leavewill be called before close animation
after-leavewill be called when closed
toggled(isOpened:Boolean)emitted when gets opened or closed. Alternative to use two-way is-opened prop

Positioning

There are three ways of positioning. The default is as a sibling of the parent element, the other posibilities are as a child of the parent element, or on body.

  • The sibling/parent positioning can be problematic when you have an overflow:hidden as a parent to the nearest element with position:absolute|relative|fixed and the dropdown is overflowing.
  • the body positioning can be problematic when the parent is moving relative to body or when you depend on inheritance of styles.

Transition

You can provide a vue transition like this:

Vue.transition("fade",{
  // your transition
})
// or in the instance:
transitions: {
  fade: {
    // your transition
  }
}
// usage:
template: "<dropdown transition='fade'></dropdown>"

You can access several properties in your enter hook:

enter: function(el,cb) {
  // style properties as numbers
  this.top
  this.left
}

Changelog

  • 1.3.1
    fixed constrain-width
    making not-dismissable dynamic

  • 1.3.0
    added toggled event
    set default transition

  • 1.2.1
    added on-body prop

  • 1.2.0
    now using vue transitions
    events are renamed after vue transitions

  • 1.1.1
    added no-sibling prop to disable positioning as sibling of parent

  • 1.1.0
    dropdown will be positioned as a sibling of parent

Development

Clone repository.

npm install
npm run dev

Browse to http://localhost:8080/.

License

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

1.3.1

8 years ago

1.3.0

8 years ago

1.2.2

8 years ago

1.2.1

8 years ago

1.2.0

8 years ago

1.1.1

8 years ago

1.1.0

8 years ago

1.0.0

8 years ago

0.1.0

8 years ago

0.0.1

8 years ago