JS Component

Sidebar Y2Sidebar

Painel lateral com 4 modos de comportamento: fixo, toggle por boto externo, colapso interno (cones/texto) e hover.

Modo 1 - Fixed mode="fixed"

Sidebar sempre visível. Sem botão de fechar. Ideal para painéis admin onde o menu é permanente.

Sidebar sempre visível, sem lógica de abrir/fechar.

Use para painéis onde o menu é permanente.

Modo 2 - Toggle mode="toggle"

Sidebar oculta por padrão. Um botão externo a abre e fecha. Ideal para mobile ou telas compactas. Suporta overlay e tecla Esc.

Sidebar oculta. Clique para abrir:

Clique no overlay ou pressione Esc para fechar.

Modo 3 - Collapse mode="collapse"

Sidebar com seta interna que alterna entre expandida (ícone + texto) e colapsada (só ícones). Use y2-sidebar-start para definir o estado inicial.

Iniciando aberta y2-sidebar-start="open"

Clique no ícone dentro da sidebar para colapsar.

Inicia expandida (start="open").

Iniciando colapsada y2-sidebar-start="icons"

Clique no ícone para expandir.

Inicia colapsada (start="icons").

Modo 4 - Hover mode="hover"

Sempre visível, mas mostra apenas ícones. Ao passar o mouse, expande automaticamente. Ao tirar, volta a mostrar só ícones.

Passe o mouse sobre a sidebar ao lado.

Ela expande ao receber o cursor e colapsa ao tirar.

API JavaScript

// Abrir sidebar (remove [hid]) - modo toggle
Y2Sidebar.open('#meu-menu');
Y2Sidebar.open(document.querySelector('[y2-sidebar]'));

// Fechar sidebar (adiciona [hid]) - modo toggle
Y2Sidebar.close('#meu-menu');

// Eventos disparados automaticamente
sdb.addEventListener('yd:sidebar:open',    () => {});
sdb.addEventListener('yd:sidebar:close',   () => {});
sdb.addEventListener('yd:sidebar:toggle',  () => {}); // collapse: expandiu/colapsou
sdb.addEventListener('yd:sidebar:submenu', e => {
    console.log(e.detail.open);   // true = abriu, false = fechou
    console.log(e.detail.trigger); // o item pai clicado
    console.log(e.detail.items);   // o container de subitens
});

Quick Reference

Atributo Elemento Descrição
[y2-sidebar] aside / div Container principal da sidebar
y2-sidebar-mode="fixed" aside Sempre visível, sem JS - sidebar fixa
y2-sidebar-mode="toggle" aside Oculta por padrão, abre/fecha por botão externo
y2-sidebar-mode="collapse" aside Seta interna alterna expandida / só ícones
y2-sidebar-mode="hover" aside Só ícones; expande ao passar o mouse, fecha ao tirar
y2-sidebar-start="open" aside Modo collapse: inicia expandida (padrão)
y2-sidebar-start="icons" aside Modo collapse: inicia colapsada (só ícones)
[hid] aside Estado: sidebar oculta (translateX) - modo toggle
[col] aside Estado: sidebar colapsada (só ícones) - gerenciado pelo JS
[y2-sidebar-open="#id"] button Botão externo que abre/fecha pelo ID da sidebar
[y2-sidebar-ovl] div Overlay escuro - fecha a sidebar ao clicar (modo toggle)
[y2-sidebar-hdr] div Cabeçalho da sidebar
[y2-sidebar-hdr-ttl] span Título no cabeçalho (oculto quando colapsada)
[y2-sidebar-tgl] button Seta/botão interno - alterna [col] (modo collapse)
[y2-sidebar-mn] nav Container do menu / navegação
[y2-sidebar-it] a / div Item de menu individual
[act] a Item ativo / selecionado
[y2-sidebar-lbl] span Texto do item (oculto quando colapsada)
[y2-sidebar-ttl] p Título de grupo/seção (oculto quando colapsada)
[y2-sidebar-sep] hr Separador horizontal
[y2-sidebar-bdg] span Badge/contador numérico no item
[y2-sidebar-ftr] div Rodapé da sidebar
[y2-sidebar-push] main Elemento que recebe margin-left quando a sidebar abre
[y2-sidebar-sub] a Item pai com submenu - clique expande/colapsa subitens
[y2-sidebar-arrow] i Seta indicadora dentro do item pai (rotaciona quando aberto)
[y2-sidebar-sub-items] div Container dos subitens - deve ser irmão imediato do item pai