### Modifications principales - Les métadonnées sont maintenant visibles par défaut à l'ouverture de l'overlay - Ajout d'une barre de progression interactive dans le panneau des métadonnées (support souris et tactile) - Style glassmorphism appliqué à l'overlay (fond transparent 35%, blur 30px, bordure subtile) - Panneau réduit à 70% de largeur pour un look plus élégant - Fermeture ergonomique sur mobile via swipe down (seuil 100px) avec feedback visuel - Bouton X conservé pour desktop - Blocage du pull-to-refresh Android ### Corrections supplémentaires - Support tactile de la barre de progression principale (hors overlay) - Utilisation de `100dvh` au lieu de `100vh` pour compatibilité avec les barres de navigation mobiles - Corrections TypeScript pour les événements tactiles
3.2 KiB
Rapport : Amélioration de l'overlay de couverture d'album
Résumé
Amélioration de l'interface de l'overlay affichant la couverture d'album en grand dans le Control Point PMOMusic, avec focus sur l'ergonomie mobile.
Fichier modifié
pmoapp/webapp/src/components/pmocontrol/CurrentTrack.vue
Modifications effectuées
Point 1 : Métadonnées visibles par défaut + Progress bar
Problème initial : Les métadonnées étaient cachées par défaut à l'ouverture de l'overlay.
Solutions implémentées :
-
Métadonnées visibles par défaut :
showMetadata.value = truedansopenCoverOverlay() -
Ajout de la progress bar dans le panneau des métadonnées :
- Barre de progression interactive avec thumb draggable
- Affichage temps écoulé / durée totale
- Support souris et tactile complet
- Style glassmorphism (fond transparent 35%, blur, bordure subtile)
-
Panneau plus discret :
- Transparence augmentée (35% au lieu de 60%)
- Largeur réduite (70% de l'écran avec
left: 15%; right: 15%)
Point 2 : Fermeture ergonomique sur mobile
Problème initial : Bouton X en haut à droite difficile d'accès au pouce.
Solutions implémentées :
-
Swipe down pour fermer :
- Geste naturel vers le bas pour fermer l'overlay
- Feedback visuel (translation + diminution opacité)
- Seuil de 100px pour déclencher la fermeture
- Listeners sur
documentpour capturer le mouvement même sur les éléments enfants
-
Bouton X conservé pour desktop/souris
-
Blocage du pull-to-refresh Android :
overscroll-behavior: containtouch-action: nonesur l'overlay
Corrections supplémentaires
-
Support tactile progress bar principale : Ajout de
@touchstartsur la progress bar hors overlay -
Compatibilité viewport mobile : Remplacement de
100vhpar100dvh(dynamic viewport height) pour éviter que la barre du navigateur masque le contenu -
Corrections TypeScript : Vérifications
if (!touch) returnpour les événements tactiles
Détails techniques
Nouvelles variables réactives
const swipeStartY = ref(0);
const swipeCurrentY = ref(0);
const isSwiping = ref(false);
const swipeThreshold = 100;
Nouvelles fonctions
handleOverlayTouchStart(): Initialise le swipe et ajoute les listeners documenthandleSwipeTouchMove(): Suit le mouvement du doigthandleSwipeTouchEnd(): Ferme si seuil atteint, nettoie les listenershandleOverlayProgressBarTouchStart(): Gestion tactile du seek (réutilisée par les deux progress bars)swipeOffset/swipeOpacity: Computed pour le feedback visuel
Nouveaux styles CSS
.overlay-metadata-text: Conteneur du texte.overlay-progress-section: Section progress bar.overlay-progress-bar/-fill/-thumb: Style glassmorphism.overlay-time-display: Affichage temps.cover-overlay-content.swiping: État pendant le swipeoverscroll-behavior: contain+touch-action: none: Blocage pull-to-refresh100dvh: Viewport dynamique pour mobile
Responsive
- Mobile (< 768px) : Progress bar 10px, thumb 28px
- Mode kiosque (800x600) : Progress bar 6px