Skip to content

Commit 7cfa968

Browse files
committed
docs(plugin-form): name object-master-detail-form in the formType input; drop SplitForm from the export list
The registered input's prescription now matches the spec's; the manifest and component reference are regenerated. The frontend plugin-form page no longer lists SplitForm / SplitFormSchema, and the platform checklist records the split keys as refused at parse. Claude-Session: https://claude.ai/code/session_01JQwxbWHWPRD5rZXeY69YvL Co-authored-by: Claude <noreply@anthropic.com>
1 parent ee84fa2 commit 7cfa968

6 files changed

Lines changed: 8 additions & 9 deletions

File tree

‎content/docs/frontend/plugins/plugin-form.mdx‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ its `schema`, but never a `dataSource` — that travels on
7474
one or wraps the component the same way.
7575

7676
The components are on the package's export surface — `ObjectForm`,
77-
`TabbedForm`, `WizardForm`, `SplitForm`, `DrawerForm`, `ModalForm`,
78-
`EmbeddableForm`, `MasterDetailForm`, `LineItemsPanel`, `FormAnalytics`,
77+
`TabbedForm`, `WizardForm`, `DrawerForm`, `ModalForm`, `EmbeddableForm`, `MasterDetailForm`, `LineItemsPanel`, `FormAnalytics`,
7978
`FormSectionContainer` — alongside the layout helpers (`applyAutoLayout`,
8079
`inferColumns`, `filterCreateModeFields`, …) and the per-container schema types
8180
(`TabbedFormSchema`, `WizardFormSchema`, `ModalFormSchema`, …). There is no
@@ -103,7 +102,7 @@ The plugin supports these field types:
103102
`@object-ui/types` alongside the rest of the JSON contract. This package imports
104103
them and does not re-export them — the form types on its own entry are the
105104
per-container ones (`TabbedFormSchema`, `WizardFormSchema`, `ModalFormSchema`,
106-
`SplitFormSchema`, `DrawerFormSchema`, `MasterDetailFormSchema`).
105+
`DrawerFormSchema`, `MasterDetailFormSchema`).
107106

