🔧 v1.39.2 - FIX CRÍTICO: Responsividade iPhone forçada
CSS anterior não aplicava devido a conflitos de especificidade. Adicionado regras com maior prioridade em TODOS estilos críticos: SIDEBAR MOBILE (<768px): - width: 60px forçado - app-main margin-left: 60px forçado - Texto/logos escondidos (display/opacity/visibility none) - Links centralizados, padding 0.75rem SIDEBAR ULTRA-COMPACTA (<430px): - width: 56px forçado - app-main margin-left: 56px forçado SIDEBAR LANDSCAPE: - width: 50px forçado - app-main margin-left: 50px forçado LAYOUT OTIMIZADO: - Cards: padding 0.5-0.75rem reduzido - Containers: padding 0.5rem - Row margins: -0.25rem para aproveitar espaço - Modais: margin 0.5rem, max-width otimizada - Tabelas: font 0.8rem, padding ultra-compacto SAFE AREAS: - app-sidebar: padding-top/bottom com env() - app-main: padding-bottom com env() - Modais: margins com calc() PWA STANDALONE: - overscroll-behavior none - sidebar position fixed, overflow-y auto Deploy: frontend/dist completamente substituído
This commit is contained in:
parent
2e45f29a06
commit
db82316461
20
CHANGELOG.md
20
CHANGELOG.md
@ -5,6 +5,26 @@ O formato segue [Keep a Changelog](https://keepachangelog.com/pt-BR/).
|
|||||||
Este projeto adota [Versionamento Semântico](https://semver.org/pt-BR/).
|
Este projeto adota [Versionamento Semântico](https://semver.org/pt-BR/).
|
||||||
|
|
||||||
|
|
||||||
|
## [1.39.2] - 2025-12-16
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- **Responsividade iPhone CORRIGIDA** - CSS com !important para forçar aplicação
|
||||||
|
- Sidebar forçada para 60px em mobile (<768px) com !important
|
||||||
|
- Sidebar extra-compacta (56px) em telas <430px
|
||||||
|
- Sidebar 50px em landscape mode (<430px altura)
|
||||||
|
- App-main margin-left ajustado automaticamente
|
||||||
|
- Texto sidebar 100% escondido em mobile (display/opacity/visibility: none)
|
||||||
|
- Touch targets 44x44px em todos elementos interativos
|
||||||
|
- Safe area insets aplicadas a sidebar e app-main
|
||||||
|
- Cards ultra-compactas: padding 0.5rem em <430px
|
||||||
|
- Gráficos: 250px (portrait) / 180px (landscape)
|
||||||
|
- Modais: margin 0.5rem, width calc(100% - 1rem)
|
||||||
|
- Row margins: -0.25rem para aproveitar espaço
|
||||||
|
- Tabelas: font 0.8rem, padding 0.3rem/0.2rem
|
||||||
|
- Inputs: font-size 16px para prevenir zoom
|
||||||
|
- PWA: overscroll-behavior none, sidebar fixed position
|
||||||
|
- Todos os !important necessários para sobrescrever CSS existente
|
||||||
|
|
||||||
## [1.39.1] - 2025-12-16
|
## [1.39.1] - 2025-12-16
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@ -2442,116 +2442,249 @@ a.btn,
|
|||||||
.form-check-input,
|
.form-check-input,
|
||||||
.form-switch .form-check-input,
|
.form-switch .form-check-input,
|
||||||
.dropdown-toggle,
|
.dropdown-toggle,
|
||||||
.nav-link {
|
.nav-link,
|
||||||
min-height: 44px;
|
.sidebar-link,
|
||||||
min-width: 44px;
|
.sidebar-group-toggle {
|
||||||
|
min-height: 44px !important;
|
||||||
|
min-width: 44px !important;
|
||||||
touch-action: manipulation; /* Desabilita zoom duplo-toque */
|
touch-action: manipulation; /* Desabilita zoom duplo-toque */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Forçar sidebar colapsada em mobile (<768px) */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.app-sidebar {
|
||||||
|
width: 60px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-main {
|
||||||
|
margin-left: 60px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forçar esconder texto em mobile */
|
||||||
|
.app-sidebar .logo-brand,
|
||||||
|
.app-sidebar .sidebar-link-text,
|
||||||
|
.app-sidebar .user-details,
|
||||||
|
.app-sidebar .user-name,
|
||||||
|
.app-sidebar .user-email {
|
||||||
|
display: none !important;
|
||||||
|
opacity: 0 !important;
|
||||||
|
visibility: hidden !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Centralizar ícones */
|
||||||
|
.app-sidebar .sidebar-link {
|
||||||
|
justify-content: center !important;
|
||||||
|
padding: 0.75rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-sidebar .sidebar-group-toggle {
|
||||||
|
justify-content: center !important;
|
||||||
|
padding: 0.75rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ajustar conteúdo principal */
|
||||||
|
.app-content {
|
||||||
|
padding: 0.75rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-fluid {
|
||||||
|
padding-left: 0.5rem !important;
|
||||||
|
padding-right: 0.5rem !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Cards e containers em telas pequenas */
|
/* Cards e containers em telas pequenas */
|
||||||
@media (max-width: 576px) {
|
@media (max-width: 576px) {
|
||||||
.card {
|
.card {
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 0.75rem !important;
|
||||||
|
border-radius: 0.75rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-body {
|
.card-body {
|
||||||
padding: 1rem;
|
padding: 0.75rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Reduz padding em modais para mais espaço */
|
/* Reduz padding em modais para mais espaço */
|
||||||
.modal-body {
|
.modal-body {
|
||||||
padding: 1rem;
|
padding: 0.75rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-header {
|
.modal-header {
|
||||||
padding: 0.75rem 1rem;
|
padding: 0.75rem 1rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-footer {
|
.modal-footer {
|
||||||
padding: 0.75rem 1rem;
|
padding: 0.75rem 1rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ajusta gráficos para telas pequenas */
|
/* Ajusta gráficos para telas pequenas */
|
||||||
canvas {
|
canvas {
|
||||||
max-height: 250px !important;
|
max-height: 250px !important;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Otimizações para iPhone em modo portrait */
|
|
||||||
@media (max-width: 430px) {
|
|
||||||
/* iPhone 14 Pro Max e menores */
|
|
||||||
|
|
||||||
/* Ajusta tamanho de fonte para melhor legibilidade */
|
/* Stat cards mais compactas */
|
||||||
body {
|
|
||||||
font-size: 10pt;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 { font-size: 1.5rem; }
|
|
||||||
h2 { font-size: 1.35rem; }
|
|
||||||
h3 { font-size: 1.25rem; }
|
|
||||||
h4 { font-size: 1.15rem; }
|
|
||||||
h5 { font-size: 1rem; }
|
|
||||||
h6 { font-size: 0.95rem; }
|
|
||||||
|
|
||||||
/* Reduz padding global */
|
|
||||||
.container,
|
|
||||||
.container-fluid {
|
|
||||||
padding-left: 0.75rem;
|
|
||||||
padding-right: 0.75rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Otimiza stat cards */
|
|
||||||
.stat-card .card-body {
|
.stat-card .card-body {
|
||||||
padding: 0.75rem !important;
|
padding: 0.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tabelas responsivas */
|
/* Tabelas mais compactas */
|
||||||
.table {
|
.table {
|
||||||
font-size: 10pt;
|
font-size: 0.85rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table td,
|
.table td,
|
||||||
.table th {
|
.table th {
|
||||||
padding: 0.5rem 0.25rem;
|
padding: 0.4rem 0.3rem !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Otimizações para iPhone em modo portrait (<430px) */
|
||||||
|
@media (max-width: 430px) {
|
||||||
|
/* iPhone 14 Pro Max e menores */
|
||||||
|
|
||||||
|
/* Forçar sidebar ainda mais compacta */
|
||||||
|
.app-sidebar {
|
||||||
|
width: 56px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-main {
|
||||||
|
margin-left: 56px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ajusta tamanho de fonte para melhor legibilidade */
|
||||||
|
body {
|
||||||
|
font-size: 10pt !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, .h1 { font-size: 1.4rem !important; }
|
||||||
|
h2, .h2 { font-size: 1.25rem !important; }
|
||||||
|
h3, .h3 { font-size: 1.15rem !important; }
|
||||||
|
h4, .h4 { font-size: 1.05rem !important; }
|
||||||
|
h5, .h5 { font-size: 0.95rem !important; }
|
||||||
|
h6, .h6 { font-size: 0.9rem !important; }
|
||||||
|
|
||||||
|
/* Reduz padding global */
|
||||||
|
.container,
|
||||||
|
.container-fluid {
|
||||||
|
padding-left: 0.5rem !important;
|
||||||
|
padding-right: 0.5rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Otimiza stat cards */
|
||||||
|
.stat-card .card-body {
|
||||||
|
padding: 0.5rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stat-card .card-body > div {
|
||||||
|
font-size: 0.9rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Cards mais compactos */
|
||||||
|
.card {
|
||||||
|
margin-bottom: 0.5rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-body {
|
||||||
|
padding: 0.625rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card-header {
|
||||||
|
padding: 0.5rem 0.625rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ajusta inputs e selects */
|
/* Ajusta inputs e selects */
|
||||||
.form-control,
|
.form-control,
|
||||||
.form-select {
|
.form-select {
|
||||||
font-size: 16px !important; /* Previne zoom no iOS */
|
font-size: 16px !important; /* Previne zoom no iOS */
|
||||||
padding: 0.625rem 0.75rem;
|
padding: 0.5rem 0.625rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-label {
|
||||||
|
font-size: 0.85rem !important;
|
||||||
|
margin-bottom: 0.25rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Botões em telas muito pequenas */
|
/* Botões em telas muito pequenas */
|
||||||
.btn {
|
.btn {
|
||||||
padding: 0.625rem 0.875rem;
|
padding: 0.5rem 0.75rem !important;
|
||||||
|
font-size: 0.9rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sm {
|
||||||
|
padding: 0.375rem 0.5rem !important;
|
||||||
|
font-size: 0.8rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Gráficos ainda menores */
|
/* Gráficos ainda menores */
|
||||||
canvas {
|
canvas {
|
||||||
max-height: 220px !important;
|
max-height: 220px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Modais otimizados */
|
||||||
|
.modal-dialog {
|
||||||
|
margin: 0.5rem !important;
|
||||||
|
max-width: calc(100% - 1rem) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-content {
|
||||||
|
border-radius: 1rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tabelas ultra-compactas */
|
||||||
|
.table {
|
||||||
|
font-size: 0.8rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table td,
|
||||||
|
.table th {
|
||||||
|
padding: 0.3rem 0.2rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Dashboard widgets */
|
||||||
|
.row {
|
||||||
|
margin-left: -0.25rem !important;
|
||||||
|
margin-right: -0.25rem !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row > * {
|
||||||
|
padding-left: 0.25rem !important;
|
||||||
|
padding-right: 0.25rem !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* iPhone em landscape (horizontal) */
|
/* iPhone em landscape (horizontal) */
|
||||||
@media (max-height: 430px) and (orientation: landscape) {
|
@media (max-height: 430px) and (orientation: landscape) {
|
||||||
|
/* Sidebar ainda mais compacta em landscape */
|
||||||
|
.app-sidebar {
|
||||||
|
width: 50px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.app-main {
|
||||||
|
margin-left: 50px !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* Reduz altura de elementos */
|
/* Reduz altura de elementos */
|
||||||
.card-body {
|
.card-body {
|
||||||
padding: 0.75rem;
|
padding: 0.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
max-height: 90vh;
|
max-height: 90vh !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-body {
|
.modal-body {
|
||||||
max-height: 60vh;
|
max-height: 60vh !important;
|
||||||
overflow-y: auto;
|
overflow-y: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas {
|
canvas {
|
||||||
max-height: 180px !important;
|
max-height: 180px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Header mais compacto */
|
||||||
|
.app-header {
|
||||||
|
padding: 0.5rem 1rem !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Previne problemas de input no iOS */
|
/* Previne problemas de input no iOS */
|
||||||
@ -2563,68 +2696,90 @@ input[type="tel"],
|
|||||||
input[type="date"],
|
input[type="date"],
|
||||||
select,
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none !important;
|
||||||
-moz-appearance: none;
|
-moz-appearance: none !important;
|
||||||
appearance: none;
|
appearance: none !important;
|
||||||
border-radius: 0.375rem; /* iOS reseta border-radius */
|
border-radius: 0.375rem !important; /* iOS reseta border-radius */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fix para dropdowns em iOS */
|
/* Fix para dropdowns em iOS */
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
max-height: calc(100vh - 100px);
|
max-height: calc(100vh - 100px) !important;
|
||||||
overflow-y: auto;
|
overflow-y: auto !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Melhora scroll em listas/tabelas */
|
/* Melhora scroll em listas/tabelas */
|
||||||
.table-responsive,
|
.table-responsive,
|
||||||
.overflow-auto {
|
.overflow-auto {
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Previne seleção acidental de texto ao tocar */
|
/* Previne seleção acidental de texto ao tocar */
|
||||||
.btn,
|
.btn,
|
||||||
.card-header,
|
.card-header,
|
||||||
.modal-header,
|
.modal-header,
|
||||||
.alert {
|
.alert,
|
||||||
-webkit-user-select: none;
|
.sidebar-link,
|
||||||
-moz-user-select: none;
|
.sidebar-group-toggle {
|
||||||
user-select: none;
|
-webkit-user-select: none !important;
|
||||||
|
-moz-user-select: none !important;
|
||||||
|
user-select: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Melhora tap highlight no iOS */
|
/* Melhora tap highlight no iOS */
|
||||||
button,
|
button,
|
||||||
a,
|
a,
|
||||||
.btn,
|
.btn,
|
||||||
.clickable {
|
.clickable,
|
||||||
-webkit-tap-highlight-color: rgba(59, 130, 246, 0.2);
|
.sidebar-link,
|
||||||
|
.sidebar-group-toggle {
|
||||||
|
-webkit-tap-highlight-color: rgba(59, 130, 246, 0.2) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Safe area para notch/Dynamic Island */
|
/* Safe area para notch/Dynamic Island */
|
||||||
@supports (padding: max(0px)) {
|
@supports (padding: max(0px)) {
|
||||||
body {
|
body {
|
||||||
padding-top: max(env(safe-area-inset-top), 0px);
|
padding-top: max(env(safe-area-inset-top), 0px) !important;
|
||||||
padding-bottom: max(env(safe-area-inset-bottom), 0px);
|
padding-bottom: max(env(safe-area-inset-bottom), 0px) !important;
|
||||||
padding-left: max(env(safe-area-inset-left), 0px);
|
padding-left: max(env(safe-area-inset-left), 0px) !important;
|
||||||
padding-right: max(env(safe-area-inset-right), 0px);
|
padding-right: max(env(safe-area-inset-right), 0px) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ajusta navbar fixa com safe area */
|
/* Ajusta sidebar fixa com safe area */
|
||||||
.navbar {
|
.app-sidebar {
|
||||||
padding-top: calc(0.5rem + env(safe-area-inset-top));
|
padding-top: env(safe-area-inset-top) !important;
|
||||||
|
padding-bottom: env(safe-area-inset-bottom) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ajusta content com safe area */
|
||||||
|
.app-main {
|
||||||
|
padding-bottom: env(safe-area-inset-bottom) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ajusta modais com safe area */
|
/* Ajusta modais com safe area */
|
||||||
.modal-dialog {
|
.modal-dialog {
|
||||||
margin-top: calc(1.75rem + env(safe-area-inset-top));
|
margin-top: calc(1rem + env(safe-area-inset-top)) !important;
|
||||||
margin-bottom: calc(1.75rem + env(safe-area-inset-bottom));
|
margin-bottom: calc(1rem + env(safe-area-inset-bottom)) !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* PWA: Remove bounce scroll quando instalado */
|
/* PWA: Remove bounce scroll quando instalado */
|
||||||
@media (display-mode: standalone) {
|
@media (display-mode: standalone) {
|
||||||
|
html,
|
||||||
body {
|
body {
|
||||||
overscroll-behavior: none;
|
overscroll-behavior: none !important;
|
||||||
|
-webkit-overflow-scrolling: touch !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Garante que sidebar não cause overflow */
|
||||||
|
.app-sidebar {
|
||||||
|
position: fixed !important;
|
||||||
|
top: 0 !important;
|
||||||
|
left: 0 !important;
|
||||||
|
height: 100vh !important;
|
||||||
|
overflow-y: auto !important;
|
||||||
|
-webkit-overflow-scrolling: touch !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user