Saltar al contenido
npm ↗ GitHub ↗

Documentación

28/Overlays

Drawer

Panel lateral (derecha, izquierda o abajo) con el mismo comportamiento que el modal.

Lados

Filtros

Ajusta lo que ves en la tabla.

Menú

Panel desde la izquierda.

Compartir

Útil en móvil como hoja inferior.

HTML
<button class="cb-btn cb-btn--outline" type="button" data-cb-open="demo-drawer">Derecha</button>
<button class="cb-btn cb-btn--outline" type="button" data-cb-open="demo-drawer-left">Izquierda</button>
<button class="cb-btn cb-btn--outline" type="button" data-cb-open="demo-drawer-bottom">Abajo</button>

<div class="cb-drawer" id="demo-drawer" data-cb-drawer>
  <div class="cb-drawer__panel">
    <div class="cb-drawer__head">
      <div><h2 class="cb-drawer__title">Filtros</h2><p class="cb-drawer__desc">Ajusta lo que ves en la tabla.</p></div>
      <button class="cb-drawer__close" type="button" data-cb-close aria-label="Cerrar"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button>
    </div>
    <div class="cb-drawer__body">
      <div class="cb-field"><label class="cb-field__label" for="drawer-q">Buscar</label><input class="cb-input" id="drawer-q"></div>
    </div>
    <div class="cb-drawer__foot"><button class="cb-btn cb-btn--outline" type="button" data-cb-close>Limpiar</button><button class="cb-btn cb-btn--primary" type="button" data-cb-close>Aplicar</button></div>
  </div>
</div>

<div class="cb-drawer cb-drawer--left" id="demo-drawer-left" data-cb-drawer>
  <div class="cb-drawer__panel">
    <div class="cb-drawer__head"><h2 class="cb-drawer__title">Menú</h2><button class="cb-drawer__close" type="button" data-cb-close aria-label="Cerrar"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button></div>
    <div class="cb-drawer__body"><p>Panel desde la izquierda.</p></div>
  </div>
</div>

<div class="cb-drawer cb-drawer--bottom" id="demo-drawer-bottom" data-cb-drawer>
  <div class="cb-drawer__panel">
    <div class="cb-drawer__head"><h2 class="cb-drawer__title">Compartir</h2><button class="cb-drawer__close" type="button" data-cb-close aria-label="Cerrar"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button></div>
    <div class="cb-drawer__body"><p>Útil en móvil como hoja inferior.</p></div>
  </div>
</div>

Clases y modificadores

ClaseDescripción
.cb-drawerFondo. .is-open lo muestra.
.cb-drawer--left, .cb-drawer--bottomLado del panel (por defecto, derecha).
.cb-drawer__panelPanel de 420px (máximo el ancho de pantalla menos 48px).
.cb-drawer__head, .cb-drawer__title, .cb-drawer__desc, .cb-drawer__closeCabecera.
.cb-drawer__body, .cb-drawer__footContenido con scroll y acciones.

Atributos data-cb-*

AtributoDescripción
data-cb-drawerActiva el drawer. Necesita id.
data-cb-open="id", data-cb-close, data-cb-staticIgual que en el modal.

JavaScript

EventoCuándo se dispara
cb:open / cb:closeAntes de abrir o cerrar; ambos se pueden cancelar.
JS
cobalto.drawer.open('demo-drawer');

Accesibilidad

  • Mismo comportamiento que el modal: rol de diálogo, foco atrapado, Esc y retorno del foco.