diff --git a/apps/ops/src/css/app.scss b/apps/ops/src/css/app.scss index 7a1440c..5cfa965 100644 --- a/apps/ops/src/css/app.scss +++ b/apps/ops/src/css/app.scss @@ -254,6 +254,9 @@ body { champs à largeur fixe inline (style="width:NNNpx" : recherches, dates, nombres) bornés à l'espace dispo. */ .q-field[style*="width"] { max-width: 100% !important; } .q-menu .q-list { max-width: 100% !important; } + /* Barres d'onglets (q-tabs) non bornées dans une rangée flex : on les cadre à l'écran + pour que Quasar réactive son défilement natif au lieu de déborder (ex. NetworkPage : 4 onglets = 435px). */ + .q-tabs { max-width: 100% !important; } /* Cibles tactiles : boutons icône denses ≥ 32px (confort au doigt). */ .q-btn--round.q-btn--dense { min-height: 32px; min-width: 32px; } /* Utilitaires opt-in pour rangées/en-têtes denses : wrap + troncature 1 ligne sur mobile (à poser au cas par cas). */ diff --git a/apps/ops/src/pages/NetworkPage.vue b/apps/ops/src/pages/NetworkPage.vue index f1be6a8..6e79301 100644 --- a/apps/ops/src/pages/NetworkPage.vue +++ b/apps/ops/src/pages/NetworkPage.vue @@ -1569,6 +1569,14 @@ onMounted(() => { .net-olt-slots { color: var(--ops-text-muted); font-size: 12px; font-weight: 400; } .net-olt-edit-btn { opacity: 0; transition: opacity .15s; } +/* Mobile — arbre GPON : les en-têtes (OLT/slot/port) empilent trop d'infos sur une ligne (nom·IP·adresse·nb clients·SNMP·slots·éditer) → on enroule. + Les boutons d'action révélés au survol (opacity:0) sont inaccessibles au doigt → toujours visibles sur tactile. */ +@media (max-width: 599px) { + .net-olt-header, .net-slot-header, .net-port-header { flex-wrap: wrap; } + .net-olt-count, .net-slot-count, .net-port-count { margin-left: 0; } + .net-olt-edit-btn, .net-port-add-btn, .net-loc-edit-btn { opacity: 1; } +} + .net-snmp-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 400; padding: 1px 8px;