change the select option to an input search
Signed-off-by: Toshaan Bharvani <toshaan@vantosh.com>remotes/1693381142243034077/jamesk-patch-1
parent
9f6f327670
commit
f042ba3787
@ -0,0 +1,69 @@
|
|||||||
|
.member-value,
|
||||||
|
.member-list {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.member-value {
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 4px;
|
||||||
|
height: 4rem;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
padding: 1rem;
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #2566f4;
|
||||||
|
border: 3px solid transparent;
|
||||||
|
transition: .3s ease-in-out;
|
||||||
|
&::-webkit-input-placeholder {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
&:hover {
|
||||||
|
background-color: #2566f4;
|
||||||
|
cursor: pointer;
|
||||||
|
&::-webkit-input-placeholder {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:focus,
|
||||||
|
&.open {
|
||||||
|
box-shadow: 0px 5px 8px 0px rgba(0,0,0,0.2);
|
||||||
|
outline: 0;
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #2566f4;
|
||||||
|
&::-webkit-input-placeholder {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.member-list {
|
||||||
|
list-style: none;
|
||||||
|
box-shadow: 0px 5px 8px 0px rgba(0,0,0,0.2);
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 0;
|
||||||
|
transition: .3s ease-in-out;
|
||||||
|
&.open {
|
||||||
|
max-height: 320px;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
position: relative;
|
||||||
|
height: 4rem;
|
||||||
|
color: #ffffff;
|
||||||
|
background-color: #2566f4;
|
||||||
|
padding: 1rem;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: background-color .3s;
|
||||||
|
opacity: 1;
|
||||||
|
&:hover {
|
||||||
|
color: #2566f4;
|
||||||
|
background-color: #ffffff;
|
||||||
|
}
|
||||||
|
&.closed {
|
||||||
|
max-height: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
'use strict';
|
||||||
|
var inputField = document.querySelector('.member-value');
|
||||||
|
var dropdown = document.querySelector('.member-list');
|
||||||
|
var dropdownArray = [].concat(document.querySelectorAll('li'));
|
||||||
|
var dropdownItems = dropdownArray[0];
|
||||||
|
var valueArray = [];
|
||||||
|
dropdownItems.forEach(function (item) {
|
||||||
|
valueArray.push(item.textContent);
|
||||||
|
});
|
||||||
|
var closeDropdown = function closeDropdown() {
|
||||||
|
dropdown.classList.remove('open');
|
||||||
|
};
|
||||||
|
inputField.addEventListener('input', function () {
|
||||||
|
dropdown.classList.add('open');
|
||||||
|
var inputValue = inputField.value.toLowerCase();
|
||||||
|
var valueSubstring = undefined;
|
||||||
|
if (inputValue.length > 0) {
|
||||||
|
for (var j = 0; j < valueArray.length; j++) {
|
||||||
|
if (!(inputValue.substring(0, inputValue.length) === valueArray[j].substring(0, inputValue.length).toLowerCase())) {
|
||||||
|
dropdownItems[j].classList.add('closed');
|
||||||
|
} else {
|
||||||
|
dropdownItems[j].classList.remove('closed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (var i = 0; i < dropdownItems.length; i++) {
|
||||||
|
dropdownItems[i].classList.remove('closed');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dropdownItems.forEach(function (item) {
|
||||||
|
item.addEventListener('click', function (evt) {
|
||||||
|
inputField.value = item.textContent;
|
||||||
|
dropdownItems.forEach(function (dropdown) {
|
||||||
|
dropdown.classList.add('closed');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
inputField.addEventListener('focus', function () {
|
||||||
|
inputField.placeholder = 'Type to filter';
|
||||||
|
dropdown.classList.add('open');
|
||||||
|
dropdownItems.forEach(function (dropdown) {
|
||||||
|
dropdown.classList.remove('closed');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
inputField.addEventListener('blur', function () {
|
||||||
|
inputField.placeholder = 'Select state';
|
||||||
|
dropdown.classList.remove('open');
|
||||||
|
});
|
||||||
|
document.addEventListener('click', function (evt) {
|
||||||
|
var isDropdown = dropdown.contains(evt.target);
|
||||||
|
var isInput = inputField.contains(evt.target);
|
||||||
|
if (!isDropdown && !isInput) {
|
||||||
|
dropdown.classList.remove('open');
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue