fix(plugin-detail): collapse duplicate record-header overflow menus into one#1247
Merged
xuyushun441-sys merged 1 commit intomainfrom Apr 19, 2026
Merged
Conversation
…ar menu Agent-Logs-Url: https://github.com/objectstack-ai/objectui/sessions/ee78e2ea-277a-48bc-bba5-386438d3b455 Co-authored-by: xuyushun441-sys <255036401+xuyushun441-sys@users.noreply.github.com>
Copilot created this pull request from a session on behalf of
xuyushun441-sys
April 19, 2026 10:33
View session
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Record detail header rendered two
⋯buttons whenever an object defined morerecord_headeractions thanaction:bar'smaxVisible(e.g.todo_taskwith 4 header actions). Caused by two independent overflow owners:action:baremits a⋯for business-action overflow pastmaxVisible(3).DetailViewhardcoded a separate<DropdownMenu>for Duplicate / Export / View History / Delete (plus mobile Share / Edit / Inline Edit fallbacks).Neither knew about the other.
Changes
@object-ui/components·action:bar— addssystemActions?: ActionSchema[]. Entries are always routed into the overflow menu (never inline) and share a single⋯trigger with any business-overflow, separator auto-inserted between groups. Schema-only keys (actions,systemActions,location,maxVisible, …) are now stripped before spreading onto the DOM to silence React "unknown attribute" warnings.@object-ui/components·action:menu— short-circuits toaction.onClickwhen present, bypassingActionEngine. Intended for chrome-level callbacks that depend on React state / DOM APIs (clipboard,navigator.share, inline-edit toggle) and are not part of the server-driven action protocol.@object-ui/types·ActionSchema— optionalonClick?: () => void | Promise<void>UI-local escape hatch (documented as non-serializable).@object-ui/plugin-detail·DetailView— removed the hardcoded<DropdownMenu>; Duplicate / Export / View History / Delete and mobile-only Share / Edit / Inline Edit are built asActionSchema[]and merged into the record-headeraction:barvia the newsystemActionsfield. If callers already supply anaction:barforrecord_header, system actions are injected into it; otherwise a bar carrying only system actions is appended.Invariant
A record-header
action:barrenders at most one overflow menu, regardless of how many business actions the object metadata contributes. System actions never appear inline.Illustration
Tests
Four new
action:bartests assert the merged-overflow contract: single⋯even when business overflow +systemActionscoexist, system actions never inline, overflow rendered when onlysystemActionsare present.