@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.
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astroapps/forms-core",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
package/src/formState.ts CHANGED
@@ -195,7 +195,7 @@ export function createFormState(
195
195
  Control<any>
196
196
  >;
197
197
 
198
- const df = displayOverrides.fields as Record<
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 (isTextDisplay(def.displayData)) df.text.value = display.value;
380
- else if (isHtmlDisplay(def.displayData))
381
- df.html.value = display.value;
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
- return overrides[p as keyof B]!.value;
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;
@@ -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,