Dropdownizer
Converts HTML select elements into customizable dropdowns.
This project...
- Is lightweight and dependency free.
- Includes support for native mobile dropdowns.
- Keeps original
selectelements in sync. - Properly resizes the dropdown to match the longest line.
- Works with standard
changeevents and a proprietaryonChangemethod.
Usage
npm i dropdownizer
Node
let Dropdownizer = require("dropdownizer");Minified version:
let Dropdownizer = require("dropdownizer/dist/Dropdownizer.min");Browser
import Dropdownizer from "dropdownizer";Minified version:
import Dropdownizer from "dropdownizer/dist/Dropdownizer.min";Script tag:
<script src="node_modules/dropdownizer/dist/Dropdownizer.min.js"></script>Stylesheet
<link rel="stylesheet" href="node_modules/dropdownizer/style/dropdownizer.css">Documentation
See the documentation.
Examples
Pass in a string to bind to the matching element(s).
new Dropdownizer("select");Pass in an HTMLElement to bind to the matching element(s).
new Dropdownizer(document.querySelector("select"));Use the onChange method.
new Dropdownizer("#my-dd").onChange(evt => {
console.log(evt.data.value);
});Listen to a change event.
let dropdown = document.querySelector("#my-dd");
dropdown.addEventListener("change", evt => {
console.log(evt.target.value);
});
new Dropdownizer(dropdown);Use the onOpen and onClose methods.
new Dropdownizer("#my-dd").onOpen(evt => {
console.log("opened", evt.target);
}).onClose(evt => {
console.log("closed", evt.target);
});See live examples.
Notes
- Non-inline styles applied directly to the
selectelement and/or itsidare not copied to the dropdownizer instance. Use classes if you want sync styles. - The
changeevent and proprietaryonChangemethod differ in what's returned.- The
changeevent is dispatched from the original element while theonChangemethod belongs to the dropdownizer instance.
- The
- Auto-size logic is not 100% accurate when a dropdown is initially invisible. Please test accordingly if your dropdown starts off in a hidden state.
Changelog
1.5.1
- Fix item insertion issue for the original element
- The
addItemmethod was not inserting the new list item into the correct index of the originalselectelement.
- The
1.5.0
- Add methods to programmatically add/remove items.
- Logic improvements.
1.4.0
- Rename
changemethod toonChange.- The
changemethod is still supported, but with a deprecation warning.
- The
- Add
openandcloseevents.
1.3.2
- Add fail-safe for auto-size logic (for cases where the
selectelement is initially hidden).- This feature is in beta.
- Properly support the 'hidden' attribute.
1.3.1
- Improve auto-size logic.
1.3.0
- Add
disableandenablemethods. - Copy all attributes from the
selectelement to its dropdownizer instance.- Attributes that are part of the
divW3C spec are copied as is; all other attributes are copied as adata-*attribute.
- Attributes that are part of the
1.2.0
- Update dependencies
1.1.0
- Add the ability to programmatically select a list item by its names (via the
selectItemmethod).- String searches are not case-sensitive.
- Add
selectedItemgetter. - Improve error catching.
1.0.0
- Initial Release
License
Copyright (c) 2015, 2017 Leandro Silva (http://grafluxe.com)
Released under the MIT License.
See LICENSE.md for entire terms.