Dropdown select box for bootstrap 5.3.3
- Placeholder
- Multiple (Tags)
- Search
- Creatable
- Clearable
- Sizing
- Validation
- Localization
- Images in dropdown menu
Install dselect with npm
npm i @skem9/dselect
Install from cdn
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/Yohn/dselect@1.1.0/dist/css/dselect.min.css">
<script src="https://cdn.jsdelivr.net/gh/Yohn/dselect@1.1.0/dist/js/dselect.min.js"></script>
<select class="form-select" id="dselect-example">
<option value="chrome">Chrome</option>
<option value="firefox">Firefox</option>
<option value="safari">Safari</option>
<option value="edge">Edge</option>
<option value="opera">Opera</option>
<option value="brave">Brave</option>
</select>
dselect(document.querySelector('#dselect-example'))
const config = {
search: false, // Toggle search feature. Default: false
creatable: false, // Creatable selection. Default: false
clearable: false, // Clearable selection. Default: false
maxHeight: '360px', // Max height for showing scrollbar. Default: 360px
size: '', // Can be "sm" or "lg". Default ''
classTag: 'text-bg-dark bg-gradient', // a class to be added to the tag badges
searchPlaceholder: 'Search..', // when search: true the placeholder in input box
noResultsPlaceholder: 'No results found', // when search finds no results
addOptionPlaceholder: 'Press Enter to add "<strong>[searched-term]</strong>"', // when creatable: true the help text under the search box
itemClass: '', // an additional css class to be added to each item within the dropdown menu
}
dselect(document.querySelector('#dselect-example'), config)
Note
options can also be set in "data-dselect-*" attribute
<select
class="form-select" id="dselect-example"
data-dselect-size="sm"
data-dselect-search="true"
data-dselect-creatable="true"
data-dselect-clearable="true"
data-dselect-item-class=""
data-dselect-max-height="300px"
data-dselect-class-tag="text-bg-dark bg-gradient"
data-dselect-search-placeholder="Search.."
data-dselect-no-results-placeholder="No results found"
data-dselect-add-option-placeholder="Press Enter to add new tag.">
<option value="">Choose browser</option>
<option data-dselect-img="imgs/chrome.svg" value="chrome">Chrome</option>
<option data-dselect-img="imgs/firefox.svg" value="firefox">Firefox</option>
<option data-dselect-img="imgs/safari.svg" value="safari">Safari</option>
<option data-dselect-img="imgs/edge.svg" value="edge">Edge</option>
<option data-dselect-img="imgs/opera.svg" value="opera">Opera</option>
<option data-dselect-img="imgs/brave.svg" value="brave">Brave</option>
</select>
Note
Attach event listeners to to the <select>
id and it will work as expected.
const select = document.document.getElementById('select-id')
select.addEventListener('change', () => {
console.log(select.value)
})
// for multi select / tags
const multiple = document.querySelector('#example-multiple')
multiple.addEventListener('change', () => {
const selectedValues = Array.from(multiple.selectedOptions)
.map((option) => option.value);
console.innerHTML = JSON.stringify(selectedValues);
})