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 |