- Introduced `ContextHelpContent` for displaying contextual help with title, description, examples, and guidance. - Created `DialogHelp` component to manage help dialogs, including popover and panel presentations. - Implemented `useDialogHelpLayout` hook for handling dialog layout and state management. - Added context for dialog help management with `DialogHelpContext` and `DialogHelpLabelsContext`. - Developed utility functions for determining dialog help presentation modes. - Included tests for dialog help functionality and layout behavior. - Created a Python script for auditing contextual help in real forms.
314 lines
57 KiB
Markdown
314 lines
57 KiB
Markdown
# Auditoría de ayuda contextual en diálogos
|
||
|
||
Fecha: 25 de octubre de 2026. Alcance: código frontend activo de `modules/*/src/web` y componentes propios de `packages/rdx-ui/src`. Se excluyen vendor, archive y fixtures de navegador.
|
||
|
||
## Resultado e infraestructura
|
||
|
||
Se han auditado **95 componentes modales de módulos y 7 constructores/adaptadores compartidos** (102 unidades). El recuento es por componente, no por variantes de alta/edición ni por diálogos anidados. **59 componentes de módulo contienen ayuda: 58 adoptan el patrón bajo demanda y 1 conserva su consulta de ayuda dedicada**. Además, el constructor compartido `FieldPickerDialog` migra su ayuda breve y cubre los dos adaptadores de catálogo ya contabilizados. Las demás 36 unidades de módulos y 6 compartidas no tienen ayuda complementaria propia.
|
||
|
||
La búsqueda incluye FormDialog, DialogContent, ConfirmDeleteDialog, AlertDialog, Sheet, Drawer, formularios, wizards, pickers, bloques de información y claves de traducción. Se contrastó el inventario previo de modales con las fuentes actuales; los nombres de fichero no determinaron el alcance. Se siguieron imports y reexports de componentes para localizar ayuda en formularios descendientes, deteniendo el recorrido en diálogos anidados. Las variantes suministradas mediante callbacks se revisaron en sus consumidores.
|
||
|
||
Encontrados: `FormDialog`, `FormBody`, `FormActions`, `ContextHelp`, `FormHelp`, `PickerHelp`, `EntityHelp`, `CatalogHelp`, `SupportHelp` y `ProcessHelp`. Las primitivas instaladas son shadcn Base UI 1.8.0, estilo Vega. No existe un segundo sistema Radix que deba integrarse ni se ha modificado vendor.
|
||
|
||
## Decisiones
|
||
|
||
- Se amplía FormDialog mediante contexto y slots DOM. DialogHelp declara contenido traducido o React en cualquier descendiente. Los portales sitúan el botón en la cabecera y el contenido en el mismo diálogo, conservando sus contextos. No se registra contenido React mediante efectos ni se replica en estado.
|
||
- ContextHelp y FormHelp aprovechan el slot cuando están dentro de FormDialog; fuera conservan el contenido visible. Así se migran todos sus consumidores sin elevar traducciones ni duplicar configuraciones en cada editor/alta rápida. PickerHelp declara compact explícitamente.
|
||
- Auto significa ayuda estructurada (descripción, ámbito, ejemplos y orientación), equivalente a expanded. Compact se declara para una explicación breve; no se mide texto del DOM.
|
||
- ResizeObserver mide la superficie efectiva. Compact usa Popover desde 30rem; auto/expanded usan panel desde 60rem (40rem de formulario + 20rem de ayuda). En menor capacidad se usa vista interna. Las comparaciones usan el tamaño raíz de fuente; no dependen solo del viewport. Un diálogo pequeño en escritorio también utiliza vista interna.
|
||
- El formulario sigue montado en vista interna, con visibility:hidden, inert y aria-hidden; mantiene su geometría y sus datos. La ayuda ocupa esa misma región. Sus acciones no están disponibles mientras se consulta la vista interna. El panel no ensancha el diálogo ni crea otra capa modal.
|
||
- Escape se intercepta en el contrato onOpenChange de Base UI mediante reason=escape-key y cancel(); cierra la ayuda antes que el diálogo. X conserva el cierre de Base UI. El cierre de ayuda devuelve foco al botón; al abrir o cambiar de modalidad se enfoca el encabezado de ayuda.
|
||
- Las etiquetas genéricas se traducen en apps/web a través de core.dialogHelp y se suministran a rdx-ui, que permanece independiente de i18next y del dominio.
|
||
|
||
## Criterios y excepciones
|
||
|
||
Se migran exclusivamente bloques complementarios de ContextHelp/FormHelp y la ayuda general de PickerHelp. Se conserva íntegramente descripción, ámbito, listas plegables, ejemplos, orientación e iconos personalizados. No se modifica ninguna traducción de ayuda previa ni contratos HTTP, modelos o persistencia.
|
||
|
||
| Categoría | Decisión y ejemplos |
|
||
| --- | --- |
|
||
| Ayuda general complementaria | Bajo demanda: ContextHelp/FormHelp, EntityHelp, CatalogHelp, ProcessHelp y SupportHelp. |
|
||
| Instrucciones de campo | Visibles: choicesHelp, addressHelp, instrucciones de plantilla/resolución, licencia, límites de nombre, fecha de alta y estado técnico, carga de imágenes y formatos. |
|
||
| Consecuencias y seguridad | Visibles: desactivación de personas/sedes/departamentos, retirada de identidad local, avisos de alta global/local y datos creados aunque se cancele la relación. |
|
||
| Validación y transporte | Visibles: InventoryFeedback, CompanyFeedback, errores de campo, concurrencia, permisos, reintento y fallos de guardado/refresco. |
|
||
| Confirmaciones destructivas | Se conserva descripción/confirmación visible en ConfirmDeleteDialog y editores de cierre. |
|
||
| Vacío y orientación operativa | Se conservan EmptyState, selección/destino, contadores y restricciones de selección. |
|
||
| Consulta dedicada de ayuda | AccessHelpDialog mantiene EntityHelp placement=inline visible: ocultarlo tras otro ? dejaría vacía su tarea principal. Es la única excepción a la migración de bloques generales. |
|
||
|
||
Los títulos y descripciones de los diálogos de consulta, historiales, selección de compañía y software del puesto son contenido funcional. El texto requiredColumnHelp de configuración de columnas explica una restricción activa y continúa visible. No se añade ? por el mero hecho de contener texto informativo.
|
||
|
||
## Inventario final
|
||
|
||
“Migrado” acredita integración en el sistema compartido y revisión estática; la validación interactiva representativa se detalla aparte y no implica haber abierto todas las variantes. Las columnas de contenido apuntan a las declaraciones originales con sus claves conservadas.
|
||
|
||
### assets
|
||
|
||
| Componente / archivo | Composición | Ayuda y ubicación anterior | Longitud y propuesta | Particularidades / estado |
|
||
| --- | --- | --- | --- | --- |
|
||
| [EndRelationshipDialog](../modules/assets/src/web/asset-relationships/end/ui/end-relationship-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | acciones de formulario · Auditado · conserva contenido funcional |
|
||
| [RelationshipEditorDialog](../modules/assets/src/web/asset-relationships/shared/ui/relationship-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/asset-relationships/shared/ui/relationship-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [WorkstationAssetCreateDialog](../modules/assets/src/web/assets/create/ui/workstation-asset-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/assets/shared/ui/asset-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [AssetDetailDialog](../modules/assets/src/web/assets/detail/ui/asset-detail-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [AssetPickerDialog](../modules/assets/src/web/assets/select/ui/asset-picker-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, acciones de formulario, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [AssetEditorDialog](../modules/assets/src/web/assets/shared/ui/asset-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/assets/shared/ui/asset-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [DeleteAssetDialog](../modules/assets/src/web/assets/shared/ui/delete-asset-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [DeleteBrandDialog](../modules/assets/src/web/brands/delete/ui/delete-brand-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | acciones de formulario · Auditado · conserva contenido funcional |
|
||
| [BrandEditorDialog](../modules/assets/src/web/brands/shared/ui/brand-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/brands/shared/ui/brand-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [DeleteCatalogDefinitionDialog](../modules/assets/src/web/catalog/delete/ui/delete-catalog-definition-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | acciones de formulario · Auditado · conserva contenido funcional |
|
||
| [CatalogDefinitionDialog](../modules/assets/src/web/catalog/detail/ui/catalog-definition-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [CatalogEditorDialog](../modules/assets/src/web/catalog/shared/ui/catalog-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [CatalogFieldCreateDialog](../modules/assets/src/web/catalog-fields/create/ui/catalog-field-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [CatalogFieldPickerDialog](../modules/assets/src/web/catalog-fields/select/ui/catalog-field-picker-dialog.tsx) | FieldPickerDialog | [PickerHelp](../packages/rdx-ui/src/components/field-picker-dialog.tsx) · bloque en cuerpo o antes de acciones | Breve · Popover / vista | Migrado · contenido conservado |
|
||
| [CatalogRelationCreateDialog](../modules/assets/src/web/catalog-relations/create/ui/catalog-relation-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [CatalogTemplateCreateDialog](../modules/assets/src/web/catalog-templates/create/ui/catalog-template-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [DirectoryMembershipEditor](../modules/assets/src/web/directory-memberships/manage/ui/directory-membership-editor.tsx) | FormDialog | [FormHelp](../modules/assets/src/web/directory-memberships/manage/ui/directory-membership-editor.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [EndDirectoryMembershipDialog](../modules/assets/src/web/directory-memberships/manage/ui/end-directory-membership-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | altura estable · Auditado · conserva contenido funcional |
|
||
| [DirectoryDomainPicker](../modules/assets/src/web/directory-memberships/select/ui/directory-domain-picker.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable · Auditado · conserva contenido funcional |
|
||
| [InfrastructureEditorDialog](../modules/assets/src/web/infrastructure/shared/ui/infrastructure-editor-dialog.tsx) | FormDialog | [FormHelp](../modules/assets/src/web/infrastructure/shared/ui/infrastructure-editor-dialog.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [PublicationEditor](../modules/assets/src/web/network-share-publications/manage/ui/publication-editor.tsx) | FormDialog | [FormHelp](../modules/assets/src/web/network-share-publications/manage/ui/publication-editor.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [DeleteRecordDialog](../modules/assets/src/web/shared/ui/delete-record-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [SupportHistoryDialog](../modules/assets/src/web/support-connections/history/ui/support-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [AssetSupportManagementDialog](../modules/assets/src/web/support-connections/list/ui/asset-support-management-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable · Auditado · conserva contenido funcional |
|
||
| [SupportConnectionEditorDialog](../modules/assets/src/web/support-connections/shared/ui/support-connection-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/assets/src/web/support-connections/shared/ui/support-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [SupportResourceCreateDialog](../modules/assets/src/web/support-connections/shared/ui/support-resource-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [WorkstationAssetAddDialog](../modules/assets/src/web/workstations/associate-assets/ui/workstation-asset-add-dialog.tsx) | FormDialog | [PickerHelp](../modules/assets/src/web/workstations/associate-assets/ui/workstation-asset-add-dialog.tsx) · bloque en cuerpo o antes de acciones | Breve · Popover / vista | altura estable, acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [WorkstationHistoryDialog](../modules/assets/src/web/workstations/history/ui/workstation-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [WorkstationEditorDialog](../modules/assets/src/web/workstations/shared/ui/workstation-editor-dialog.tsx) | FormDialog | [FormHelp](../modules/assets/src/web/workstations/shared/ui/workstation-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [WorkstationLifecycleDialog](../modules/assets/src/web/workstations/shared/ui/workstation-lifecycle-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
|
||
### companies
|
||
|
||
| Componente / archivo | Composición | Ayuda y ubicación anterior | Longitud y propuesta | Particularidades / estado |
|
||
| --- | --- | --- | --- | --- |
|
||
| [AccessQuickEditor](../modules/companies/src/web/access/create/ui/access-quick-editor.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [QuickCreateDialog](../modules/companies/src/web/access/create/ui/quick-create-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [AccessHelpDialog](../modules/companies/src/web/access/help/ui/access-help-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Contenido principal visible | Consulta dedicada visible · excepción justificada |
|
||
| [AccessHistory](../modules/companies/src/web/access/history/ui/access-history.tsx) | FormDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [AccessEditorDialog](../modules/companies/src/web/access/shared/ui/access-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx); [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ApplicationQuickEditor](../modules/companies/src/web/application-configurations/create/ui/application-quick-editor.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx); [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ApplicationHistoryDialog](../modules/companies/src/web/application-configurations/history/ui/application-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [ApplicationConfigurationEditorDialog](../modules/companies/src/web/application-configurations/shared/ui/application-configuration-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/application-configurations/shared/ui/application-configuration-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [AssignmentHistoryDialog](../modules/companies/src/web/assignments/history/ui/assignment-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [AssignmentEditorDialog](../modules/companies/src/web/assignments/shared/ui/assignment-editor-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [CertificateQuickEditor](../modules/companies/src/web/certificate-configurations/create/ui/certificate-quick-editor.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx); [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [CertificateHistoryDialog](../modules/companies/src/web/certificate-configurations/history/ui/certificate-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [CertificateConfigurationEditorDialog](../modules/companies/src/web/certificate-configurations/shared/ui/certificate-configuration-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/certificate-configurations/shared/ui/certificate-configuration-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [InventoryQuickCreateDialog](../modules/companies/src/web/companies/detail/ui/inventory-quick-create-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [CompanyEditorDialog](../modules/companies/src/web/companies/shared/ui/company-editor-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [DashboardQuickCreate](../modules/companies/src/web/dashboard/create/ui/dashboard-quick-create.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [DashboardDetailsDialog](../modules/companies/src/web/dashboard/detail/ui/dashboard-details-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [DepartmentEditorDialog](../modules/companies/src/web/departments/shared/ui/department-editor-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [FolderQuickEditor](../modules/companies/src/web/folder-mappings/create/ui/folder-quick-editor.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx); [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx); [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [FolderMappingHistoryDialog](../modules/companies/src/web/folder-mappings/history/ui/folder-mapping-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [FolderMappingEditorDialog](../modules/companies/src/web/folder-mappings/shared/ui/folder-mapping-editor-dialog.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/folder-mappings/shared/ui/folder-mapping-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [LocalIdentityEditor](../modules/companies/src/web/local-identity-environments/manage/ui/local-identity-editor.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/local-identity-environments/manage/ui/local-identity-editor.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [MailQuickEditor](../modules/companies/src/web/mail-configurations/create/ui/mail-quick-editor.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx); [FormHelp](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx); [ContextHelp](../modules/companies/src/web/mailbox-uses/shared/ui/mailbox-use-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [MailConfigurationHistoryDialog](../modules/companies/src/web/mail-configurations/history/ui/mail-configuration-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [MailConfigurationEditorDialog](../modules/companies/src/web/mail-configurations/shared/ui/mail-configuration-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/mail-configurations/shared/ui/mail-configuration-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [MailboxUseEditorDialog](../modules/companies/src/web/mailbox-uses/shared/ui/mailbox-use-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/mailbox-uses/shared/ui/mailbox-use-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [MailboxCreateDialog](../modules/companies/src/web/mailboxes/create/ui/mailbox-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [PersonEditorDialog](../modules/companies/src/web/people/shared/ui/person-editor-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [PrinterProfileCreateDialog](../modules/companies/src/web/printer-configurations/create/ui/printer-profile-create-dialog.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [PrinterHistoryDialog](../modules/companies/src/web/printer-configurations/history/ui/printer-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [PrinterConfigurationEditorDialog](../modules/companies/src/web/printer-configurations/shared/ui/printer-configuration-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/printer-configurations/shared/ui/printer-configuration-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ProcessTemplateEditorDialog](../modules/companies/src/web/process-templates/shared/ui/process-template-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/processes/shared/ui/process-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ProcessQuickCreateDialog](../modules/companies/src/web/processes/create/ui/process-quick-create-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx); [ContextHelp](../modules/companies/src/web/processes/shared/ui/process-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ProcessStartDialog](../modules/companies/src/web/processes/start/ui/process-start-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/processes/shared/ui/process-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ProcessEditDialog](../modules/companies/src/web/processes/update/ui/process-edit-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/processes/shared/ui/process-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [RemoteQuickEditor](../modules/companies/src/web/remote-connections/create/ui/remote-quick-editor.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx); [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [RemoteConnectionHistoryDialog](../modules/companies/src/web/remote-connections/history/ui/remote-connection-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [RemoteConnectionEditorDialog](../modules/companies/src/web/remote-connections/shared/ui/remote-connection-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/remote-connections/shared/ui/remote-connection-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [ConfigurationQuickEditor](../modules/companies/src/web/shared/ui/configuration-quick-editor.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx); [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx); [ContextHelp](../modules/assets/src/web/assets/shared/ui/asset-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [DeleteRecordDialog](../modules/companies/src/web/shared/ui/delete-record-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [SiteDeleteDialog](../modules/companies/src/web/sites/delete/ui/site-delete-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [SiteEditorDialog](../modules/companies/src/web/sites/shared/ui/site-editor-dialog.tsx) | FormDialog | [EntityHelp](../modules/companies/src/web/access/help/ui/entity-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [SoftwareResourceCreateDialog](../modules/companies/src/web/software-installations/create/ui/software-resource-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [SoftwareHistoryDialog](../modules/companies/src/web/software-installations/history/ui/software-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [SoftwareInstallationEditorDialog](../modules/companies/src/web/software-installations/shared/ui/software-installation-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/software-installations/shared/ui/software-installation-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [TeleworkAuthorizationHistoryDialog](../modules/companies/src/web/telework-authorizations/history/ui/telework-authorization-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [TeleworkAuthorizationEditorDialog](../modules/companies/src/web/telework-authorizations/shared/ui/telework-authorization-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/companies/src/web/telework-authorizations/shared/ui/telework-authorization-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [WorkProfileHistoryDialog](../modules/companies/src/web/work-profiles/history/ui/work-profile-history-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [WorkProfileEditorDialog](../modules/companies/src/web/work-profiles/shared/ui/work-profile-editor-dialog.tsx) | FormDialog | [FormHelp](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [WorkProfileLifecycleDialog](../modules/companies/src/web/work-profiles/shared/ui/work-profile-lifecycle-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [WorkspaceSettingsDialog](../modules/companies/src/web/workspace/settings/ui/workspace-settings-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [WorkspaceMobileSheet](../modules/companies/src/web/workspace/shared/ui/workspace-mobile-sheet.tsx) | SheetContent | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [WorkstationSoftwareDialog](../modules/companies/src/web/workstations/detail/ui/workstation-software-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
|
||
### resources
|
||
|
||
| Componente / archivo | Composición | Ayuda y ubicación anterior | Longitud y propuesta | Particularidades / estado |
|
||
| --- | --- | --- | --- | --- |
|
||
| [ApplicationCoincidencesDialog](../modules/resources/src/web/application-coincidences/review/ui/application-coincidences-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable · Auditado · conserva contenido funcional |
|
||
| [CatalogDefinitionDialog](../modules/resources/src/web/catalog/detail/ui/catalog-definition-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [CatalogEditorDialog](../modules/resources/src/web/catalog/shared/ui/catalog-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [CatalogFieldCreateDialog](../modules/resources/src/web/catalog-fields/create/ui/catalog-field-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario · Migrado · contenido conservado |
|
||
| [CatalogFieldPickerDialog](../modules/resources/src/web/catalog-fields/select/ui/catalog-field-picker-dialog.tsx) | FieldPickerDialog | [PickerHelp](../packages/rdx-ui/src/components/field-picker-dialog.tsx) · bloque en cuerpo o antes de acciones | Breve · Popover / vista | Migrado · contenido conservado |
|
||
| [CatalogTemplateCreateDialog](../modules/resources/src/web/catalog-templates/create/ui/catalog-template-create-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/catalog/shared/ui/catalog-help.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [GlobalApplicationEditorDialog](../modules/resources/src/web/global-applications/shared/ui/global-application-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/global-applications/shared/ui/global-application-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
| [ResourceDetailDialog](../modules/resources/src/web/resources/detail/ui/resource-detail-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [DeleteResourceDialog](../modules/resources/src/web/resources/lifecycle/ui/delete-resource-dialog.tsx) | ConfirmDeleteDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [ResourceEditorDialog](../modules/resources/src/web/resources/shared/ui/resource-editor-dialog.tsx) | FormDialog | [ContextHelp](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) · bloque en cuerpo o antes de acciones | Extensa · panel / vista | altura estable, acciones de formulario · Migrado · contenido conservado |
|
||
|
||
### identity
|
||
|
||
| Componente / archivo | Composición | Ayuda y ubicación anterior | Longitud y propuesta | Particularidades / estado |
|
||
| --- | --- | --- | --- | --- |
|
||
| [AccountPasswordDialog](../modules/identity/src/web/passwords/change/ui/account-password-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | acciones de formulario · Auditado · conserva contenido funcional |
|
||
| [UserEditorDialog](../modules/identity/src/web/users/shared/ui/user-editor-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | acciones de formulario · Auditado · conserva contenido funcional |
|
||
|
||
### rdx-ui
|
||
|
||
| Componente / archivo | Composición | Ayuda y ubicación anterior | Longitud y propuesta | Particularidades / estado |
|
||
| --- | --- | --- | --- | --- |
|
||
| [ConfirmDeleteDialog](../packages/rdx-ui/src/components/confirm-delete-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | acciones de formulario · Auditado · conserva contenido funcional |
|
||
| [EntityTableColumnsDialog](../packages/rdx-ui/src/components/entity-table-columns-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable · Auditado · conserva contenido funcional |
|
||
| [FieldPickerDialog](../packages/rdx-ui/src/components/field-picker-dialog.tsx) | FormDialog | [PickerHelp](../packages/rdx-ui/src/components/field-picker-dialog.tsx) · bloque en cuerpo o antes de acciones | Breve · Popover / vista | altura estable, acciones de formulario, tamaño variable/amplio · Migrado · contenido conservado |
|
||
| [FormDialog](../packages/rdx-ui/src/components/form-dialog.tsx) | DialogContent | Sin ayuda complementaria propia | — | acciones de formulario, tamaño variable/amplio · Auditado · conserva contenido funcional |
|
||
| [OptionPickerDialog](../packages/rdx-ui/src/components/option-picker-dialog.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, acciones de formulario · Auditado · conserva contenido funcional |
|
||
| [OptionSelectionField](../packages/rdx-ui/src/components/option-selection-field.tsx) | OptionPickerDialog | Sin ayuda complementaria propia | — | Auditado · conserva contenido funcional |
|
||
| [RemoteOptionPicker](../packages/rdx-ui/src/components/remote-option-picker.tsx) | FormDialog | Sin ayuda complementaria propia | — | altura estable, acciones de formulario · Auditado · conserva contenido funcional |
|
||
|
||
En AccessQuickEditor, el callback NestedAccessForm lo aporta AccessForm: las variantes de
|
||
cuenta/acceso utilizan EntityHelp y la variante recurso utiliza ResourceEditor/ContextHelp.
|
||
Comparten el contexto del diálogo activo; sus altas anidadas reciben otro FormDialog.
|
||
|
||
## Declaraciones y claves conservadas
|
||
|
||
Las traducciones existentes se siguen resolviendo en sus namespaces originales (assets, companies, access, resources). Los títulos, descripciones, ámbitos, ejemplos y orientación se conservan en las mismas expresiones JSX.
|
||
|
||
| Archivo de declaración | Expresiones de contenido |
|
||
| --- | --- |
|
||
| [modules/assets/src/web/asset-relationships/shared/ui/relationship-form.tsx](../modules/assets/src/web/asset-relationships/shared/ui/relationship-form.tsx) | ``t("relationshipHelp")``; ``t("relationshipExample")``; ``t("examplesLabel")``; ``t("relationshipGuidance")``; ``t("helpTitle")`` |
|
||
| [modules/assets/src/web/assets/shared/ui/asset-form.tsx](../modules/assets/src/web/assets/shared/ui/asset-form.tsx) | ``t("assetDescription")``; ``t("assetExamples")``; ``t("examplesLabel")``; ``t("assetGuidance")``; ``t("assetScope")``; ``t("helpTitle")`` |
|
||
| [modules/assets/src/web/brands/shared/ui/brand-form.tsx](../modules/assets/src/web/brands/shared/ui/brand-form.tsx) | ``t("brands.help")``; ``t("brands.examples")``; ``t("examplesLabel")``; ``t("brands.guidance")``; ``t("globalHelp")``; ``t("helpTitle")`` |
|
||
| [modules/assets/src/web/catalog/shared/ui/catalog-help.tsx](../modules/assets/src/web/catalog/shared/ui/catalog-help.tsx) | ``t(`${kind}Description`)``; ``t(`${kind}Examples`)``; ``t("examplesLabel")``; ``t(`${kind}Guidance`)``; ``t(scope === "global" ? "globalHelp" : "companyHelp")``; ``t("helpTitle")`` |
|
||
| [modules/assets/src/web/directory-memberships/manage/ui/directory-membership-editor.tsx](../modules/assets/src/web/directory-memberships/manage/ui/directory-membership-editor.tsx) | ``t("directoryUi.help")``; ``t("directoryUi.example")``; ``t("directoryUi.examples")``; ``t("directoryUi.guidance")``; ``t("directoryUi.helpTitle")`` |
|
||
| [modules/assets/src/web/infrastructure/shared/ui/infrastructure-editor-dialog.tsx](../modules/assets/src/web/infrastructure/shared/ui/infrastructure-editor-dialog.tsx) | ``t("infrastructure.help")``; ``t("infrastructure.examples")``; ``t("infrastructure.examplesLabel")``; ``t("infrastructure.guidance")``; ``t("infrastructure.helpTitle")`` |
|
||
| [modules/assets/src/web/network-share-publications/manage/ui/publication-editor.tsx](../modules/assets/src/web/network-share-publications/manage/ui/publication-editor.tsx) | ``t("shareUi.help")``; ``t("shareUi.example")``; ``t("shareUi.examples")``; ``t( operation.action === "transfer" ? "shareUi.transferHelp" : operation.action === "end" ? "shareUi.endHelp" : "shareUi.publishHelp" )``; ``t("shareUi.documentary")``; ``t("shareUi.helpTitle")`` |
|
||
| [modules/assets/src/web/support-connections/shared/ui/support-help.tsx](../modules/assets/src/web/support-connections/shared/ui/support-help.tsx) | ``t("support.description")``; ``t("support.examples")``; ``t("support.examplesLabel")``; ``t("support.guidance")``; ``t("support.scope")``; ``t("support.help")`` |
|
||
| [modules/assets/src/web/workstations/associate-assets/ui/workstation-asset-add-dialog.tsx](../modules/assets/src/web/workstations/associate-assets/ui/workstation-asset-add-dialog.tsx) | ``t("workstationAdd.help")``; ``t("workstationAdd.helpLabel")``; ``t("workstationAdd.title")`` |
|
||
| [modules/assets/src/web/workstations/shared/ui/workstation-form.tsx](../modules/assets/src/web/workstations/shared/ui/workstation-form.tsx) | ``t("workstationDescription")``; ``t("workstationExamples")``; ``t("examplesLabel")``; ``t("workstationGuidance")``; ``t("workstationScope")``; ``t("helpTitle")`` |
|
||
| [modules/companies/src/web/access/help/ui/entity-help.tsx](../modules/companies/src/web/access/help/ui/entity-help.tsx) | ``t(`helpContent.${kind}.description`)``; ``t(`helpContent.${kind}.examples`)``; ``t("helpExamples")``; ``t(`helpContent.${kind}.guidance`)``; ``catalogue && scope ? t(scope === "global" ? "helpGlobalScope" : "helpCompanyScope") : undefined``; ``t("helpTitle")`` |
|
||
| [modules/companies/src/web/application-configurations/shared/ui/application-configuration-form.tsx](../modules/companies/src/web/application-configurations/shared/ui/application-configuration-form.tsx) | ``t("applications.description")``; ``t("applications.examples")``; ``t("mail.examplesLabel")``; ``t("applications.guidance")``; ``t("applications.scope")``; ``t("applications.help")`` |
|
||
| [modules/companies/src/web/certificate-configurations/shared/ui/certificate-configuration-form.tsx](../modules/companies/src/web/certificate-configurations/shared/ui/certificate-configuration-form.tsx) | ``t("certificates.description")``; ``t("certificates.examples")``; ``t("mail.examplesLabel")``; ``t("certificates.guidance")``; ``t("certificates.scope")``; ``t("certificates.help")`` |
|
||
| [modules/companies/src/web/folder-mappings/shared/ui/folder-mapping-form.tsx](../modules/companies/src/web/folder-mappings/shared/ui/folder-mapping-form.tsx) | ``t("folders.description")``; ``t("folders.examples")``; ``t("mail.examplesLabel")``; ``t("folders.guidance")``; ```${t("folders.scope")``; ``t("folders.help")`` |
|
||
| [modules/companies/src/web/local-identity-environments/manage/ui/local-identity-editor.tsx](../modules/companies/src/web/local-identity-environments/manage/ui/local-identity-editor.tsx) | ``t("localIdentity.description")``; ``t("localIdentity.examples")``; ``t("mail.examplesLabel")``; ``t("localIdentity.immutable")``; ``t("localIdentity.scope")``; ``t("localIdentity.help")`` |
|
||
| [modules/companies/src/web/mail-configurations/shared/ui/mail-configuration-form.tsx](../modules/companies/src/web/mail-configurations/shared/ui/mail-configuration-form.tsx) | ``t("mail.description")``; ``t("mail.examples")``; ``t("mail.examplesLabel")``; ``t("mail.guidance")``; ``t("mail.scope")``; ``t("mail.help")`` |
|
||
| [modules/companies/src/web/mailbox-uses/shared/ui/mailbox-use-form.tsx](../modules/companies/src/web/mailbox-uses/shared/ui/mailbox-use-form.tsx) | ``t("mailbox.useDescription")``; ``t("mailbox.useExamples")``; ``t("mail.examplesLabel")``; ``t("mailbox.useGuidance")``; ``t("mailbox.useHelp")`` |
|
||
| [modules/companies/src/web/printer-configurations/shared/ui/printer-configuration-form.tsx](../modules/companies/src/web/printer-configurations/shared/ui/printer-configuration-form.tsx) | ``t("printers.description")``; ``t("printers.examples")``; ``t("mail.examplesLabel")``; ``t("printers.guidance")``; ``t("printers.scope")``; ``t("printers.help")`` |
|
||
| [modules/companies/src/web/processes/shared/ui/process-help.tsx](../modules/companies/src/web/processes/shared/ui/process-help.tsx) | ``t(`${prefix}.description`)``; ``t(`${prefix}.examples`)``; ``t("mail.examplesLabel")``; ``t(`${prefix}.guidance`)``; ``t(`${prefix}.scope`)``; ``t(`${prefix}.title`)`` |
|
||
| [modules/companies/src/web/remote-connections/shared/ui/remote-connection-form.tsx](../modules/companies/src/web/remote-connections/shared/ui/remote-connection-form.tsx) | ``t("remote.description")``; ``t("remote.examples")``; ``t("mail.examplesLabel")``; ``t("remote.guidance")``; ``t("remote.scope")``; ``t("remote.help")`` |
|
||
| [modules/companies/src/web/software-installations/shared/ui/software-installation-form.tsx](../modules/companies/src/web/software-installations/shared/ui/software-installation-form.tsx) | ``t("software.description")``; ``t("software.examples")``; ``t("mail.examplesLabel")``; ``t("software.help")``; ``t("applications.help")`` |
|
||
| [modules/companies/src/web/telework-authorizations/shared/ui/telework-authorization-form.tsx](../modules/companies/src/web/telework-authorizations/shared/ui/telework-authorization-form.tsx) | ``t("telework.description")``; ``t("telework.examples")``; ``t("mail.examplesLabel")``; ``t("telework.guidance")``; ``t("telework.scope")``; ``t("telework.help")`` |
|
||
| [modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx](../modules/companies/src/web/work-profiles/shared/ui/work-profile-form.tsx) | ``t("profiles.description")``; ``t("profiles.examples")``; ``t("profiles.examplesLabel")``; ``t("profiles.guidance")``; ``t("profiles.scope")``; ``t("profiles.help")`` |
|
||
| [modules/resources/src/web/catalog/shared/ui/catalog-help.tsx](../modules/resources/src/web/catalog/shared/ui/catalog-help.tsx) | ``t(`${kind}Description`)``; ``t(`${kind}Examples`)``; ``t("examplesLabel")``; ``t(`${kind}Guidance`)``; ``t(scope === "global" ? "globalHelp" : "companyHelp")``; ``t("helpTitle")`` |
|
||
| [modules/resources/src/web/global-applications/shared/ui/global-application-form.tsx](../modules/resources/src/web/global-applications/shared/ui/global-application-form.tsx) | ``t("global.formDescription")``; ``t("global.formExamples")``; ``t("examplesLabel")``; ``t("global.formGuidance")``; ``t("global.formScope")``; ``t("helpTitle")`` |
|
||
| [modules/resources/src/web/resources/shared/ui/resource-form.tsx](../modules/resources/src/web/resources/shared/ui/resource-form.tsx) | ``t(`${helpPrefix}Description`)``; ``t(`${helpPrefix}Examples`)``; ``t("examplesLabel")``; ``t(`${helpPrefix}Guidance`)``; ``t(`${helpPrefix}Scope`)``; ``t("helpTitle")`` |
|
||
| [packages/rdx-ui/src/components/field-picker-dialog.tsx](../packages/rdx-ui/src/components/field-picker-dialog.tsx) | ``props.labels.help``; ``props.labels.helpLabel``; ``props.labels.destination`` |
|
||
|
||
## Skills consultadas
|
||
|
||
Principal: ui-ux-pro-max (búsqueda local sobre foco, teclado y responsive). Complementarias: shadcn (Base UI, composición y estilos), vercel-composition-patterns (slots y contexto con consumidores reales), vercel-react-best-practices (estado mínimo y formularios montados), rdx-solid (contratos y pruebas). Se consultaron sus referencias aplicables junto a DESIGN, patrón de diálogos y procedimiento MCP. La CLI shadcn docs falló por DNS; se consultaron las páginas oficiales de [Dialog](https://ui.shadcn.com/docs/components/base/dialog) y [Popover](https://ui.shadcn.com/docs/components/base/popover) y las APIs instaladas. No se instalaron dependencias externas ni auditores. Solo se añadió el enlace workspace de apps/web a rdx-ui.
|
||
|
||
## Pruebas técnicas ejecutadas
|
||
|
||
| Comprobación | Resultado |
|
||
| --- | --- |
|
||
| pnpm typecheck | Falla en packages/shadcn-ui/src/components/calendar.tsx:165, TS2375 por locale opcional con exactOptionalPropertyTypes. Reproducido ejecutando el typecheck aislado del vendor; no hay diferencias en vendor respecto a HEAD. No se modifica por instrucción expresa del repositorio. |
|
||
| Typecheck dirigido de @repo/rdx-ui, @metis/web, @metis/assets, @metis/resources y @metis/companies | Correctos. |
|
||
| pnpm test (con sockets locales disponibles) | 671 pruebas correctas y 2 fallos, ambos en companies-page.test.tsx: expectativas antiguas de «Personas (1)» y «Esta persona no tiene acceso a Metis Desk». Se reprodujeron los mismos dos fallos en una copia temporal de git archive del commit 91f1d07, sin los cambios de ayuda. |
|
||
| Suites de recursos, activos y rdx-ui en la ejecución global | 105, 149 y 82 pruebas correctas, respectivamente. |
|
||
| pnpm --filter @metis/web test | 3 archivos correctos: aplicación, traducciones y redirección. Incluye paridad completa es/en. Turbo no alcanzaba esta suite tras los fallos de compañías; se ejecutó expresamente. |
|
||
| pnpm --filter @repo/rdx-ui test | 14 archivos correctos, incluidas las nuevas pruebas de política y conservación de contenido. |
|
||
| python3 scripts/visual-audit.test.py | 10 pruebas correctas del preparador, aislamiento y diagnóstico. |
|
||
| pnpm lint / pnpm check | Fallan fuera del diff: 15 errores de lint y 166 diagnósticos de error en check (incluye formato). Entre las fuentes: implementación previa de fotos de personas, migraciones y archivos locales de skills/diagnóstico. No se reformatean ni corrigen en esta tarea. |
|
||
| Biome check y ESLint de espaciado sobre los 19 archivos TS/TSX/JSON modificados o nuevos | Correctos, sin diagnósticos. |
|
||
| pnpm build | Correcto; conserva el aviso de tamaño de chunks de la aplicación. |
|
||
| git diff --check | Correcto. |
|
||
|
||
La primera ejecución de pnpm test dentro del sandbox falló al probar HTTP en resource-scope.test.ts. Con sockets locales autorizados, esa suite pasó. No se contabiliza ese fallo de entorno como regresión del código. La prueba de perfiles que exigía la antigua clase max-h-[40%] se actualizó: comprueba pasos y conservación de ejemplos/orientación, sin exigir el pie retirado.
|
||
|
||
## Validación interactiva y evidencias
|
||
|
||
Procedimiento reproducible: `bash scripts/setup-playwright-wsl.sh` y `python3 scripts/visual-audit.py --dialog-help --check`. Usa la imagen MCP fijada por digest, Chromium 155, build de producción en Vite preview y HTTP real con usuario ordinario. El runner confirma el origen y puerto libres antes de navegar. No se utiliza la base local: crea y retira un contenedor exclusivo con metis_desk_test.
|
||
|
||
Volumen preparado en cada ejecución: 15 compañías; en la principal, 50 personas, 51 activos, 66 recursos (16 fixtures y 50 aplicaciones), 50 puestos y 50 perfiles. Las escrituras de prueba se limitan a esa instalación desechable. Las sesiones y credenciales se retiran al finalizar, también tras fallos.
|
||
|
||
La matriz representativa principal terminó correctamente en `.artifacts/playwright/authenticated-u53obiy7/`: edición real de activo con valores modificados, validación y selector; ayuda extensa y breve en selector real de activos del puesto. Se comprobaron siete anchos (320, 375, 390, 768, 1024, 1280 y 1440), ausencia de desbordamiento del diálogo, alineación ?/X, foco al abrir y cerrar, Escape, mismo nodo de input tras regresar, datos y validaciones conservados, cambio panel→vista y Popover→vista, retorno explícito y cierre X. La consola de ese recorrido registró cero errores y cero warnings.
|
||
|
||
Se abrieron e inspeccionaron las capturas de 320 y 1440, Popover y tema oscuro. El manifiesto dialog-help-report.json conserva medidas y SHA-256 de cada captura. Son artefactos locales excluidos de Git.
|
||
|
||
## Accesibilidad, correcciones y límites
|
||
|
||
- La comprobación real de Escape detectó el cierre del modal completo; se corrigió utilizando el contrato de cancelación de Base UI. No se añadió un listener global ni un focus trap propio.
|
||
- Se mantiene la misma instancia del formulario, sus validaciones y selector. La vista interna desactiva su interacción con inert y lo oculta del árbol accesible. Los botones de ayuda son type=button.
|
||
- El título del panel/vista recibe foco y etiqueta la región. Cerrar devuelve foco al trigger incluso si el cambio de modalidad sustituye su composición con Popover. Se conserva la navegación de teclado de Base UI.
|
||
- La auditoría adicional de movimiento reducido detectó precedencia de animaciones vendor sobre la clase inicial. Se corrigió mediante utilidades important limitadas a prefers-reduced-motion en los wrappers propios. Vendor permanece intacto.
|
||
- Se midió el color calculado de texto y fondos compuestos con canvas. El desplegable de ejemplos daba 4,28:1 en claro; dentro de los diálogos se cambió a text-foreground, conservando íntegro el texto. La verificación posterior se detalla en el resultado ampliado.
|
||
- No se han probado lectores de pantalla reales ni se certifica conformidad WCAG 2.2 AA completa. La inspección de capturas y las medidas programáticas no sustituyen esas pruebas.
|
||
- La matriz no implica abrir cada variante de los 102 componentes ni volver a probar todos sus estados de red, permisos o confirmaciones destructivas. Esas descripciones y controles no se migraron.
|
||
- El zoom nativo del navegador al 200 % y 400 % no se considera verificado mediante cambios de viewport o tamaño de fuente: se documentan como pruebas de reflow y ampliación de texto, por separado.
|
||
|
||
### Recorrido ampliado completado
|
||
|
||
Ejecución completa correcta en `.artifacts/playwright/authenticated-q920cqcu/` mediante
|
||
`python3 scripts/visual-audit.py --dialog-help --check`:
|
||
|
||
- 28 comprobaciones: aislamiento del inventario de otra compañía, usuario ordinario,
|
||
cabecera única, ayuda inicialmente oculta, formulario inválido real, siete anchos,
|
||
panel/vista, Enter/Escape, foco de retorno, identidad del input, datos/validación/selector,
|
||
ausencia de overflow, redimensionamiento, oscuro, cierre X, movimiento reducido y Tab
|
||
en Popover, cierre Popover sin cerrar el selector, conservación de búsqueda y radio,
|
||
diálogo de columnas sin ?, contraste, reflow/texto ampliado, título largo sintético,
|
||
guardado tras consultar ayuda, cancelación sin escritura y etiquetas en inglés.
|
||
- Se cambió el estado técnico a Averiado y se conservó la pestaña Hardware durante las
|
||
aperturas/cierres; no se comprueba solo el valor inicial de un selector.
|
||
- Contrastes calculados después de la corrección: texto secundario **4,83:1 en claro**
|
||
y **6,85:1 en oscuro**; el desplegable de ejemplos **17,42:1 / 16,68:1**.
|
||
- Reflow a 720 y 360 CSS px, equivalente a reducir el espacio de una ventana de 1440 al
|
||
200 % y 400 %. Por separado, ampliación de fuente raíz al 200 % y 400 % en 1440 px.
|
||
Son comprobaciones de capacidad y texto; no una prueba de zoom nativo del navegador.
|
||
- El título largo es una modificación DOM sintética y reversible de la cabecera del
|
||
formulario real; no se guardó un nombre de negocio ni se inventó una pantalla.
|
||
- La consola no registró errores ni warnings React. Aparecieron dos avisos de rendimiento
|
||
de Canvas2D generados por el propio medidor de contraste, sin relación con el producto.
|
||
El comprobador posterior utiliza willReadFrequently para evitarlos.
|
||
|
||
La inspección de la captura con fuente al 400 % motivó además un fallback de scroll en la
|
||
región de ayuda, con un mínimo de tres líneas para su contenido; conserva acceso al botón
|
||
de retorno cuando el espacio vertical resulta insuficiente.
|
||
|
||
Comprobación final completa: **28 verificaciones correctas, 14 capturas y consola sin errores
|
||
ni warnings** en `.artifacts/playwright/authenticated-a0gc2ghb/`. Se repitió el recorrido
|
||
con la región legible y el retorno mediante scroll. Se abrieron e inspeccionaron las
|
||
capturas finales de panel a 1440, vista a 320, Popover, título largo y texto al 400 %.
|
||
El [informe local de navegador](../.artifacts/playwright/authenticated-a0gc2ghb/dialog-help-report.json)
|
||
registra todas las mediciones y las huellas SHA-256; dialog-help-console.json conserva la
|
||
salida de consola. Los archivos son locales y están excluidos de Git. El contenedor y su
|
||
sesión se retiraron al finalizar. La compilación y las comprobaciones dirigidas se
|
||
repitieron correctamente después del último ajuste.
|
||
|
||
### Ampliación: animación CSS del panel lateral
|
||
|
||
El panel compartido incorpora entrada con fundido y desplazamiento corto desde la derecha,
|
||
200 ms y ease-out, reutilizando las utilidades CSS existentes. Se anima únicamente
|
||
opacity/transform, también al reabrir; prefers-reduced-motion desactiva la animación.
|
||
Criterios consultados: UI/UX Pro Max (movimiento reducido, movimiento limitado y duración
|
||
adecuada a la distancia) y las convenciones shadcn del proyecto.
|
||
|
||
Verificación correcta mediante `python3 scripts/visual-audit.py --dialog-help --check`:
|
||
30 comprobaciones, 14 capturas y consola sin errores ni warnings. El comprobador captura
|
||
la animación en la misma operación que abre el panel y controla su timeline con Web
|
||
Animations API, sin esperas arbitrarias: opacidad 0 al inicio, intermedia entre 0 y 1 a los
|
||
100 ms y 1 al finalizar; duración calculada 0,2 s. Se verificó también animationName=none
|
||
con movimiento reducido y se repitió el recorrido de foco, formulario y responsive.
|
||
Evidencia: `.artifacts/playwright/authenticated-ft29wong/dialog-help-report.json`.
|
||
El entorno desechable y su sesión se retiraron al terminar. Typecheck de rdx-ui, Biome,
|
||
ESLint de espaciado y git diff --check correctos; la auditoría ejecutó además el build.
|
||
|
||
## Pendientes reales
|
||
|
||
Pruebas con lectores de pantalla, zoom nativo 200/400 %, revisión manual completa de todos
|
||
los diálogos y escenarios de altura baja como 320×640. No se instalan auditores ausentes.
|
||
Los fallos globales de tipos, lint/formato y las dos expectativas previas de compañías
|
||
permanecen fuera de esta migración y se han detallado con sus comprobaciones de aislamiento.
|