Bootstrap
Vanilla Smart Select funciona perfeitamente com Bootstrap 5 sem conflitos de CSS.
Todas as classes usam o prefixo .vs- para evitar colisões.
Compatibilidade
- Bootstrap 5.3.x - Totalmente compatível
- Bootstrap 5.2.x - Totalmente compatível
- Bootstrap 5.1.x - Totalmente compatível
.form-select- Estilização do select.form-label- Labels dos formulários.form-control- Alternativa ao form-select.is-invalid/.is-valid- Estados de validação.invalid-feedback- Mensagens de erro.mb-3,.mt-3- Espaçamentos
.vs- para evitar conflitos com Bootstrap.
Ordem de Inclusão dos Arquivos
- Bootstrap CSS - Carregue primeiro
- Vanilla Smart Select CSS - Carregue depois
- Seu conteúdo HTML
- Bootstrap JS (opcional - se usar componentes Bootstrap)
- Vanilla Smart Select JS
- Seu código JavaScript
Exemplo Completo
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- Vanilla Smart Select CSS -->
<link href="vanilla-smart-select.min.css" rel="stylesheet">
</head>
<body>
<!-- Seu conteúdo -->
<!-- Bootstrap JS (opcional) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<!-- Vanilla Smart Select JS -->
<script src="vanilla-smart-select.min.js"></script>
<!-- Seu código -->
<script>
new VanillaSmartSelect('#mySelect');
</script>
</body>
</html>
Grid System
Use o grid system do Bootstrap normalmente com o Vanilla Smart Select:
Ver código
HTML
<div class="row">
<div class="col-md-4">
<div class="mb-3">
<label for="grid-select1" class="form-label">Select 1</label>
<select id="grid-select1" class="form-select">
<option value="">Selecione...</option>
<option value="frontend">🎨 Frontend</option>
<option value="backend">⚙️ Backend</option>
<option value="mobile">📱 Mobile</option>
<option value="devops">🚀 DevOps</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="mb-3">
<label for="grid-select2" class="form-label">Select 2</label>
<select id="grid-select2" class="form-select">
<option value="">Selecione...</option>
<option value="junior">Júnior</option>
<option value="pleno">Pleno</option>
<option value="senior">Sênior</option>
<option value="lead">Lead</option>
</select>
</div>
</div>
<div class="col-md-4">
<div class="mb-3">
<label for="grid-select3" class="form-label">Select 3</label>
<select id="grid-select3" class="form-select">
<option value="">Selecione...</option>
<option value="remoto">🏠 Remoto</option>
<option value="presencial">🏢 Presencial</option>
<option value="hibrido">🔄 Híbrido</option>
</select>
</div>
</div>
</div>
JavaScript
new VanillaSmartSelect('#grid-select1', {
placeholder: 'Selecione uma área...'
});
new VanillaSmartSelect('#grid-select2', {
placeholder: 'Selecione o nível...'
});
new VanillaSmartSelect('#grid-select3', {
placeholder: 'Selecione o modelo...'
});
Componentes Bootstrap
Vanilla Smart Select funciona perfeitamente dentro de componentes Bootstrap como Cards, Modals, Tabs, etc:
Exemplo com Card
Ver código
HTML
<div class="card">
<div class="card-header">
⚙️ Configurações
</div>
<div class="card-body">
<div class="mb-3">
<label for="category-select" class="form-label">Categoria</label>
<select id="category-select" class="form-select">
<option value="">Selecione...</option>
<option value="tech">💻 Tecnologia</option>
<option value="food">🍔 Alimentação</option>
<option value="sports">⚽ Esportes</option>
<option value="music">🎵 Música</option>
<option value="travel">✈️ Viagens</option>
</select>
</div>
<div class="mb-3">
<label for="priority-select" class="form-label">Prioridade</label>
<select id="priority-select" class="form-select">
<option value="">Selecione...</option>
<option value="high">🔴 Alta</option>
<option value="medium">🟡 Média</option>
<option value="low">🟢 Baixa</option>
</select>
</div>
</div>
</div>
JavaScript
new VanillaSmartSelect('#category-select', {
placeholder: 'Selecione uma categoria...'
});
new VanillaSmartSelect('#priority-select', {
placeholder: 'Selecione a prioridade...'
});
Exemplo com Modal
Ver código
HTML
<!-- Botão para abrir modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#settingsModal">
Abrir Configurações
</button>
<!-- Modal -->
<div class="modal fade" id="settingsModal" tabindex="-1" aria-labelledby="settingsModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="settingsModalLabel">Configurações</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="mb-3">
<label for="modal-theme" class="form-label">Tema</label>
<select id="modal-theme" class="form-select">
<option value="">Selecione...</option>
<option value="light">☀️ Claro</option>
<option value="dark">🌙 Escuro</option>
<option value="auto">🔄 Automático</option>
</select>
</div>
<div class="mb-3">
<label for="modal-language" class="form-label">Idioma</label>
<select id="modal-language" class="form-select">
<option value="">Selecione...</option>
<option value="pt">🇧🇷 Português</option>
<option value="en">🇺🇸 English</option>
<option value="es">🇪🇸 Español</option>
<option value="fr">🇫🇷 Français</option>
</select>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fechar</button>
<button type="button" class="btn btn-primary">Salvar</button>
</div>
</div>
</div>
</div>
JavaScript
// Inicializar ANTES da modal abrir (show.bs.modal)
const settingsModal = document.getElementById('settingsModal');
let themeSelect, languageSelect;
settingsModal.addEventListener('show.bs.modal', () => {
if (!themeSelect) {
themeSelect = new VanillaSmartSelect('#modal-theme', {
placeholder: 'Selecione o tema...'
});
}
if (!languageSelect) {
languageSelect = new VanillaSmartSelect('#modal-language', {
placeholder: 'Selecione o idioma...',
searchable: true
});
}
});
Single Select com Bootstrap
Dropdown básico com busca e placeholder.
Ver código
HTML
<div class="mb-3">
<label for="fruits" class="form-label">Selecione uma fruta:</label>
<select id="fruits" class="form-select">
<option value="">Selecione uma fruta...</option>
<option value="maca">🍎 Maçã</option>
<option value="banana">🍌 Banana</option>
<option value="laranja">🍊 Laranja</option>
<option value="uva">🍇 Uva</option>
<option value="manga">🥭 Manga</option>
</select>
</div>
JavaScript
const select = new VanillaSmartSelect('#fruits', {
searchable: true,
placeholder: 'Selecione uma fruta...'
});
Multi-Select com Bootstrap
Seleção múltipla com busca integrada ao Bootstrap.
Ver código
HTML
<div class="mb-3">
<label for="languages" class="form-label">Selecione linguagens:</label>
<select id="languages" class="form-select" multiple>
<option value="js" selected>JavaScript</option>
<option value="ts">TypeScript</option>
<option value="py">Python</option>
<option value="java">Java</option>
</select>
</div>
JavaScript
const multiSelect = new VanillaSmartSelect('#languages', {
searchable: true,
multiple: true
});
Select com Optgroups
Opções organizadas por grupos (optgroup) com Bootstrap.
Ver código
HTML
<div class="mb-3">
<label for="countries" class="form-label">Selecione um país:</label>
<select id="countries" class="form-select">
<option value="">Selecione...</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>
</div>
JavaScript
const countriesSelect = new VanillaSmartSelect('#countries', {
searchable: true
});
Validação com Bootstrap Forms
Integração perfeita com a validação de formulários do Bootstrap.
Ver código
HTML
<form id="bootstrap-form" class="needs-validation" novalidate>
<div class="mb-3">
<label for="department" class="form-label">Departamento: *</label>
<select id="department" class="form-select" required>
<option value="">Selecione...</option>
<option value="ti">💻 TI</option>
<option value="rh">👥 RH</option>
</select>
<div class="invalid-feedback">
Por favor, selecione um departamento.
</div>
</div>
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
JavaScript
// Inicializar selects
new VanillaSmartSelect('#department');
new VanillaSmartSelect('#role');
// Validação Bootstrap
const form = document.getElementById('bootstrap-form');
form.addEventListener('submit', (e) => {
e.preventDefault();
if (form.checkValidity()) {
// Formulário válido
form.classList.add('was-validated');
console.log('Formulário enviado!');
} else {
// Mostrar erros
form.classList.add('was-validated');
}
});
Clear Button com Bootstrap
Botão de limpar integrado ao design do Bootstrap.
Ver código
HTML
<div class="mb-3">
<label for="colors" class="form-label">Selecione uma cor:</label>
<select id="colors" class="form-select">
<option value="">Selecione...</option>
<option value="vermelho">🔴 Vermelho</option>
<option value="azul">🔵 Azul</option>
</select>
</div>
<button id="clear-btn" class="btn btn-outline-secondary">
Limpar Seleção
</button>
JavaScript
const colorSelect = new VanillaSmartSelect('#colors', {
searchable: true,
allowClear: true
});
// Limpar programaticamente
document.getElementById('clear-btn').addEventListener('click', () => {
colorSelect.clear();
});
Temas
Vanilla Smart Select se adapta automaticamente ao tema do Bootstrap:
- ✅ Respeita as variáveis CSS do Bootstrap quando disponíveis
- ✅ Classes
.form-selecte.form-labelsão preservadas - ✅ Cores e espaçamentos seguem o padrão Bootstrap
- ✅ Funciona com temas personalizados do Bootstrap
- ✅ Suporta modo claro e escuro do Bootstrap
Problemas Conhecidos
Nenhum problema de compatibilidade conhecido com Bootstrap 5. Se encontrar algum, por favor abra uma issue.