Commit Graph

8 Commits

Author SHA1 Message Date
454d98eb97 Feat: Agregar botón de reiniciar formulario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Nuevo botón "Reiniciar" en el footer junto a Cancelar y Guardar
- Solo aparece cuando hay cambios pendientes (v-if="hasChanges")
- Color warning con variant soft para indicar acción destructiva
- Ícono de arrow-path (flecha circular)
- Función resetForm() que:
  - Pide confirmación al usuario
  - Restaura todos los campos a valores originales
  - Limpia la cookie de borrador
  - Muestra toast informativo
- Ubicado entre botones Cancelar y Guardar cambios

El botón permite descartar todos los cambios y volver al estado
original sin tener que recargar la página.
2025-10-17 17:09:36 -06:00
e224f385d4 Improve: Mejorar mensaje de alerta al salir del formulario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Hacer el mensaje más claro y explicativo
- Enfatizar que los cambios NO se han enviado al servidor
- Indicar que quedarán guardados localmente en el navegador
- Agregar instrucción de cómo guardar definitivamente
- Iniciar con pregunta "¿Estás seguro de salir?"

Mensaje anterior era ambiguo, ahora es más específico sobre:
- Qué se guarda (localmente)
- Qué NO se guarda (en el servidor)
- Qué hacer para guardar definitivamente
2025-10-17 17:07:54 -06:00
2c7a12a829 Feat: Persistencia de cambios y alertas al salir del formulario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 57s
- Agregar cookie para persistir cambios del formulario (7 días)
- Detectar y mostrar campos modificados con indicadores visuales
- Alertar al usuario antes de salir si hay cambios sin guardar
- Restaurar borrador automáticamente al reabrir formulario
- Notificar al usuario de cambios restaurados con toast
- Limpiar cookie al guardar exitosamente

Indicadores visuales:
- Label en color warning para campos modificados
- Badge "Modificado" con ícono de lápiz
- Mensaje en beforeunload listando campos pendientes

La cookie guarda todos los campos del formulario y se restauran
automáticamente al abrir el formulario de nuevo.
2025-10-17 17:01:55 -06:00
4a7f6bb5f0 Refactor: Simplificar sección de foto de perfil en formulario
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Mover sección de foto de perfil al primer lugar del formulario
- Eliminar preview del avatar (MsnAvatar) - no repetir
- Simplificar botones: más compactos (size="sm", iconos w-4 h-4)
- Eliminar card/container extra (.avatar-section) con background y padding
- Nueva clase simple .avatar-actions-simple con solo flex y gap
- Limpiar estilos CSS no utilizados (avatar-section, avatar-preview, avatar-actions)
2025-10-17 16:55:50 -06:00
40b0610ad9 Fix: Actualizar sintaxis de componentes Nuxt UI v4 y corregir errores de TypeScript
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 55s
- Actualizar UModal para usar v-model:open en lugar de v-model
- Envolver contenido de UModal en slot #content según nueva sintaxis
- Corregir tipos en CameraCapture: agregar verificación de objeto antes de spread
- Cambiar tipo de retorno de getAppIconUrl de null a undefined
- Comentar capture_links en manifest PWA (propiedad experimental no soportada en tipos)
- Resolver todos los errores de TypeScript y warnings de hidratación

Errores corregidos:
- TS2353: width no existe en tipo ui de UModal
- TS2698: Spread types solo de tipos objeto
- TS18048: camera posiblemente undefined
- TS2322: null no asignable a undefined
- TS2353: capture_links no existe en ManifestOptions
2025-10-17 16:45:51 -06:00
8109f7e1d0 Implementar sistema completo de captura y gestión de avatares
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 57s
- Agregar CameraCapture.vue con soporte multi-dispositivo
  * Soporte para múltiples cámaras (frontal/trasera)
  * Manejo robusto de permisos y errores
  * Preview y confirmación de foto
  * Detección automática de capacidades del dispositivo

- Crear endpoint /api/avatar/upload para subir avatares
  * Validación de tipo y tamaño de archivo
  * Almacenamiento en /public/avatars/
  * Actualización de atributos en Authentik
  * Limpieza automática de avatares antiguos

- Actualizar UserProfileForm con gestión de avatar
  * Integración con CameraCapture en modal
  * Preview del avatar actual con MsnAvatar
  * Opciones para cambiar y eliminar avatar

- Actualizar useAuthentik para avatares personalizados
  * Carga de atributos completos del usuario
  * Soporte para avatar_url desde Authentik
  * Fallback a UI Avatars si no hay custom avatar
2025-10-17 16:35:59 -06:00
196108752a Formulario mejorado con iconos, headers y nuevos campos
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 54s
- Reorganizar formulario en 4 secciones con headers:
  * Información Básica (username, UID, nombre, email)
  * Conectividad (contraseña WiFi)
  * Información Personal (teléfono, cédula, fecha, avatar)
  * Seguridad y Acceso (NFC, PIN, código Nucleo)
- Agregar UID de Authentik (solo lectura)
- Agregar contraseña WiFi Nucleo (solo lectura)
- Iconos en todos los campos y secciones
- Labels personalizados con iconos heroicons
- Indicador de campos requeridos (*)
- Textos de ayuda mejorados
- Estilos glassmorphism para secciones
- Modo oscuro completo
- Responsive design mejorado
2025-10-17 00:19:22 -06:00
44c4727588 Feature: Formulario de edición en lugar de modal
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 57s
- Crear componente UserProfileForm con diseño glassmorphism
- Alternar entre lista de apps y formulario de edición
- Quitar modal de UserHeader, usar emit event
- Agregar nuevos campos deshabilitados:
  * Avatar URL
  * Teléfono
  * Cédula
  * Fecha de nacimiento
  * NFC vinculada
  * PIN numérico
  * Código Nucleo V2
- Sistema de eventos entre componentes
2025-10-16 23:12:46 -06:00