forked from website/openpower.foundation
				
			change the select option to an input search
Signed-off-by: Toshaan Bharvani <toshaan@vantosh.com>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