@astroapps/forms-core 1.1.1 → 1.2.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/lib/index.cjs +20 -3
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +19 -4
- package/lib/index.js.map +1 -1
- package/lib/schemaBuilder.d.ts +1 -0
- package/package.json +1 -1
- package/src/formState.ts +17 -5
- package/src/schemaBuilder.ts +11 -0
package/lib/schemaBuilder.d.ts
CHANGED
|
@@ -61,6 +61,7 @@ export declare function defaultCompoundField(field: string, displayName: string,
|
|
|
61
61
|
type: FieldType.Compound;
|
|
62
62
|
};
|
|
63
63
|
export declare function mergeField(field: SchemaField, mergeInto: SchemaField[]): SchemaField[];
|
|
64
|
+
export declare function mergeOption(fields: SchemaField[], name: string, value: any, fieldName: string): SchemaField[];
|
|
64
65
|
export declare function mergeFields(fields: SchemaField[], name: string, value: any, newFields: SchemaField[]): SchemaField[];
|
|
65
66
|
export declare function addFieldOption(typeField: SchemaField, name: string, value: any): SchemaField;
|
|
66
67
|
export declare function resolveSchemas<A extends SchemaMap>(schemaMap: A): A;
|
package/package.json
CHANGED
package/src/formState.ts
CHANGED
|
@@ -195,7 +195,7 @@ export function createFormState(
|
|
|
195
195
|
Control<any>
|
|
196
196
|
>;
|
|
197
197
|
|
|
198
|
-
const
|
|
198
|
+
const { text, html } = displayOverrides.fields as Record<
|
|
199
199
|
KeysOfUnion<TextDisplay | HtmlDisplay>,
|
|
200
200
|
Control<any>
|
|
201
201
|
>;
|
|
@@ -376,9 +376,17 @@ export function createFormState(
|
|
|
376
376
|
|
|
377
377
|
createSyncEffect(() => {
|
|
378
378
|
if (isDisplayControl(def)) {
|
|
379
|
-
if (
|
|
380
|
-
|
|
381
|
-
|
|
379
|
+
if (display.value !== undefined) {
|
|
380
|
+
text.value = isTextDisplay(def.displayData)
|
|
381
|
+
? display.value
|
|
382
|
+
: NoOverride;
|
|
383
|
+
html.value = isHtmlDisplay(def.displayData)
|
|
384
|
+
? display.value
|
|
385
|
+
: NoOverride;
|
|
386
|
+
} else {
|
|
387
|
+
text.value = NoOverride;
|
|
388
|
+
html.value = NoOverride;
|
|
389
|
+
}
|
|
382
390
|
}
|
|
383
391
|
}, displayOverrides);
|
|
384
392
|
|
|
@@ -492,7 +500,8 @@ export function createOverrideProxy<
|
|
|
492
500
|
return new Proxy(proxyFor, {
|
|
493
501
|
get(target: A, p: string | symbol, receiver: any): any {
|
|
494
502
|
if (Object.hasOwn(overrides, p)) {
|
|
495
|
-
|
|
503
|
+
const nv = overrides[p as keyof B]!.value;
|
|
504
|
+
if (nv !== NoOverride) return nv;
|
|
496
505
|
}
|
|
497
506
|
return Reflect.get(target, p, receiver);
|
|
498
507
|
},
|
|
@@ -513,4 +522,7 @@ export function createOverrideProxy<
|
|
|
513
522
|
});
|
|
514
523
|
}
|
|
515
524
|
|
|
525
|
+
class NoValue {}
|
|
526
|
+
const NoOverride = new NoValue();
|
|
527
|
+
|
|
516
528
|
type KeysOfUnion<T> = T extends T ? keyof T : never;
|
package/src/schemaBuilder.ts
CHANGED
|
@@ -266,6 +266,17 @@ export function mergeField(
|
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
export function mergeOption(
|
|
270
|
+
fields: SchemaField[],
|
|
271
|
+
name: string,
|
|
272
|
+
value: any,
|
|
273
|
+
fieldName: string,
|
|
274
|
+
): SchemaField[] {
|
|
275
|
+
return fields.map((x) =>
|
|
276
|
+
x.field === fieldName ? addFieldOption(x, name, value) : x,
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
269
280
|
export function mergeFields(
|
|
270
281
|
fields: SchemaField[],
|
|
271
282
|
name: string,
|