Skip to content

Console records: a hover card on every record reference (compact related rows, relation columns, lookup chips) shows the target's declared highlightFields without navigating #27604

Open

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

Filed from the record-page epic #26676 as a sub-issue (the maintainer, 2026-10-29, looking at Twenty's inline relation expand: 「他的相关表字段点击下拉箭头可以展开」; the seat recommended a stateless hover card over an inline accordion and the maintainer answered 「同意」). It adds one face to a referenced record — a glance — without a drill-down; it is not part of the v4 anatomy (#27524) and flies on its own.

Source (main 273137d227)

Target

  1. One hover card for every record reference: hovering the name in a compact related row, a relation cell in a list / the enlarged tab's table, or a lookup chip in the details column shows, after ~400 ms, a card with the target's icon + name (a link that opens it the way a click would) and its declared highlightFields minus the name (max 6), in the target object's own field renderers (chips, currency, dates). Keyboard: focusing the reference and pressing Space shows the same card; Esc hides it.
  2. Stateless: no expand state, no stretching of the host; the card floats (popover), dismisses on mouse-out / blur; one card at a time.
  3. Data: one request per shown card, cached per record for the page's life; never prefetched for every row (a list of 200 rows must not fire 200 requests).
  4. Scope: console only, every object; the card's content comes from metadata (highlightFields), nothing authored per object; ⛔ packages/spec/**, no new key. Objects whose highlightFields resolve to nothing show the name and the object label only.

File surface

ui/packages/plugin-detail/src/RelatedCardStack.tsx / relatedListCompact.ts (the row's reference), the lookup / relation field renderers in ui/packages/components/src/** (one shared RecordHoverCard component beside the existing lookup popover), the list / grid relation cells in ui/packages/plugin-list / plugin-grid, i18n (the object label fallback), tests beside, changeset.

Acceptance

  1. Tests: the card shows the declared highlights minus the name for a lead, a contact (no status field — nothing invented) and a product; a reference with no highlights shows name + object label; one request per card, none on row render; keyboard Space / Esc; the card never changes the host's layout.
  2. Screenshots on HotCRM: the card over a related row in the split pane, over a relation cell in the 任务 tab's table, and over a lookup chip in the details column, on a never-merged evidence branch.
  3. The epic seat verifies in the console preview before ACCEPT (maintainer: 「车队开发完后你审核效果」).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:recordsBusiness objects, records, the views that show data, usable forms, searchdomain:uienhancementNew feature or requestpm:queuepriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions