Skip to main content

Crate llimphi_widget_context_menu

Crate llimphi_widget_context_menu 

Source
Expand description

llimphi-widget-context-menu — menú contextual con look tawasuyu.

Distintivo y minimalista:

  ┃ B5                          ← header (uppercase tiny)
  ┃ ✂  Cortar          Ctrl+X
  ┃ ⧉  Copiar          Ctrl+C   ← gutter de íconos + barra accent (3px)
  ┃ ⎘  Pegar           Ctrl+V
  ┃ ─────────────────────
  ┃ ◐  Tema             ▸       ← submenú (flyout a la derecha)

Cada fila: barra accent vertical (firma) · gutter de ícono · label (centrado vertical) · atajo o chevron de submenú. Sin radios, sin sombras: color sólido + tipografía + la barra accent.

Se monta como View<Msg> que se devuelve desde llimphi_ui::App::view_overlay. Internamente arma:

  1. Un scrim full-screen con on_click = on_dismiss que cierra el menú al click-fuera.
  2. Un panel absoluto (clampeado al viewport).
  3. Si hay un submenú abierto ([ContextMenuSpec::open_sub]), un segundo panel-flyout a la derecha del item padre.

Animación: [ContextMenuSpec::appear] (0..1) controla un fade + un leve desplazamiento vertical de entrada. La app que quiera animarlo guarda un Tween y lo va subiendo; pasar 1.0 lo muestra fijo.

Structs§

ContextMenuExtras
Capacidades extra opcionales para context_menu_view_ex: submenús (flyout), animación de aparición y hover. Su Default reproduce el menú clásico (sin animación ni submenús).
ContextMenuItem
Un item del menú. separator = true ignora el resto y pinta una línea. children no vacío → es un submenú (muestra chevron ▸ y, si está abierto, despliega un flyout). icon es un glifo opcional que se pinta en el gutter izquierdo.
ContextMenuPalette
Paleta del menú — estilo “webpage” elegante derivado del theme: panel redondeado con borde hairline, filas como píldoras con hover suave (bg_hover) y resaltado de teclado (bg_active, más un indicador accent a la izquierda). Defaults dark; override por la app.
ContextMenuSpec
Especificación del menú. Mantiene los 8 campos clásicos para no romper los call-sites por literal; las capacidades nuevas (submenús, animación, hover) viajan aparte en ContextMenuExtras vía context_menu_view_ex.

Functions§

context_menu_view
Compone el menú clásico (sin submenús ni animación) como View<Msg> para App::view_overlay. Íconos, centrado vertical y separadores ya vienen incluidos.
context_menu_view_ex
Como context_menu_view pero con ContextMenuExtras: submenús (flyout en hover), animación de aparición y hover.
step_active
Navegación por teclado: dado el activo + dirección (+1/-1), el siguiente índice válido (saltea separators y disabled). usize::MAX si no hay elegibles.