Skip to content

templates: the personal and partner line dialogs name the refused field too (#7152) - #7209

Merged
delchev merged 1 commit into
masterfrom
issue-7152-named-property-item-dialogs
Sep 9, 2026
Merged

templates: the personal and partner line dialogs name the refused field too (#7152)#7209
delchev merged 1 commit into
masterfrom
issue-7152-named-property-item-dialogs

Conversation

@delchev

@delchev delchev commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

#7062 taught the power document dialog to read the property a rejected save NAMES ("The 'TaxRate' property is required"), mark that field aria-invalid and repeat the reason with the field's own label. The personal and partner document pages got only half of it: the required * marker landed, but their save path stayed this.itemsError = (e && e.message) || '...' — the raw developer-facing message, printed into the items-pane banner that sits BEHIND the open dialog, with no field marked at all. The two surfaces where the owner and the external partner actually enter lines were the two that named nothing.

What changed

  • my-document-page.js.template / partner-document-page.js.template: new applyItemError(e, fallback) — the same namedProperty + messageWithLabels mapping the power dialog runs. The named property goes to itemFieldError, the message is rewritten with the field's display label, and a message naming no editable column falls back to the catalog line via messageFor.
  • my-document-view.html.template / partner-document-view.html.template: :data-invalid on the field and :aria-invalid on every control (select, number, checkbox, date, month, text) — what Harmonia colours the label and border from — plus the error banner moved INSIDE the dialog, where it is actually readable.
  • The dialog's error state is cleared whenever it opens. The personal Fill Month path answers in the dialog too: "Pick a month to fill." was being written to the same hidden banner.

Verification

IntentEmissionCoverageIT gains three assertions on the emitted personal document surface (the partner document is the mechanical mirror; the fixture's PartnerTicket carries no items child, so no partner document is emitted to assert on).

The IT run is green on this branch except for one failure that also reproduces on the unmodified base commit (de5827b0a8) and is untouched here: line 1999, "a master being deleted must suspend the per-line totals write-back" (#7143) — the emitted EntryRepository carries no recalculate at all, i.e. annotateDocumentModels did not set $documentMaster for Entry in that run. Master's own CI is green on all four IT shards, so this looks local to my environment rather than an upstream break; either way it is upstream of the three new assertions and unrelated to this change. With that one assertion skipped locally, the full IT including the three new assertions passes (whole reactor freshly installed from this worktree).

Fixes #7152

…ld too

#7062 taught the power document dialog to read the property a rejected save
NAMES ("The 'TaxRate' property is required"), mark that field aria-invalid and
repeat the reason with the field's own label. The personal and partner document
pages got only half of it: the required `*` marker landed, but their save path
stayed `this.itemsError = (e && e.message) || '...'` - the raw developer-facing
message, printed into the items-pane banner that sits BEHIND the open dialog,
with no field marked at all. The two surfaces where the owner and the external
partner actually enter lines were the two that named nothing.

Both dialogs now run the same mapping through applyItemError(): the named
property goes to itemFieldError (bound to :aria-invalid on every control and
:data-invalid on the field, which is what Harmonia colours the label and border
from), the message goes through messageWithLabels() so the user reads the field
label rather than the column name, and a message naming no editable column
falls back to the catalog line. The banner moved inside the dialog, where the
error is readable, and is cleared whenever the dialog opens. The personal Fill
Month path answers there too - "Pick a month to fill." was being written to the
same hidden banner.

Fixes #7152

Co-Authored-By: Claude Opus 5 <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.

templates: the personal/partner item dialogs print the raw errorMessage and mark no field

1 participant