You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit e76041c
Browse filesBrowse the repository at this point in the historyBrowse files
spec(ui): state the empty-columns boundary and drop the hover claim from the composition text
Fix round for the contract review of cfc103a.
- columns: an empty list declares no projection, so neither hiddenFields nor
fieldOrder applies; objectui's ListView grid then derives the object's default
columns. Replaces "a field omitted here is not displayed" and "nothing
downstream may re-add a field this list omits".
- composition docblock: the same boundary on step 1; the effectiveFields memo
runs the three steps with a field-level-security read filter between steps 1
and 2 (was "exactly these three steps"); the opening sentence and the
"author who wants a field gone" advice narrowed or dropped.
- pin header and changeset: the describe text ships into json-schema/ and the
generated docs; the TSDoc-hover leg is dropped.
- pins: the columns boundary, the docblock boundary, and every door admitting
columns: [] verbatim (18 -> 21 cases).
- regenerated content/docs/references/{api/protocol,data/object,ui/view}.mdx.
Claude-Session: https://claude.ai/code/session_01UDXER3sdqfeVYpEWZs5mZx
Co-authored-by: Claude <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .changeset/15184-list-view-field-order-composition.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@
4
4
5
5
`ListViewSchema` declares the `columns` x `hiddenFields` x `fieldOrder` composition instead of leaving it to be inferred from a renderer (#15184)
6
6
7
-
The three keys that decide which fields a list view shows, and in what order, now say so in their own `.describe()` text — the string that ships into `json-schema/`, into the generated `content/docs/references/ui/view.mdx`, and into the TSDoc an author hovers:
7
+
The three keys that together build a list view's field list now say how they compose, in their own `.describe()` text — the string that ships into `json-schema/` and into the generated `content/docs/references/ui/view.mdx`:
8
8
9
-
-`columns` is the **projection**: the candidate set and the baseline order. A field omitted here is not displayed, and neither other key can add it back.
9
+
-`columns` is the **projection**: the candidate set and the baseline order, and neither other key can add a field it omits. An **empty**`columns` declares no projection, so neither other key applies: which columns show is left to the renderer (objectui's `ListView` grid derives the object's default columns).
10
10
-`hiddenFields`**subtracts** from that projection, before any ordering runs. A name `columns` never projected subtracts nothing.
11
11
-`fieldOrder`**orders what survives** and never adds a field. A surviving column absent from `fieldOrder` sorts **last**, after every listed one, keeping its `columns`-relative order; a name listed there that did not survive orders nothing.
|**columns**|`string[] \| { field: string; label?: string \| Record<string, string>; width?: number; align?: Enum<'left' \| 'center' \| 'right'>; … }[]`| ✅ | Fields to display as columns — the PROJECTION of the per-view field composition `columns` x `hiddenFields` x `fieldOrder`: this list is the candidate set AND the baseline order; `hiddenFields` subtracts from it and `fieldOrder` orders what survives. A field omitted here is not displayed: `hiddenFields` and `fieldOrder` cannot add it back. |
1667
+
|**columns**|`string[] \| { field: string; label?: string \| Record<string, string>; width?: number; align?: Enum<'left' \| 'center' \| 'right'>; … }[]`| ✅ | Fields to display as columns — the PROJECTION of the per-view field composition `columns` x `hiddenFields` x `fieldOrder`: this list is the candidate set AND the baseline order; `hiddenFields` subtracts from it and `fieldOrder` orders what survives. `hiddenFields` and `fieldOrder` cannot add a field omitted here. An empty list declares no projection, so neither of them applies: which columns show is then left to the renderer (objectui's `ListView` grid derives the object's default columns). |
|**columns**|`string[] \| { field: string; label?: string \| Record<string, string>; width?: number; align?: Enum<'left' \| 'center' \| 'right'>; … }[]`| ✅ | Fields to display as columns — the PROJECTION of the per-view field composition `columns` x `hiddenFields` x `fieldOrder`: this list is the candidate set AND the baseline order; `hiddenFields` subtracts from it and `fieldOrder` orders what survives. A field omitted here is not displayed: `hiddenFields` and `fieldOrder` cannot add it back. |
1752
+
|**columns**|`string[] \| { field: string; label?: string \| Record<string, string>; width?: number; align?: Enum<'left' \| 'center' \| 'right'>; … }[]`| ✅ | Fields to display as columns — the PROJECTION of the per-view field composition `columns` x `hiddenFields` x `fieldOrder`: this list is the candidate set AND the baseline order; `hiddenFields` subtracts from it and `fieldOrder` orders what survives. `hiddenFields` and `fieldOrder` cannot add a field omitted here. An empty list declares no projection, so neither of them applies: which columns show is then left to the renderer (objectui's `ListView` grid derives the object's default columns). |
|**columns**|`string[] \| { field: string; label?: string \| Record<string, string>; width?: number; align?: Enum<'left' \| 'center' \| 'right'>; … }[]`| ✅ | Fields to display as columns — the PROJECTION of the per-view field composition `columns` x `hiddenFields` x `fieldOrder`: this list is the candidate set AND the baseline order; `hiddenFields` subtracts from it and `fieldOrder` orders what survives. A field omitted here is not displayed: `hiddenFields` and `fieldOrder` cannot add it back. |
366
+
|**columns**|`string[] \| { field: string; label?: string \| Record<string, string>; width?: number; align?: Enum<'left' \| 'center' \| 'right'>; … }[]`| ✅ | Fields to display as columns — the PROJECTION of the per-view field composition `columns` x `hiddenFields` x `fieldOrder`: this list is the candidate set AND the baseline order; `hiddenFields` subtracts from it and `fieldOrder` orders what survives. `hiddenFields` and `fieldOrder` cannot add a field omitted here. An empty list declares no projection, so neither of them applies: which columns show is then left to the renderer (objectui's `ListView` grid derives the object's default columns). |
0 commit comments