fix(portal): consistent breadcrumb position + history + column height parity

Three coordinated portal-chrome fixes:

1. Drop `breadcrumbs_searchbar=True` from the four list templates
   (quote_requests, jobs, deliveries, certifications). They were
   suppressing Odoo's outer breadcrumb container, so the breadcrumb
   rendered inside portal.portal_searchbar in the right column on
   those pages. With the flag off, the outer container fires on
   every /my/* page (consistent with the dashboard, configurator,
   and detail pages). The portal_searchbar's else-branch now renders
   the page title in a Bootstrap navbar — the title still shows,
   just no longer doubled up as breadcrumb chrome.

2. Breadcrumb history pass in fp_portal_breadcrumbs.xml:
   - fp_jobs / fp_portal_job: rename label from "Parts Portal" to
     "Work Orders" so the breadcrumb matches the sidebar item.
   - fp_purchase_orders / fp_invoices: drop the dead stanzas. Both
     page_names are unreachable since Task 7 turned those routes
     into redirects.
   - fp_account_summary: add the missing entry so the new page has
     a trail.

3. Drop `align-items: start` on .o_fp_portal_shell and add
   min-height: 100% + min-width: 0 on .o_fp_portal_main. The right
   column now stretches to match the sidebar's height on short
   pages, so layouts look uniform. min-width: 0 lets wide table
   children scroll horizontally instead of forcing the grid track
   to grow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-17 14:50:51 -04:00
parent 04862e8a28
commit 76c68e0311
3 changed files with 16 additions and 17 deletions

View File

@@ -10,7 +10,6 @@
display: grid; display: grid;
grid-template-columns: 240px 1fr; grid-template-columns: 240px 1fr;
gap: $fp-space-5; gap: $fp-space-5;
align-items: start;
background: $fp-page-bg; background: $fp-page-bg;
min-height: calc(100vh - 80px); min-height: calc(100vh - 80px);
padding: $fp-space-4; padding: $fp-space-4;
@@ -146,3 +145,14 @@
display: block; display: block;
} }
} }
.o_fp_portal_main {
// Stretches with the grid row so the right column matches the
// sidebar's height on short pages (empty list states, statements
// tab, etc.) — uniform visual rhythm.
min-height: 100%;
// Bootstrap tables can grow wider than the grid track without this;
// min-width: 0 lets the flex/grid child shrink and lets overflow-x
// on inner .table-responsive containers do their job on Safari.
min-width: 0;
}

View File

@@ -62,13 +62,13 @@
<li t-if="page_name == 'fp_jobs'" <li t-if="page_name == 'fp_jobs'"
class="breadcrumb-item active" class="breadcrumb-item active"
aria-current="page"> aria-current="page">
Parts Portal Work Orders
</li> </li>
<!-- Job detail --> <!-- Job detail -->
<li t-if="page_name == 'fp_portal_job'" <li t-if="page_name == 'fp_portal_job'"
class="breadcrumb-item"> class="breadcrumb-item">
<a href="/my/jobs">Parts Portal</a> <a href="/my/jobs">Work Orders</a>
</li> </li>
<li t-if="page_name == 'fp_portal_job'" <li t-if="page_name == 'fp_portal_job'"
class="breadcrumb-item active" class="breadcrumb-item active"
@@ -76,18 +76,11 @@
<span t-out="job.name"/> <span t-out="job.name"/>
</li> </li>
<!-- Purchase Orders --> <!-- Account Summary -->
<li t-if="page_name == 'fp_purchase_orders'" <li t-if="page_name == 'fp_account_summary'"
class="breadcrumb-item active" class="breadcrumb-item active"
aria-current="page"> aria-current="page">
Purchase Orders Account Summary
</li>
<!-- Invoices -->
<li t-if="page_name == 'fp_invoices'"
class="breadcrumb-item active"
aria-current="page">
Invoices
</li> </li>
<!-- Deliveries / Packing Slips --> <!-- Deliveries / Packing Slips -->

View File

@@ -11,7 +11,6 @@
<!-- ================================================================== --> <!-- ================================================================== -->
<template id="portal_my_quote_requests" name="My Quote Requests"> <template id="portal_my_quote_requests" name="My Quote Requests">
<t t-call="portal.portal_layout"> <t t-call="portal.portal_layout">
<t t-set="breadcrumbs_searchbar" t-value="True"/>
<t t-call="portal.portal_searchbar"> <t t-call="portal.portal_searchbar">
<t t-set="title">Quote Requests</t> <t t-set="title">Quote Requests</t>
</t> </t>
@@ -422,7 +421,6 @@
<!-- ================================================================== --> <!-- ================================================================== -->
<template id="portal_my_jobs" name="My Work Orders"> <template id="portal_my_jobs" name="My Work Orders">
<t t-call="portal.portal_layout"> <t t-call="portal.portal_layout">
<t t-set="breadcrumbs_searchbar" t-value="True"/>
<t t-call="portal.portal_searchbar"> <t t-call="portal.portal_searchbar">
<t t-set="title">Work Orders</t> <t t-set="title">Work Orders</t>
</t> </t>
@@ -580,7 +578,6 @@
<!-- ================================================================== --> <!-- ================================================================== -->
<template id="portal_my_deliveries" name="My Deliveries"> <template id="portal_my_deliveries" name="My Deliveries">
<t t-call="portal.portal_layout"> <t t-call="portal.portal_layout">
<t t-set="breadcrumbs_searchbar" t-value="True"/>
<t t-call="portal.portal_searchbar"> <t t-call="portal.portal_searchbar">
<t t-set="title">Packing Slips / Deliveries</t> <t t-set="title">Packing Slips / Deliveries</t>
</t> </t>
@@ -622,7 +619,6 @@
<!-- ================================================================== --> <!-- ================================================================== -->
<template id="portal_my_certifications" name="My Certifications"> <template id="portal_my_certifications" name="My Certifications">
<t t-call="portal.portal_layout"> <t t-call="portal.portal_layout">
<t t-set="breadcrumbs_searchbar" t-value="True"/>
<t t-call="portal.portal_searchbar"> <t t-call="portal.portal_searchbar">
<t t-set="title">Certifications &amp; Quality</t> <t t-set="title">Certifications &amp; Quality</t>
</t> </t>