VanillaSelectBox - A dropdown menu with lots of features that takes a select tag and transforms it into a single or multi-select menu with 1 or 2 levels

Overview

vanillaSelectBox v1.0.0

vanillaSelectBox : v1.00 : Adding a package.json file

New : Possibility to change the dropdown tree and change the remote search function

A nice select/multiselect ui with no dependency and two levels support thru optgroups

The idea is to use a mundane SELECT element, hide it and provide a nice drop-down instead. But the data comes from the original element and this one is updated with choices made and still receives a change event. An exception is the remote init() and the remote search() functions (optional) added with v 0.75 but they require at least an empty SELECT element and the result is still provided in the original element. Feel free to ask more explanations in the discussions tab. See you soon

New : you can use the discussions page to help me improve this little tool or even suggest other plugins

vanillaSelectBox is not currently in v1+, please test it carefully before using it in production (interactions with other plugins, css) and be kind enough to report any bug to me so I can improve it.

Find examples at the end of the readme file !

Check my todo list at the very bottom !

screen shot

Demo classic : https://philippemarcmeyer.github.io/vanillaSelectBox/index.html

Demo remote : https://philippemarcmeyer.github.io/vanillaSelectBox/ajaxDemo.html

Transform an HTML select into a selectBox dropdown

the select is hidden and the chosen value(s) is/are available in the source select

let selectBox = new vanillaSelectBox("#brands",{"maxHeight":200,search:true});
  • param 1 : css selector of a normal select element
  • param 2 : options

Available options :

  • maxWidth : for the UI if you don't want the title to expand to much to the right
  • minWidth : for the UI if you don't want the title to be to narrow (combining both, you've got a fixed width)
  • maxHeight : the maxHeight set a scroll on the menu when there are too many items
  • translations : { "all": "Tous", "items": "éléments","selectAll":"Tout sélectionner","clearAll":"Effacer"}
  • search : true/false, to provide a search input text to reduce the list
  • placeHolder : well that's a placeholder !
  • stayOpen : true/false. defaut is false : that's a drop-down. Set it to true and that"s a list (>= v 0.25)
  • disableSelectAll : true/false. defaut is false : add a checkbox select all / clear all
  • maxSelect : integer. set a maximum in the number of selectable options. CheckAll/uncheckAll is then disabled
  • maxOptionWidth : integer,set a maximum width for each option for narrow menus

