vue-comps-dropdown
v1.3.1
Published
a advanced dropdown menu
Downloads
48
Readme
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
Name | type | default | description
---:| --- | ---| ---
offset | Number | 0 | horizontal offset
anchor | String | overlay ? "nw" : "sw" | point of the parent where it will be attached
not-dismissable| Boolean | false | will be not close on click outside of dropdown
close-on-click | Boolean | false | will be closed also on click inside of dropdown
constrain-width | Boolean | false | width as parent width
overlay | Boolean | false | will overlay parent
ignore-parent | Boolean | false | will not set-up click listener on parent
is-opened | Boolean | false | (two-way) set to open / close
transition | String | "dropdown" | name of a vue transition. Detailed description
parent | element | parentElement | where the dropdown should attach as a sibling
no-sibling | Boolean | false | position as child instead of sibling of parent
on-body | Boolean | false | will be positioned on body instead of parent element. Detailed description
Events
Name | description
---:| ---
before-enter | will be called before open animation
after-enter | will be called when opened
before-leave | will be called before close animation
after-leave | will 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 withposition:absolute|relative|fixed
and the dropdown is overflowing. - the
body
positioning can be problematic when the parent is moving relative tobody
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 dynamic1.3.0
added toggled event
set default transition1.2.1
addedon-body
prop1.2.0
now using vue transitions
events are renamed after vue transitions1.1.1
addedno-sibling
prop to disable positioning as sibling ofparent
1.1.0
dropdown will be positioned as a sibling ofparent
Development
Clone repository.
npm install
npm run dev
Browse to http://localhost:8080/
.
License
Copyright (c) 2016 Paul Pflugradt Licensed under the MIT license.