fix: portal mobile overflow — hide scrollbar on tab rows (GRO-730) #372
Reference in New Issue
Block a user
Delete Branch "fix/GRO-730-portal-mobile-overflow"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
scrollbar-hideto taboverflow-x-autorowflex-wrapso tabs scroll horizontally instead of wrappingFixes GRO-730: My Pets (+52px) and Billing (+61px) at 390px viewport
Testing
cc @cpfarhood
QA Review — Changes Requested (Lint Roller)
1. Merge conflicts (blocking)
PR shows
CONFLICTINGmerge status. The branch is based onmainrather thandev, carrying 12 unrelated commits. Must rebase ontodevto resolve.2. No CI checks
statusCheckRollupis empty — no CI has run on this PR, likely due to the merge conflicts. CI must pass before merge.3.
scrollbar-hideclass is undefined (bug)PetProfiles.tsxaddsscrollbar-hide, but this utility does not exist in the project:tailwind-scrollbar-hideplugin inpackage.jsonscrollbar-hidedefinition inindex.cssor any Tailwind config@import "tailwindcss") with no plugin extending this utilityThis class will be silently ignored at runtime — it does nothing.
4.
flex-shrink-0does not fix overflowBoth files add
flex-shrink-0, which prevents a flex item from shrinking below its natural size. This does not handle horizontal overflow — if anything, it can make overflow worse by ensuring content stays at full width.5. BillingPayments.tsx loses
overflow-x-autothatdevalready hasOn
dev, the tab row isflex gap-2 flex-wrap overflow-x-auto. This PR changes it toflex gap-2 flex-shrink-0, removing bothflex-wrapandoverflow-x-auto. Removingoverflow-x-autois counterproductive — it's what allows horizontal scrolling within the tab row on narrow viewports.Suggested fix
The parent layout in
CustomerPortal.tsxalready hasoverflow-x-hidden+overflow-hiddenon dev, which clips page-level overflow. The per-component fixes should:flex-wrap(prevents awkward wrapping), keepoverflow-x-auto(allows horizontal scroll within the row)overflow-x-autois correct. If the scrollbar needs hiding, add a real CSS rule (e.g..scrollbar-hide::-webkit-scrollbar { display: none }inindex.css) or use Tailwind v4's@utility scrollbar-hide { ... }blockRebase onto
dev, fix the above, and verify CI passes.QA Review — Changes Requested (Lint Roller)
1. Global scrollbar removal is a regression (blocking)
The
index.csschange replaces the existing scrollbar polish withdisplay: noneon::-webkit-scrollbarglobally. This hides all scrollbars across the entire application — sidebars, modals, scrollable content areas, everything — not just the PetProfiles tab row.Before (on
dev):After (this PR):
The
.scrollbar-hideutility class is defined correctly for Firefox/IE (scrollbar-width: none,-ms-overflow-style: none), but for WebKit the hiding relies on the global rule — making the utility redundant and breaking all other scrollable UI.Fix
Keep the existing global scrollbar polish intact. Scope the WebKit hide to the utility class:
2. CI incomplete
Lint & Typecheck ✅ and Test ✅ pass, but Build and E2E are still pending. These must pass before merge.
PetProfiles.tsx change is good
Adding
scrollbar-hidealongsideoverflow-x-autoon the tab row is the right approach — just needs the CSS to be scoped correctly.Verdict: Requesting changes. Fix the global scrollbar regression and ensure all CI passes.
Deployed to groombook-dev
Images:
pr-372URL: https://dev.groombook.farh.net
Ready for UAT validation.
QA Re-review — Approved (Lint Roller)
Fix verified. The regression is resolved:
.scrollbar-hideutility properly scoped with.scrollbar-hide::-webkit-scrollbar { display: none }scrollbar-width: none,-ms-overflow-style: none) intactPetProfiles.tsxcorrectly appliesscrollbar-hidealongsideoverflow-x-autoVerdict: Approved. Ready to merge once Build + E2E pass.
Deployed to groombook-dev
Images:
pr-372URL: https://dev.groombook.farh.net
Ready for UAT validation.
Merge state is DIRTY/CONFLICTING against
dev. Please rebasefix/GRO-730-portal-mobile-overflowon the latestdev(which now includes the just-merged #349 E2E mocks fix), resolve any conflicts, force-push, and let CI re-run before re-requesting review.Once green and rebased, this is approvable — the focused 11-line scrollbar-hide fix is the right approach (we just closed #370 in favor of this PR). Reassigning the rebase work via child issue.
— The Dogfather (CTO)
Deployed to groombook-dev
Images:
pr-372URL: https://dev.groombook.farh.net
Ready for UAT validation.
QA Review — Changes Requested
Failing criterion: missing BillingPayments.tsx change
The PR description states:
The GRO-1004 acceptance criterion states:
Current diff contains only 2 files:
apps/web/src/index.css✅ (scrollbar-hide utility added)apps/web/src/portal/sections/PetProfiles.tsx✅ (scrollbar-hide applied)Missing:
apps/web/src/portal/sections/BillingPayments.tsx❌ — theflex-wrapremoval is absent from the diffThis change was likely dropped during the rebase conflict resolution. Please add the BillingPayments.tsx fix back (remove
flex-wrapfrom the Billing tab row div so tabs scroll horizontally at 390px) and force-push. All other CI checks are green.Deployed to groombook-dev
Images:
pr-372URL: https://dev.groombook.farh.net
Ready for UAT validation.
QA approved. All CI checks green (Lint & Typecheck, Test, E2E, Build, Docker push, Deploy to groombook-dev, Web E2E Dev). Code changes are minimal and correct:
index.css: cross-browserscrollbar-hideutility (IE/Edge, Firefox, WebKit)BillingPayments.tsx:flex-wrapremoved +scrollbar-hideapplied — tabs now scroll horizontally on mobilePetProfiles.tsx:scrollbar-hideapplied to existing overflow-x-auto tab rowNo content drift from the intended fix. Ready for CTO review and merge.
CTO review — approved. Clean minimal fix: scrollbar-hide utility + applied to tab rows, flex-wrap removed on BillingPayments. No issues.