Coder Social home page Coder Social logo

megiston / dual-listbox Goto Github PK

View Code? Open in Web Editor NEW

This project forked from maykinmedia/dual-listbox

0.0 1.0 0.0 991 KB

A simple dual listbox build in plain Javascript and some simple styling. (no other libraries of frameworks required)

Home Page: https://maykinmedia.github.io/dual-listbox/

License: MIT License

JavaScript 82.95% HTML 12.45% CSS 4.59%

dual-listbox's Introduction

Build Status Coverage Status Code Climate Lintly npm Known Vulnerabilities BCH compliance

NPM

Sauce Test Status

Dual Listbox

Make your multi select pretty and easy to use with only javascript. No other frameworks/libraries required.

Styling. (From the stylesheet that can be found in the dist folder)

Default

with selected options and one option highlighted.

selected

Install

Install with npm

$ npm i dual-listbox --save

CDN

<script src="https://cdn.jsdelivr.net/npm/dual-listbox/dist/dual-listbox.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/dual-listbox/dist/dual-listbox.css">

<!-- for pinned version -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/dual-listbox.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/dual-listbox.css">

Usage

let dualListbox = new DualListbox('select'); // Selects the first selectbox on the page.
let dualListbox = new DualListbox('.select'); // Selects the first element with the class 'select'
let dualListbox = new DualListbox('#select'); // Selects the first element with the id 'select'

let select = document.querySelector('#select');
let dualListbox = new DualListbox(select); // Add a HTMLElement

You can also pass some options to the DualListbox

let dualListbox = new DualListbox('#select', {
    addEvent: function(value) { // Should use the event listeners
        console.log(value);
    },
    removeEvent: function(value) { // Should use the event listeners
        console.log(value);
    },
    availableTitle: 'Different title',
    selectedTitle: 'Different title',
    addButtonText: '>',
    removeButtonText: '<',
    addAllButtonText: '>>',
    removeAllButtonText: '<<',

    options: [
        {text:"Option 1", value: "OPTION1"},
        {text:"Option 2", value: "OPTION2"},
        {text:"Selected option", value: "OPTION3", selected:true}
    ]
});

dualListbox.addEventListener('added', function(event){
    console.log(event);
    console.log(event.addedElement);
});
dualListbox.addEventListener('removed', function(event){
    console.log(event);
    console.log(event.removedElement);
});

Try it online on JSFiddle.

Exposed elements

All the elements should be exposed. This way it should be possible to add custom attributes to the element of choice.

let dualListbox = new DualListbox('#select');

// Access the buttons:
dualListbox.add_button.setAttribute('a', 'a');
dualListbox.add_all_button.setAttribute('a', 'a');
dualListbox.remove_button.setAttribute('a', 'a');
dualListbox.remove_all_button.setAttribute('a', 'a');

// Access the search field:
dualListbox.search.classList.add('some_class');

// Access the list containers:
dualListbox.selectedList.setAttribute('a', 'a');
dualListbox.availableList.setAttribute('a', 'a');

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Author

Maykin Media

License

Copyright © 2019 Maykin Media Licensed under the MIT license.

dual-listbox's People

Contributors

jostcrow avatar svenvandescheur avatar piotr-gawron avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.