JS Component

Dropdown Y2Drp

Menu flutuante com posicionamento automático, ícones, divisores, checkmark e grupos - fecha com ESC ou clique externo.

1. Demo ao Vivo

2. Grupos com Título

3. Itens com Checkmark

// Gerenciar checkmark manualmente
document.querySelectorAll('[data-chk]').forEach(item => {
  item.addEventListener('click', e => {
    e.preventDefault();
    // Remove checkmark de todos os irmãos
    item.closest('.y2drop-mn').querySelectorAll('.y2drop-it')
      .forEach(i => i.classList.remove('is-chk'));
    // Marca o clicado
    item.classList.add('is-chk');
  });
});

4. Posicionamento

6. Itens Desabilitados

7. API JavaScript

const drp = document.querySelector('[y2drop]');

// Abrir / fechar programaticamente
Y2Drp.open(drp);
Y2Drp.close(drp);

// Eventos
drp.addEventListener('yd:y2drop:open',  () => console.log('Aberto'));
drp.addEventListener('yd:y2drop:close', () => console.log('Fechado'));

Quick Reference

Atributo / Classe Elemento Descrição
y2drop div Ativa Y2Drp no container
.y2drop-tgl button Trigger que abre/fecha o menu
.y2drop-mn div Container do menu flutuante
.y2drop-mn.is-rgt div Alinha menu à direita do trigger
.y2drop-mn.is-top div Abre menu acima do trigger
.y2drop-it a / button Item de menu
.y2drop-it.is-err .y2drop-it Item destrutivo - cor de erro
.y2drop-it.is-chk .y2drop-it Item com checkmark ativo
.y2drop-it.is-dis .y2drop-it Item desabilitado
.y2drop-sub div Container de submenu - abre ao hover
.y2drop-sep hr Linha divisória entre grupos
.y2drop-ttl span Título de grupo no menu
yd:y2drop:open / yd:y2drop:close evento Eventos disparados ao abrir/fechar