@petrarca/sonnet-forms 0.5.0 → 0.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/README.md +69 -244
- package/dist/index.d.ts +232 -6
- package/dist/index.js +755 -126
- package/dist/index.js.map +1 -1
- package/dist/widget-options.js +72 -1
- package/dist/widget-options.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,10 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import * as React$1 from 'react';
|
|
3
3
|
import React__default, { ComponentType, ReactNode } from 'react';
|
|
4
4
|
import { Input, Textarea, badgeVariants } from '@petrarca/sonnet-ui';
|
|
5
|
-
import { JsonSchemaProperty, UILayoutConfig, JsonSchema, UISchema, UISchemaOptions, FormDiff } from '@petrarca/sonnet-core/schema';
|
|
5
|
+
import { JsonSchemaProperty, UILayoutConfig, JsonSchema, UISchema, UISchemaOptions, FormDiff, RefResolver, FieldError } from '@petrarca/sonnet-core/schema';
|
|
6
6
|
export { UISchema, UISchemaOptions } from '@petrarca/sonnet-core/schema';
|
|
7
7
|
import { VariantProps } from 'class-variance-authority';
|
|
8
|
+
import { SaveWhenInvalid, ValidationDisplay } from '@petrarca/sonnet-core/config';
|
|
8
9
|
|
|
9
10
|
interface FormFieldWrapperProps {
|
|
10
11
|
/** Field id -- wired to the label's htmlFor */
|
|
@@ -419,6 +420,33 @@ interface ObjectContainerTemplateProps {
|
|
|
419
420
|
variant?: string;
|
|
420
421
|
defaultOpen?: boolean;
|
|
421
422
|
}
|
|
423
|
+
/**
|
|
424
|
+
* One group of fields in a grouped layout (a tab, a wizard step, a section).
|
|
425
|
+
* `content` is already laid out -- the template only decides how groups are
|
|
426
|
+
* presented and navigated.
|
|
427
|
+
*/
|
|
428
|
+
interface FieldGroup {
|
|
429
|
+
/** Stable key for React and for the template's own selection state. */
|
|
430
|
+
key: string;
|
|
431
|
+
/** Label shown on the group's trigger, step header or section legend. */
|
|
432
|
+
label: string;
|
|
433
|
+
/** The group's rendered rows. */
|
|
434
|
+
content: React.ReactNode;
|
|
435
|
+
/** Validation errors owned by this group's fields (for a badge). */
|
|
436
|
+
errorCount: number;
|
|
437
|
+
}
|
|
438
|
+
/** Props passed to a GroupLayoutTemplate */
|
|
439
|
+
interface GroupLayoutTemplateProps {
|
|
440
|
+
/** The visible groups, in declaration order. Never empty. */
|
|
441
|
+
groups: FieldGroup[];
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Presents a set of field groups: as tabs, as a wizard, as an accordion --
|
|
445
|
+
* whatever the registered template renders. Selected by
|
|
446
|
+
* `x-ui-layout.variant`, which maps to a TemplateRegistry key, so consumers
|
|
447
|
+
* can register their own presentation without changing the renderer.
|
|
448
|
+
*/
|
|
449
|
+
type GroupLayoutTemplate = (props: GroupLayoutTemplateProps) => React.ReactElement;
|
|
422
450
|
type ArrayItemTemplate = (props: ArrayItemTemplateProps) => React.ReactElement;
|
|
423
451
|
type ArrayHeaderTemplate = (props: ArrayHeaderTemplateProps) => React.ReactElement | null;
|
|
424
452
|
type ObjectContainerTemplate = (props: ObjectContainerTemplateProps) => React.ReactElement;
|
|
@@ -435,6 +463,10 @@ type TemplateRegistry = {
|
|
|
435
463
|
HorizontalArrayItemTemplate?: ArrayItemTemplate;
|
|
436
464
|
ArrayHeaderTemplate?: ArrayHeaderTemplate;
|
|
437
465
|
ObjectContainerTemplate?: ObjectContainerTemplate;
|
|
466
|
+
/** Group presentations, selected by x-ui-layout.variant (default "tabs"). */
|
|
467
|
+
TabsGroupTemplate?: GroupLayoutTemplate;
|
|
468
|
+
StepperGroupTemplate?: GroupLayoutTemplate;
|
|
469
|
+
SectionsGroupTemplate?: GroupLayoutTemplate;
|
|
438
470
|
[templateName: string]: unknown;
|
|
439
471
|
};
|
|
440
472
|
|
|
@@ -632,6 +664,12 @@ interface FormActionsProps {
|
|
|
632
664
|
disabled?: boolean;
|
|
633
665
|
hasChanges: boolean;
|
|
634
666
|
isValid: boolean;
|
|
667
|
+
/**
|
|
668
|
+
* Whether Save is available while invalid. `reveal` (default) keeps it
|
|
669
|
+
* enabled -- an invalid click reveals errors and does not submit; `disable`
|
|
670
|
+
* greys it out while invalid.
|
|
671
|
+
*/
|
|
672
|
+
saveWhenInvalid?: SaveWhenInvalid;
|
|
635
673
|
saveLabel?: string;
|
|
636
674
|
cancelLabel?: string;
|
|
637
675
|
showCancel?: boolean;
|
|
@@ -641,7 +679,7 @@ interface FormActionsProps {
|
|
|
641
679
|
*/
|
|
642
680
|
leadingActions?: ReactNode;
|
|
643
681
|
}
|
|
644
|
-
declare function FormActions({ onSave, onCancel, disabled, hasChanges, isValid, saveLabel, cancelLabel, showCancel, leadingActions, }: FormActionsProps): react_jsx_runtime.JSX.Element;
|
|
682
|
+
declare function FormActions({ onSave, onCancel, disabled, hasChanges, isValid, saveWhenInvalid, saveLabel, cancelLabel, showCancel, leadingActions, }: FormActionsProps): react_jsx_runtime.JSX.Element;
|
|
645
683
|
|
|
646
684
|
type Props = {
|
|
647
685
|
properties: Record<string, any>;
|
|
@@ -814,7 +852,7 @@ declare function EntitySelectWidget({ id, name, value, onChange, onBlur, label,
|
|
|
814
852
|
* compact / label suppression propagates to all nested widgets.
|
|
815
853
|
*/
|
|
816
854
|
|
|
817
|
-
declare function ObjectWidget({ propertySchema, value, onChange, registry, uiSchema, disabled, readonly, label, description, options, }: WidgetProps): React.ReactElement | null;
|
|
855
|
+
declare function ObjectWidget({ id, propertySchema, value, onChange, onBlur, registry, uiSchema, disabled, readonly, label, description, options, }: WidgetProps): React.ReactElement | null;
|
|
818
856
|
|
|
819
857
|
/**
|
|
820
858
|
* ArrayWidget -- renders a repeatable list of sub-forms for
|
|
@@ -839,6 +877,83 @@ declare function ArrayWidget({ propertySchema, value, onChange, registry, uiSche
|
|
|
839
877
|
|
|
840
878
|
declare function QuantityWidget({ id, name, value, onChange, onBlur, propertySchema, required, disabled, readonly, rawErrors, label, description, placeholder, autofocus, options, }: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
841
879
|
|
|
880
|
+
/**
|
|
881
|
+
* DateWidget - date field widget backed by the DateInput primitive.
|
|
882
|
+
*
|
|
883
|
+
* Renders a text input with calendar popover. Value is a partial ISO 8601 date
|
|
884
|
+
* string (`YYYY`, `YYYY-MM`, or `YYYY-MM-DD`). Auto-resolves from schema
|
|
885
|
+
* `format: "date"`, or `x-ui-widget: "date"`.
|
|
886
|
+
*
|
|
887
|
+
* x-ui-options:
|
|
888
|
+
* precision - "year" | "month" | "day" (default "day")
|
|
889
|
+
* locale - BCP-47 locale override (defaults to the app locale)
|
|
890
|
+
*
|
|
891
|
+
* The label/description chrome comes from FormFieldWrapper; the primitive owns
|
|
892
|
+
* the inline error message and invalid border.
|
|
893
|
+
*/
|
|
894
|
+
|
|
895
|
+
declare function DateWidget({ id, value, onChange, onBlur, required, disabled, rawErrors, label, description, placeholder, options, }: WidgetProps): React.ReactElement;
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* TimeWidget - time-of-day field widget backed by the TimeInput primitive.
|
|
899
|
+
*
|
|
900
|
+
* Zone-free time value as a normalized ISO string (`HH:mm` or `HH:mm:ss`).
|
|
901
|
+
* Auto-resolves from schema `format: "time"`, or `x-ui-widget: "time"`.
|
|
902
|
+
*
|
|
903
|
+
* x-ui-options:
|
|
904
|
+
* granularity - "minute" | "second" (default "minute")
|
|
905
|
+
*
|
|
906
|
+
* The label/description chrome comes from FormFieldWrapper; the primitive owns
|
|
907
|
+
* the inline error message and invalid border.
|
|
908
|
+
*/
|
|
909
|
+
|
|
910
|
+
declare function TimeWidget({ id, value, onChange, onBlur, required, disabled, rawErrors, label, description, placeholder, options, }: WidgetProps): React.ReactElement;
|
|
911
|
+
|
|
912
|
+
/**
|
|
913
|
+
* DateTimeWidget - date + time field widget backed by the DateTimeInput primitive.
|
|
914
|
+
*
|
|
915
|
+
* Plain wall-clock value as an ISO string (`YYYY-MM-DDTHH:mm[:ss]`), no
|
|
916
|
+
* timezone. Auto-resolves from schema `format: "date-time"`, or
|
|
917
|
+
* `x-ui-widget: "date-time"`.
|
|
918
|
+
*
|
|
919
|
+
* x-ui-options:
|
|
920
|
+
* granularity - "minute" | "second" (default "minute")
|
|
921
|
+
* timeZone - IANA id shown as a display-only hint (never applied)
|
|
922
|
+
* locale - BCP-47 locale override for the date part
|
|
923
|
+
*
|
|
924
|
+
* The label/description chrome comes from FormFieldWrapper; the primitive owns
|
|
925
|
+
* the inline error message and invalid border.
|
|
926
|
+
*/
|
|
927
|
+
|
|
928
|
+
declare function DateTimeWidget({ id, value, onChange, onBlur, required, disabled, rawErrors, label, description, options, }: WidgetProps): React.ReactElement;
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* DisplayWidget - read-only text block, no data binding.
|
|
932
|
+
*
|
|
933
|
+
* Renders a property's title (and optional description) as static text --
|
|
934
|
+
* instructions, notes, disclaimers placed between fields. Collects no value.
|
|
935
|
+
* Auto-resolves from `type: "null"`, or `x-ui-widget: "display"`.
|
|
936
|
+
*
|
|
937
|
+
* Modeled as a value-less property so it participates in field ordering and
|
|
938
|
+
* layout (appears exactly where placed). It never contributes to form data.
|
|
939
|
+
*/
|
|
940
|
+
|
|
941
|
+
declare function DisplayWidget({ label, description, }: WidgetProps): React.ReactElement | null;
|
|
942
|
+
|
|
943
|
+
/**
|
|
944
|
+
* OneOfWidget -- renders a discriminated union (oneOf).
|
|
945
|
+
*
|
|
946
|
+
* A branch selector (reusing the Select primitive) chooses one of the property's
|
|
947
|
+
* `oneOf` branches; the selected branch's object sub-schema is then rendered as
|
|
948
|
+
* a nested sub-form (same pattern as ObjectWidget). The active branch is tracked
|
|
949
|
+
* by the discriminator property (see the oneOf helpers in
|
|
950
|
+
* @petrarca/sonnet-core/schema).
|
|
951
|
+
*
|
|
952
|
+
* Auto-resolves when a property has `oneOf`, or via `x-ui-widget: "one-of"`.
|
|
953
|
+
*/
|
|
954
|
+
|
|
955
|
+
declare function OneOfWidget({ propertySchema, value, onChange, registry, uiSchema, disabled, readonly, label, description, id, options, }: WidgetProps): React.ReactElement | null;
|
|
956
|
+
|
|
842
957
|
/**
|
|
843
958
|
* Widget Resolution Algorithm
|
|
844
959
|
*
|
|
@@ -977,6 +1092,23 @@ type JsonSchemaFormRendererProps = {
|
|
|
977
1092
|
* field validation still applies. Default false (edit semantics).
|
|
978
1093
|
*/
|
|
979
1094
|
allowPristineSave?: boolean;
|
|
1095
|
+
/**
|
|
1096
|
+
* Optional resolver for non-local `$ref`s (schema-registry id / canonical
|
|
1097
|
+
* URI). Tried before the in-document `$defs` fallback. Synchronous -- the
|
|
1098
|
+
* caller pre-loads referenced schemas into a map and passes a lookup.
|
|
1099
|
+
*/
|
|
1100
|
+
refResolver?: RefResolver;
|
|
1101
|
+
/**
|
|
1102
|
+
* When to reveal field validation errors. Overrides the app-wide default set
|
|
1103
|
+
* in SonnetConfigProvider globals. Defaults to `onSubmit`.
|
|
1104
|
+
*/
|
|
1105
|
+
validationDisplay?: ValidationDisplay;
|
|
1106
|
+
/**
|
|
1107
|
+
* Whether Save is available while the form is invalid. Overrides the app-wide
|
|
1108
|
+
* default set in SonnetConfigProvider globals. Defaults to `reveal` (Save
|
|
1109
|
+
* stays enabled; an invalid click reveals errors and does not submit).
|
|
1110
|
+
*/
|
|
1111
|
+
saveWhenInvalid?: SaveWhenInvalid;
|
|
980
1112
|
/** Label for Save button (default: "Save") */
|
|
981
1113
|
saveLabel?: string;
|
|
982
1114
|
/** Label for Cancel button (default: "Cancel") */
|
|
@@ -1063,8 +1195,10 @@ interface FormFieldRendererProps {
|
|
|
1063
1195
|
* to keep ids unique.
|
|
1064
1196
|
*/
|
|
1065
1197
|
idPrefix?: string;
|
|
1198
|
+
/** Validation messages for this field, rendered inline by the widget. */
|
|
1199
|
+
rawErrors?: string[];
|
|
1066
1200
|
}
|
|
1067
|
-
declare function FormFieldRenderer({ fieldName, property, value, onChange, onBlur, required, disabled, readOnly, schema, uiSchema, registry, globalOptions, formData, idPrefix, }: FormFieldRendererProps): React__default.ReactElement | null;
|
|
1201
|
+
declare function FormFieldRenderer({ fieldName, property, value, onChange, onBlur, required, disabled, readOnly, schema, uiSchema, registry, globalOptions, formData, idPrefix, rawErrors, }: FormFieldRendererProps): React__default.ReactElement | null;
|
|
1068
1202
|
|
|
1069
1203
|
/**
|
|
1070
1204
|
* useFormEngine - Core form state, schema resolution, and update-mode logic
|
|
@@ -1108,6 +1242,12 @@ interface UseFormEngineOptions {
|
|
|
1108
1242
|
* Validation (required fields) still applies. Default false (edit semantics).
|
|
1109
1243
|
*/
|
|
1110
1244
|
allowPristineSave?: boolean;
|
|
1245
|
+
/**
|
|
1246
|
+
* Optional resolver for non-local `$ref`s (e.g. a schema-registry id or
|
|
1247
|
+
* canonical URI). Tried before the in-document `$defs` fallback. Must be
|
|
1248
|
+
* synchronous -- pre-load referenced schemas into a map and pass a lookup.
|
|
1249
|
+
*/
|
|
1250
|
+
refResolver?: RefResolver;
|
|
1111
1251
|
}
|
|
1112
1252
|
interface UseFormEngineResult {
|
|
1113
1253
|
/** The current working form data (for controlled field values) */
|
|
@@ -1123,12 +1263,21 @@ interface UseFormEngineResult {
|
|
|
1123
1263
|
orderedProperties: [string, JsonSchemaProperty][];
|
|
1124
1264
|
hasChanges: boolean;
|
|
1125
1265
|
isValid: boolean;
|
|
1266
|
+
/**
|
|
1267
|
+
* Current validation errors, each attributed to its field by JSON Pointer.
|
|
1268
|
+
* Lets the renderer surface problems for fields that are not on screen.
|
|
1269
|
+
*/
|
|
1270
|
+
fieldErrors: FieldError[];
|
|
1271
|
+
/** Fields the user has touched (focused then blurred). */
|
|
1272
|
+
touched: Record<string, boolean>;
|
|
1273
|
+
/** Whether a save has been attempted (reveals all errors under any policy). */
|
|
1274
|
+
submitAttempted: boolean;
|
|
1126
1275
|
handleFieldChange: (fieldName: string, value: any) => void;
|
|
1127
1276
|
handleFieldBlur: (fieldName: string) => void;
|
|
1128
1277
|
handleSave: () => void;
|
|
1129
1278
|
handleCancel: () => void;
|
|
1130
1279
|
}
|
|
1131
|
-
declare function useFormEngine({ schema, data, uiSchema, onChange, onBlur, onValidationChange, onUpdate, onCancel, readOnly, showActions, deferChanges, deferStateUpdates, allowPristineSave, }: UseFormEngineOptions): UseFormEngineResult;
|
|
1280
|
+
declare function useFormEngine({ schema, data, uiSchema, onChange, onBlur, onValidationChange, onUpdate, onCancel, readOnly, showActions, deferChanges, deferStateUpdates, allowPristineSave, refResolver, }: UseFormEngineOptions): UseFormEngineResult;
|
|
1132
1281
|
|
|
1133
1282
|
/**
|
|
1134
1283
|
* useResolvedSchema - Schema resolution and property ordering
|
|
@@ -1174,6 +1323,19 @@ type NestedRenderer = (props: Omit<JsonSchemaFormRendererProps, "onUpdate" | "on
|
|
|
1174
1323
|
interface NestedFormContextValue {
|
|
1175
1324
|
renderer: NestedRenderer;
|
|
1176
1325
|
templates: TemplateRegistry;
|
|
1326
|
+
/**
|
|
1327
|
+
* The whole form's data, carried down so a nested renderer can evaluate an
|
|
1328
|
+
* `x-ui-rule` scope against the form root rather than its own slice.
|
|
1329
|
+
*
|
|
1330
|
+
* Every other JSON Pointer in the vocabulary (`editablePaths`, validation
|
|
1331
|
+
* error pointers) is root-anchored; without this, a rule on a nested field
|
|
1332
|
+
* could only ever see its immediate object, so a rule referencing a
|
|
1333
|
+
* top-level field silently never fired.
|
|
1334
|
+
*
|
|
1335
|
+
* The outermost renderer sets this to its own data; nested renderers inherit
|
|
1336
|
+
* it unchanged.
|
|
1337
|
+
*/
|
|
1338
|
+
rootData: Record<string, unknown>;
|
|
1177
1339
|
}
|
|
1178
1340
|
|
|
1179
1341
|
/**
|
|
@@ -1190,6 +1352,63 @@ interface NestedFormContextValue {
|
|
|
1190
1352
|
|
|
1191
1353
|
declare function useNestedFormContext(): NestedFormContextValue;
|
|
1192
1354
|
|
|
1355
|
+
/**
|
|
1356
|
+
* TabsGroupTemplate -- presents field groups as a tab bar (the default for
|
|
1357
|
+
* `x-ui-layout.tabs`).
|
|
1358
|
+
*
|
|
1359
|
+
* Selection is controlled and clamped to a group that still exists, so hiding
|
|
1360
|
+
* the group the user is on (via its rule) falls back to the first remaining one
|
|
1361
|
+
* instead of leaving an empty body.
|
|
1362
|
+
*/
|
|
1363
|
+
|
|
1364
|
+
declare function TabsGroupTemplate({ groups, }: GroupLayoutTemplateProps): React__default.ReactElement;
|
|
1365
|
+
|
|
1366
|
+
/**
|
|
1367
|
+
* StepperGroupTemplate -- presents field groups as a wizard
|
|
1368
|
+
* (`x-ui-layout.variant: "stepper"`).
|
|
1369
|
+
*
|
|
1370
|
+
* Same group model as the tab presentation, different chrome: a numbered step
|
|
1371
|
+
* rail plus Back/Next. Steps stay directly clickable so the user is never
|
|
1372
|
+
* trapped; validation gating is deliberately not applied here, because a
|
|
1373
|
+
* group's errors are advisory (the badge) rather than a hard barrier.
|
|
1374
|
+
*
|
|
1375
|
+
* Selection is controlled and clamped to a group that still exists, so hiding
|
|
1376
|
+
* the step the user is on falls back to the first remaining one.
|
|
1377
|
+
*/
|
|
1378
|
+
|
|
1379
|
+
declare function StepperGroupTemplate({ groups, }: GroupLayoutTemplateProps): React__default.ReactElement;
|
|
1380
|
+
|
|
1381
|
+
/**
|
|
1382
|
+
* SectionsGroupTemplate -- presents field groups as stacked titled sections
|
|
1383
|
+
* (`x-ui-layout.variant: "sections"`).
|
|
1384
|
+
*
|
|
1385
|
+
* Unlike tabs and stepper, every group is visible at once. This is the
|
|
1386
|
+
* multi-row counterpart to a row's `group` fieldset: a section holds as many
|
|
1387
|
+
* rows as it likes, whereas `row.group` wraps exactly one.
|
|
1388
|
+
*
|
|
1389
|
+
* No selection state, so nothing to clamp -- a group hidden by its rule simply
|
|
1390
|
+
* does not appear.
|
|
1391
|
+
*/
|
|
1392
|
+
|
|
1393
|
+
declare function SectionsGroupTemplate({ groups, }: GroupLayoutTemplateProps): React__default.ReactElement;
|
|
1394
|
+
|
|
1395
|
+
/**
|
|
1396
|
+
* GroupErrorBadge -- marks a group's trigger (tab or step) as having
|
|
1397
|
+
* validation errors. Shared by the built-in group templates.
|
|
1398
|
+
*
|
|
1399
|
+
* Deliberately just the icon: a trigger sits in a dense strip alongside its
|
|
1400
|
+
* label and, in a stepper, a step number, so a second numeral reads as clutter
|
|
1401
|
+
* and competes with the step index. The exact count stays available as the
|
|
1402
|
+
* accessible name and the tooltip, and the form-level summary reports totals.
|
|
1403
|
+
*
|
|
1404
|
+
* The signal is a shape, not a colour, so it survives a colour-vision
|
|
1405
|
+
* deficiency or a greyscale print.
|
|
1406
|
+
*/
|
|
1407
|
+
|
|
1408
|
+
declare function GroupErrorBadge({ count, }: {
|
|
1409
|
+
count: number;
|
|
1410
|
+
}): React__default.ReactElement | null;
|
|
1411
|
+
|
|
1193
1412
|
/**
|
|
1194
1413
|
* Default templates for structural layout rendering.
|
|
1195
1414
|
*
|
|
@@ -1207,5 +1426,12 @@ declare function useNestedFormContext(): NestedFormContextValue;
|
|
|
1207
1426
|
* schema property for per-field overrides.
|
|
1208
1427
|
*/
|
|
1209
1428
|
declare const DEFAULT_TEMPLATES: TemplateRegistry;
|
|
1429
|
+
/**
|
|
1430
|
+
* The TemplateRegistry key for a group-layout variant. The variant name maps
|
|
1431
|
+
* directly to a template name, so a consumer can register
|
|
1432
|
+
* `WizardGroupTemplate` and select it with `variant: "wizard"` -- no library
|
|
1433
|
+
* change needed. Unknown variants fall back to the tab presentation.
|
|
1434
|
+
*/
|
|
1435
|
+
declare function groupTemplateKey(variant: string | undefined): string;
|
|
1210
1436
|
|
|
1211
|
-
export { type ArrayHeaderTemplate, type ArrayHeaderTemplateProps, type ArrayItemTemplate, type ArrayItemTemplateProps, ArrayWidget, CheckboxWidget, DEFAULT_TEMPLATES, DEFAULT_WIDGETS, DEFAULT_WIDGET_MAP, EntitySelectWidget, ExtraPropertiesCard, FormActions, FormCheckbox, FormFieldRenderer, FormFieldWrapper, type FormFieldWrapperProps, FormInput, FormMultiSelect, FormNumberInput, FormQuantityInput, FormSelect, FormTagsInput, FormTextarea, JsonEditorWidget, JsonSchemaFormRenderer, type JsonSchemaFormRendererProps, type NestedFormContextValue, type NestedRenderer, NumberWidget, type ObjectContainerTemplate, type ObjectContainerTemplateProps, ObjectWidget, type QuantityValue, QuantityWidget, type SelectOption, SelectWidget, TagsInputWidget, type TemplateRegistry, TextInputWidget, TextareaWidget, type UnitOption, type UnitPosition, type Widget, type WidgetDescriptor, type WidgetMap, type WidgetProps, type WidgetRegistry, firstError, getAriaDescribedBy, getDefaultWidgetForType, resolveWidget, useFormEngine, useNestedFormContext, useResolvedSchema };
|
|
1437
|
+
export { type ArrayHeaderTemplate, type ArrayHeaderTemplateProps, type ArrayItemTemplate, type ArrayItemTemplateProps, ArrayWidget, CheckboxWidget, DEFAULT_TEMPLATES, DEFAULT_WIDGETS, DEFAULT_WIDGET_MAP, DateTimeWidget, DateWidget, DisplayWidget, EntitySelectWidget, ExtraPropertiesCard, type FieldGroup, FormActions, FormCheckbox, FormFieldRenderer, FormFieldWrapper, type FormFieldWrapperProps, FormInput, FormMultiSelect, FormNumberInput, FormQuantityInput, FormSelect, FormTagsInput, FormTextarea, GroupErrorBadge, type GroupLayoutTemplate, type GroupLayoutTemplateProps, JsonEditorWidget, JsonSchemaFormRenderer, type JsonSchemaFormRendererProps, type NestedFormContextValue, type NestedRenderer, NumberWidget, type ObjectContainerTemplate, type ObjectContainerTemplateProps, ObjectWidget, OneOfWidget, type QuantityValue, QuantityWidget, SectionsGroupTemplate, type SelectOption, SelectWidget, StepperGroupTemplate, TabsGroupTemplate, TagsInputWidget, type TemplateRegistry, TextInputWidget, TextareaWidget, TimeWidget, type UnitOption, type UnitPosition, type Widget, type WidgetDescriptor, type WidgetMap, type WidgetProps, type WidgetRegistry, firstError, getAriaDescribedBy, getDefaultWidgetForType, groupTemplateKey, resolveWidget, useFormEngine, useNestedFormContext, useResolvedSchema };
|