templates: the personal and partner line dialogs name the refused field too (#7152) - #7209
Merged
Merged
Conversation
…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>
This was referenced Sep 9, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#7062 taught the power document dialog to read the property a rejected save NAMES ("The 'TaxRate' property is required"), mark that field
aria-invalidand 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 stayedthis.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: newapplyItemError(e, fallback)— the samenamedProperty+messageWithLabelsmapping the power dialog runs. The named property goes toitemFieldError, the message is rewritten with the field's display label, and a message naming no editable column falls back to the catalog line viamessageFor.my-document-view.html.template/partner-document-view.html.template::data-invalidon the field and:aria-invalidon 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.Verification
IntentEmissionCoverageITgains three assertions on the emitted personal document surface (the partner document is the mechanical mirror; the fixture'sPartnerTicketcarries 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 emittedEntryRepositorycarries norecalculateat all, i.e.annotateDocumentModelsdid not set$documentMasterforEntryin 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