metis-desk/docs/inventario-de-modales.md
David ccb52fb534 feat: add catalog field picker dialog and list components
- Introduced `CatalogFieldPickerDialog` and `CatalogFieldPickerList` for selecting catalog fields.
- Implemented `appendTemplateFields` helper function for managing template fields.
- Added tests for catalog field selection and template field management.
- Created reusable components for field picking and reordering in the UI library.
- Enhanced drag-and-drop functionality for reordering items in lists.
2026-10-15 15:58:01 +02:00

12 KiB

Inventario de interacciones modales

Revisión de 2026-10-08. Se inspeccionaron las primitivas y wrappers importados, sus consumidores, los bloques condicionales y las implementaciones manuales posibles: Dialog, AlertDialog, Sheet, Drawer, FormDialog, portales, elementos dialog, aria-modal y roles dialog/alertdialog. La búsqueda no dependió del nombre de los componentes.

El código propio contiene 81 componentes que construyen una interacción modal. Todos usan FormDialog de @repo/rdx-ui y tienen un componente principal por fichero. Un componente puede representar variantes de alta, edición o copia, y catálogos con distintos tipos; el número no es un recuento de todos los estados posibles de las ventanas. No se encontraron otras implementaciones propias con AlertDialog, Sheet, Drawer ni diálogos HTML/manuales.

Actualización de 2026-10-09: se añade DeleteBrandDialog para confirmar la eliminación de marcas personalizadas; el inventario pasa a 82 componentes. Se ha comprobado esta operación en navegador con API simulada: Cancelar/Escape, errores, bloqueo durante el envío, éxito, español/inglés y anchura móvil. Esta comprobación no amplía la revisión al resto de modales.

La implementación vendor de packages/shadcn-ui queda fuera de la refactorización según AGENTS.md. Sus primitivas y el diálogo de configuración de tablas se consultan y consumen, no se duplican ni reorganizan. Los popovers de selectores y menús de acciones no se contabilizan como formularios o ventanas modales funcionales.

Responsabilidades y consumidores

Las páginas y listados conservan apertura, selección y callbacks. Los componentes enumerados encapsulan título, disposición, anchura, contenido y cierre. Los formularios existentes mantienen sus schemas, borradores, mutaciones, ayuda y errores. EndRelationshipDialog posee además la mutación de confirmación y sus estados pendientes y de error.

CompanyEditorDialog, PersonEditorDialog, DepartmentEditorDialog y SiteEditorDialog se reutilizan el patrón entre catálogo y selector. Los callbacks de selección permanecen en el consumidor que posee el borrador. Las altas anidadas conservan sus restricciones existentes.

Se integró el contenido exclusivo de los antiguos SupportHistory, ApplicationHistory, CertificateHistory y PrinterHistory en sus respectivos componentes de diálogo, tras comprobar sus referencias. No se eliminaron historiales ni acciones. Los archivos anteriores se pueden recuperar desde Git.

Componentes por área

Las rutas reflejan la estructura por entidades y operaciones.

modules/assets/src/web

modules/companies/src/web/access

modules/companies/src/web/application-configurations

modules/companies/src/web/certificate-configurations

Compañías, organización, dashboard y workspace de companies

modules/companies/src/web/folder-mappings

Buzones, usos y configuraciones de correo de companies

modules/companies/src/web/printer-configurations

modules/companies/src/web/processes

modules/companies/src/web/process-templates

modules/companies/src/web/work-profiles

modules/companies/src/web/remote-connections

modules/companies/src/web/telework-authorizations

modules/identity/src/web

modules/resources/src/web

Comprobaciones y límites

Typecheck, lint, pruebas de los módulos y validaciones globales correctos. Las pruebas existentes comprueban traducciones es/en, listados sin formularios visibles, ayuda, restricciones de altas anidadas, estados y contratos. Se amplió la prueba del dashboard con datos no vacíos de los paneles extraídos.

No se ejecutó una sesión interactiva de navegador. Queda por comprobar manualmente apertura, Escape, restauración del foco, cancelación, envío y error en modales simples y anidados, en español, inglés y anchura móvil. El render estático y el lint no sustituyen esa comprobación.

Véase revisión de buenas prácticas para el alcance y los resultados globales, y componentes de interfaz para los patrones compartidos.

Los modales de tickets, intervenciones y sus plantillas están archivados.