Saltar al contenido principal

DyonaToolbar

DyonaToolbar es un layout flex visual para comandos recibidos mediante children. No conoce Data Sources, reglas de negocio ni actions[].

Importar​

import AddIcon from '@mui/icons-material/Add';
import MoreVertIcon from '@mui/icons-material/MoreVert';
import RefreshIcon from '@mui/icons-material/Refresh';
import {Breadcrumbs, Button, IconButton, Link, Tabs, Tooltip, Typography} from '@mui/material';
import {DyonaToolbar} from '@typhonsoftware/dyona-form';

Uso básico​

<DyonaToolbar divider title="Clientes">
<Tooltip title="Nuevo">
<IconButton><AddIcon /></IconButton>
</Tooltip>

<Tooltip title="Actualizar">
<IconButton><RefreshIcon /></IconButton>
</Tooltip>
</DyonaToolbar>

Title y menu​

title es una etiqueta opcional y sutil en la línea principal. menu es un slot visual opcional al extremo derecho: puede recibir un IconButton, Menu, Popover u otro elemento del consumidor. Toolbar no implementa dropdowns: anchorEl, open y onClose pertenecen al consumidor.

<DyonaToolbar title="Clientes" menu={<IconButton><MoreVertIcon /></IconButton>}>
<Button>Guardar</Button>
</DyonaToolbar>

Layout​

dense compacta padding y espaciado. wrap es true por defecto; usar false mantiene una línea. justify acepta start, center, end o space-between; align acepta start, center o end.

divider agrega un separador inferior con el theme. sticky mantiene la Toolbar en la parte superior de su contenedor scrolleable.

Slot navigation​

navigation renderiza una fila visual entregada por el consumidor debajo de los comandos. Con divider, la separación queda entre ambas filas. No administra rutas, tabs, breadcrumbs, anterior/siguiente ni estado de navegación.

<DyonaToolbar divider navigation={<Breadcrumbs><Link>Clientes</Link><Typography>Cliente actual</Typography></Breadcrumbs>}>
<Button>Actualizar</Button>
</DyonaToolbar>

También puede recibir tabs controlados por el consumidor:

<DyonaToolbar navigation={<Tabs value={tab} onChange={handleTabChange}>...</Tabs>}>
<Button>Actualizar</Button>
</DyonaToolbar>

Dentro de Screen​

<DyonaScreen title="Clientes">
<DyonaToolbar divider>
<Button onClick={handleNewCustomer} variant="contained">Nuevo</Button>
</DyonaToolbar>
<DyonaGrid {...gridProps} />
</DyonaScreen>

Customer Management es la primera integración live: Nuevo cliente es un comando de Screen en Toolbar y Editar cliente continúa en la Grid.

Dentro de Card​

<DyonaCard title="Facturas recientes">
<DyonaToolbar dense divider>
<Button>Actualizar</Button>
<Button>Exportar</Button>
</DyonaToolbar>
<DyonaGrid {...gridProps} />
</DyonaCard>

Responsabilidades y contrato V1​

DyonaToolbar presenta comandos. DyonaScreen coordina la lógica.

Los botones y handlers pertenecen al consumidor. Toolbar no administra Data Sources, acciones de negocio, permisos, loading ni coordinación de la aplicación. Se recomiendan iconos con tooltip para acciones habituales, botones con texto cuando aportan énfasis o explicación y menu para comandos secundarios.

PropDefaultDescripción
childrenrequeridaComandos a organizar.
title—Etiqueta opcional y sutil.
menu—Slot visual del consumidor al extremo derecho.
navigation—Fila visual del consumidor debajo de los comandos.
densefalsePadding y gap compactos.
stickyfalseSe fija arriba del contenedor scrolleable.
dividerfalseSeparador inferior del theme.
wraptruePermite varias líneas.
justifystartAlineación del eje principal.
aligncenterAlineación del eje transversal.