Skip to content

ui: consolidate generated form actions into a sticky header action bar (#7434) - #7436

Open
NicoleNG18 wants to merge 3 commits into
eclipse-dirigible:masterfrom
NicoleNG18:issue-7434-sticky-form-action-bar
Open

NicoleNG18 wants to merge 3 commits into
eclipse-dirigible:masterfrom
NicoleNG18:issue-7434-sticky-form-action-bar

Conversation

@NicoleNG18

Copy link
Copy Markdown
Contributor

Cause

Generated entity forms (template-application-ui-harmonia-java document / manage / form views, on the power / personal / partner surfaces) rendered every action in an inline footer toolbar - the essential controls (Create/Save, Cancel/Close), the BPM task action and all discretionary actions (Print, Duplicate, custom/transition actions like Record Reminder, Save as Template, Void) side by side. The row was crowded, the primary action had no prominence, it wrapped on narrow widths, and - being a footer - it scrolled out of view on a long form, so on a tall document Save/Approve were only reachable at the very bottom.

Change

The action toolbar moves into a sticky header action bar (sticky top-0, own background, bottom border, above the form body); the inline footer is removed. Left -> right:

Back to list … title + status … BPM task action · "⋯" overflow menu · Cancel/Close · Save/Create

  • Back to list - far left (navigation away).
  • BPM task action - standalone button, when the record currently has an active task.
  • "⋯" overflow menu - a Harmonia Menu in dropdown mode (x-h-menu + x-h-menu-trigger.dropdown, ellipsis icon) collapsing every discretionary action (Print, Duplicate, all custom/transition actions). The trigger is hidden until the record is saved, so an entity with no discretionary action shows no "⋯".
  • Cancel/Close/Discard then Save/Create - dismiss + primary submit, anchored right. Mode-adaptive: preview's submit slot becomes Edit.

Every control keeps its existing state gating (preview-vs-edit, isForbidden(), fromStatus, mutable, dirty-state), so nothing new is offered or refused. The layout is generic - no action is enumerated by name.

Applied to all six form-bearing views: perspective/document/document-view, perspective/manage/form-view and the my/ and partner/ document + form siblings. The FK "Add" iframe dialog (?dialog=1) hides the header bar and supplies its own chrome, so form-view keeps a slim dialog-only footer (Cancel + Save).

Verification

  • IntentEmissionCoverageIT, HarmoniaContractIT and ModelGenerationIT green - the templates render (twice), pass the Harmonia directive/utility-class contract, and the personal-surface button assertions (save() / deleteOpen / goBack() presence-by-surface) still hold.
  • mvn -T 1C formatter:validate green.
  • Not verified: no live browser screenshot of the sticky positioning on a running instance.

Fixes #7434

🤖 Generated with Claude Code

NicoleNG18 and others added 3 commits September 17, 2026 16:57
eclipse-dirigible#7434)

Generated entity forms rendered every action in an inline footer toolbar - the
essential controls (Create/Save, Cancel/Close), the BPM task action and all
discretionary actions (Print, Duplicate, custom/transition actions) side by
side. The row was crowded, the primary action had no prominence, and because it
was a footer it scrolled out of view on a long form, so Save/Approve were only
reachable at the very bottom.

The action toolbar now lives in a sticky header bar (sticky top-0, own
background, bottom border, above the form body), left -> right: Back to list,
title + status, then the BPM task action (standalone), a discretionary overflow
menu ("..."), Cancel/Close and Save/Create. The overflow is a Harmonia Menu in
dropdown mode (x-h-menu + x-h-menu-trigger.dropdown, ellipsis icon) collapsing
Print, Duplicate and every custom/transition action; its trigger is hidden until
the record is saved, so an entity with no discretionary action shows no "...".
Every control keeps its existing state gating (preview-vs-edit, isForbidden(),
fromStatus, mutable, dirty-state), so nothing new is offered or refused.

Applied to all six form-bearing views: perspective/document/document-view,
perspective/manage/form-view and the my/ and partner/ document + form siblings.
The FK "Add" iframe dialog (?dialog=1) hides the header bar and supplies its own
chrome, so form-view keeps a slim dialog-only footer (Cancel + Save).

Verified: IntentEmissionCoverageIT, HarmoniaContractIT and ModelGenerationIT
green (the templates render, twice, and pass the Harmonia directive/class
contract and the personal-surface button assertions); formatter:validate green.
Not verified: no live browser screenshot of the sticky positioning.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…actions (eclipse-dirigible#7434)

Review feedback on the first cut of the sticky bar:

- It rendered with data-variant="transparent", so the scrolling form showed
  through it and it read as flaky/missing. Harmonia's sticky variant is `clear`
  (paints the page background) - the toolbar reference calls it out for exactly
  this "sticky toolbar over a scrolling container" case. Switched all six bars to
  data-variant="clear" and dropped the hand-rolled bg-background.

- The page root was `vbox size-full` (h-full), which caps the sticky element's
  containing block at one viewport, so the bar scrolled away past the first
  screen. Changed the root to `vbox w-full` so it grows with its content and the
  bar holds across the whole scroll (#app is the scroll container).

- Reordered the cluster to Cancel -> Save -> Back to list -> overflow menu, with
  the BPM task action leading and the "..." menu now rightmost. Back to list
  moves from the far left into the right-hand cluster.

Applied to all six form-bearing views (power document + manage form, and the my/
partner document + form siblings). Verified live: sales-invoices regenerated
through these templates and published; the served SalesInvoice-document.html
carries data-variant="clear", sticky top-0 z-10, the w-full root and the new
button order.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…action bar (eclipse-dirigible#7434)

Review feedback: the workflow task button (Approve / Issue / ...) competed with
the form's Save/Cancel when it sat in the action bar. It advances the document's
lifecycle - it is not a form control - so it now lives as its own card at the top
of the right-hand sidebar, styled like the Details card:

- x-h-card with the "Your next step" title, the process name (Sales Invoice
  Approval), and the task button(s) - one per actionable task.
- Rendered whenever the record has an actionable task (getTasks(form).length),
  in BOTH edit and preview; otherwise the sidebar's Details card is first, so a
  record with no pending step is unchanged.
- The sidebar wrapper condition gains `|| hasProcess` so a process-bearing
  document with no read-only fields still renders the column to host the card.

The action bar keeps only Cancel / Save / Back to list / overflow. Applied to
both power views (document + manage form); the my/partner views carry no BPM and
are untouched. Verified live: sales-invoices regenerated and published; the
served SalesInvoice-document.html renders the workflow card above Details and no
longer carries the task button in the toolbar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Generated entity forms: consolidate all actions into a single sticky header action bar

1 participant