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 5e9b1a0
Browse filesBrowse the repository at this point in the historyBrowse files
|**contentLayout**|`Enum<'simple' \| 'tabbed'>`| optional |How the modal presentation lays out its sections (modal) — 'simple' stacks them (the default); 'tabbed' puts each section on its own tab once more than one section has a field to show|
543
543
|**confirmOnDiscard**|`boolean`| optional | Confirm before discarding edits (drawer/modal) |
|**resetOnSuccess**|`boolean`| optional | Reset the form after a successful submit |
554
-
|**navigateOnSuccess**|`any`| optional |Navigate after a successful submit |
554
+
|**navigateOnSuccess**|`string`| optional |Relative path to navigate to after a successful create/update — `{id}` / `{recordId}` are replaced with the saved record's id, URL-escaped; an absolute URL is refused at submit and reported on the success toast. Ignored when `submitBehavior` is set — prefer `submitBehavior`|
555
555
|**readOnly**|`boolean`| optional | Render every field read-only |
|**url**|`string`| ✅ | Where the browser goes after a successful submit. Ruled 2026-08-11: (1) RELATIVE paths only — it must start with `/`, and absolute or protocol-relative URLs are refused, which is what closes the open-redirect face; (2) interpolation ONLY from declared record fields, spelled `{{record.field_name}}`, and every interpolated value is URL-escaped when the redirect is built; (3) a verbatim redirect on the resolved relative path is the intended consumption. To send the browser OUT of the app, use an app navigation item (`{ type: 'url', url }`) instead. |
566
+
|**delayMs**|`integer`| optional ||
567
+
568
+
### Nested Shape: `ObjectFormProps.mobile`
569
+
570
+
| Property | Type | Required | Description |
571
+
| :--- | :--- | :--- | :--- |
572
+
|**stickyActions**|`boolean`| optional | Pin the submit / cancel bar to the bottom of a phone-width viewport |
573
+
|**stepper**|`boolean \| 'auto'`| optional | One-step-at-a-time wizard for a flat form — `true` always, `'auto'` only on a phone-width viewport once the form has `stepperMinFields` fields, `false` (the default) never |
574
+
|**stepperMinFields**|`integer`| optional | The field count at which `stepper: 'auto'` steps up (default 8) |
0 commit comments