Skip to content

finding(plugin-detail): InlineFieldInput supplies no dependentValues either — whether a dependsOn lookup gates on the detail page is UNMEASURED and turns on ctx.data #7190

Description

@os-warren

Filed unassigned by the #7165 execution lane. #7165's dispatch carried this as one of two explicitly-unmeasured items, with the instruction "one probe; if it has the same gap that is a second card, not a widening of this one." This is that second card, and ⚠️ the probe is deliberately incomplete — read the boundary below before acting on it.

What was measured (on 899730e0a)

@object-ui/fields' LookupField resolves the record it gates on as:

dependentValues ?? ctx.formValues ?? ctx.data ?? {}

plugin-detail's InlineFieldInput renders the same FieldEditWidget factory the grid does (packages/plugin-detail/src/InlineFieldInput.tsx, the single <FieldEditWidget call site), and:

⛔ The boundary — why this is a finding and not a bug

This is where it differs from #7165, and the difference is load-bearing. The grid was provably broken because a grid renders many rows, so no single ctx.data could ever be the right record — the resolved record was {} for every row and the gate was permanent.

A detail page renders one record, which is exactly the "record scope" ctx.data exists for. So if the host (app-shell's record page) sets ctx.data to the record, the cascade resolves and there is no defect here at all.

That was not measured. No rendering measurement was made against InlineFieldInput — only the supply-side census above. Do not read this card as "the detail page is broken."

The one probe that settles it

Render InlineFieldInput on a record with a region value and a regional_owner lookup declaring dependsOn: ['region'], inside the host the detail page actually runs in, and read the trigger's data-testid:

Keep a live control column in that render (a lookup with no dependsOn), for the reason #7165's tests spell out: an enabled-side green is worthless if the control is also broken.

⚠️ Either way, one thing is already true and worth pinning independently: InlineFieldInput's dependent-value resolution is undeclared and untested. If the answer is "ctx.data rescues it", that rescue is currently an accident of host wiring with no test holding it in place.

Incidence (measured for #7165, carried here)

dependsOn on lookup fields is real in shipped metadata: the hotcrm app declares it on 6 lookup fields across 5 objects (crm_contract ×2, crm_case, crm_quote ×2, crm_opportunity), all scoping contacts to crm_account. Those fields render on detail pages. So if the probe comes back gated, this has live reach.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:blocked

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions