Select customizado com busca e seleção múltipla com tags removíveis.
Substitui o <select> nativo (visual limitado, sem busca) por um dropdown estilizado, mantendo o <select> original escondido pra funcionar normalmente em formulários.
Na seleção única com busca, o próprio campo visível já é o input de busca (sem precisar abrir antes de digitar). Na múltipla, cada seleção vira uma tag removível. O <select> original recebe change sintético, então segue funcionando com qualquer código que já escute esse evento.
<div sw-select>
<select sw-select-ph="Escolha um país...">
<option value="br">Brasil</option>
<option value="pt">Portugal</option>
<option value="us">Estados Unidos</option>
<option value="ar">Argentina</option>
</select>
</div>
<div sw-select>
<select multiple>
<option value="js" selected>JavaScript</option>
<option value="ts">TypeScript</option>
<option value="py">Python</option>
<option value="go">Go</option>
</select>
</div>
<div sw-select>
<select sw-select-search="false" sw-select-ph="Escolha...">
<option value="a">Opção A</option>
<option value="b">Opção B</option>
</select>
</div>
<div class="demo-row">
<div sw-select class="is-err"><select sw-select-ph="Campo com erro..."><option value="a">A</option></select></div>
<div sw-select class="is-ok"><select sw-select-ph="Campo válido..."><option value="a">A</option></select></div>
</div>
sw-select-ph<select> — texto de placeholdersw-select-search="false"multipleis-err / is-oksw:select:changechange (no select nativo)SW.Select.set(target, valor)<select> real dentro do [sw-select] — não cria as opções do zero.Nenhuma.