@object-ui/plugin-form 17.5.0 → 17.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4841 -0
- package/README.md +772 -77
- package/dist/DrawerForm.d.ts +30 -2
- package/dist/DrawerForm.d.ts.map +1 -1
- package/dist/EmbeddableForm.d.ts.map +1 -1
- package/dist/FormAnalytics.d.ts.map +1 -1
- package/dist/LineItemsPanel.d.ts +6 -3
- package/dist/LineItemsPanel.d.ts.map +1 -1
- package/dist/MasterDetailForm.d.ts +31 -10
- package/dist/MasterDetailForm.d.ts.map +1 -1
- package/dist/ModalForm.d.ts +48 -4
- package/dist/ModalForm.d.ts.map +1 -1
- package/dist/ObjectForm.d.ts +18 -2
- package/dist/ObjectForm.d.ts.map +1 -1
- package/dist/SplitForm.d.ts +37 -2
- package/dist/SplitForm.d.ts.map +1 -1
- package/dist/TabbedForm.d.ts +65 -3
- package/dist/TabbedForm.d.ts.map +1 -1
- package/dist/WizardForm.d.ts +149 -11
- package/dist/WizardForm.d.ts.map +1 -1
- package/dist/autoLayout.d.ts +12 -3
- package/dist/autoLayout.d.ts.map +1 -1
- package/dist/closedAffordanceNotice.d.ts +14 -0
- package/dist/closedAffordanceNotice.d.ts.map +1 -0
- package/dist/customFieldsMerge.d.ts +29 -0
- package/dist/customFieldsMerge.d.ts.map +1 -0
- package/dist/deriveMasterDetail.d.ts +33 -9
- package/dist/deriveMasterDetail.d.ts.map +1 -1
- package/dist/fieldGroups.d.ts +176 -0
- package/dist/fieldGroups.d.ts.map +1 -1
- package/dist/fieldWriteGate.d.ts +116 -0
- package/dist/fieldWriteGate.d.ts.map +1 -0
- package/dist/flatFields.d.ts +30 -0
- package/dist/flatFields.d.ts.map +1 -0
- package/dist/formChrome.d.ts +55 -0
- package/dist/formChrome.d.ts.map +1 -0
- package/dist/index.d.ts +131 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3676 -1967
- package/dist/index.umd.cjs +1 -1
- package/dist/initialRecord.d.ts +72 -0
- package/dist/initialRecord.d.ts.map +1 -0
- package/dist/loadFailure.d.ts +28 -0
- package/dist/loadFailure.d.ts.map +1 -0
- package/dist/masterDetailTx.d.ts.map +1 -1
- package/dist/occSave.d.ts +6 -1
- package/dist/occSave.d.ts.map +1 -1
- package/dist/recordInvalidation.d.ts +33 -0
- package/dist/recordInvalidation.d.ts.map +1 -0
- package/dist/recordReadGate.d.ts +34 -0
- package/dist/recordReadGate.d.ts.map +1 -0
- package/dist/sanitize.d.ts +187 -5
- package/dist/sanitize.d.ts.map +1 -1
- package/dist/schemaDefaults.d.ts +51 -30
- package/dist/schemaDefaults.d.ts.map +1 -1
- package/dist/sectionFields.d.ts +65 -2
- package/dist/sectionFields.d.ts.map +1 -1
- package/dist/sectionGroups.d.ts +62 -0
- package/dist/sectionGroups.d.ts.map +1 -0
- package/dist/sectionPredicateDiagnostic.d.ts +38 -0
- package/dist/sectionPredicateDiagnostic.d.ts.map +1 -0
- package/dist/submitRedirect.d.ts +148 -0
- package/dist/submitRedirect.d.ts.map +1 -0
- package/dist/submitRedirectNavigation.d.ts +82 -0
- package/dist/submitRedirectNavigation.d.ts.map +1 -0
- package/dist/submitTarget.d.ts +119 -0
- package/dist/submitTarget.d.ts.map +1 -0
- package/dist/successBehavior.d.ts +44 -8
- package/dist/successBehavior.d.ts.map +1 -1
- package/dist/thankYouRedirectCountdown.d.ts +17 -0
- package/dist/thankYouRedirectCountdown.d.ts.map +1 -0
- package/dist/thankYouRedirectNavigation.d.ts +111 -0
- package/dist/thankYouRedirectNavigation.d.ts.map +1 -0
- package/dist/uploadGate.d.ts +35 -0
- package/dist/uploadGate.d.ts.map +1 -0
- package/dist/writePayload.d.ts +68 -0
- package/dist/writePayload.d.ts.map +1 -0
- package/package.json +13 -12
package/dist/DrawerForm.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { FormField, DataSource } from '@object-ui/types';
|
|
2
|
+
import { FormField, DataSource, ObjectFormSchema } from '@object-ui/types';
|
|
3
3
|
export interface DrawerFormSectionConfig {
|
|
4
4
|
name?: string;
|
|
5
5
|
label?: string;
|
|
@@ -8,6 +8,15 @@ export interface DrawerFormSectionConfig {
|
|
|
8
8
|
fields: (string | FormField)[];
|
|
9
9
|
collapsible?: boolean;
|
|
10
10
|
collapsed?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* ADR-0089 `FormSection.visibleWhen` — conditional visibility for the
|
|
13
|
+
* section's divider HEADER, evaluated by the form renderer with the canonical
|
|
14
|
+
* engine and the host predicate scope (#6010/#6111). Fails OPEN.
|
|
15
|
+
*/
|
|
16
|
+
visibleWhen?: string | {
|
|
17
|
+
dialect?: string;
|
|
18
|
+
source: string;
|
|
19
|
+
};
|
|
11
20
|
/** Custom CSS class for the section's divider header. */
|
|
12
21
|
className?: string;
|
|
13
22
|
}
|
|
@@ -16,7 +25,8 @@ export interface DrawerFormSchema {
|
|
|
16
25
|
formType: 'drawer';
|
|
17
26
|
objectName: string;
|
|
18
27
|
mode: 'create' | 'edit' | 'view';
|
|
19
|
-
recordId
|
|
28
|
+
/** Record ID (for edit/view modes). A string, per the one record-id rule on `DataSource` (objectui#9511) — `ObjectForm` builds this schema from the authorable `ObjectFormSchema.recordId`, which is a string, and `findOne` takes a string. */
|
|
29
|
+
recordId?: string;
|
|
20
30
|
title?: string;
|
|
21
31
|
description?: string;
|
|
22
32
|
sections?: DrawerFormSectionConfig[];
|
|
@@ -60,6 +70,24 @@ export interface DrawerFormSchema {
|
|
|
60
70
|
readOnly?: boolean;
|
|
61
71
|
layout?: 'vertical' | 'horizontal';
|
|
62
72
|
columns?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Override persistence — the seam a host uses to own the write. Declared as
|
|
75
|
+
* `ObjectFormSchema['submitHandler']` rather than restated, so this variant
|
|
76
|
+
* and the canonical key `ObjectForm` forwards can never drift apart.
|
|
77
|
+
* When supplied, the form validates and hands the collected values
|
|
78
|
+
* to this handler INSTEAD of calling `dataSource.create` /
|
|
79
|
+
* `dataSource.update`; the returned record is passed on to `onSuccess`.
|
|
80
|
+
* In `edit` mode, for a record this form read itself, it hands over what it
|
|
81
|
+
* would have written: the fields that differ from that read, or the full
|
|
82
|
+
* sanitized payload when nothing changed (objectui#10156; the whole rule is
|
|
83
|
+
* on `ObjectFormSchema['submitHandler']`).
|
|
84
|
+
*
|
|
85
|
+
* `MasterDetailForm` supplies it to route the parent AND its child
|
|
86
|
+
* collections through one atomic `batchTransaction` (#2679 / ADR-0034
|
|
87
|
+
* item 4). A renderer that does not read it writes the parent on its own and
|
|
88
|
+
* escapes that transaction — objectui#6176.
|
|
89
|
+
*/
|
|
90
|
+
submitHandler?: ObjectFormSchema['submitHandler'];
|
|
63
91
|
onSuccess?: (data: any) => void | Promise<void>;
|
|
64
92
|
onError?: (error: Error) => void;
|
|
65
93
|
onCancel?: () => void;
|
package/dist/DrawerForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerForm.d.ts","sourceRoot":"","sources":["../src/DrawerForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH,OAAO,KAAmE,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"DrawerForm.d.ts","sourceRoot":"","sources":["../src/DrawerForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddableForm.d.ts","sourceRoot":"","sources":["../src/EmbeddableForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"EmbeddableForm.d.ts","sourceRoot":"","sources":["../src/EmbeddableForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAnalytics.d.ts","sourceRoot":"","sources":["../src/FormAnalytics.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"FormAnalytics.d.ts","sourceRoot":"","sources":["../src/FormAnalytics.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,oBAAoB;IACnC,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,gCAAgC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+ItD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
package/dist/LineItemsPanel.d.ts
CHANGED
|
@@ -8,7 +8,9 @@ export interface LineItemsPanelSchema {
|
|
|
8
8
|
parentObject?: string;
|
|
9
9
|
parentId?: string;
|
|
10
10
|
recordId?: string;
|
|
11
|
+
/** Numeric CHILD column summed into the grid's footer total, e.g. `'amount'`. */
|
|
11
12
|
amountField?: string;
|
|
13
|
+
/** PARENT field that receives that sum on save, e.g. `'total_amount'`. */
|
|
12
14
|
totalField?: string;
|
|
13
15
|
title?: string;
|
|
14
16
|
readonly?: boolean;
|
|
@@ -29,10 +31,11 @@ export interface LineItemsPanelSchema {
|
|
|
29
31
|
*/
|
|
30
32
|
filter?: any[] | Record<string, any>;
|
|
31
33
|
/**
|
|
32
|
-
* Load order for the child rows — the
|
|
33
|
-
*
|
|
34
|
+
* Load order for the child rows — the spec's `SortConfig[]`. Without one the
|
|
35
|
+
* rows arrive in storage order. The legacy `"line_no desc"` clause is RETIRED
|
|
36
|
+
* (objectui#8221): `convertSortToQueryParams` refuses it out loud.
|
|
34
37
|
*/
|
|
35
|
-
sort?:
|
|
38
|
+
sort?: Array<{
|
|
36
39
|
field?: string;
|
|
37
40
|
order?: 'asc' | 'desc';
|
|
38
41
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineItemsPanel.d.ts","sourceRoot":"","sources":["../src/LineItemsPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"LineItemsPanel.d.ts","sourceRoot":"","sources":["../src/LineItemsPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;GASG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AASjF,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA8DpE,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAsE5C,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,oBAAoB,CAAA;CAAE,CA2mBrE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { DataSource } from '@object-ui/types';
|
|
2
|
+
import { DataSource, I18nLabel } from '@object-ui/types';
|
|
3
3
|
import { GridColumn } from '@object-ui/fields';
|
|
4
|
-
import { InlineMode } from './deriveMasterDetail';
|
|
4
|
+
import { InlineMode } from './deriveMasterDetail.js';
|
|
5
5
|
export interface MasterDetailDetailConfig {
|
|
6
6
|
/** Child object name, e.g. 'expense_line'. */
|
|
7
7
|
childObject: string;
|
|
@@ -21,9 +21,6 @@ export interface MasterDetailDetailConfig {
|
|
|
21
21
|
inlineMode?: InlineMode;
|
|
22
22
|
/** Numeric child column to sum, e.g. 'amount'. */
|
|
23
23
|
amountField?: string;
|
|
24
|
-
/** Child field holding the line sort position — stamped on drag-reorder so
|
|
25
|
-
* order persists. Auto-derived from a `position`/`sort_order`/… field. */
|
|
26
|
-
sortField?: string;
|
|
27
24
|
/** Parent field to receive the rolled-up sum, e.g. 'total_amount'. */
|
|
28
25
|
totalField?: string;
|
|
29
26
|
/** Section title. */
|
|
@@ -53,11 +50,28 @@ export interface MasterDetailFormSchema {
|
|
|
53
50
|
sections?: any[];
|
|
54
51
|
fields?: any[];
|
|
55
52
|
formType?: 'simple' | 'tabbed';
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
*
|
|
60
|
-
|
|
53
|
+
/**
|
|
54
|
+
* `title`, `submitText` and `cancelText` are the spec's `I18nLabel`, as
|
|
55
|
+
* `ComponentPropsMap['object-master-detail-form']` in `@objectstack/spec`
|
|
56
|
+
* declares them: a plain string or an inline per-locale map such as
|
|
57
|
+
* `{ en: 'Purchase order', 'zh-CN': '采购单' }`. The form resolves each one
|
|
58
|
+
* with `pickLocalized` against the active UI language
|
|
59
|
+
* (`useObjectTranslation().language`) before it reaches the screen
|
|
60
|
+
* (objectui#10935).
|
|
61
|
+
*
|
|
62
|
+
* `title` names the record in the built-in edit-save toast ("… saved",
|
|
63
|
+
* pack key `form.savedNamed`), which shows only when the host supplies no
|
|
64
|
+
* `onSuccess`.
|
|
65
|
+
*/
|
|
66
|
+
title?: I18nLabel;
|
|
67
|
+
/** Label of the Save button. Defaults to the session locale's `common.save`
|
|
68
|
+
* (edit) or `form.create` ('Save' / 'Create' in English). */
|
|
69
|
+
submitText?: I18nLabel;
|
|
70
|
+
/** Label for the Cancel button in the action bar, which renders only when the
|
|
71
|
+
* host supplies `onCancel`. Defaults to the session locale's `common.cancel`
|
|
72
|
+
* ('Cancel' in English); an authored label, a string or a per-locale map,
|
|
73
|
+
* always wins (objectui#11039). */
|
|
74
|
+
cancelText?: I18nLabel;
|
|
61
75
|
/** Hide the bottom Save/Cancel action bar — e.g. a non-persisting design
|
|
62
76
|
* preview. Defaults to shown (the form owns the only Save in this layout). */
|
|
63
77
|
showSubmit?: boolean;
|
|
@@ -68,6 +82,13 @@ export interface MasterDetailFormSchema {
|
|
|
68
82
|
* Defaults to `tax_rate`; the stack only appears if the field is present. */
|
|
69
83
|
taxRateField?: string;
|
|
70
84
|
onSuccess?: (parent: any) => void | Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Called after a refused save, for bookkeeping only (logging, custom focus
|
|
87
|
+
* handling, …) — NOT for showing the failure to the user. The form
|
|
88
|
+
* renderer already toasts every rejected write for any host `submitHandler`
|
|
89
|
+
* (objectui#7354); a host that also toasts here puts the same refusal on
|
|
90
|
+
* screen twice.
|
|
91
|
+
*/
|
|
71
92
|
onError?: (err: Error) => void;
|
|
72
93
|
onCancel?: () => void;
|
|
73
94
|
className?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MasterDetailForm.d.ts","sourceRoot":"","sources":["../src/MasterDetailForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"MasterDetailForm.d.ts","sourceRoot":"","sources":["../src/MasterDetailForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAA6B,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0BpE,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB;;qDAEiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;yEACqE;IACrE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB;sFACkF;IAClF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;kDAE8C;IAC9C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IAMrB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B;mFAC+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC/B;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;kEAC8D;IAC9D,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;wCAGoC;IACpC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;mFAC+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC;;kFAE8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8uBD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAo8B5D,CAAC"}
|
package/dist/ModalForm.d.ts
CHANGED
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { FormField, DataSource } from '@object-ui/types';
|
|
2
|
+
import { FormField, DataSource, ObjectFormSchema } from '@object-ui/types';
|
|
3
3
|
export interface ModalFormSectionConfig {
|
|
4
4
|
name?: string;
|
|
5
5
|
label?: string;
|
|
6
6
|
description?: string;
|
|
7
7
|
columns?: 1 | 2 | 3 | 4;
|
|
8
8
|
fields: (string | FormField)[];
|
|
9
|
+
/**
|
|
10
|
+
* Whether the section can be collapsed — spec `FormSection.collapsible`.
|
|
11
|
+
* `collapsed: true` implies it (objectui#9780). The control lives on the
|
|
12
|
+
* section's divider row, so a section with neither `label` nor
|
|
13
|
+
* `description` cannot carry one: it renders open and is reported
|
|
14
|
+
* (objectui#9849, director ruling letter E). Stacked layout only — the
|
|
15
|
+
* `tabbed` content layout draws tabs, which do not collapse.
|
|
16
|
+
*/
|
|
17
|
+
collapsible?: boolean;
|
|
18
|
+
/** Whether the section starts collapsed — spec `FormSection.collapsed`. Same rules as `collapsible`. */
|
|
19
|
+
collapsed?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* ADR-0089 `FormSection.visibleWhen` — conditional visibility for the
|
|
22
|
+
* section's divider HEADER, evaluated by the form renderer with the canonical
|
|
23
|
+
* engine and the host predicate scope (#6010/#6111). Fails OPEN.
|
|
24
|
+
*/
|
|
25
|
+
visibleWhen?: string | {
|
|
26
|
+
dialect?: string;
|
|
27
|
+
source: string;
|
|
28
|
+
};
|
|
9
29
|
/** Custom CSS class for the section's header row (stacked layout). */
|
|
10
30
|
className?: string;
|
|
11
31
|
/**
|
|
@@ -20,11 +40,12 @@ export interface ModalFormSchema {
|
|
|
20
40
|
formType: 'modal';
|
|
21
41
|
objectName: string;
|
|
22
42
|
mode: 'create' | 'edit' | 'view';
|
|
23
|
-
recordId
|
|
43
|
+
/** Record ID (for edit/view modes). A string, per the one record-id rule on `DataSource` (objectui#9511) — `ObjectForm` builds this schema from the authorable `ObjectFormSchema.recordId`, which is a string, and `findOne` takes a string. */
|
|
44
|
+
recordId?: string;
|
|
24
45
|
title?: string;
|
|
25
46
|
description?: string;
|
|
26
47
|
sections?: ModalFormSectionConfig[];
|
|
27
|
-
/** Internal content layout (ADR-0050, #1890): 'tabbed' renders sections as
|
|
48
|
+
/** Internal content layout (ADR-0050, objectstack-ai/objectstack#1890): 'tabbed' renders sections as
|
|
28
49
|
* tabs inside the modal, so "modal + tabbed" composes. Default stacks them. */
|
|
29
50
|
contentLayout?: 'simple' | 'tabbed';
|
|
30
51
|
fields?: string[];
|
|
@@ -44,7 +65,12 @@ export interface ModalFormSchema {
|
|
|
44
65
|
*/
|
|
45
66
|
modalSize?: 'sm' | 'default' | 'lg' | 'xl' | 'full';
|
|
46
67
|
/**
|
|
47
|
-
* Whether
|
|
68
|
+
* Whether the dialog draws its close (X) button. Only an explicit `false`
|
|
69
|
+
* hides it (objectui#11061); both dialog arms (the flat form and the
|
|
70
|
+
* `subforms` master-detail form) pass it to `MobileDialogContent`'s
|
|
71
|
+
* `showCloseButton`. Hidden, the form is still dismissable: Escape (and a
|
|
72
|
+
* backdrop click) still reach `onOpenChange(false)`, as does the Cancel
|
|
73
|
+
* action when it is shown.
|
|
48
74
|
* @default true
|
|
49
75
|
*/
|
|
50
76
|
modalCloseButton?: boolean;
|
|
@@ -66,6 +92,24 @@ export interface ModalFormSchema {
|
|
|
66
92
|
readOnly?: boolean;
|
|
67
93
|
layout?: 'vertical' | 'horizontal';
|
|
68
94
|
columns?: number;
|
|
95
|
+
/**
|
|
96
|
+
* Override persistence — the seam a host uses to own the write. Declared as
|
|
97
|
+
* `ObjectFormSchema['submitHandler']` rather than restated, so this variant
|
|
98
|
+
* and the canonical key `ObjectForm` forwards can never drift apart.
|
|
99
|
+
* When supplied, the form validates and hands the collected values
|
|
100
|
+
* to this handler INSTEAD of calling `dataSource.create` /
|
|
101
|
+
* `dataSource.update`; the returned record is passed on to `onSuccess`.
|
|
102
|
+
* In `edit` mode, for a record this form read itself, it hands over what it
|
|
103
|
+
* would have written: the fields that differ from that read, or the full
|
|
104
|
+
* sanitized payload when nothing changed (objectui#10156; the whole rule is
|
|
105
|
+
* on `ObjectFormSchema['submitHandler']`).
|
|
106
|
+
*
|
|
107
|
+
* `MasterDetailForm` supplies it to route the parent AND its child
|
|
108
|
+
* collections through one atomic `batchTransaction` (#2679 / ADR-0034
|
|
109
|
+
* item 4). A renderer that does not read it writes the parent on its own and
|
|
110
|
+
* escapes that transaction — objectui#6176.
|
|
111
|
+
*/
|
|
112
|
+
submitHandler?: ObjectFormSchema['submitHandler'];
|
|
69
113
|
onSuccess?: (data: any) => void | Promise<void>;
|
|
70
114
|
onError?: (error: Error) => void;
|
|
71
115
|
onCancel?: () => void;
|
package/dist/ModalForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalForm.d.ts","sourceRoot":"","sources":["../src/ModalForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH,OAAO,KAAmE,MAAM,OAAO,CAAC;AACxF,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"ModalForm.d.ts","sourceRoot":"","sources":["../src/ModalForm.tsx"],"names":[],"mappings":"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"}
|
package/dist/ObjectForm.d.ts
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { ObjectFormSchema, DataSource } from '@object-ui/types';
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Props of the `ObjectForm` React component.
|
|
5
|
+
*
|
|
6
|
+
* Renamed off the bare `ObjectFormProps` (objectui#4650): from 17.0.0
|
|
7
|
+
* `@objectstack/spec/ui` owns that name, where it is the AUTHORED props
|
|
8
|
+
* document of the `object-form` element — `z.input<typeof
|
|
9
|
+
* ObjectFormPropsSchema>`, i.e. serialisable authoring keys only. This is the
|
|
10
|
+
* RENDERER's props: a live `dataSource`, submit/cancel callbacks and imperative
|
|
11
|
+
* handles, none of which can exist in authored metadata. Two layers under one
|
|
12
|
+
* word, resolved the way this repo already resolved it for `PageHeaderProps` ->
|
|
13
|
+
* `PageHeaderComponentProps` (app-shell) and the `Record*ComponentProps` family
|
|
14
|
+
* in `@object-ui/types`.
|
|
15
|
+
*
|
|
16
|
+
* The barrel keeps `ObjectFormProps` as a deprecated alias of this type, so no
|
|
17
|
+
* importer breaks. Tripwire: `__tests__/spec-symbol-4650.test.ts`.
|
|
18
|
+
*/
|
|
19
|
+
export interface ObjectFormComponentProps {
|
|
4
20
|
/**
|
|
5
21
|
* The schema configuration for the form
|
|
6
22
|
*/
|
|
@@ -33,5 +49,5 @@ export interface ObjectFormProps {
|
|
|
33
49
|
* />
|
|
34
50
|
* ```
|
|
35
51
|
*/
|
|
36
|
-
export declare const ObjectForm: React.FC<
|
|
52
|
+
export declare const ObjectForm: React.FC<ObjectFormComponentProps>;
|
|
37
53
|
//# sourceMappingURL=ObjectForm.d.ts.map
|
package/dist/ObjectForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectForm.d.ts","sourceRoot":"","sources":["../src/ObjectForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAyB,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ObjectForm.d.ts","sourceRoot":"","sources":["../src/ObjectForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH,OAAO,KAAoD,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAyB,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgE5F;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuFD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAoZzD,CAAC"}
|
package/dist/SplitForm.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { FormField, DataSource } from '@object-ui/types';
|
|
2
|
+
import { FormField, DataSource, ObjectFormSchema } from '@object-ui/types';
|
|
3
3
|
export interface SplitFormSectionConfig {
|
|
4
4
|
name?: string;
|
|
5
5
|
label?: string;
|
|
@@ -13,6 +13,15 @@ export interface SplitFormSectionConfig {
|
|
|
13
13
|
*/
|
|
14
14
|
pane?: 'primary' | 'secondary';
|
|
15
15
|
fields: (string | FormField)[];
|
|
16
|
+
/**
|
|
17
|
+
* ADR-0089 `FormSection.visibleWhen` — conditional visibility for the
|
|
18
|
+
* section's divider HEADER, evaluated by the form renderer with the canonical
|
|
19
|
+
* engine and the host predicate scope (#6010/#6111). Fails OPEN.
|
|
20
|
+
*/
|
|
21
|
+
visibleWhen?: string | {
|
|
22
|
+
dialect?: string;
|
|
23
|
+
source: string;
|
|
24
|
+
};
|
|
16
25
|
/** Custom CSS class for the section's header row. */
|
|
17
26
|
className?: string;
|
|
18
27
|
/**
|
|
@@ -28,8 +37,16 @@ export interface SplitFormSchema {
|
|
|
28
37
|
formType: 'split';
|
|
29
38
|
objectName: string;
|
|
30
39
|
mode: 'create' | 'edit' | 'view';
|
|
31
|
-
recordId
|
|
40
|
+
/** Record ID (for edit/view modes). A string, per the one record-id rule on `DataSource` (objectui#9511) — `ObjectForm` builds this schema from the authorable `ObjectFormSchema.recordId`, which is a string, and `findOne` takes a string. */
|
|
41
|
+
recordId?: string;
|
|
32
42
|
sections: SplitFormSectionConfig[];
|
|
43
|
+
/**
|
|
44
|
+
* Inline field definitions (`object-form.customFields`). A member naming a
|
|
45
|
+
* field a section lists is that field's definition, as on every other
|
|
46
|
+
* `formType` (objectui#10254); `ObjectForm` hands the key over in its
|
|
47
|
+
* `{...schema}` spread.
|
|
48
|
+
*/
|
|
49
|
+
customFields?: FormField[];
|
|
33
50
|
/**
|
|
34
51
|
* Split direction.
|
|
35
52
|
* @default 'horizontal'
|
|
@@ -59,6 +76,24 @@ export interface SplitFormSchema {
|
|
|
59
76
|
initialValues?: Record<string, any>;
|
|
60
77
|
initialData?: Record<string, any>;
|
|
61
78
|
readOnly?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Override persistence — the seam a host uses to own the write. Declared as
|
|
81
|
+
* `ObjectFormSchema['submitHandler']` rather than restated, so this variant
|
|
82
|
+
* and the canonical key `ObjectForm` forwards can never drift apart.
|
|
83
|
+
* When supplied, the form validates and hands the collected values
|
|
84
|
+
* to this handler INSTEAD of calling `dataSource.create` /
|
|
85
|
+
* `dataSource.update`; the returned record is passed on to `onSuccess`.
|
|
86
|
+
* In `edit` mode, for a record this form read itself, it hands over what it
|
|
87
|
+
* would have written: the fields that differ from that read, or the full
|
|
88
|
+
* sanitized payload when nothing changed (objectui#10156, objectui#10563;
|
|
89
|
+
* the whole rule is on `ObjectFormSchema['submitHandler']`).
|
|
90
|
+
*
|
|
91
|
+
* `MasterDetailForm` supplies it to route the parent AND its child
|
|
92
|
+
* collections through one atomic `batchTransaction` (#2679 / ADR-0034
|
|
93
|
+
* item 4). A renderer that does not read it writes the parent on its own and
|
|
94
|
+
* escapes that transaction — objectui#6176.
|
|
95
|
+
*/
|
|
96
|
+
submitHandler?: ObjectFormSchema['submitHandler'];
|
|
62
97
|
onSuccess?: (data: any) => void | Promise<void>;
|
|
63
98
|
onError?: (error: Error) => void;
|
|
64
99
|
onCancel?: () => void;
|
package/dist/SplitForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SplitForm.d.ts","sourceRoot":"","sources":["../src/SplitForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"SplitForm.d.ts","sourceRoot":"","sources":["../src/SplitForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,SAAS,EAAc,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAyB5F,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;IAC/B,MAAM,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,gPAAgP;IAChP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAE3C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAElD,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0b9C,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
package/dist/TabbedForm.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import { FormField, DataSource } from '@object-ui/types';
|
|
2
|
+
import { FormField, DataSource, ObjectFormSchema } from '@object-ui/types';
|
|
3
3
|
export interface FormSectionConfig {
|
|
4
4
|
/**
|
|
5
5
|
* Section identifier (used as tab value)
|
|
@@ -22,6 +22,40 @@ export interface FormSectionConfig {
|
|
|
22
22
|
* Field names or configurations in this section
|
|
23
23
|
*/
|
|
24
24
|
fields: (string | FormField)[];
|
|
25
|
+
/**
|
|
26
|
+
* ADR-0089 `FormSection.visibleWhen` — the TABBED arm of the one grouping
|
|
27
|
+
* contract ruled 2026-08-29 (objectui#6237, option A). Spelled exactly as the
|
|
28
|
+
* sibling `ModalFormSectionConfig.visibleWhen`, because it IS the same
|
|
29
|
+
* authored key: `ObjectForm` copies a section's predicate here, this layout
|
|
30
|
+
* copies it onto the tab it synthesises (`FormFieldTab.visibleWhen`), and the
|
|
31
|
+
* form renderer evaluates it on the canonical engine with the live record and
|
|
32
|
+
* the host predicate scope bound (#6010) — the same path a field's own
|
|
33
|
+
* `visibleWhen` takes. A broken predicate fails OPEN (the tab stays visible).
|
|
34
|
+
*
|
|
35
|
+
* Ruled semantics (maintainer 2026-08-27, the same ruling for tabs as for
|
|
36
|
+
* sections), inherited from the renderer rather than re-implemented here:
|
|
37
|
+
* visibility decides what is DRAWN and nothing else — a hidden tab's values
|
|
38
|
+
* still submit — and a hidden tab's fields skip CLIENT-side validation, so a
|
|
39
|
+
* user is never blocked by an error pointing at a control they cannot see.
|
|
40
|
+
* The server-side contract stays the loud floor for genuinely-required data;
|
|
41
|
+
* see the boundary note on `WizardStepConfig` and objectui#6237 for the
|
|
42
|
+
* measured reason the server cannot read this predicate.
|
|
43
|
+
*
|
|
44
|
+
* ⛔ Deliberately NOT on the wizard's step type, and that boundary is now
|
|
45
|
+
* structural rather than subtractive (maintainer ruling 2026-08-30,
|
|
46
|
+
* objectui#6237). `WizardForm` used to type its steps as
|
|
47
|
+
* `Omit<FormSectionConfig, 'visibleWhen'>` — a derivation that defended the
|
|
48
|
+
* one key it named while every FUTURE key added here still reached a wizard
|
|
49
|
+
* step by default. `WizardStepConfig` is now declared independently, exactly
|
|
50
|
+
* as `SplitFormSectionConfig` / `ModalFormSectionConfig` /
|
|
51
|
+
* `DrawerFormSectionConfig` already are, so this type and the wizard's share
|
|
52
|
+
* nothing: a key is authorable on a wizard step only if someone writes it
|
|
53
|
+
* there, on the type whose renderer has to honour it.
|
|
54
|
+
*/
|
|
55
|
+
visibleWhen?: string | {
|
|
56
|
+
dialect?: string;
|
|
57
|
+
source: string;
|
|
58
|
+
};
|
|
25
59
|
/**
|
|
26
60
|
* Custom CSS class for the section's Card wrapper.
|
|
27
61
|
*
|
|
@@ -47,13 +81,23 @@ export interface TabbedFormSchema {
|
|
|
47
81
|
*/
|
|
48
82
|
mode: 'create' | 'edit' | 'view';
|
|
49
83
|
/**
|
|
50
|
-
* Record ID (for edit/view modes)
|
|
84
|
+
* Record ID (for edit/view modes). A string, per the one record-id rule on
|
|
85
|
+
* `DataSource` (objectui#9511) — `ObjectForm` builds this schema from the
|
|
86
|
+
* authorable `ObjectFormSchema.recordId`, which is a string, and `findOne`
|
|
87
|
+
* takes a string.
|
|
51
88
|
*/
|
|
52
|
-
recordId?: string
|
|
89
|
+
recordId?: string;
|
|
53
90
|
/**
|
|
54
91
|
* Tab sections configuration
|
|
55
92
|
*/
|
|
56
93
|
sections: FormSectionConfig[];
|
|
94
|
+
/**
|
|
95
|
+
* Inline field definitions (`object-form.customFields`). A member naming a
|
|
96
|
+
* field a section lists is that field's definition, as on every other
|
|
97
|
+
* `formType` (objectui#10254); `ObjectForm` hands the key over in its
|
|
98
|
+
* `{...schema}` spread.
|
|
99
|
+
*/
|
|
100
|
+
customFields?: FormField[];
|
|
57
101
|
/**
|
|
58
102
|
* Grid width for the whole form (1–4). Aligns with @objectstack/spec
|
|
59
103
|
* FormView.columns and OUTRANKS the per-section `columns`, which say how a
|
|
@@ -100,6 +144,24 @@ export interface TabbedFormSchema {
|
|
|
100
144
|
* Read-only mode
|
|
101
145
|
*/
|
|
102
146
|
readOnly?: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Override persistence — the seam a host uses to own the write. Declared as
|
|
149
|
+
* `ObjectFormSchema['submitHandler']` rather than restated, so this variant
|
|
150
|
+
* and the canonical key `ObjectForm` forwards can never drift apart.
|
|
151
|
+
* When supplied, the form validates and hands the collected values
|
|
152
|
+
* to this handler INSTEAD of calling `dataSource.create` /
|
|
153
|
+
* `dataSource.update`; the returned record is passed on to `onSuccess`.
|
|
154
|
+
* In `edit` mode, for a record this form read itself, it hands over what it
|
|
155
|
+
* would have written: the fields that differ from that read, or the full
|
|
156
|
+
* sanitized payload when nothing changed (objectui#10156, objectui#10563;
|
|
157
|
+
* the whole rule is on `ObjectFormSchema['submitHandler']`).
|
|
158
|
+
*
|
|
159
|
+
* `MasterDetailForm` supplies it to route the parent AND its child
|
|
160
|
+
* collections through one atomic `batchTransaction` (#2679 / ADR-0034
|
|
161
|
+
* item 4). A renderer that does not read it writes the parent on its own and
|
|
162
|
+
* escapes that transaction — objectui#6176.
|
|
163
|
+
*/
|
|
164
|
+
submitHandler?: ObjectFormSchema['submitHandler'];
|
|
103
165
|
/**
|
|
104
166
|
* Callbacks
|
|
105
167
|
*/
|
package/dist/TabbedForm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TabbedForm.d.ts","sourceRoot":"","sources":["../src/TabbedForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"TabbedForm.d.ts","sourceRoot":"","sources":["../src/TabbedForm.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AAEH,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAc,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAyB5F,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAExB;;OAEG;IACH,MAAM,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAE5D;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAEjC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAE9B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAE3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAElD;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;IAElD;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuchD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|