Repository navigation
fix(plugin-list): every export entry in the list Display popover stays inside the panel - #29252
Merged
Merged
Conversation
…g row of their own Refresh and the export entries shared one non-wrapping group in the popover footer; with three formats it outgrew the fixed-width panel and the last entry spilled past its edge. The entries now take a full-width row that wraps, and Refresh stays on the first row beside Reset. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jRbeD6sscgnYJiqhny
Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QsR2jRbeD6sscgnYJiqhny
Contributor
Author
|
domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y 席位核对 · ACCEPT · 2026-11-02T10:35ZHead-sha:
Generated by Claude Code |
9 tasks done
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.
Requested by Steedos · project thread
Fixes #29175
Clause-②: no
Metadata-protocol: none
维护者速读
ViewSettingsPopover.tsx这一处。ui/packages/plugin-list/src/components/ViewSettingsPopover.tsx的 footer(display-footer下的display-export-group),再看新测试ViewSettingsPopover.exportFooter-29175.test.tsx。What changes
The Display popover's footer no longer puts Refresh and the export entries in one non-wrapping group.
ml-auto) on its first row; the export entries sit in a new full-width row (basis-full, test iddisplay-export-group) below it.flex-wrap, because three "Export as …" entries (about 400 px together) are wider than the panel's 304 px content box atsm:w-80, so on its own the row still could not hold them. With CSV, XLSX and JSON, CSV and XLSX share the first export line and JSON wraps to the next, right-aligned like the old group.onExport(format)), thelist.exportAslabels, the export grant gating (the host still decides whetheronExportandexportFormatsare passed), and every existing test id (display-footer,display-reset-button,refresh-button,display-export-FORMAT). No i18n key, no metadata key, no gate.Tests
ui/packages/plugin-list/src/__tests__/ViewSettingsPopover.exportFooter-29175.test.tsx(3 cases): renders the popover with CSV, XLSX and JSON and asserts every entry is reachable by role ("Export as CSV/XLSX/JSON"), is thedisplay-export-FORMATelement, sits insidedisplay-export-group, which carriesflex flex-wrap basis-full, and callsonExportwith its format; Refresh and Reset stay on the footer's first row, outside the export row, and the export row holds the export entries only; no export row is drawn when no format is offered.ViewSettingsPopover.tsx(ea150b7) put back on disk, the first two cases go red (2 failed, 1 passed); restored bygit checkout HEAD, hash-matched to HEAD's blob.packages/plugin-list/suite: see Verification.Acceptance notes
w-[calc(100vw-2rem)], 343 px. Measured in a real browser, the footer fits (scrollWidth 341 = clientWidth 341) and all three entries are inside the panel; before the fix the footer's scrollWidth was 440 against 341 and "Export as JSON" ran to x 441 on a 375 px viewport. Nothing else in the footer overflows there.ui/apps/consolethat renders the real component (before = main's file, after = this branch) with the Console stylesheet, not a showcase boot; it was deleted afterwards and is not in the diff. Its "before" numbers at 1440x900 match the card's own measurement exactly (popover 1073..1393, footer 440 vs 318, JSON 1380..1514).Verification
Bounding boxes in Chromium, Display popover open, CSV/XLSX/JSON offered, Reset and Refresh present:
"Inside" means the button's box lies within the popover's box; every "after" entry is also the topmost element at its own centre (hit-tested with
elementFromPoint).Local runs (head fb87f20 unless noted)
pnpm --dir ui exec vitest run --maxWorkers=2 packages/plugin-list/underos-verify-lock: 183 files, 1752 tests passed on fb87f20 (merge of main); 183 files, 1750 tests on 9ec8995 before the merge. VERDICT command-exit 0 both times.pnpm exec turbo run type-check --filter=@object-ui/plugin-list(tsc --noEmit && tsc -p tsconfig.test.json, so the new test is compiled): 50 tasks, exit 0.pnpm --dir ui exec vitest run scripts/: 169 files passed, 2 skipped; exit 0.dispatch-gates --commandsderived 34 families for this diff; all 34 ran with exit 0 (--ranreconciliation: 34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN). The PR-body gates (check-changeset-no-major,check-adr-0087-registration,check-closing-keyword-parity,check-partof-closing-keyword) ran against this exact body. The ratchet families (check:type-check-coverage,check:type-check-debt,check:query-options-erasure,check:test-source-alias,check:published-files) were re-run on fb87f20, exit 0.node scripts/check-sdui-manifest.mjs: exit 0 (no registry change).Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (CI's Lint UI is the authority)main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code