Upgrade catenary to 0.6.0; typeable dates, Tab-select boundaries, Run Query reason, audible toasts (#390)#394
Merged
Merged
Conversation
Bumps catenary to pick up the rebuilt datepicker (typeable input, calendar dialog) and taginput (ARIA 1.2 combobox, Tab selects the highlighted option), removes the readonly props that blocked manual date entry in the query panel and Feed Archive modal, explains why the run buttons are disabled (visible help text wired to both buttons via aria-describedby, announced via a polite live region), and makes toast notifications audible to screen readers (persistent live-region container instead of one recreated per toast burst). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deploying calact-network-analysis-tool with
|
| Latest commit: |
58c8eca
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://a722e62c.calact-network-analysis-tool.pages.dev |
| Branch Preview URL: | https://catenary-0-5-a11y.calact-network-analysis-tool.pages.dev |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR upgrades @interline-io/catenary to 0.5.0 and updates CALACT UI behavior to resolve the remaining accessibility blockers from #390 (typeable dates, boundary picker Tab-selection support, clearer “Run Query” disabled reasons, and screen-reader-announced toasts).
Changes:
- Bump
@interline-io/catenaryfrom 0.4.0 → 0.5.0 (and lockfile updates). - Enable manual date entry by removing
readonlyfrom CALACT datepicker usages. - Improve accessibility feedback: persistent toast live region + “Run Query blocked reason” text wired via
aria-describedby.
Reviewed changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pnpm-lock.yaml | Updates lockfile entries for catenary 0.5.0. |
| package.json | Bumps @interline-io/catenary dependency to 0.5.0. |
| app/composables/useToastNotification.ts | Makes the toast container a persistent polite live region; marks danger toasts as alerts. |
| app/components/cal/query.vue | Adds an announced, always-rendered “blocked reason” and wires it to both Run buttons via aria-describedby. |
| app/components/cal/feed-version-picker-modal.vue | Removes readonly on datepicker to allow typing. |
| app/components/cal/end-date-field.vue | Removes readonly on datepicker (and contains a now-stale comment referencing catenary 0.4.0). |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)
app/components/cal/end-date-field.vue:19
- This inline comment is now outdated after upgrading
@interline-io/catenaryto 0.5.0; it still references “catenary 0.4.0”. Keeping version-specific wording here will drift again on the next upgrade—better to remove the version mention and describe the prop/attribute issue generically.
:variant="invalid ? 'danger' : undefined"
/>
<!-- camelCase keys in a v-bind object: matches the ariaLabel/title props
(catenary 0.4.0) and avoids vue/attribute-hyphenation rewriting a
camelCase attribute back to kebab (which vue-tsc won't map to the prop). -->
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Screen reader users can now jump directly to the query parameters via landmark navigation. All buttons inside are type=button and the datepicker/taginput consume their own Enter keys, so there is no implicit submission; submit.prevent guards the residual cases. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The href-less anchors were not focusable (keyboard-unreachable) and lived inside the field label element, so their text polluted the taginput's accessible name and clicks also triggered label activation. They are now ghost cat-buttons in an actions row above the picker. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Asserts the reason appears (and is referenced via aria-describedby) when administrative-boundary mode has no selection, and clears when the blocker resolves. Client-side state only; no query run needed. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Catenary 0.6.0's addon slot lets the button join the picker's Bulma addon group instead of floating beside it in a flex row; drops the cal-end-date-field-range wrapper and its styles. Covers both the query panel and the Feed Archive modal via the shared component. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Addresses the accessibility barriers in #390.
Summary
Upgrades @interline-io/catenary from 0.4.0 to 0.6.0 and completes the CALACT side of the accessibility barriers reported in #390. The catenary release carries the rebuilt datepicker (typeable input plus a calendar dialog button, replacing the screen-reader-inaccessible popup) and the rebuilt administrative boundary picker (ARIA 1.2 combobox where Tab selects the highlighted option), along with announced validation messages and live-region support for notifications. This PR removes the CALACT-side blockers that remained: the readonly props that made manual date entry impossible, the unexplained disabled state of the Run Query buttons, and toast notifications that screen readers never announced.
User-facing changes
Date entry (#390: "not possible to type in a date manually")
Administrative boundary selection (#390: "allow user to select an option using Tab or Enter key")
Run Query buttons (#390: "error message for why the Run Query button can't be pressed")
Toast notifications
Boundary actions
Implementation details
Catenary 0.6.0 upgrade
readonlyfrom the three cat-datepicker usages (query.vue, end-date-field.vue, feed-version-picker-modal.vue); it existed to force calendar-only entry, which is exactly what Urgent Accessibility Testing Barriers #390 reported as a barrier.Run button reason
queryBlockedReasoncomputed mirrors thevalidQueryParamschecks in priority order and renders into an always-present<p aria-live="polite">below the buttons; both buttons reference it via a v-bind'd record (strictTemplates rejects undeclared attributes written directly on components).Toast live region
Boundary actions and query form
Tests
User test plan
Generated with Claude Code