@tai42/studio-sdk 22.4.1 → 24.0.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/dist/hooks/useApi.d.ts +194 -24
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/schema-form/SchemaForm.d.ts +10 -12
- package/dist/schema-form/SchemaForm.d.ts.map +1 -1
- package/dist/schema-form/SchemaForm.js.map +1 -1
- package/dist/schema-form/array-field.d.ts +9 -2
- package/dist/schema-form/array-field.d.ts.map +1 -1
- package/dist/schema-form/array-field.js +5 -3
- package/dist/schema-form/array-field.js.map +1 -1
- package/dist/schema-form/date-range-field.d.ts +30 -7
- package/dist/schema-form/date-range-field.d.ts.map +1 -1
- package/dist/schema-form/date-range-field.js +73 -15
- package/dist/schema-form/date-range-field.js.map +1 -1
- package/dist/schema-form/field-node.d.ts +7 -8
- package/dist/schema-form/field-node.d.ts.map +1 -1
- package/dist/schema-form/field-node.js +2 -1
- package/dist/schema-form/field-node.js.map +1 -1
- package/dist/schema-form/index.d.ts +2 -2
- package/dist/schema-form/index.d.ts.map +1 -1
- package/dist/schema-form/index.js +1 -1
- package/dist/schema-form/index.js.map +1 -1
- package/dist/schema-form/object-fields.d.ts +6 -8
- package/dist/schema-form/object-fields.d.ts.map +1 -1
- package/dist/schema-form/object-fields.js +15 -6
- package/dist/schema-form/object-fields.js.map +1 -1
- package/dist/schema-form/types.d.ts +29 -0
- package/dist/schema-form/types.d.ts.map +1 -1
- package/dist/schema-form/validate.d.ts +9 -8
- package/dist/schema-form/validate.d.ts.map +1 -1
- package/dist/schema-form/validate.js +104 -20
- package/dist/schema-form/validate.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +2 -0
- package/src/schema-form/SchemaForm.tsx +10 -9
- package/src/schema-form/array-field.tsx +19 -6
- package/src/schema-form/date-range-field.tsx +112 -25
- package/src/schema-form/field-node.tsx +11 -6
- package/src/schema-form/index.ts +2 -1
- package/src/schema-form/object-fields.tsx +47 -25
- package/src/schema-form/types.ts +30 -0
- package/src/schema-form/validate.ts +121 -24
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
*/
|
|
47
47
|
import type { ReactNode } from 'react';
|
|
48
48
|
import type { ExpressionFieldComponent } from './context';
|
|
49
|
-
import type { JsonSchema, SchemaFormErrors } from './types';
|
|
49
|
+
import type { FieldWords, JsonSchema, SchemaFormErrors } from './types';
|
|
50
50
|
/**
|
|
51
51
|
* Fetch argument-value suggestions for a string field. `argName` is the field's
|
|
52
52
|
* path within the form (a property key at the root, a dotted path when nested);
|
|
@@ -82,18 +82,16 @@ export interface SchemaFormProps {
|
|
|
82
82
|
*/
|
|
83
83
|
readonly expressionField?: ExpressionFieldComponent;
|
|
84
84
|
/**
|
|
85
|
-
* Optional. Per-field
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
85
|
+
* Optional. Per-field words, keyed by the root object's property name. A top-level
|
|
86
|
+
* `enum` field that draws as a select shows its entry's `choiceLabel` as the select
|
|
87
|
+
* placeholder (in place of the default `Select…`); a top-level list field draws its
|
|
88
|
+
* entry's `addItem`, `removeItem`, `itemLabel` (`{n}` the item's number) and `noItems`
|
|
89
|
+
* (in place of `Add item`, `Remove`, `Item {n}` and `No items`). Nested fields and
|
|
90
|
+
* other controls are unaffected, and a field with no entry draws the defaults. The
|
|
91
|
+
* entry's `invalid` and `required` sentences are not read here: pass the same record
|
|
92
|
+
* to `validateAgainstSchema` as `fieldWording`, and the errors it returns carry them.
|
|
92
93
|
*/
|
|
93
|
-
readonly fieldWording?: Readonly<Record<string,
|
|
94
|
-
choiceLabel?: string;
|
|
95
|
-
invalid?: string;
|
|
96
|
-
}>>;
|
|
94
|
+
readonly fieldWording?: Readonly<Record<string, FieldWords>>;
|
|
97
95
|
}
|
|
98
96
|
/**
|
|
99
97
|
* Render a controlled form for `schema`. The root is usually an object (a tool's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaForm.d.ts","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAS1D,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaForm.d.ts","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAS1D,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAIxE;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CAC9D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAwB,EACxB,kBAAkB,EAClB,cAAyC,EACzC,eAAe,EACf,YAAY,GACb,EAAE,eAAe,GAAG,SAAS,CA2B7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaForm.js","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":";AA+CA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"SchemaForm.js","sourceRoot":"","sources":["../../src/schema-form/SchemaForm.tsx"],"names":[],"mappings":";AA+CA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAqDtC;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,GAAG,aAAa,EACxB,kBAAkB,EAClB,cAAc,GAAG,wBAAwB,EACzC,eAAe,EACf,YAAY,GACI;IAChB,uEAAuE;IACvE,+EAA+E;IAC/E,2CAA2C;IAC3C,MAAM,sBAAsB,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAClE,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB,YAC3D,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,YACnD,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,eAAe,IAAI,sBAAsB,YAC/E,cAAK,SAAS,EAAE,UAAU,iBAAe,QAAQ,YAC/C,KAAC,SAAS,IACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,EAAE,EACP,KAAK,EAAE,SAAS,EAChB,QAAQ,QACR,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,GAC1B,GACE,GAC0B,GACH,GACE,CACtC,CAAC;AACJ,CAAC"}
|
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
* The array field renderer. Each item is a nested {@link FieldNode}; edits map
|
|
3
3
|
* the list to a new array (add appends a seeded item, remove filters by index).
|
|
4
4
|
* The whole list re-renders as one controlled value, so index keys are correct.
|
|
5
|
+
*
|
|
6
|
+
* `words` carries the field's own list words (a root field's only): `noItems` the
|
|
7
|
+
* empty-list line, `itemLabel` each item's label (`{n}` the item's number), `removeItem`
|
|
8
|
+
* each remove button, `addItem` the add button. A word not set draws the default
|
|
9
|
+
* (`No items`, `Item {n}`, `Remove`, `Add item`). Each remove button's screen-reader name
|
|
10
|
+
* is the drawn remove word followed by the drawn item label.
|
|
5
11
|
*/
|
|
6
12
|
import type { ReactNode } from 'react';
|
|
7
|
-
import type { JsonSchema, SchemaFormErrors } from './types';
|
|
8
|
-
export declare function ArrayField({ heading, description, error, items, root, value, onChange, path, errors, idPrefix, }: {
|
|
13
|
+
import type { FieldWords, JsonSchema, SchemaFormErrors } from './types';
|
|
14
|
+
export declare function ArrayField({ heading, description, error, items, root, value, onChange, path, errors, idPrefix, words, }: {
|
|
9
15
|
heading: string;
|
|
10
16
|
description: string | undefined;
|
|
11
17
|
error: string | undefined;
|
|
@@ -16,5 +22,6 @@ export declare function ArrayField({ heading, description, error, items, root, v
|
|
|
16
22
|
path: string;
|
|
17
23
|
errors: SchemaFormErrors | undefined;
|
|
18
24
|
idPrefix: string;
|
|
25
|
+
words: FieldWords | undefined;
|
|
19
26
|
}): ReactNode;
|
|
20
27
|
//# sourceMappingURL=array-field.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/array-field.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"array-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/array-field.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAExE,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,WAAW,EACX,KAAK,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,KAAK,GACN,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;CAC/B,GAAG,SAAS,CA8DZ"}
|
|
@@ -6,7 +6,9 @@ import { defaultValueForSchema } from './default-value';
|
|
|
6
6
|
import { FieldGroup } from './field-group';
|
|
7
7
|
import { FieldNode } from './field-node';
|
|
8
8
|
import { useKeyedCallbacks } from './keyed-callbacks';
|
|
9
|
-
export function ArrayField({ heading, description, error, items, root, value, onChange, path, errors, idPrefix, }) {
|
|
9
|
+
export function ArrayField({ heading, description, error, items, root, value, onChange, path, errors, idPrefix, words, }) {
|
|
10
|
+
const removeWord = words?.removeItem ?? 'Remove';
|
|
11
|
+
const itemLabel = (index) => (words?.itemLabel ?? 'Item {n}').split('{n}').join(String(index + 1));
|
|
10
12
|
const list = Array.isArray(value) ? value : [];
|
|
11
13
|
const addItem = () => {
|
|
12
14
|
onChange([...list, newItemValue(items, root)]);
|
|
@@ -18,9 +20,9 @@ export function ArrayField({ heading, description, error, items, root, value, on
|
|
|
18
20
|
onChange(list.map((item, position) => (position === index ? next : item)));
|
|
19
21
|
};
|
|
20
22
|
const changeFor = useKeyedCallbacks(setItem, list.keys());
|
|
21
|
-
return (_jsxs(FieldGroup, { heading: heading, description: description, error: error, atRoot: false, children: [list.length === 0 ? _jsx("span", { className: "tai-field-hint", children:
|
|
23
|
+
return (_jsxs(FieldGroup, { heading: heading, description: description, error: error, atRoot: false, children: [list.length === 0 ? (_jsx("span", { className: "tai-field-hint", children: words?.noItems ?? 'No items' })) : null, list.map((item, index) => (_jsxs("div", { className: "tai-row", children: [_jsx("div", { style: { flex: 1 }, children: _jsx(FieldNode, { schema: items, root: root, value: item, onChange: changeFor(index), path: `${path}[${String(index)}]`, label: itemLabel(index), required: true, errors: errors, idPrefix: idPrefix }) }), _jsxs(Button, { type: "button", variant: "secondary", "aria-label": `${removeWord} ${itemLabel(index)}`, onClick: () => {
|
|
22
24
|
removeItem(index);
|
|
23
|
-
}, children: [_jsx(CloseIcon, {}),
|
|
25
|
+
}, children: [_jsx(CloseIcon, {}), removeWord] })] }, index))), _jsx("div", { children: _jsx(Button, { type: "button", variant: "secondary", onClick: addItem, children: words?.addItem ?? 'Add item' }) })] }));
|
|
24
26
|
}
|
|
25
27
|
function newItemValue(schema, root) {
|
|
26
28
|
const seeded = defaultValueForSchema(schema, root);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-field.js","sourceRoot":"","sources":["../../src/schema-form/array-field.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"array-field.js","sourceRoot":"","sources":["../../src/schema-form/array-field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
* `string`/`format: date` properties where the END names its START in `rangeStart`;
|
|
4
4
|
* the answer stays the two date strings, nothing is recombined. Where a pair is
|
|
5
5
|
* drawable as one control (below), `ObjectFields` renders this {@link DateRangeField}
|
|
6
|
-
* — a group with
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* — a group with one column per end, each the end's labelled native date input and,
|
|
7
|
+
* when the end has a `timeOf` time, that time's own control under it — at the START's
|
|
8
|
+
* slot and skips the END and the times; otherwise the properties draw as ordinary
|
|
9
|
+
* fields, each time right after its date (a documented, valid layout).
|
|
9
10
|
*
|
|
10
|
-
* {@link dateRangePairs} is the ONE definition of "drawable as one control",
|
|
11
|
-
* by every surface so each
|
|
11
|
+
* {@link dateRangePairs} is the ONE definition of "drawable as one control", and
|
|
12
|
+
* {@link fieldDrawingOrder} the one drawing order, both reused by every surface so each
|
|
13
|
+
* surface's merge decision and field order agree.
|
|
12
14
|
*/
|
|
13
15
|
import type { ReactNode } from 'react';
|
|
14
16
|
import type { JsonSchema } from './types';
|
|
@@ -18,7 +20,23 @@ export interface DateRangePair {
|
|
|
18
20
|
readonly startSchema: JsonSchema;
|
|
19
21
|
readonly endName: string;
|
|
20
22
|
readonly endSchema: JsonSchema;
|
|
23
|
+
/** The START's `timeOf` time property among the same properties, when it has one. */
|
|
24
|
+
readonly startTimeName?: string;
|
|
25
|
+
readonly startTimeSchema?: JsonSchema;
|
|
26
|
+
/** The END's `timeOf` time property among the same properties, when it has one. */
|
|
27
|
+
readonly endTimeName?: string;
|
|
28
|
+
readonly endTimeSchema?: JsonSchema;
|
|
21
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* `names` in drawing order: each `timeOf` time moved to sit right after the date it
|
|
32
|
+
* names. `names` is one page's fields, or every property of a page-less form or a
|
|
33
|
+
* readback, in their given order. A time moves only when the name it points at is in
|
|
34
|
+
* `names` and does not itself point at another listed name; any other time (its date
|
|
35
|
+
* not listed, a chain of times, a cycle) keeps its place. Every name appears exactly
|
|
36
|
+
* once and every other name keeps its relative order. Pure and idempotent, so every
|
|
37
|
+
* walker that orders the same list draws it the same way.
|
|
38
|
+
*/
|
|
39
|
+
export declare function fieldDrawingOrder(names: readonly string[], properties: Readonly<Record<string, JsonSchema>>): string[];
|
|
22
40
|
/**
|
|
23
41
|
* The date-range pairs among `properties` that are drawable as ONE control. A pair
|
|
24
42
|
* qualifies when: the END names an existing sibling START in `rangeStart`; BOTH are
|
|
@@ -26,10 +44,11 @@ export interface DateRangePair {
|
|
|
26
44
|
* no OTHER field's `visibleWhen` names either end — otherwise merging the pair would
|
|
27
45
|
* leave that field's predicate pointing at a control that no longer draws on its own,
|
|
28
46
|
* so the pair stays two date fields (the documented degrade). `properties` is ONE
|
|
29
|
-
* page's ordered list; a field is used in at most one pair.
|
|
47
|
+
* page's ordered list; a field is used in at most one pair. Each pair also names each
|
|
48
|
+
* end's `timeOf` time among the same properties, which draws inside the group.
|
|
30
49
|
*/
|
|
31
50
|
export declare function dateRangePairs(properties: readonly (readonly [string, JsonSchema])[]): readonly DateRangePair[];
|
|
32
|
-
export declare function DateRangeField({ pair, startValue, endValue, startRequired, endRequired, markRequired, startError, endError, onChangeStart, onChangeEnd, }: {
|
|
51
|
+
export declare function DateRangeField({ pair, startValue, endValue, startRequired, endRequired, markRequired, startError, endError, onChangeStart, onChangeEnd, startTime, endTime, }: {
|
|
33
52
|
readonly pair: DateRangePair;
|
|
34
53
|
readonly startValue: unknown;
|
|
35
54
|
readonly endValue: unknown;
|
|
@@ -40,5 +59,9 @@ export declare function DateRangeField({ pair, startValue, endValue, startRequir
|
|
|
40
59
|
readonly endError: string | undefined;
|
|
41
60
|
readonly onChangeStart: (value: unknown) => void;
|
|
42
61
|
readonly onChangeEnd: (value: unknown) => void;
|
|
62
|
+
/** The START's time control, drawn under its date; `null` when the end has no time. */
|
|
63
|
+
readonly startTime: ReactNode;
|
|
64
|
+
/** The END's time control, drawn under its date; `null` when the end has no time. */
|
|
65
|
+
readonly endTime: ReactNode;
|
|
43
66
|
}): ReactNode;
|
|
44
67
|
//# sourceMappingURL=date-range-field.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/date-range-field.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"date-range-field.d.ts","sourceRoot":"","sources":["../../src/schema-form/date-range-field.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wFAAwF;AACxF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,qFAAqF;IACrF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IACtC,mFAAmF;IACnF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC/C,MAAM,EAAE,CAyBV;AAmBD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,GACrD,SAAS,aAAa,EAAE,CAqC1B;AAyDD,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,SAAS,EACT,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,uFAAuF;IACvF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,qFAAqF;IACrF,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;CAC7B,GAAG,SAAS,CA6BZ"}
|
|
@@ -1,6 +1,49 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Field } from '../components/field';
|
|
3
3
|
import { TextInput } from '../components/inputs';
|
|
4
|
+
/**
|
|
5
|
+
* `names` in drawing order: each `timeOf` time moved to sit right after the date it
|
|
6
|
+
* names. `names` is one page's fields, or every property of a page-less form or a
|
|
7
|
+
* readback, in their given order. A time moves only when the name it points at is in
|
|
8
|
+
* `names` and does not itself point at another listed name; any other time (its date
|
|
9
|
+
* not listed, a chain of times, a cycle) keeps its place. Every name appears exactly
|
|
10
|
+
* once and every other name keeps its relative order. Pure and idempotent, so every
|
|
11
|
+
* walker that orders the same list draws it the same way.
|
|
12
|
+
*/
|
|
13
|
+
export function fieldDrawingOrder(names, properties) {
|
|
14
|
+
const listed = new Set(names);
|
|
15
|
+
const targetOf = new Map();
|
|
16
|
+
for (const name of names) {
|
|
17
|
+
const dateName = Object.hasOwn(properties, name) ? properties[name]?.timeOf : undefined;
|
|
18
|
+
if (typeof dateName === 'string' && dateName !== name && listed.has(dateName)) {
|
|
19
|
+
targetOf.set(name, dateName);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const timesOf = new Map();
|
|
23
|
+
for (const name of names) {
|
|
24
|
+
const dateName = targetOf.get(name);
|
|
25
|
+
if (dateName === undefined || targetOf.has(dateName))
|
|
26
|
+
continue;
|
|
27
|
+
const times = timesOf.get(dateName);
|
|
28
|
+
if (times === undefined)
|
|
29
|
+
timesOf.set(dateName, [name]);
|
|
30
|
+
else
|
|
31
|
+
times.push(name);
|
|
32
|
+
}
|
|
33
|
+
const moved = new Set([...timesOf.values()].flat());
|
|
34
|
+
const ordered = [];
|
|
35
|
+
for (const name of names) {
|
|
36
|
+
if (moved.has(name))
|
|
37
|
+
continue;
|
|
38
|
+
ordered.push(name);
|
|
39
|
+
ordered.push(...(timesOf.get(name) ?? []));
|
|
40
|
+
}
|
|
41
|
+
return ordered;
|
|
42
|
+
}
|
|
43
|
+
/** The `timeOf` time paired with the date `dateName` among `properties`, if any. */
|
|
44
|
+
function pairedTime(dateName, properties) {
|
|
45
|
+
return properties.find(([name, schema]) => schema.timeOf === dateName && name !== dateName);
|
|
46
|
+
}
|
|
4
47
|
/** A property's `visibleWhen` as a stable key for deep-equality (absent ⇒ `''`). */
|
|
5
48
|
function visibilityKey(schema) {
|
|
6
49
|
return schema.visibleWhen === undefined ? '' : JSON.stringify(schema.visibleWhen);
|
|
@@ -15,7 +58,8 @@ function isDateString(schema) {
|
|
|
15
58
|
* no OTHER field's `visibleWhen` names either end — otherwise merging the pair would
|
|
16
59
|
* leave that field's predicate pointing at a control that no longer draws on its own,
|
|
17
60
|
* so the pair stays two date fields (the documented degrade). `properties` is ONE
|
|
18
|
-
* page's ordered list; a field is used in at most one pair.
|
|
61
|
+
* page's ordered list; a field is used in at most one pair. Each pair also names each
|
|
62
|
+
* end's `timeOf` time among the same properties, which draws inside the group.
|
|
19
63
|
*/
|
|
20
64
|
export function dateRangePairs(properties) {
|
|
21
65
|
const byName = new Map(properties.map(([name, schema]) => [name, schema]));
|
|
@@ -40,7 +84,18 @@ export function dateRangePairs(properties) {
|
|
|
40
84
|
(schema.visibleWhen.field === startName || schema.visibleWhen.field === endName));
|
|
41
85
|
if (dependedOn)
|
|
42
86
|
continue;
|
|
43
|
-
|
|
87
|
+
const startTime = pairedTime(startName, properties);
|
|
88
|
+
const endTime = pairedTime(endName, properties);
|
|
89
|
+
pairs.push({
|
|
90
|
+
startName,
|
|
91
|
+
startSchema,
|
|
92
|
+
endName,
|
|
93
|
+
endSchema,
|
|
94
|
+
...(startTime === undefined
|
|
95
|
+
? {}
|
|
96
|
+
: { startTimeName: startTime[0], startTimeSchema: startTime[1] }),
|
|
97
|
+
...(endTime === undefined ? {} : { endTimeName: endTime[0], endTimeSchema: endTime[1] }),
|
|
98
|
+
});
|
|
44
99
|
paired.add(startName);
|
|
45
100
|
paired.add(endName);
|
|
46
101
|
}
|
|
@@ -50,23 +105,26 @@ export function dateRangePairs(properties) {
|
|
|
50
105
|
function titleOf(schema, name) {
|
|
51
106
|
return typeof schema.title === 'string' && schema.title.length > 0 ? schema.title : name;
|
|
52
107
|
}
|
|
53
|
-
/**
|
|
54
|
-
|
|
108
|
+
/**
|
|
109
|
+
* One end of the range, one column: a labelled native date input emitting the date
|
|
110
|
+
* string, then the end's time control (when it has a `timeOf` time) under it.
|
|
111
|
+
*/
|
|
112
|
+
function RangeEnd({ heading, schema, value, required, error, onChange, time, }) {
|
|
55
113
|
const current = typeof value === 'string' ? value : '';
|
|
56
|
-
return (_jsx(Field, { label: heading, error: error, children: _jsx(TextInput, { type: "date",
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
114
|
+
return (_jsxs("div", { className: "tai-stack tai-stack-3", children: [_jsx(Field, { label: heading, description: typeof schema.description === 'string' ? schema.description : undefined, error: error, children: _jsx(TextInput, { type: "date",
|
|
115
|
+
// The native control enforces its inclusive bounds; the validator enforces
|
|
116
|
+
// the rest (unavailable days, the range span) that the control cannot draw.
|
|
117
|
+
min: typeof schema.minDate === 'string' ? schema.minDate : undefined, max: typeof schema.maxDate === 'string' ? schema.maxDate : undefined, required: required, value: current, onChange: (event) => {
|
|
118
|
+
const next = event.target.value;
|
|
119
|
+
// An empty optional end drops its key; a required one keeps the empty
|
|
120
|
+
// string so the validator can flag it.
|
|
121
|
+
onChange(next === '' && !required ? undefined : next);
|
|
122
|
+
} }) }), time] }));
|
|
65
123
|
}
|
|
66
|
-
export function DateRangeField({ pair, startValue, endValue, startRequired, endRequired, markRequired, startError, endError, onChangeStart, onChangeEnd, }) {
|
|
124
|
+
export function DateRangeField({ pair, startValue, endValue, startRequired, endRequired, markRequired, startError, endError, onChangeStart, onChangeEnd, startTime, endTime, }) {
|
|
67
125
|
const startTitle = titleOf(pair.startSchema, pair.startName);
|
|
68
126
|
const endTitle = titleOf(pair.endSchema, pair.endName);
|
|
69
127
|
const mark = (title, required) => markRequired && required ? `${title} *` : title;
|
|
70
|
-
return (_jsx(Field, { label: `${startTitle} – ${endTitle}`, group: true, children: _jsxs("div", { className: "tai-row", children: [_jsx(RangeEnd, { heading: mark(startTitle, startRequired), schema: pair.startSchema, value: startValue, required: startRequired, error: startError, onChange: onChangeStart }), _jsx(RangeEnd, { heading: mark(endTitle, endRequired), schema: pair.endSchema, value: endValue, required: endRequired, error: endError, onChange: onChangeEnd })] }) }));
|
|
128
|
+
return (_jsx(Field, { label: `${startTitle} – ${endTitle}`, group: true, children: _jsxs("div", { className: "tai-row", children: [_jsx(RangeEnd, { heading: mark(startTitle, startRequired), schema: pair.startSchema, value: startValue, required: startRequired, error: startError, onChange: onChangeStart, time: startTime }), _jsx(RangeEnd, { heading: mark(endTitle, endRequired), schema: pair.endSchema, value: endValue, required: endRequired, error: endError, onChange: onChangeEnd, time: endTime })] }) }));
|
|
71
129
|
}
|
|
72
130
|
//# sourceMappingURL=date-range-field.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-field.js","sourceRoot":"","sources":["../../src/schema-form/date-range-field.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"date-range-field.js","sourceRoot":"","sources":["../../src/schema-form/date-range-field.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* array, and union renderers recurse back through here for their children.
|
|
6
6
|
*/
|
|
7
7
|
import { type ReactNode } from 'react';
|
|
8
|
-
import type { JsonSchema, SchemaFormErrors } from './types';
|
|
8
|
+
import type { FieldWords, JsonSchema, SchemaFormErrors } from './types';
|
|
9
9
|
interface FieldNodeProps {
|
|
10
10
|
readonly schema: JsonSchema;
|
|
11
11
|
readonly root: JsonSchema;
|
|
@@ -25,16 +25,15 @@ interface FieldNodeProps {
|
|
|
25
25
|
readonly errors: SchemaFormErrors | undefined;
|
|
26
26
|
readonly idPrefix: string;
|
|
27
27
|
/**
|
|
28
|
-
* Per-field
|
|
29
|
-
*
|
|
30
|
-
* only; nested objects receive none.
|
|
28
|
+
* Per-field words keyed by property name, handed to an OBJECT node so its direct
|
|
29
|
+
* children draw them (an `enum` select's placeholder, a list's words). Carried by the
|
|
30
|
+
* root form only; nested objects receive none.
|
|
31
31
|
*/
|
|
32
|
-
readonly fieldWording?: Readonly<Record<string,
|
|
33
|
-
choiceLabel?: string;
|
|
34
|
-
invalid?: string;
|
|
35
|
-
}>>;
|
|
32
|
+
readonly fieldWording?: Readonly<Record<string, FieldWords>>;
|
|
36
33
|
/** This field's own picker placeholder, when it draws as an `enum` select. */
|
|
37
34
|
readonly choiceLabel?: string;
|
|
35
|
+
/** This field's own list words, when it draws as a list. */
|
|
36
|
+
readonly listWords?: FieldWords;
|
|
38
37
|
}
|
|
39
38
|
/**
|
|
40
39
|
* A single schema node, dispatched on its classified model kind. Wrapped in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-node.d.ts","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAiB7C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"field-node.d.ts","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAQ,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAiB7C,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGxE,UAAU,cAAc;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;CACjC;AAMD;;;;;;GAMG;AACH,iBAAS,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAuBvD;AA6LD,eAAO,MAAM,SAAS,2DAAsB,CAAC"}
|
|
@@ -52,6 +52,7 @@ function FieldNodeImpl(props) {
|
|
|
52
52
|
idPrefix,
|
|
53
53
|
fieldWording: props.fieldWording,
|
|
54
54
|
choiceLabel: props.choiceLabel,
|
|
55
|
+
listWords: props.listWords,
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
58
|
/** Render the field component matching the classified model kind. */
|
|
@@ -82,7 +83,7 @@ function renderCompositeField(args, model) {
|
|
|
82
83
|
const { fieldWording } = args;
|
|
83
84
|
switch (model.kind) {
|
|
84
85
|
case 'array':
|
|
85
|
-
return (_jsx(ArrayField, { heading: heading, description: description, error: error, items: model.items, root: root, value: value, onChange: onChange, path: path, errors: errors, idPrefix: idPrefix }));
|
|
86
|
+
return (_jsx(ArrayField, { heading: heading, description: description, error: error, items: model.items, root: root, value: value, onChange: onChange, path: path, errors: errors, idPrefix: idPrefix, words: args.listWords }));
|
|
86
87
|
case 'object':
|
|
87
88
|
return (_jsx(FieldGroup, { heading: heading, description: description, error: error, atRoot: path === '', children: _jsx(ObjectFields, { properties: model.properties, requiredKeys: model.required, root: root, value: value, onChange: onChange, path: path, errors: errors, idPrefix: idPrefix, skip: undefined, fieldWording: fieldWording }) }));
|
|
88
89
|
case 'record':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field-node.js","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":";AAAA;;;;;GAKG;AACH,OAAO,EAAE,IAAI,EAAkB,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"field-node.js","sourceRoot":"","sources":["../../src/schema-form/field-node.tsx"],"names":[],"mappings":"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"}
|
|
@@ -34,14 +34,14 @@ export type { ExpressionFieldComponent, ExpressionFieldProps, ExpressionInputKey
|
|
|
34
34
|
export { RecordEntryRendererContext } from './context';
|
|
35
35
|
export { ExpressionFieldContext } from './context';
|
|
36
36
|
export type { DateRangePair } from './date-range-field';
|
|
37
|
-
export { dateRangePairs } from './date-range-field';
|
|
37
|
+
export { dateRangePairs, fieldDrawingOrder } from './date-range-field';
|
|
38
38
|
export { defaultValueForSchema } from './default-value';
|
|
39
39
|
export { resolveRef } from './resolve';
|
|
40
40
|
export type { CompletionProvider, SchemaFormProps } from './SchemaForm';
|
|
41
41
|
export { SchemaForm } from './SchemaForm';
|
|
42
42
|
export type { SecretRef, SecretRefFieldProps } from './SecretRefField';
|
|
43
43
|
export { SecretRefField } from './SecretRefField';
|
|
44
|
-
export type { Discriminator, FormControl, FormInputMode, JsonSchema, JsonSchemaType, SchemaFormErrors, } from './types';
|
|
44
|
+
export type { Discriminator, FieldWords, FormControl, FormInputMode, JsonSchema, JsonSchemaType, SchemaFormErrors, } from './types';
|
|
45
45
|
export { validateAgainstSchema } from './validate';
|
|
46
46
|
export { isFieldVisible } from './visibility';
|
|
47
47
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EACV,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { RecordEntryRendererContext } from './context';
|
|
2
2
|
export { ExpressionFieldContext } from './context';
|
|
3
|
-
export { dateRangePairs } from './date-range-field';
|
|
3
|
+
export { dateRangePairs, fieldDrawingOrder } from './date-range-field';
|
|
4
4
|
export { defaultValueForSchema } from './default-value';
|
|
5
5
|
export { resolveRef } from './resolve';
|
|
6
6
|
export { SchemaForm } from './SchemaForm';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-form/index.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* discriminator tag, which the variant picker owns).
|
|
6
6
|
*/
|
|
7
7
|
import type { ReactNode } from 'react';
|
|
8
|
-
import type { JsonSchema, SchemaFormErrors } from './types';
|
|
8
|
+
import type { FieldWords, JsonSchema, SchemaFormErrors } from './types';
|
|
9
9
|
export declare function ObjectFields({ properties, requiredKeys, root, value, onChange, path, errors, idPrefix, skip, markRequired, fieldWording, }: {
|
|
10
10
|
properties: readonly (readonly [string, JsonSchema])[];
|
|
11
11
|
requiredKeys: ReadonlySet<string>;
|
|
@@ -19,13 +19,11 @@ export declare function ObjectFields({ properties, requiredKeys, root, value, on
|
|
|
19
19
|
/** Mark each required property's label with the DS required marker. */
|
|
20
20
|
markRequired?: boolean;
|
|
21
21
|
/**
|
|
22
|
-
* Per-property
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* Per-property words, keyed by property name. Handed to the root form's object only;
|
|
23
|
+
* a property whose `enum` draws as a select shows its entry's `choiceLabel` as the
|
|
24
|
+
* select placeholder, and a list property draws its entry's list words. Absent for
|
|
25
|
+
* nested objects.
|
|
25
26
|
*/
|
|
26
|
-
fieldWording?: Readonly<Record<string,
|
|
27
|
-
choiceLabel?: string;
|
|
28
|
-
invalid?: string;
|
|
29
|
-
}>>;
|
|
27
|
+
fieldWording?: Readonly<Record<string, FieldWords>>;
|
|
30
28
|
}): ReactNode;
|
|
31
29
|
//# sourceMappingURL=object-fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-fields.d.ts","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"object-fields.d.ts","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAOxE,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,YAAoB,EACpB,YAAY,GACb,EAAE;IACD,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;IACvD,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;CACrD,GAAG,SAAS,CAiFZ"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { ownValue } from '../guards';
|
|
3
|
-
import { DateRangeField, dateRangePairs } from './date-range-field';
|
|
3
|
+
import { DateRangeField, dateRangePairs, fieldDrawingOrder } from './date-range-field';
|
|
4
4
|
import { FieldNode } from './field-node';
|
|
5
5
|
import { useKeyedCallbacks } from './keyed-callbacks';
|
|
6
6
|
import { isFieldVisible } from './visibility';
|
|
@@ -15,14 +15,23 @@ export function ObjectFields({ properties, requiredKeys, root, value, onChange,
|
|
|
15
15
|
// A drawable date-range pair renders as ONE DateRangeField at the START's slot; the
|
|
16
16
|
// END is skipped. The pairing is `dateRangePairs`, the one definition every surface
|
|
17
17
|
// shares. Properties here are one page's, so the "same page" rule holds by construction.
|
|
18
|
+
// A pair's `timeOf` times draw inside its group, so they are skipped too. The fields
|
|
19
|
+
// walk in `fieldDrawingOrder`: each time right after its date, wherever it is declared.
|
|
18
20
|
const pairs = dateRangePairs(properties);
|
|
19
21
|
const pairByStart = new Map(pairs.map((pair) => [pair.startName, pair]));
|
|
20
|
-
const
|
|
22
|
+
const skipped = new Set(pairs.flatMap((pair) => [pair.endName, pair.startTimeName, pair.endTimeName].filter((name) => name !== undefined)));
|
|
23
|
+
const schemaByName = new Map(properties);
|
|
24
|
+
const drawn = fieldDrawingOrder(properties.map(([name]) => name), Object.fromEntries(properties));
|
|
21
25
|
const childPathOf = (name) => (path === '' ? name : `${path}.${name}`);
|
|
22
|
-
|
|
26
|
+
const fieldOf = (name, propSchema) => (_jsx(FieldNode, { schema: propSchema, root: root, value: ownValue(obj, name), onChange: changeFor(name), path: childPathOf(name), label: name, required: requiredKeys.has(name), markRequired: markRequired, errors: errors, idPrefix: idPrefix, choiceLabel: ownValue(fieldWording, name)?.choiceLabel, listWords: ownValue(fieldWording, name) }, name));
|
|
27
|
+
const timeOf = (name, propSchema) => name === undefined || propSchema === undefined ? null : fieldOf(name, propSchema);
|
|
28
|
+
return (_jsx(_Fragment, { children: drawn.map((name) => {
|
|
29
|
+
const propSchema = schemaByName.get(name);
|
|
30
|
+
if (propSchema === undefined)
|
|
31
|
+
return null;
|
|
23
32
|
if (skip !== undefined && name === skip)
|
|
24
33
|
return null;
|
|
25
|
-
if (
|
|
34
|
+
if (skipped.has(name))
|
|
26
35
|
return null;
|
|
27
36
|
// A field hidden by its `visibleWhen` predicate is not rendered; the
|
|
28
37
|
// validator skips it in step, so a hidden field is neither shown nor required.
|
|
@@ -30,9 +39,9 @@ export function ObjectFields({ properties, requiredKeys, root, value, onChange,
|
|
|
30
39
|
return null;
|
|
31
40
|
const pair = pairByStart.get(name);
|
|
32
41
|
if (pair !== undefined) {
|
|
33
|
-
return (_jsx(DateRangeField, { pair: pair, startValue: ownValue(obj, pair.startName), endValue: ownValue(obj, pair.endName), startRequired: requiredKeys.has(pair.startName), endRequired: requiredKeys.has(pair.endName), markRequired: markRequired, startError: ownValue(errors, childPathOf(pair.startName)), endError: ownValue(errors, childPathOf(pair.endName)), onChangeStart: changeFor(pair.startName), onChangeEnd: changeFor(pair.endName) }, name));
|
|
42
|
+
return (_jsx(DateRangeField, { pair: pair, startValue: ownValue(obj, pair.startName), endValue: ownValue(obj, pair.endName), startRequired: requiredKeys.has(pair.startName), endRequired: requiredKeys.has(pair.endName), markRequired: markRequired, startError: ownValue(errors, childPathOf(pair.startName)), endError: ownValue(errors, childPathOf(pair.endName)), onChangeStart: changeFor(pair.startName), onChangeEnd: changeFor(pair.endName), startTime: timeOf(pair.startTimeName, pair.startTimeSchema), endTime: timeOf(pair.endTimeName, pair.endTimeSchema) }, name));
|
|
34
43
|
}
|
|
35
|
-
return (
|
|
44
|
+
return fieldOf(name, propSchema);
|
|
36
45
|
}) }));
|
|
37
46
|
}
|
|
38
47
|
function setKey(obj, name, next) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object-fields.js","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"object-fields.js","sourceRoot":"","sources":["../../src/schema-form/object-fields.tsx"],"names":[],"mappings":"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"}
|