MAPPS-346: collapse global search to an icon + top bar/sidebar polish #405

Merged
vas2000-work merged 1 commit from feat/MAPPS-346-collapsible-search into main 2026-07-02 00:36:18 +02:00
Owner

WIP: top bar + sidebar chrome polish. Minimal-functionality, cosmetic-leaning changes to the app shell for a cleaner, more modern look. Please review the interaction before merge.

What changed

  • Global search (GlobalSearch) no longer sits as an always-open bar next to the page title. It now collapses to a magnifier icon in the right-side action cluster, immediately to the left of the theme picker. Clicking the icon expands the text entry leftward (absolutely positioned off the fixed icon, so neither the icon nor the other action chips move). The entry autofocuses and shows the same hint (placeholder) text.
  • Collapse behavior: clicking anywhere outside the entry collapses it back to the icon only when it is empty. If the entry holds user-typed text, an outside click keeps it expanded (the dropdown closes, the query is preserved). Escape is an explicit cancel that always clears and collapses. Selecting a result still navigates to the entity detail page.
  • With the search out of the title row, the page title is now centered across the top bar.
  • The top bar reads as one continuous strip: dropped the vertical divider (border-r) between the brand block and the rest of the bar.
  • Trimmed the dead space above the desktop sidebar nav: the collapse-toggle row and the nav's top padding were stacking into a large empty band under the top bar. The toggle stays exactly where it was; the row and nav top padding are slimmed so the first nav item sits closer to the top.

Implementation notes

  • Extended the shared Input component with two opt-in, backward-compatible props: autofocus: bool (attaches an onmounted set_focus, mirroring the modal focus pattern) and onkeydown: EventHandler<KeyboardEvent> passthrough. Both default off, so existing call sites are unchanged.
  • No server or data-flow changes. The search still calls GET /search?q= exactly as before.

Scope is deliberately limited to the top bar and sidebar per direction; nothing else in the UI was touched.

#MAPPS-346

WIP: top bar + sidebar chrome polish. Minimal-functionality, cosmetic-leaning changes to the app shell for a cleaner, more modern look. Please review the interaction before merge. ## What changed - Global search (`GlobalSearch`) no longer sits as an always-open bar next to the page title. It now collapses to a magnifier icon in the right-side action cluster, immediately to the left of the theme picker. Clicking the icon expands the text entry leftward (absolutely positioned off the fixed icon, so neither the icon nor the other action chips move). The entry autofocuses and shows the same hint (placeholder) text. - Collapse behavior: clicking anywhere outside the entry collapses it back to the icon only when it is empty. If the entry holds user-typed text, an outside click keeps it expanded (the dropdown closes, the query is preserved). `Escape` is an explicit cancel that always clears and collapses. Selecting a result still navigates to the entity detail page. - With the search out of the title row, the page title is now centered across the top bar. - The top bar reads as one continuous strip: dropped the vertical divider (`border-r`) between the brand block and the rest of the bar. - Trimmed the dead space above the desktop sidebar nav: the collapse-toggle row and the nav's top padding were stacking into a large empty band under the top bar. The toggle stays exactly where it was; the row and nav top padding are slimmed so the first nav item sits closer to the top. ## Implementation notes - Extended the shared `Input` component with two opt-in, backward-compatible props: `autofocus: bool` (attaches an `onmounted` `set_focus`, mirroring the modal focus pattern) and `onkeydown: EventHandler<KeyboardEvent>` passthrough. Both default off, so existing call sites are unchanged. - No server or data-flow changes. The search still calls `GET /search?q=` exactly as before. Scope is deliberately limited to the top bar and sidebar per direction; nothing else in the UI was touched. #MAPPS-346
feat(topbar): collapse global search to an expand-on-click icon
All checks were successful
Check / fmt + clippy + tests (pull_request) Successful in 1m34s
Create release / Create release from merged PR (pull_request) Has been skipped
dfb12cbbd9
The global search moved out of the page-title row into the right-side action cluster, immediately left of the theme picker. It renders as a magnifier icon that stays fixed in place; clicking it expands the text entry leftward (absolutely positioned off the icon so neither the icon nor the sibling chips shift). The entry autofocuses and keeps the same placeholder hint. Clicking outside collapses back to the icon only when the entry is empty; a non-empty entry stays open so a typed query is not lost. Escape always clears and collapses. Search still calls GET /search?q= unchanged.

With search gone from the title row, the page title now centers across the top bar, and the vertical divider (border-r) between the brand block and the rest of the bar is dropped so the strip reads as one continuous surface.

Trimmed the dead space above the desktop sidebar nav: the collapse-toggle row and the nav top padding were stacking into a large empty band under the top bar. The toggle stays put; the row and nav top padding are slimmed so the first nav item sits closer to the top.

Extended the shared Input with two opt-in, backward-compatible props: autofocus (onmounted set_focus, mirroring the modal focus pattern) and an onkeydown passthrough. Both default off, so existing call sites are unchanged.

#MAPPS-346

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
vas2000-work changed title from WIP: MAPPS-346 collapse global search to an icon + top bar/sidebar polish to MAPPS-346: collapse global search to an icon + top bar/sidebar polish 2026-07-02 00:32:16 +02:00
vas2000-work deleted branch feat/MAPPS-346-collapsible-search 2026-07-02 00:36:18 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!405
No description provided.