108107
```typescript
109108
import type { FormSchema, FormField } from '@object-ui/types';

‎content/docs/ui/components/plugins.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ Namespace `plugin-form`.
130130
| `objectName` | `string` | | Object this form creates or edits. Not required: the node's `dataSource` binding can name the object instead, and `dataSource.object` lands on this key, outranking an authored value. With neither, and no inline fields (non-empty `customFields`, or `sections` whose every field is inline), the form shows a hint naming this key instead of a form with no fields. |
131131
| `fields` | `array` | | Bare field names to show, in order (each looked up in the object schema). NOT the same vocabulary as `sections[].fields`, which also accepts the spec `FormFieldSchema` object (identity key `field`, e.g. `{ field: "note", colSpan: 2 }`) — that shape resolves to no name HERE and is silently skipped (SimpleObjectForm in ObjectForm.tsx; buildFlatFields in flatFields.ts for the drawer/modal presentations). |
132132
| `mode` | `enum`: `create`, `edit`, `view` | | — |
133-
| `formType` | `enum`: `simple`, `tabbed`, `wizard`, `drawer`, `modal` | | The form layout (`simple`, `tabbed`, `wizard`), or the container the block opens it in (`drawer`, `modal`, drawn as a stacked form; `contentLayout: "tabbed"` puts a modal's sections on tabs). `split` was retired with ADR-0050: use `tabbed`, or `subforms` to edit child records beside the parent. |
133+
| `formType` | `enum`: `simple`, `tabbed`, `wizard`, `drawer`, `modal` | | The form layout (`simple`, `tabbed`, `wizard`), or the container the block opens it in (`drawer`, `modal`, drawn as a stacked form; `contentLayout: "tabbed"` puts a modal's sections on tabs). `split` was retired with ADR-0050: use `tabbed` (one tab per section), or an `object-master-detail-form` block to edit child records beside the parent. |
134134
| `sections` | `array` | | — |
135135
| `title` | `string` \| `object` | | Heading of the drawer and modal presentations (`formType: "drawer"` / `"modal"`). Accepts either a plain string or an inline per-locale map (`{ en: "New order", "zh-CN": "新建订单" }`) — the `I18nLabel` union the contract admits on this key — and the form resolves the map against the active UI language, falling back through base language, a region-qualified sibling, `default`, then `en`, and finally to any remaining entry. |
136136
| `description` | `string` \| `object` | | Subtitle under the drawer and modal heading. Accepts either a plain string or an inline per-locale map (`{ en: "Enter the order details", "zh-CN": "填写订单信息" }`), resolved against the active UI language with the same fallback chain as `title`. |

‎docs/qa/platform-checklist/areas/studio-authoring.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3781,7 +3781,7 @@
37813781
"flow.errorHandling { strategy, maxRetries } → maxRetries 2 yields three failed attempts",
37823782
"flow.nodes[].inputSchema → stored and served",
37833783
"view.list: searchableFields, userFilters, resizable, compactToolbar, selection, pagination, rowHeight, grouping, rowColor, hiddenFields, fieldOrder, rowActions, bulkActions, conditionalFormatting, inlineEdit, exportOptions (needs an export grant), appearance, addRecord, showRecordCount, allowPrinting, emptyState → each renders as its key describes (gap-view card, 3fcafcd3)",
3784-
"view.form: groups, subforms, submitBehavior, modalSize, allowSkip, showStepIndicator, splitDirection / splitSize / splitResizable → render as described; buttons, layout, drawerSide, drawerWidth: FAIL today (knownGaps[0]); defaults, defaultTab, tabPosition: partial",
3784+
"view.form: groups, subforms, submitBehavior, modalSize, allowSkip, showStepIndicator → render as described; splitDirection / splitSize / splitResizable → refused at parse (retired in @objectstack/spec 18.3.0 with the split form, ADR-0050); buttons, layout, drawerSide, drawerWidth: FAIL today (knownGaps[0]); defaults, defaultTab, tabPosition: partial",
37853785
"dashboard.requiredPermissions → a viewer without the capability is refused the dashboard",
37863786
"dataset (Studio has no dataset editor): include, dimensions with nullLabel, measures count / sum / avg / filtered / ratio, currency format → a report bound to it shows the null bucket labelled and each measure's value",
37873787
"permission.description / isDefault / allowExport / rowLevelSecurity[].positions → the Setup list shows the description; isDefault raises a suggestion; allowExport → export 200 with it, 403 EXPORT_NOT_PERMITTED without; positions limit the policy to holders of the position"

‎scripts/sdui-manifest.record.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
],
1414
"source": "built-tree",
1515
"generator": "scripts/gen-sdui-manifest-node.mjs",
16-
"generatedAt": "2026-10-28",
17-
"sha256": "760674a43020360142d94b2a8e051faa0d4cf640479a3d7ca4efb51f59f91fc4",
16+
"generatedAt": "2026-10-29",
17+
"sha256": "efb88be5cfc185dfff300363ebcc0fbd67e76983e8f4b2c673fae1efa4ecba0b",
1818
"components": 106,
1919
"inTree": {
2020
"modulesRoot": "ui/apps/console",

‎sdui.manifest.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -485,7 +485,7 @@
485485
"drawer",
486486
"modal"
487487
],
488-
"description": "The form layout (`simple`, `tabbed`, `wizard`), or the container the block opens it in (`drawer`, `modal`, drawn as a stacked form; `contentLayout: \"tabbed\"` puts a modal's sections on tabs). `split` was retired with ADR-0050: use `tabbed`, or `subforms` to edit child records beside the parent."
488+
"description": "The form layout (`simple`, `tabbed`, `wizard`), or the container the block opens it in (`drawer`, `modal`, drawn as a stacked form; `contentLayout: \"tabbed\"` puts a modal's sections on tabs). `split` was retired with ADR-0050: use `tabbed` (one tab per section), or an `object-master-detail-form` block to edit child records beside the parent."
489489
},
490490
{
491491
"name": "sections",

‎ui/packages/plugin-form/src/index.tsx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ ComponentRegistry.register('object-form', ObjectFormRenderer, {
296296
{ ...OBJECT_FORM_OBJECT_NAME_INPUT },
297297
{ name: 'fields', type: 'array', description: 'Bare field names to show, in order (each looked up in the object schema). NOT the same vocabulary as `sections[].fields`, which also accepts the spec `FormFieldSchema` object (identity key `field`, e.g. `{ field: "note", colSpan: 2 }`) — that shape resolves to no name HERE and is silently skipped (SimpleObjectForm in ObjectForm.tsx; buildFlatFields in flatFields.ts for the drawer/modal presentations).' },
298298
{ name: 'mode', type: 'enum', enum: ['create', 'edit', 'view'] },
299-
{ name: 'formType', type: 'enum', enum: ['simple', 'tabbed', 'wizard', 'drawer', 'modal'], description: 'The form layout (`simple`, `tabbed`, `wizard`), or the container the block opens it in (`drawer`, `modal`, drawn as a stacked form; `contentLayout: "tabbed"` puts a modal\'s sections on tabs). `split` was retired with ADR-0050: use `tabbed`, or `subforms` to edit child records beside the parent.' },
299+
{ name: 'formType', type: 'enum', enum: ['simple', 'tabbed', 'wizard', 'drawer', 'modal'], description: 'The form layout (`simple`, `tabbed`, `wizard`), or the container the block opens it in (`drawer`, `modal`, drawn as a stacked form; `contentLayout: "tabbed"` puts a modal\'s sections on tabs). `split` was retired with ADR-0050: use `tabbed` (one tab per section), or an `object-master-detail-form` block to edit child records beside the parent.' },
300300
{ name: 'sections', type: 'array' },
301301
// The row's seven `I18nLabel` members (`ComponentPropsMap['object-form']`):
302302
// `title`, `description` here, and `submitText`, `cancelText`, `nextText`,

0 commit comments

Comments
 (0)