fix(mobile): address iPhone layout issues across rankings, detail, compare
Build and Push Docker Images / Build Backend (FastAPI) (push) Successful in 14s
Build and Push Docker Images / Build Frontend (Next.js) (push) Successful in 45s
Build and Push Docker Images / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 11s
Build and Push Docker Images / Trigger Portainer Update (push) Successful in 1s

- rankings: hide Type/Action columns on mobile so metric value stays visible;
  ensure filter selects and table wrapper stay within viewport
- school detail: add min-width:0 / max-width:100% containment so internal
  overflow-x wrappers actually clip rather than pushing the page wider;
  explicit line-height on Ofsted grade badges to fix glyph clipping
- compare: sticky first column on the Detailed Comparison table so the Year
  labels remain visible while horizontally scrolling school columns
- search: shorten placeholder to "School name or postcode" so it fits mobile
  input width
- globals: overflow-x:clip safety net on .main wrapper

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Tudor Sitaru
2026-04-07 20:29:15 +01:00
parent ce46db7dbe
commit ed244ef743
7 changed files with 66 additions and 11 deletions
+2
View File
@@ -291,6 +291,8 @@ body {
max-width: 1400px;
margin: 0 auto;
padding: 1.25rem 1.5rem;
min-width: 0;
overflow-x: clip;
}
.view {
@@ -301,12 +301,15 @@
.tableWrapper {
overflow-x: auto;
max-width: 100%;
margin-top: 1rem;
-webkit-overflow-scrolling: touch;
}
.comparisonTable {
width: 100%;
border-collapse: collapse;
border-collapse: separate;
border-spacing: 0;
font-size: 0.9375rem;
}
@@ -320,6 +323,7 @@
font-weight: 600;
color: var(--text-primary, #1a1612);
border-bottom: 2px solid var(--border-color, #e5dfd5);
background: var(--bg-secondary, #f3ede4);
white-space: nowrap;
text-transform: uppercase;
font-size: 0.75rem;
@@ -331,6 +335,24 @@
border-bottom: 1px solid var(--border-color, #e5dfd5);
color: var(--text-secondary, #5c564d);
text-align: left;
background: var(--bg-card, white);
}
/* Sticky first column (Year) so labels remain visible while scrolling */
.comparisonTable th:first-child,
.comparisonTable td:first-child {
position: sticky;
left: 0;
z-index: 1;
box-shadow: 2px 0 4px -2px rgba(26, 22, 18, 0.08);
}
.comparisonTable thead th:first-child {
z-index: 2;
}
.comparisonTable tbody tr:hover td:first-child {
background: var(--bg-secondary, #f3ede4);
}
.comparisonTable tbody tr:last-child td {
+1 -1
View File
@@ -148,7 +148,7 @@ export function FilterBar({ filters, isHero, resultFilters }: FilterBarProps) {
type="search"
value={omniValue}
onChange={(e) => setOmniValue(e.target.value)}
placeholder="Search by school or postcode ..."
placeholder="School name or postcode"
className={styles.omniInput}
/>
<button
+29 -6
View File
@@ -1,5 +1,6 @@
.container {
width: 100%;
min-width: 0;
}
/* Header */
@@ -93,6 +94,8 @@
.filterSelect {
flex: 1;
min-width: 0;
max-width: 100%;
padding: 0.625rem 1rem;
font-size: 0.9375rem;
border: 1px solid var(--border-color, #e5dfd5);
@@ -137,6 +140,8 @@
.tableWrapper {
overflow-x: auto;
max-width: 100%;
-webkit-overflow-scrolling: touch;
}
.rankingsTable {
@@ -345,7 +350,8 @@
.filterGroup {
flex-direction: column;
align-items: stretch;
min-width: 100%;
min-width: 0;
width: 100%;
}
.rankingsSection {
@@ -368,13 +374,30 @@
font-size: 0.875rem;
}
.schoolHeader {
min-width: 180px;
/* Hide less-critical columns on mobile so the metric value stays visible */
.typeHeader,
.typeCell,
.actionHeader,
.actionCell {
display: none;
}
.areaHeader,
.typeHeader {
min-width: 100px;
.schoolHeader {
min-width: 140px;
}
.areaHeader {
min-width: 80px;
}
.valueHeader,
.valueCell {
width: auto;
min-width: 60px;
}
.rankHeader {
width: 40px;
}
}
@@ -1,5 +1,7 @@
.container {
width: 100%;
min-width: 0;
max-width: 100%;
}
/* Header Section */
@@ -200,6 +202,8 @@
margin-bottom: 1rem;
box-shadow: var(--shadow-soft);
scroll-margin-top: 6rem;
min-width: 0;
max-width: 100%;
}
/* Section Title */
@@ -403,7 +407,9 @@
/* History Table */
.tableWrapper {
overflow-x: auto;
max-width: 100%;
margin-top: 0.5rem;
-webkit-overflow-scrolling: touch;
}
.historicalSubtitle {
@@ -463,8 +469,9 @@
.ofstedGrade {
display: inline-block;
padding: 0.3rem 0.75rem;
padding: 0.35rem 0.75rem;
font-size: 1rem;
line-height: 1.4;
font-weight: 700;
border-radius: 6px;
white-space: nowrap;
+1 -1
View File
@@ -91,7 +91,7 @@ export function SchoolSearchModal({ isOpen, onClose }: SchoolSearchModalProps) {
type="text"
value={searchTerm}
onChange={(e) => handleSearchChange(e.target.value)}
placeholder="Search by school or postcode ..."
placeholder="School name or postcode"
className={styles.searchInput}
autoFocus
/>
@@ -450,8 +450,9 @@
.ofstedGrade {
display: inline-block;
padding: 0.3rem 0.75rem;
padding: 0.35rem 0.75rem;
font-size: 1rem;
line-height: 1.4;
font-weight: 700;
border-radius: 6px;
white-space: nowrap;