2.9 KiB
WD04.5 — Contrato de interfaz
Auditoría y matriz completadas antes de implementar los menús.
Presentación e interacción
WorkplaceNodeActionsMenu reutiliza DropdownMenu de shadcn/Base UI, elipsis Tabler y Button ghost. El trigger tiene nombre «Acciones de {{name}}», área compacta y foco visible. Se sitúa en la esquina superior derecha, como hermano del enlace principal; este conserva su hit area. Se reserva espacio dentro de la tarjeta sin cambiar las dimensiones de Dagre. No se anidan botones dentro de enlaces.
Nodos de entidad reciben descriptores tipados de acciones de consulta o apertura de operaciones, preparados fuera del nodo. ID de presentación, UUID de Asset/instalación y UUID de Resource no se confunden. El adaptador decide las acciones conforme a la matriz; los nodos no hacen HTTP ni contienen reglas de dominio.
Orden: navegación, edición, gestión específica, historial. Se agrupan con separadores solo entre grupos no vacíos. No hay submenús ni elementos ficticios para completar opciones. Se omiten los menús vacíos y los de presentación; una operación temporalmente no disponible puede mostrarse disabled con explicación traducida.
Canvas y compacto
El trigger usa nodrag nopan nowheel pointer-events-auto; el portal de DropdownMenu evita clipping por el canvas y utiliza la pila de Base UI, sin capas globales manuales. Enter/Espacio, flechas, Escape y colisiones corresponden a la primitiva instalada. No se activan drag, pan, zoom, borrado o conexiones. Abrir un menú o diálogo no modifica nodos ni sus posiciones, por lo que no remonta la cámara.
Las mismas tarjetas y el mismo catálogo de acciones se usan en WorkplaceCompactMap. Los títulos largos conservan un enlace accesible completo y espacio para el trigger. Los nuevos textos utilizan assets/companies es/en según el consumidor.
Diálogos, contexto y retorno
La composición superior abre los diálogos reales. AssetEditorDialog, AssetSupportManagementDialog, WorkstationEditorDialog, WorkstationSoftwareDialog, SoftwareInstallationEditorDialog y SoftwareHistoryDialog conservan sus formularios, mutaciones, restricciones y confirmaciones. AssetHistory se presenta en un contenedor modal de Assets sin duplicar su contenido.
Una selección de menú captura el trigger, la identidad del nodo, el puesto y el principal. Al cerrar se restaura el trigger conectado, o el trigger actual del mismo nodo tras refetch, o un control estable del mapa. Cambiar de puesto/principal cierra el contexto anterior. Si desaparece la entidad se conserva una salida accesible sin operar sobre un registro diferente.
Las mutaciones siguen las invalidaciones existentes. La composición usa If-Match y su recuperación de conflictos; no se inventan precondiciones nuevas para Asset ni SoftwareInstallation. Su límite real de concurrencia consta en el informe WD04.5. Los errores de carga/guardado permanecen en el contexto y no ocultan el mapa completo.