@astroapps/forms-core 1.1.0 → 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/formState.d.ts +1 -0
- package/lib/index.cjs +29 -11
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +26 -12
- package/lib/index.js.map +1 -1
- package/lib/schemaBuilder.d.ts +1 -0
- package/package.json +1 -1
- package/src/formState.ts +36 -30
- 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
|
@@ -48,6 +48,7 @@ export interface ControlState {
|
|
|
48
48
|
definition: ControlDefinition;
|
|
49
49
|
schemaInterface: SchemaInterface;
|
|
50
50
|
dataNode?: SchemaDataNode | undefined;
|
|
51
|
+
display?: string;
|
|
51
52
|
stateId?: string;
|
|
52
53
|
style?: object;
|
|
53
54
|
layoutStyle?: object;
|
|
@@ -194,39 +195,11 @@ export function createFormState(
|
|
|
194
195
|
Control<any>
|
|
195
196
|
>;
|
|
196
197
|
|
|
197
|
-
const
|
|
198
|
+
const { text, html } = displayOverrides.fields as Record<
|
|
198
199
|
KeysOfUnion<TextDisplay | HtmlDisplay>,
|
|
199
200
|
Control<any>
|
|
200
201
|
>;
|
|
201
202
|
|
|
202
|
-
createScopedEffect((c) => {
|
|
203
|
-
const textDisplay =
|
|
204
|
-
isDisplayControl(def) && isTextDisplay(def.displayData)
|
|
205
|
-
? def.displayData
|
|
206
|
-
: undefined;
|
|
207
|
-
evalExpr(
|
|
208
|
-
c,
|
|
209
|
-
textDisplay?.text,
|
|
210
|
-
df.text,
|
|
211
|
-
textDisplay && firstExpr(formNode, DynamicPropertyType.Display),
|
|
212
|
-
coerceString,
|
|
213
|
-
);
|
|
214
|
-
}, displayOverrides);
|
|
215
|
-
|
|
216
|
-
createScopedEffect((c) => {
|
|
217
|
-
const htmlDisplay =
|
|
218
|
-
isDisplayControl(def) && isHtmlDisplay(def.displayData)
|
|
219
|
-
? def.displayData
|
|
220
|
-
: undefined;
|
|
221
|
-
evalExpr(
|
|
222
|
-
c,
|
|
223
|
-
htmlDisplay?.html,
|
|
224
|
-
df.html,
|
|
225
|
-
htmlDisplay && firstExpr(formNode, DynamicPropertyType.Display),
|
|
226
|
-
coerceString,
|
|
227
|
-
);
|
|
228
|
-
}, displayOverrides);
|
|
229
|
-
|
|
230
203
|
updateComputedValue(of.displayData, () =>
|
|
231
204
|
isDisplayControl(def)
|
|
232
205
|
? createOverrideProxy(def.displayData, displayOverrides)
|
|
@@ -319,6 +292,7 @@ export function createFormState(
|
|
|
319
292
|
allowedOptions,
|
|
320
293
|
disabled,
|
|
321
294
|
variables,
|
|
295
|
+
display,
|
|
322
296
|
} = control.fields;
|
|
323
297
|
|
|
324
298
|
createScopedEffect(
|
|
@@ -357,6 +331,18 @@ export function createFormState(
|
|
|
357
331
|
scope,
|
|
358
332
|
);
|
|
359
333
|
|
|
334
|
+
createScopedEffect(
|
|
335
|
+
(c) =>
|
|
336
|
+
evalExpr(
|
|
337
|
+
c,
|
|
338
|
+
undefined,
|
|
339
|
+
display,
|
|
340
|
+
firstExpr(formNode, DynamicPropertyType.Display),
|
|
341
|
+
coerceString,
|
|
342
|
+
),
|
|
343
|
+
scope,
|
|
344
|
+
);
|
|
345
|
+
|
|
360
346
|
updateComputedValue(dataNode, () => lookupDataNode(definition, parent));
|
|
361
347
|
updateComputedValue(
|
|
362
348
|
hidden,
|
|
@@ -388,6 +374,22 @@ export function createFormState(
|
|
|
388
374
|
}
|
|
389
375
|
}, scope);
|
|
390
376
|
|
|
377
|
+
createSyncEffect(() => {
|
|
378
|
+
if (isDisplayControl(def)) {
|
|
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
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}, displayOverrides);
|
|
392
|
+
|
|
391
393
|
setupValidation(
|
|
392
394
|
controlImpl,
|
|
393
395
|
definition,
|
|
@@ -498,7 +500,8 @@ export function createOverrideProxy<
|
|
|
498
500
|
return new Proxy(proxyFor, {
|
|
499
501
|
get(target: A, p: string | symbol, receiver: any): any {
|
|
500
502
|
if (Object.hasOwn(overrides, p)) {
|
|
501
|
-
|
|
503
|
+
const nv = overrides[p as keyof B]!.value;
|
|
504
|
+
if (nv !== NoOverride) return nv;
|
|
502
505
|
}
|
|
503
506
|
return Reflect.get(target, p, receiver);
|
|
504
507
|
},
|
|
@@ -519,4 +522,7 @@ export function createOverrideProxy<
|
|
|
519
522
|
});
|
|
520
523
|
}
|
|
521
524
|
|
|
525
|
+
class NoValue {}
|
|
526
|
+
const NoOverride = new NoValue();
|
|
527
|
+
|
|
522
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,
|