Básico
Explore exemplos práticos e interativos demonstrando os recursos do Vanilla Smart Select. Todos os exemplos são totalmente funcionais e incluem o código fonte completo.
examples/ e examples-bootstrap/ do repositório. Esses arquivos podem ser abertos diretamente no navegador.
Single Select com Busca
Exemplo básico de single select com busca ativa e suporte completo a diacríticos.
Ver código
HTML
<select id="example1">
<option value="">Selecione uma fruta...</option>
<option value="maca">Maçã</option>
<option value="banana">Banana</option>
<option value="laranja">Laranja</option>
<!-- ... outras opções ... -->
</select>
JavaScript
const select = new VanillaSmartSelect('#example1', {
placeholder: 'Selecione uma fruta...',
searchable: true,
searchPlaceholder: 'Digite para buscar...'
});
- Busca: Digite para filtrar (suporta acentos - ex: "acai" encontra "Açaí")
- Teclado: ↑↓ para navegar, Enter para selecionar, ESC para fechar
- Acessibilidade: Totalmente acessível com screen readers (ARIA completo)
Multi-Select com Busca
Multi-seleção com busca integrada e remoção individual de itens.
Ver código
HTML
<select id="example2" multiple>
<option value="js" selected>JavaScript</option>
<option value="ts">TypeScript</option>
<option value="py">Python</option>
<!-- ... outras opções ... -->
</select>
JavaScript
const select = new VanillaSmartSelect('#example2', {
placeholder: 'Selecione linguagens...',
multiple: true,
searchable: true,
searchPlaceholder: 'Buscar linguagens...'
});
- Multi-seleção: Selecione múltiplos itens
- Remover: Clique no × para remover um item selecionado
- Busca: Digite para filtrar a lista
- Teclado: Tab dentro do dropdown é bloqueado - use Enter ou ESC
Select com Grupos (Optgroups)
Opções organizadas em grupos lógicos com busca inteligente.
Ver código
HTML
<select id="example3">
<option value="">Selecione um país...</option>
<optgroup label="América do Sul">
<option value="br">Brasil</option>
<option value="ar">Argentina</option>
</optgroup>
<optgroup label="Europa">
<option value="pt">Portugal</option>
<option value="es">Espanha</option>
</optgroup>
</select>
JavaScript
const select = new VanillaSmartSelect('#example3', {
placeholder: 'Selecione um país...',
searchable: true,
searchPlaceholder: 'Buscar país...'
});
- Grupos: Opções organizadas por categoria
- Busca em grupos: Digite para buscar - mostra apenas grupos com resultados
- Navegação: Use Home/End para ir ao primeiro/último item
Single Select com Clear Button
Botão para limpar a seleção atual com evento dedicado.
Ver código
HTML
<select id="example4">
<option value="">Selecione uma cor...</option>
<option value="vermelho">Vermelho</option>
<option value="azul">Azul</option>
<!-- ... outras opções ... -->
</select>
JavaScript
const select4 = new VanillaSmartSelect('#example4', {
placeholder: 'Selecione uma cor...',
searchable: true,
allowClear: true,
searchPlaceholder: 'Buscar cor...'
});
// Listener para evento de clear
document.querySelector('#example4').addEventListener('vs:clear', (e) => {
console.log('Seleção limpa!');
});
- Clear Button: Botão "×" aparece quando há seleção - clique para limpar
- API Programática: Use
select.clear()para limpar via código - Evento: Escuta o evento
vs:clearquando limpar
Validação HTML5 Automática
Validação nativa do navegador funciona automaticamente, sem JavaScript adicional.
- Borda vermelha automática quando campo
requiredestá vazio - Mensagem nativa do navegador ao tentar submeter formulário inválido
- Select original sempre sincronizado - funciona com qualquer biblioteca de validação
- Funciona com formulários complexos - escala para dezenas de campos sem código extra
Opções Desabilitadas
Demonstração de opções indisponíveis usando o atributo disabled.
Ver código
HTML
<select id="disabled-options">
<option value="">Selecione...</option>
<option value="opt1">Opção 1</option>
<option value="opt2" disabled>Opção 2 (Indisponível)</option>
<option value="opt3">Opção 3</option>
<option value="opt4" disabled>Opção 4 (Indisponível)</option>
<option value="opt5">Opção 5</option>
</select>
JavaScript
new VanillaSmartSelect('#disabled-options', {
placeholder: 'Selecione...',
searchable: true
});
Eventos
Exemplo com listeners para eventos principais do componente.
Ver código
HTML
<select id="events-demo">
<option value="">Selecione...</option>
<option value="a">Item A</option>
<option value="b">Item B</option>
<option value="c">Item C</option>
</select>
<div id="events-log">
<div id="events-log-items"></div>
</div>
JavaScript
const vsEvents = new VanillaSmartSelect('#events-demo', {
placeholder: 'Selecione...',
searchable: true
});
const logBox = document.getElementById('events-log-items');
function addLog(message, color = '#333') {
const ts = new Date().toLocaleTimeString();
const div = document.createElement('div');
div.style.marginBottom = '6px';
div.innerHTML = `<strong style="color: ${color};">[${ts}]</strong> ${message}`;
logBox.insertBefore(div, logBox.firstChild);
}
const eventsEl = document.getElementById('events-demo');
eventsEl.addEventListener('vs:init', () => addLog('vs:init - Select inicializado', '#6f42c1'));
eventsEl.addEventListener('vs:open', () => addLog('vs:open - Dropdown aberto', '#17a2b8'));
eventsEl.addEventListener('vs:close', () => addLog('vs:close - Dropdown fechado', '#6c757d'));
eventsEl.addEventListener('vs:select', (e) => addLog(`vs:select - Selecionado: ${e.detail.data?.text || e.detail.value}`, '#28a745'));
eventsEl.addEventListener('vs:change', (e) => addLog(`vs:change - Valor: ${e.detail.value}`, '#007bff'));
Atalhos de Teclado
Todos os exemplos acima suportam navegação completa por teclado.
| Tecla | Ação |
|---|---|
Enter / Espaço |
Abre o dropdown (quando fechado) |
↑ / ↓ |
Navega entre as opções |
Home |
Vai para a primeira opção |
End |
Vai para a última opção |
Enter |
Seleciona a opção destacada (quando dropdown aberto) |
ESC |
Fecha o dropdown sem selecionar |
Tab |
Dropdown fechado: sai do campo | Dropdown aberto: bloqueado (use Enter/ESC) |
Mais Exemplos
Explore exemplos mais avançados e específicos:
🎨 Templates Customizados
Crie resultados ricos com avatares, ícones, badges e imagens.
Ver exemplos →