Add confirm-before-execute, Chat query states, and accessible FilterPanel - #348
Merged
Merged
Conversation
…lection guides Adds a DatePickerInput reference page (props, Date | null contract, locale and messages.datePicker, React Aria keyboard and screen-reader behavior, validation states, stable parts), registers it in the Common toc, and links it from CalendarField. Rewrites the Common and Dialogs landing pages as 'which component do I use' guides. Docs only; no API changes. The Tooltip reference page is deferred. Prose was AI-drafted; review it as prose as well as for accuracy. Refs #260
Resolve Arc query flags in a CSS-free internal directory so Chat no longer inherits the DataTables stylesheet through its runtime closure. Keep area-specific status enums and guard the Chat import boundary.
…claims The Tooltip row now links to the Tooltips section, BusyIndicatorDialog is described as taking only a title and message, and the Tooltip guidance names Dialog for interactive content instead of a Popover that Components does not export.
Release note: getByRole('complementary') no longer finds the panel; use getByRole('dialog').
Arc's setCommandValues writes the onBeforeExecute result onto the command instance that execute() sends. Skipping it after unmount made an unguarded command execute with its pre-transform values. Always apply the values, as main does; the React state update it also performs is a no-op after unmount.
…ture/release-4160
structuredClone throws for values it cannot copy, such as a function in a command property. Taking the approval snapshot outside the guard's error handling let that escape as an unhandled rejection. The snapshot is now taken inside it, so the failure reaches onException, the guard is not asked, and the command does not execute. The stepper docs also now say fields stay disabled until the guarded submission settles, not only while the guard is pending.
4.16.0 adds one story module (FilterPanel accessibility) and five stories: Chat query states, CommandDialog confirmation, rich Tooltip content, PivotViewer labels, and FilterPanel keyboard focus. The Tooltip and CommandDialog stories render slotted components, so the full renderer matrix grows by two. Counts measured from the built indexes: 75 modules, 336 stories and 75 autodocs pages per renderer, and 181 matrix stories.
The story used a fixed 600px wrapper. In CI's viewport the PivotViewer viewport overflowed and became scrollable, and axe flagged it (scrollable-region-focusable). The other PivotViewer stories fill the preview with a flex wrapper, which avoids the overflow. The underlying gap, that the viewport is not keyboard-focusable when it scrolls, is tracked separately.
Arc serializes declared command properties with Fundamentals, including derived type identifiers. Comparing cloned enumerable fields can approve a different payload after the guard starts. Compare serialized property snapshots instead and report serialization failures without executing.
The stories wait for the 150 ms open and close transitions to finish before axe runs. Under the parallel light/dark browser matrix, the default 1 s waitFor timeout sometimes expired mid-fade (opacity 0.19), failing one run in three locally. The waits keep the same conditions with a 5 s ceiling; four consecutive full runs passed.
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.
Command dialogs can now ask for confirmation before they execute, Chat shows loading and failure states, and FilterPanel works from the keyboard and with screen readers.
Added
confirmBeforeExecuteonCommandDialog,StepperCommandDialog, andCommandStepperasks a question after validation andonBeforeExecute, and before the command runs. Onlytrueexecutes. Any other answer leaves the dialog or stepper open without running the command. If the command values change while the question is open, the command is not executed and you confirm again. Stepper fields are disabled until the confirmed submission settles. Without the prop, command execution is unchanged. TheConfirmBeforeExecutetype is exported. (CommandDialog cannot confirm before executing and cancel on no #317)ChatSidebaracceptstopicsStatusandmessagesStatus(the newChatStatusenum), andChatSidebarForObservableQueriessets them from its queries. The topic list and conversation show loading, failure, and unauthorized text from newlabelskeys, and never show server exception text. A failure keeps what is already shown and adds an alert above it. Unauthorized replaces the content and disables the composer and the New topic button. (Show query loading, failure, and authorization states in bound tables and chat #327)PivotViewerlabelsmakes the toolbar text, the item count, and the filter panel's name and search placeholder localizable. The defaults are unchanged.loadingLabelstill takes precedence overlabels.loading. (Honor PivotViewer dimension grouping contracts and localize toolbar copy #334)PivotViewerlabels.searchGroupnames the search box of each option group in the filter panel. It receives the group's label and defaults toSearch <group>, so each group search now has its own accessible name. (Honor PivotViewer dimension grouping contracts and localize toolbar copy #334)aria-labelandsearchAriaLabel,FilterDefinitionsearchAriaLabelandautoFocus, andCheckboxListFiltersearchAriaLabelandautoFocusSearch. (Make toolbar and filter controls keyboard- and screen-reader-accessible #328, Add autoFocus support to FilterPanel search input #244)DatePickerInputreference page, and Common and Dialogs landing pages that help you choose a control. (Document Tooltip and DatePickerInput and improve Common and Dialogs landings #260)Changed
Tooltipcontentaccepts any React node, and0now shows.undefined,null, booleans, and an empty string still disable the tooltip. Keep tooltip content non-interactive. Renderer adapters that implementcommon.tooltipreceive nodes and must render them as they are; the Conformance profile now checks this. (Tooltip content is typed string but renders any ReactNode #230)divwithrole="dialog"instead of an<aside>, so it is no longer a complementary landmark:getByRole('complementary')no longer finds it, and CSS or tests that target theasideelement must use.pv-filter-dropdownorgetByRole('dialog', { name })instead. This also applies to the filter panel insidePivotViewer. (Make toolbar and filter controls keyboard- and screen-reader-accessible #328)ptattributes with the profile's pass-through markers instead of replacing them.Fixed
DatePickerInputcan no longer change its value through the Today and Clear actions, and a read-only picker no longer opens its calendar withAlt+ArrowDown.DataTableForQuery,DataTableForObservableQueryandDataPageshow their loading state, not the empty state, while an Arc query result says it is not ready yet (isReady: false). Results that do not report readiness behave as before.Closes #317, closes #327, closes #230, closes #244, closes #260, closes #334. Refs #328 (toolbar arrow-key navigation remains) and #349.