New options : Remote

  • remote : "remote": { //object => the search input searches remote thanks to the user defined handler onSearch "onInit": getData,// no function here make init comes from SELECT element "onInitSize": 8,// limits the number of data lines for init "onSearch": getData // no function here make search local }

Automatic options :

  • single or multiple choices : depends on the "multiple" attribute that you put in the select code
  • size : if you set a multiple attribute and a size attribute in the select (for instance 3) :
    • the title zone will enumerate the chosen values as a comma separated string until it reaches "size"
    • Above it will show "x items" or "x" + whatever you put in the translations.items key
    • If all the items are selected, it will show "all" or whatever you put in the translations.items all
<select id="brands" multiple size="3">

Result :

screen shot

Available commands :

  • empty()
  • setValue([] || '' || 'all') => the multiple uses an array of values or a comma separated string or the string 'all'
  • disable()
  • enable()
  • destroy()
  • enableItems([] || '') => array of values or comma delimited list
  • disableItems([] || '') => array of values or comma delimited list
selectBox = new vanillaSelectBox("#brandsOne", { "maxHeight": 200, "search": true, "placeHolder": "Choose a brand..." });
selectBox.disableItems(['Lamborghini','Land Rover']);

History :

v1.00 : Due to demand : added a package.json file and switched to 1.0.0 in preparation to an upload to npm

v0.78 : Stop using inline styles in the main button. You can steal use keepInlineStyles:true to use the legacy behaviour

v0.77 : Work on place holder with bastoune help => still seems to lose placeholder value on multiple dropdown checkall

v0.76 : Possibility to change the dropdown tree and change the remote search function + correcting empty() function

v0.75 : Remote search ready + local search modification : when a check on optgroup checks children only if they not excluded from search.

v0.72 : Remote search (WIP) bugfix [x] Select all duplicated

v0.71 : Remote search (WIP) better code => the remote search user deined function must return a promise

v0.70 : remote search (WIP) can be tested. works only on 1 level menus (not optgroups)

v0.65 : Two levels: bug fix : groups are checked/unchecked when check all/uncheck all is clicked

v0.64 : Two levels: groups are now checkable to check/uncheck the children options

v0.63 : Two levels: one click on the group selects / unselects children

v0.62 : New option: maxOptionWidth set a maximum width for each option for narrow menus (ellipsis troncature)

v0.61 : New option: maxSelect, set a maximum to the selectable options in a multiple choice menu

v0.60 : Two levels: optgroups are now used to show two level dropdowns

screen shot

v0.59 : Bug fix : search box was overlapping first item in single selects

v0.58 : Bug fixes

v0.57 : Bug fix (minWidth option not honored)

v0.56 : The multiselect checkboxes are a little smaller, maxWidth option is now working + added minWidth option as well The button has now a style attribute to protect its appearance

v0.55 : All attributes from the original select options are copied to the selectBox element. Excepted => "selected","disabled","data-text","data-value","style"

v0.54 : if all the options of the select are selected by the user then the check all checkbox is checked.

v0.53 : if all the options of the select are selected then the check all checkbox is checked => see demo "select all test"

v0.52 : Better support of select('all') => command is consistent with checkbox and selecting / deselecting while searching select / uncheck only the found items

v0.51 : Translations for select all/clear all + minor css corrections + don't select disabled items

v0.50 : PR by https://github.com/jaguerra2017 adding a select all/clear all check button + optgroup support !

v 0.41 : Bug corrected, the menu content was misplaced if a css transform was applied on a parent

v 0.40 : A click on one selectBox close the other opened boxes

v 0.35 : You can enable and disable items. The already disble options of the select are also used at init time.

v 0.30 : The menu stops moving around on window resize and scroll + z-index in order of creation for multiple instances

v 0.26 : Corrected bug in stayOpen mode with disable() function

v 0.25 : New option stayOpen, and the dropbox is no longer a dropbox but a nice multi-select

screen shot

v 0.22 : Migrating the function to vanillaSelectBox prototype => several instances of vanillaSelectBox() but 1 set of functions in memory

v 0.21 : IE 11 compatibility

v 0.20 : working selectBox both single and multiple choices, with search-box !

v 0.10 : functional plugin for both single and multiple selects, without search box for the moment

v 0.02 : added dispatch change event to select + nicer check mark

v 0.01 : first commit => basics for a single select box + the Dom is cleaned if you init twice

Examples

Single select menu :

       <select id="singleTest">
            <option value="Abarth" >Abarth</option>
            <option value="Alfa Romeo">Alfa Romeo</option>
            <option value="Alpine">Alpine</option>
            <option value="Aston Martin" >Aston Martin</option>
            <option value="Audi" >Audi</option>
            <option value="Bentley" >Bentley</option>
            <option value="BMW" >BMW</option>
            <option value="Cadillac">Cadillac</option>
            <option value="Chevrolet">Chevrolet</option>
            <option value="Citroën">Citroën</option>
            <option value="Cupra">Cupra</option>
            <option value="DACIA">Dacia</option>
        </select>
	
let selectCars = new vanillaSelectBox(
	"#singleTest",
	    {
	    	"placeHolder":"Choose your car",
		translations: { "all": "All", "items": "Cars" } 
	    });

Multiple select menu : note the "multiple" attribute to ge en multiple select menu and the size="2" to replace the comma delimited string of selected items by "3 items" where more than size items are selected (here items is translated to Cars)

       <select id="multiTest" multiple size="2">
            <option value="Abarth" >Abarth</option>
            <option value="Alfa Romeo">Alfa Romeo</option>
            <option value="Alpine">Alpine</option>
            <option value="Aston Martin" >Aston Martin</option>
            <option value="Audi" >Audi</option>
            <option value="Bentley" >Bentley</option>
            <option value="BMW" >BMW</option>
            <option value="Cadillac">Cadillac</option>
            <option value="Chevrolet">Chevrolet</option>
            <option value="Citroën">Citroën</option>
            <option value="Cupra">Cupra</option>
            <option value="DACIA">Dacia</option>
        </select>
	
let selectCars = new vanillaSelectBox(
	"#multiTest",
	    {
		"placeHolder":"Choose up to 3 cars",
		"maxSelect":3,
		"translations": { "all": "All", "items": "Cars" } 
	    });

Two levels : just use optgroup tags to make it two levels

        <div> 
            <label for="dino-select">Choose dinosaurs :</label>
            <select id="dino-select" multiple size="3" >
                <optgroup label="Theropods">
                    <option>Tyrannosaurus</option>
                    <option>Velociraptor</option>
                    <option>Deinonychus</option>
                </optgroup>
                <optgroup label="Sauropods">
                    <option>Diplodocus</option>
                    <option>Saltasaurus</option>
                    <option>Apatosaurus</option>
                </optgroup>
            </select>
        </div>
        
<script>
            
// How to get the result from the original select tag :
            
let chosenDinos = [];

function getValues(id) {
let result = [];
let collection = document.querySelectorAll("#" + id + " option");
collection.forEach(function (x) {
	if (x.selected) {
		result.push(x.value);
	}
});
return result;
}

let selectDinos = new vanillaSelectBox("#dino-select",
    {"maxHeight": 300,
    "search": true,
    translations: { "all": "All", "items": "Dinos" } 
    });

document.getElementById("dino-select").addEventListener("change", function (e) {
	chosenDinos = getValues("dino-select");
	console.log(chosenDinos);
});
      
</script>
        

maxSelect option : limits the number of options you can select

let selectCars = new vanillaSelectBox("#demoShort",
    {"maxSelect": 4, 
    "maxHeight": 200,
    "search": true,
    translations: { "all": "All", "items": "Cars" } 
    });

maxOptionWidth option : limits the width of the menu options to make the menu more narrow using ellipis

let selectCars = new vanillaSelectBox("#demoShort",
    {"maxOptionWidth":70,
    "maxHeight": 200,
    "search": true,
    translations: { "all": "All", "items": "Cars" } 
});

Remote search example :

<select id="demoM1" multiple="true" size="3">
</select>

let selectDemoM1 = new vanillaSelectBox("#demoM1",
    {
        "maxHeight": 300,
        "search": true,
        "placeHolder" : "search to load more data",
        "translations": { "all": "everybody", "items": "people" },
        "remote": {
            "onSearch": doSearch, // used fro search and init
            "onInitSize": 10, // if > 0 onSearch is used for init to populate le select element with the {onInitSize} first elements
        }
    }
);

function doSearch(what, datasize) {
      let valueProperty = "id";
      let textProperty = "name";
      return new Promise(function (resolve, reject) {
          var xhr = new XMLHttpRequest();
          xhr.overrideMimeType("application/json");
          xhr.open('GET','./data.json', true);
          xhr.onload = function () {
              if (this.status >= 200 && this.status < 300) {
                  var data = JSON.parse(xhr.response);

                  if (what == "" && datasize != undefined && datasize > 0) { // for init to show some data
                      data = data.slice(0, datasize);
                      data = data.map(function (x) {
                          return {
                              value: x[valueProperty],
                              text: x[textProperty]
                          }
                      });
                  } else {
                      data = data.filter(function (x) {
                          let name = x[textProperty].toLowerCase();
                          if (name.indexOf(what.toLowerCase()) != -1)
                              return {
                                  value: x[valueProperty],
                                  text: x[textProperty]
                              }
                      });
                  }
                  resolve(data);
              } else {
                  reject({
                      status: this.status,
                      statusText: xhr.statusText
                  });
              }
          };
          xhr.onerror = function () {
              reject({
                  status: this.status,
                  statusText: xhr.statusText
              });
          };
          xhr.send();
      });
  }

TODO

  • Remote search and loading : manage 2 levels dropdowns DONE in 0.75
  • Add a getResult() function instead of just getting it from the DOM hidden select element
  • Add more than levels via optgroups NO don't over complicate this plugin, make another
  • Maybe keep the tree internaly as an objet and keeping the original select as an option but not mandatory anymore NO the select element is the main idea of this plugin
  • Better alternate css support => first of all change css icons with images
Comments
  • Issue scrolling with the select box open

    Issue scrolling with the select box open

    I noticed in #5 that you mentioned a fix on a scrolling problem, I think it's still happening, I'm using the latest 0.35 version, here's how it looks:

    image

    image

    also checked and the .css is the latest, I'm wondering if there's a conflict with any elements in the page that might trigger this behavior.

    Good job on this BTW !!!

    opened by teratux 13
  • How to align the drop right

    How to align the drop right

    What is the best way to right align the drop, need this for a selectbox close to the rightside of the screen.

    I tried it by replacing self.drop.style.left = self.left + "px"; by: var caretright = document.getElementById("btn-group-" + self.domSelector).getElementsByClassName("caret")[0].getBoundingClientRect().right; self.drop.style.float = "right"; self.drop.style.left = null; self.drop.style.right = window.innerWidth - caretright - 10 + "px";

    But maybe there is a better way.

    opened by hansderks 7
  • setValue('all') does not properly set

    setValue('all') does not properly set "select all" item.

    When setValue('all') is called all items are successfully selected but the "select all" item remains. image When the user clicks this it does not do anything but change the text to "clear all".

    Instead when setValue('all') is called it should behave the same as the user clicking the "select all" item and the "select all" item should change to "clear all".

    This can be easily replicated by running selectBox2.setValue('all'); on the demo page.

    opened by RWebster-Noble 6
  • How to change the fixed width?

    How to change the fixed width?

    Hi

    I need change the width in multiselect checkboxes.. But, i have different sizes on my site... is there a way to allow to do this directly in the select?

    Ex. <select name="example[]" multiple size="2" style="width:250px;">

    opened by danicarla 5
  • [QUESTION] How to get the actual values represented in an array?

    [QUESTION] How to get the actual values represented in an array?

    Hey. I'm doing some client-side rendering and request handling so the form isn't submitted directly with HTML. It uses some external JavaScript (fetch) to fulfil requests. For some reason, I can't get an array of the selected options when using

    const formData = new FormData(document.querySelector(`${formID}`));
    

    and formData.entries(). It returns a string even if I selected multiple options.

    Is there any way to get the actual values of the array (if multiple options are selected)?

    opened by ghost 5
  • Right Way to Change Options Dynamically

    Right Way to Change Options Dynamically

    Hello,

    Firstly, thanks for this great plugin. Works really well in most cases.

    There is one problem we are stuck with, not sure if this use-case is supported. Details as follows:

    • We would like to dynamically change the options based on events that happen outside the select (for example some filtering options are chosen elsewhere, etc.)
    • We are fetching the new options using an Ajax call.
    • Since there was no explicit method defined to refresh the widget we tried to pass in the Ajax response data to the remoteSearchIntegrate function.
    • This updates the dropdown with the new data and works fine if there was no option selected before the refresh.
    • The problem is that if there is an option selected by the user it still continues to appear even though it is not part of the refreshed data (new set of options).
    • Note - We even tried to call .empty() before calling .remoteSearchIntegrate(data) - but even that did not fix the issue.

    Could you please let us know if this use case is supported? If so, what is the best way to go about getting this to work?

    Thanks in advance and great work once again.

    opened by ncdram 4
  • Feature Request: Is it possible to have like two or more levels of multi select?

    Feature Request: Is it possible to have like two or more levels of multi select?

    Basically something like this

    • [ ] A
    • [ ] B
      • [ ] b1
      • [ ] b2
    • [ ] C

    Not sure if its already possible, if yes, then can you please let me know how to do it? Thanks. By the way, thank you for this amazing package.

    opened by swaroopg92 4
  • copy attributes from original select

    copy attributes from original select

    Would it be possible to copy all attributes from the original select options to the new one, for example. If I have added data-color="#ff0000" to an option in the original select, I would like to see that value copied to the cloned select option. It would be nice if not only data-attr would be copied but any kind of attribute in the option html.

    opened by HH-kkuijk 4
  • "1 items" instead of "1 item"

    Hello,

    thank you for your project, it's very helpful for me.

    I want to show only items count in the title zone, e.g. "1 item", "2 items" without actual values.

    So if I use select like <select multiple="multiple" size="0"> I see "1 items" instead of "1 item". 2022-01-31_10-44

    Do I need to use some option or it's just a bug?

    Thank you.

    opened by apavliukov 3
  • sep =

    sep = ", "

    Hi,

    It would be nice to change all instances of sep = "," to sep = ", ", so that selected options are separated by a comma and a space. It looks a little nicer.

    Or perhaps include a userOptions.separator?

    opened by chchch 3
  • The placeholder when all items are selected doesnt seems to work

    The placeholder when all items are selected doesnt seems to work

    To make this placeholder work, i had to change somes line of codes.

    I wanted to make you a PR, but as I also had to change bunch of css to adapt to my app, i can't really.

    Line 455 From

            if (self.multipleSize != -1) {
                if (nrActives > self.multipleSize) {
                    let wordForItems = self.userOptions.translations.items || "items"
                    selectedTexts = nrActives + " " + wordForItems;
                }
            }
    

    To (i just substract 1 to make a quick fix but i could count all options but the one with 'all' as value)

            // '-1' is because the "all" option is part of self.options
            if (self.options.length - 1 == nrActives) {
                let wordForAll = self.userOptions.translations.all || "all";
                selectedTexts = wordForAll;
            } else if (self.multipleSize != -1) {
                if (nrActives > self.multipleSize) {
                    let wordForItems = self.userOptions.translations.items || "items"
                    selectedTexts = nrActives + " " + wordForItems;
                }
            }
    

    Line 1207 From nrAll++; to

    if (x.value !== 'all') {
        nrAll++;
    }
    
    opened by bastoune 3
  • Fix bug for selection after filter

    Fix bug for selection after filter

    if you select all the elements when the list is filtered by the textBox it will put the value All to the placeholder even when it does not have all the values selected, if you close and open again the select you will notice that not all the values are checked and the placeholder says All

    If I understand correctly, I think it may related to line 1185 of vanillaSelectBox.js. https://github.com/PhilippeMarcMeyer/vanillaSelectBox/blob/540f6bd7677cbc892dd52018cc70e12360271e7e/vanillaSelectBox.js#L1185-L1190

    checkAllElement.classList.add("active");
    checkAllElement.innerText = self.userOptions.translations.clearAll;
    checkAllElement.setAttribute('data-selected', 'true')
    

    this code snippet should wrap inside if (nrChecked === totalAvailableElements). Because the checkAll checkbox should checked if the selected element length equal to the available elements length instead of Checkable length.

    Also line 564 https://github.com/PhilippeMarcMeyer/vanillaSelectBox/blob/540f6bd7677cbc892dd52018cc70e12360271e7e/vanillaSelectBox.js#L564-L568 I think selectAll should change to clearAll if the selected element length equal to the available elements length.

    opened by wilsonych 0
  • Issue regarding selection after filter

    Issue regarding selection after filter

    if you select all the elements when the list is filtered by the textBox it will put the value All to the placeholder even when it does not have all the values selected, if you close and open again the select you will notice that not all the values are checked and the placeholder says All

    If I understand correctly, I think it may related to line 1185 of vanillaSelectBox.js. https://github.com/PhilippeMarcMeyer/vanillaSelectBox/blob/540f6bd7677cbc892dd52018cc70e12360271e7e/vanillaSelectBox.js#L1185-L1190

    checkAllElement.classList.add("active");
    checkAllElement.innerText = self.userOptions.translations.clearAll;
    checkAllElement.setAttribute('data-selected', 'true')
    

    this code snippet should wrap inside if (nrChecked === totalAvailableElements). Because the checkAll checkbox should checked if the selected element length equal to the available elements length instead of Checkable length.

    Also line 564 https://github.com/PhilippeMarcMeyer/vanillaSelectBox/blob/540f6bd7677cbc892dd52018cc70e12360271e7e/vanillaSelectBox.js#L564-L568 I think selectAll should change to clearAll if the selected element length equal to the available elements length.

    I create a pull request should solved this issue #100

    opened by wilsonych 0
  • Option to not display

    Option to not display "all" when all items are selected

    If all the items are selected, it will show "all" or whatever you put in the translations.items all

    If all elements are selected i would prefer to just have the list of all selected items comma separated instead of "all" or a translation of it.

    opened by Annicc 0
  • Group option isn't checked if all child options are checked initially

    Group option isn't checked if all child options are checked initially

    Hi,

    I have several grouped options. It works fine, if I select them manually.

    If the child options are checked initally, then the group option isn't checked.

    See this fiddle: https://jsfiddle.net/stiggi/8co2buya/

    Best regards Michael

    opened by Stiggi 1
  • setValue('all') gives error when using with remote feature

    setValue('all') gives error when using with remote feature

    I am using remote feature to retrieve options contents from database and I would like to show the vanillaSelectBox with all items selected.

    After creating the component, if I call setValue('all'), I receive the following error

    Cannot read properties of undefined (reading 'querySelectorAll') at vanillaSelectBox.setValue (vanillaSelectBox.js:1203:34)

    Could you post an example of using setValue('all') using remote feature ?

    opened by fyoshino 0
  • vanillaSelectBox does not work properly with lists that contain commas.

    vanillaSelectBox does not work properly with lists that contain commas.

    Discussed in https://github.com/PhilippeMarcMeyer/vanillaSelectBox/discussions/93

    Originally posted by piburglar October 4, 2022 While the feature may work, technically, you cannot tell the user they have selected anything because the function setValue([] || '') does not allow/care for values that have commas in them, and therefore we cannot let the user know that they have selected anything.

    opened by piburglar 0
Owner
philippe MEYER
Full stack web developer at Optimum Automotive since 2017 .NET C#, js, jQ, Bootstrap Former client-server dev I play a lot with reactjs & node theses days
philippe MEYER
Converts select multiple elements into dropdown menus with checkboxes

jquery-multi-select Converts <select multiple> elements into dropdown menus with a checkbox for each <option>. The original <select> element is hidden

mySociety 22 Dec 8, 2022
This restaurant project is a SPA (single-page application) website. The user can navigate between the home, menu and contact page. I used the MealDB API to display some menu items.

Fresh Cuisine This restaurant project is from the Odin Project and it is a SPA (single-page application) website. The user can navigate between the ho

Virag Kormoczy 7 Nov 2, 2022
A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative GIF Engine v2.0.4 ?? [8 minute read] This python and node app generates layered-based gifs to create NFT gif art! It is fast

Jalagar 112 Jan 2, 2023
A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative Animated Engine v3.0.1 ?? [8 minute read] This repo used to be called jalagar/Generative_Gif_Engine but because it now suppo

Jalagar 47 May 24, 2022
This tool allows you to draw up plans for facilities from Foxhole's new Inferno update. It takes power and resource needs into account to help you efficiently design your facilities.

Foxhole Facility Planner This tool allows you to draw up plans for facilities from Foxhole's new Inferno update. It takes power and resource needs int

Brandon Ray 23 Dec 23, 2022
A simple calculator for how many units of insulin to take with a meal depending on current and target blood sugar levels.

Insulin-Calculator One of my first programs, made to try building javascript-read HTML forms. A simple calculator for how many units of insulin to tak

Athena 1 Dec 26, 2021
Natura is a women-only gym that provides a safe, supportive environment for women of all shapes, sizes, and fitness levels

Natura is a women-only gym that provides a safe, supportive environment for women of all shapes, sizes, and fitness levels. Their goal is to help women feel confident and comfortable in their own skin, and to encourage them to lead healthy, active lifestyles.

Monique 9 Nov 30, 2022
A utility that mutates and transforms a style-dictionary object into something Figma Tokens plugin understands

Brought to you by Style Dictionary To Figma A utility that transforms a style-dictionary object into something Figma Tokens plugin understands. Used b

‹div›RIOTS 74 Jan 4, 2023
A jQuery Single/Multi Select plugin which can be used on almost any device

jquery.sumoselect jquery.sumoselect.js - A beautiful cross device Single/Multi Select jQuery Select plugin. A jQuery plugin that progressively enhance

Hemant Negi 537 Dec 7, 2022
Responsive Dropdown Menu Bar

Responsive Dropdown Menu Watch it on youtube Responsive Dropdown Menu Beautiful and clean responsive navigation bar includes a beautiful drop-down sid

Marlon 44 Oct 21, 2022
A library that helps you write a static dropdown menu that follows the digital accessibility recommendations.

JSPanel A library that helps you write a static dropdown menu, a panel, that follows the digital accessibility recommendations. Get started First of a

CodoPixel 1 Apr 29, 2021
A multi-tag input for sanity studio.

sanity-plugin-tags A multi-tag input for sanity studio. Fully featured with autocomplete capabilities, live updates, predefined tag options, style and

P Christopher Bowers 7 Jul 22, 2022
A vanilla JavaScript multi-checkbox dropdown web component.

Multi-Checkbox Web Component Multi-Checkbox is a web component that utilizes multiple checkboxes in a dropdown list to populate the value of an input.

null 2 Dec 24, 2021
Select creates a dropdown list of items with the selected item in closed view.

Native Base Select ?? This module includes a customizable multi-select and a single select component for Native Base. The package is both Android and

Blump Tech 3 Dec 25, 2022
A custom select dropdown. This is something that is not too difficult to make.

Custom-Dropdown-JS A custom select dropdown using basic JS fucntionality. This is something that is not too difficult to make. But it shows that you h

Devanshu Vashishtha 2 Mar 26, 2022
a jquery searchable select dropdown

Select Search A simple jquery search on select options plugin for your website How To Use Just create an html structure that contains select tag e.g.

Juliver Galleto 1 Sep 25, 2020
Dropdown select box for bootstrap 5

dselect Dropdown select box for bootstrap 5 Demo Features Placeholder Multiple Search Creatable Clearable Sizing Validation Installation Install dsele

null 30 Dec 21, 2022
🏏 GitHub action to split your Git release tag into SemVer 2.0 parts

?? Git Tag Action GitHub action to split your Git release tag into SemVer 2.0 parts This is a simple action to split your git tag, usually for release

Noel 5 Oct 31, 2022
jSide Menu is a well designed, simple and clean side navigation menu with dropdowns.

jQuery jSide Menu jSide Menu is a well designed, simple and clean side navigation menu with dropdowns. Browse: Live Demo & Using Guide Main Features F

CodeHim 24 Feb 14, 2022