JSFiddle - React, Tailwind, and code Playground

HTML

<input type="text" class="combobox" />

CSS

body {
    padding: 50px;
}
.cb-button {
    cursor: pointer;
    display: inline-block;
    text-align: center;
    font-size: 10px;
    font-family: serif;
    width: 19px;
    margin: 0 0 0 -20px;
    padding: 0;
    border-color: #bbb;
    border-width: 1px 1px 1px 0;
    border-style: solid;
    vertical-align: top;
    background-color: white;
    line-height: 21px;
}

.cb-button.active {
    background-color: #dedede;
    color: #272727;
    border-left: 1px solid #ececec;
    margin-left: -21px;
}

.cb-list {
    margin: 0;
    padding: 0;
    background-color: #fff;
    list-style: none;
    border: 1px solid black;
    width: 204px;
}

.cb-list li {
    padding: 1px 5px;
    font-family: sans-serif;
    font-size: 80%;
}

.cb-list li:hover {
    background-color: #3399ff;
    color: #fff;
}

.combobox {
    height: 18px;
    width: 200px;
    border:1px solid #bbb; 
    padding:2px 2px 1px 2px; 
    margin:0
}

JavaScript

$cb = $('.combobox');

var items = ["one", "two", "three", "four"];
var $list = $('<ul style="display:none" class="cb-list">');

for (var i in items) {
    $list.append('<li>' + items[i] + '</li>');
}

$button = $('<span class="cb-button">&#9660;</span>');
$('.combobox').after($button);
$button.after($list);

var timer;
$button.add($list).click(function() {
    $list.show();
}).hover(function() {
    clearTimeout(timer);
    $button.addClass('active');
}, function() {
    $button.removeClass('active');
    timer = setTimeout(function() {
        $list.hide();
    }, 250);
});

$('.cb-list li').live('click', function() {
    $cb.val($(this).text());
    $list.hide();
    $cb.focus();
});