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 92205e2
Browse filesBrowse the repository at this point in the historyBrowse files
docs(spec): the master-detail detail entry's inlineMode and formFields describes state both renderer paths
An entry that names both relationshipField and at least one column is kept
as authored by the renderer: an omitted inlineMode is not resolved from the
relationship's inlineEdit and an omitted formFields is not derived. The two
describes, and the factory's docblock clause that repeated the inlineMode
claim, now say what happens on that path and on the derived one.
Claude-Session: https://claude.ai/code/session_01UtnxvdiN376GF3sgXwAw4d
Co-authored-by: Claude <noreply@anthropic.com>
docs(spec): an `object-master-detail-form` detail entry's `inlineMode` and `formFields` describes say what happens when the key is omitted on both of the renderer's paths (#21284)
6
+
7
+
Clause-②: no
8
+
9
+
-**Derived entry** (any entry that does not name both `relationshipField` and at least one column): an omitted `inlineMode` is resolved from the relationship field's `inlineEdit`, else from the child object's shape, and an omitted `formFields` is derived from the child object's fields. This is unchanged.
10
+
-**Entry kept as authored** (one that names both `relationshipField` and at least one column): the renderer resolves and derives nothing. An omitted `inlineMode` renders the collection as a grid, which offers the per-row form only when `formFields` lists more fields than `columns`. An omitted `formFields` means the per-row form is offered only when `inlineMode` is `form`, and it then draws the child object's full field list.
11
+
- The `inlineMode` describe used to say only "resolved from the relationship field's `inlineEdit` when omitted", and the `formFields` describe only "derived from the child object's editable fields when omitted". Neither holds for an entry kept as authored. The `formFields` describe also no longer says "editable": the derived list keeps `readonly` fields, as `deriveInlineRowFormFields` (`@objectstack/spec/data`) does.
12
+
- No schema accepts or refuses anything new. Only the two describes, the reference page that lifts them, and one source comment change.
* child-collection surfaces. The three it adds are the renderer's own:
5007
5007
* `formFields` (the per-row expand form), `inlineMode` (the two form factors
5008
5008
* a relationship field's `inlineEdit` names; absence takes the relationship's
5009
-
* own resolution) and `sortField` (the line-position field the grid stamps on
5009
+
* own resolution only on an entry the renderer derives, and its describe
5010
+
* states both paths) and `sortField` (the line-position field the grid stamps on
5010
5011
* drag-reorder). `title` and `addLabel` are plain strings because the
5011
5012
* renderer draws them as a React child and a button label without resolving a
5012
5013
* locale map.
@@ -5030,8 +5031,8 @@ function masterDetailDetailEntry() {
5030
5031
childObject: z.string().describe('Child object whose records are entered inline'),
5031
5032
relationshipField: z.string().optional().describe('FK on the child pointing back to the parent (auto-detected from the child\'s master_detail/lookup field when omitted)'),
5032
5033
columns: z.array(InlineGridColumnSchema).optional().describe("Editable grid columns (derived from the child object when omitted). Each entry is the strict, name-keyed inline grid column a relationship field's `inlineColumns` takes ({ name, label?, type?, … } — objectui GridColumn); identity-only entries ({ name }) hydrate everything else from the child object's fields. Unknown keys and the retired `field` spelling are refused at parse."),
5033
-
formFields: z.array(z.string()).optional().describe("Child field names for the per-row expand form (derived from the child object's editable fields when omitted)"),
5034
-
inlineMode: z.enum(['grid','form']).optional().describe("Inline-edit form factor: 'grid' = editable cells; 'form' = read-only list + per-row full form. Resolved from the relationship field's `inlineEdit`when omitted"),
5034
+
formFields: z.array(z.string()).optional().describe("Child field names for the per-row expand form. When omitted they are derived from the child object's fields — except on an entry that names both `relationshipField` and at least one column, which is kept as authored: nothing is derived, and the per-row form is offered only when `inlineMode` is 'form', where it draws the child object's full field list"),
5035
+
inlineMode: z.enum(['grid','form']).optional().describe("Inline-edit form factor: 'grid' = editable cells; 'form' = read-only list + per-row full form. When omitted it is resolved from the relationship field's `inlineEdit`, else from the child object's shape — except on an entry that names both `relationshipField` and at least one column, which is kept as authored: nothing is resolved, the collection renders as a grid, and the per-row form is offered only when `formFields` lists more fields than `columns`"),
5035
5036
amountField: z.string().optional().describe('Numeric child column summed for the running total'),
5036
5037
sortField: z.string().optional().describe('Child field holding the line sort position, stamped on drag-reorder (derived from a `position` / `sort_order` / … field when omitted)'),
5037
5038
totalField: z.string().optional().describe('Parent field to receive the rolled-up sum'),
0 commit comments