@rjsf/core 6.6.1 → 6.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/LICENSE.md +201 -0
- package/dist/core.umd.js +694 -584
- package/dist/index.cjs +1191 -1071
- package/dist/index.cjs.map +4 -4
- package/dist/index.esm.js +1030 -984
- package/dist/index.esm.js.map +4 -4
- package/lib/components/Form.d.ts +16 -13
- package/lib/components/Form.d.ts.map +1 -1
- package/lib/components/Form.js +126 -76
- package/lib/components/RichDescription.d.ts +3 -3
- package/lib/components/RichDescription.d.ts.map +1 -1
- package/lib/components/RichDescription.js +1 -1
- package/lib/components/RichHelp.d.ts +3 -3
- package/lib/components/RichHelp.d.ts.map +1 -1
- package/lib/components/RichHelp.js +1 -1
- package/lib/components/SchemaExamples.d.ts +2 -2
- package/lib/components/SchemaExamples.d.ts.map +1 -1
- package/lib/components/SchemaExamples.js +1 -3
- package/lib/components/fields/ArrayField.d.ts +2 -2
- package/lib/components/fields/ArrayField.d.ts.map +1 -1
- package/lib/components/fields/ArrayField.js +87 -88
- package/lib/components/fields/BooleanField.d.ts +2 -2
- package/lib/components/fields/BooleanField.d.ts.map +1 -1
- package/lib/components/fields/BooleanField.js +2 -5
- package/lib/components/fields/CyclicSchemaField.d.ts +8 -0
- package/lib/components/fields/CyclicSchemaField.d.ts.map +1 -0
- package/lib/components/fields/CyclicSchemaField.js +21 -0
- package/lib/components/fields/FallbackField.d.ts +2 -2
- package/lib/components/fields/FallbackField.d.ts.map +1 -1
- package/lib/components/fields/FallbackField.js +2 -2
- package/lib/components/fields/LayoutGridField.d.ts +8 -10
- package/lib/components/fields/LayoutGridField.d.ts.map +1 -1
- package/lib/components/fields/LayoutGridField.js +5 -4
- package/lib/components/fields/LayoutHeaderField.d.ts +2 -2
- package/lib/components/fields/LayoutHeaderField.d.ts.map +1 -1
- package/lib/components/fields/LayoutHeaderField.js +1 -1
- package/lib/components/fields/LayoutMultiSchemaField.d.ts +2 -2
- package/lib/components/fields/LayoutMultiSchemaField.d.ts.map +1 -1
- package/lib/components/fields/LayoutMultiSchemaField.js +4 -1
- package/lib/components/fields/MultiSchemaField.d.ts +2 -41
- package/lib/components/fields/MultiSchemaField.d.ts.map +1 -1
- package/lib/components/fields/MultiSchemaField.js +116 -122
- package/lib/components/fields/NullField.d.ts +1 -1
- package/lib/components/fields/NullField.d.ts.map +1 -1
- package/lib/components/fields/NumberField.d.ts +2 -2
- package/lib/components/fields/NumberField.d.ts.map +1 -1
- package/lib/components/fields/NumberField.js +7 -9
- package/lib/components/fields/ObjectField.d.ts +2 -2
- package/lib/components/fields/ObjectField.d.ts.map +1 -1
- package/lib/components/fields/ObjectField.js +28 -26
- package/lib/components/fields/OptionalDataControlsField.d.ts +2 -2
- package/lib/components/fields/OptionalDataControlsField.d.ts.map +1 -1
- package/lib/components/fields/SchemaField.d.ts +14 -8
- package/lib/components/fields/SchemaField.d.ts.map +1 -1
- package/lib/components/fields/SchemaField.js +43 -30
- package/lib/components/fields/StringField.d.ts +2 -2
- package/lib/components/fields/StringField.d.ts.map +1 -1
- package/lib/components/fields/StringField.js +2 -5
- package/lib/components/fields/index.d.ts +1 -1
- package/lib/components/fields/index.d.ts.map +1 -1
- package/lib/components/fields/index.js +2 -0
- package/lib/components/templates/ArrayFieldDescriptionTemplate.d.ts +2 -2
- package/lib/components/templates/ArrayFieldDescriptionTemplate.d.ts.map +1 -1
- package/lib/components/templates/ArrayFieldDescriptionTemplate.js +1 -1
- package/lib/components/templates/ArrayFieldItemButtonsTemplate.d.ts +2 -2
- package/lib/components/templates/ArrayFieldItemButtonsTemplate.d.ts.map +1 -1
- package/lib/components/templates/ArrayFieldItemButtonsTemplate.js +1 -1
- package/lib/components/templates/ArrayFieldItemTemplate.d.ts +2 -2
- package/lib/components/templates/ArrayFieldItemTemplate.d.ts.map +1 -1
- package/lib/components/templates/ArrayFieldItemTemplate.js +1 -1
- package/lib/components/templates/ArrayFieldTemplate.d.ts +2 -2
- package/lib/components/templates/ArrayFieldTemplate.d.ts.map +1 -1
- package/lib/components/templates/ArrayFieldTemplate.js +1 -1
- package/lib/components/templates/ArrayFieldTitleTemplate.d.ts +2 -2
- package/lib/components/templates/ArrayFieldTitleTemplate.d.ts.map +1 -1
- package/lib/components/templates/ArrayFieldTitleTemplate.js +1 -1
- package/lib/components/templates/BaseInputTemplate.d.ts +2 -2
- package/lib/components/templates/BaseInputTemplate.d.ts.map +1 -1
- package/lib/components/templates/BaseInputTemplate.js +7 -6
- package/lib/components/templates/ButtonTemplates/AddButton.d.ts +2 -2
- package/lib/components/templates/ButtonTemplates/AddButton.d.ts.map +1 -1
- package/lib/components/templates/ButtonTemplates/IconButton.d.ts +14 -7
- package/lib/components/templates/ButtonTemplates/IconButton.d.ts.map +1 -1
- package/lib/components/templates/ButtonTemplates/IconButton.js +14 -6
- package/lib/components/templates/ButtonTemplates/SubmitButton.d.ts +2 -2
- package/lib/components/templates/ButtonTemplates/SubmitButton.d.ts.map +1 -1
- package/lib/components/templates/ButtonTemplates/index.d.ts +1 -1
- package/lib/components/templates/ButtonTemplates/index.d.ts.map +1 -1
- package/lib/components/templates/CyclicSchemaExpandTemplate.d.ts +7 -0
- package/lib/components/templates/CyclicSchemaExpandTemplate.d.ts.map +1 -0
- package/lib/components/templates/CyclicSchemaExpandTemplate.js +12 -0
- package/lib/components/templates/DescriptionField.d.ts +2 -2
- package/lib/components/templates/DescriptionField.d.ts.map +1 -1
- package/lib/components/templates/ErrorList.d.ts +2 -2
- package/lib/components/templates/ErrorList.d.ts.map +1 -1
- package/lib/components/templates/ErrorList.js +2 -4
- package/lib/components/templates/FallbackFieldTemplate.d.ts +2 -2
- package/lib/components/templates/FallbackFieldTemplate.d.ts.map +1 -1
- package/lib/components/templates/FieldErrorTemplate.d.ts +2 -2
- package/lib/components/templates/FieldErrorTemplate.d.ts.map +1 -1
- package/lib/components/templates/FieldErrorTemplate.js +1 -3
- package/lib/components/templates/FieldHelpTemplate.d.ts +2 -2
- package/lib/components/templates/FieldHelpTemplate.d.ts.map +1 -1
- package/lib/components/templates/FieldTemplate/FieldTemplate.d.ts +2 -2
- package/lib/components/templates/FieldTemplate/FieldTemplate.d.ts.map +1 -1
- package/lib/components/templates/FieldTemplate/FieldTemplate.js +1 -1
- package/lib/components/templates/FieldTemplate/Label.d.ts +3 -3
- package/lib/components/templates/FieldTemplate/Label.d.ts.map +1 -1
- package/lib/components/templates/GridTemplate.d.ts +2 -2
- package/lib/components/templates/GridTemplate.d.ts.map +1 -1
- package/lib/components/templates/MultiSchemaFieldTemplate.d.ts +2 -2
- package/lib/components/templates/MultiSchemaFieldTemplate.d.ts.map +1 -1
- package/lib/components/templates/ObjectFieldTemplate.d.ts +2 -2
- package/lib/components/templates/ObjectFieldTemplate.d.ts.map +1 -1
- package/lib/components/templates/ObjectFieldTemplate.js +1 -1
- package/lib/components/templates/OptionalDataControlsTemplate.d.ts +2 -2
- package/lib/components/templates/OptionalDataControlsTemplate.d.ts.map +1 -1
- package/lib/components/templates/OptionalDataControlsTemplate.js +1 -1
- package/lib/components/templates/TitleField.d.ts +2 -2
- package/lib/components/templates/TitleField.d.ts.map +1 -1
- package/lib/components/templates/UnsupportedField.d.ts +2 -2
- package/lib/components/templates/UnsupportedField.d.ts.map +1 -1
- package/lib/components/templates/UnsupportedField.js +2 -2
- package/lib/components/templates/WrapIfAdditionalTemplate.d.ts +2 -2
- package/lib/components/templates/WrapIfAdditionalTemplate.d.ts.map +1 -1
- package/lib/components/templates/WrapIfAdditionalTemplate.js +1 -1
- package/lib/components/templates/index.d.ts +1 -1
- package/lib/components/templates/index.d.ts.map +1 -1
- package/lib/components/templates/index.js +2 -0
- package/lib/components/widgets/AltDateTimeWidget.d.ts +2 -2
- package/lib/components/widgets/AltDateTimeWidget.d.ts.map +1 -1
- package/lib/components/widgets/AltDateWidget.d.ts +2 -2
- package/lib/components/widgets/AltDateWidget.d.ts.map +1 -1
- package/lib/components/widgets/AltDateWidget.js +2 -2
- package/lib/components/widgets/CheckboxWidget.d.ts +2 -2
- package/lib/components/widgets/CheckboxWidget.d.ts.map +1 -1
- package/lib/components/widgets/CheckboxesWidget.d.ts +2 -2
- package/lib/components/widgets/CheckboxesWidget.d.ts.map +1 -1
- package/lib/components/widgets/CheckboxesWidget.js +4 -4
- package/lib/components/widgets/ColorWidget.d.ts +2 -2
- package/lib/components/widgets/ColorWidget.d.ts.map +1 -1
- package/lib/components/widgets/DateTimeWidget.d.ts +2 -2
- package/lib/components/widgets/DateTimeWidget.d.ts.map +1 -1
- package/lib/components/widgets/DateTimeWidget.js +2 -2
- package/lib/components/widgets/DateWidget.d.ts +2 -2
- package/lib/components/widgets/DateWidget.d.ts.map +1 -1
- package/lib/components/widgets/EmailWidget.d.ts +2 -2
- package/lib/components/widgets/EmailWidget.d.ts.map +1 -1
- package/lib/components/widgets/FileWidget.d.ts +2 -2
- package/lib/components/widgets/FileWidget.d.ts.map +1 -1
- package/lib/components/widgets/FileWidget.js +6 -4
- package/lib/components/widgets/HiddenWidget.d.ts +2 -2
- package/lib/components/widgets/HiddenWidget.d.ts.map +1 -1
- package/lib/components/widgets/PasswordWidget.d.ts +2 -2
- package/lib/components/widgets/PasswordWidget.d.ts.map +1 -1
- package/lib/components/widgets/RadioWidget.d.ts +2 -2
- package/lib/components/widgets/RadioWidget.d.ts.map +1 -1
- package/lib/components/widgets/RadioWidget.js +4 -4
- package/lib/components/widgets/RangeWidget.d.ts +2 -2
- package/lib/components/widgets/RangeWidget.d.ts.map +1 -1
- package/lib/components/widgets/RatingWidget.d.ts +2 -2
- package/lib/components/widgets/RatingWidget.d.ts.map +1 -1
- package/lib/components/widgets/RatingWidget.js +15 -15
- package/lib/components/widgets/SelectWidget.d.ts +2 -2
- package/lib/components/widgets/SelectWidget.d.ts.map +1 -1
- package/lib/components/widgets/SelectWidget.js +9 -8
- package/lib/components/widgets/TextWidget.d.ts +2 -2
- package/lib/components/widgets/TextWidget.d.ts.map +1 -1
- package/lib/components/widgets/TextareaWidget.d.ts +2 -2
- package/lib/components/widgets/TextareaWidget.d.ts.map +1 -1
- package/lib/components/widgets/TextareaWidget.js +5 -5
- package/lib/components/widgets/TimeWidget.d.ts +2 -2
- package/lib/components/widgets/TimeWidget.d.ts.map +1 -1
- package/lib/components/widgets/URLWidget.d.ts +2 -2
- package/lib/components/widgets/URLWidget.d.ts.map +1 -1
- package/lib/components/widgets/UpDownWidget.d.ts +2 -2
- package/lib/components/widgets/UpDownWidget.d.ts.map +1 -1
- package/lib/components/widgets/index.d.ts +1 -1
- package/lib/components/widgets/index.d.ts.map +1 -1
- package/lib/getDefaultRegistry.d.ts +1 -1
- package/lib/getDefaultRegistry.d.ts.map +1 -1
- package/lib/getDefaultRegistry.js +1 -1
- package/lib/getTestRegistry.d.ts +1 -1
- package/lib/getTestRegistry.d.ts.map +1 -1
- package/lib/getTestRegistry.js +1 -1
- package/lib/index.d.ts +10 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/withTheme.d.ts +3 -3
- package/lib/withTheme.d.ts.map +1 -1
- package/lib/withTheme.js +6 -6
- package/package.json +28 -28
- package/src/components/Form.tsx +197 -111
- package/src/components/RichDescription.tsx +3 -10
- package/src/components/RichHelp.tsx +3 -10
- package/src/components/SchemaExamples.tsx +6 -4
- package/src/components/fields/ArrayField.tsx +122 -108
- package/src/components/fields/BooleanField.tsx +4 -9
- package/src/components/fields/CyclicSchemaField.tsx +40 -0
- package/src/components/fields/FallbackField.tsx +4 -8
- package/src/components/fields/LayoutGridField.tsx +21 -19
- package/src/components/fields/LayoutHeaderField.tsx +2 -10
- package/src/components/fields/LayoutMultiSchemaField.tsx +15 -10
- package/src/components/fields/MultiSchemaField.tsx +202 -218
- package/src/components/fields/NullField.tsx +1 -1
- package/src/components/fields/NumberField.tsx +8 -10
- package/src/components/fields/ObjectField.tsx +52 -40
- package/src/components/fields/OptionalDataControlsField.tsx +6 -4
- package/src/components/fields/SchemaField.tsx +66 -51
- package/src/components/fields/StringField.tsx +4 -15
- package/src/components/fields/index.ts +3 -1
- package/src/components/templates/ArrayFieldDescriptionTemplate.tsx +2 -9
- package/src/components/templates/ArrayFieldItemButtonsTemplate.tsx +2 -7
- package/src/components/templates/ArrayFieldItemTemplate.tsx +3 -9
- package/src/components/templates/ArrayFieldTemplate.tsx +2 -9
- package/src/components/templates/ArrayFieldTitleTemplate.tsx +2 -10
- package/src/components/templates/BaseInputTemplate.tsx +16 -23
- package/src/components/templates/ButtonTemplates/AddButton.tsx +2 -1
- package/src/components/templates/ButtonTemplates/IconButton.tsx +16 -7
- package/src/components/templates/ButtonTemplates/SubmitButton.tsx +2 -1
- package/src/components/templates/ButtonTemplates/index.ts +1 -1
- package/src/components/templates/CyclicSchemaExpandTemplate.tsx +31 -0
- package/src/components/templates/DescriptionField.tsx +1 -1
- package/src/components/templates/ErrorList.tsx +8 -15
- package/src/components/templates/FallbackFieldTemplate.tsx +2 -1
- package/src/components/templates/FieldErrorTemplate.tsx +8 -8
- package/src/components/templates/FieldHelpTemplate.tsx +2 -1
- package/src/components/templates/FieldTemplate/FieldTemplate.tsx +2 -8
- package/src/components/templates/FieldTemplate/Label.tsx +2 -2
- package/src/components/templates/GridTemplate.tsx +1 -1
- package/src/components/templates/MultiSchemaFieldTemplate.tsx +1 -1
- package/src/components/templates/ObjectFieldTemplate.tsx +2 -7
- package/src/components/templates/OptionalDataControlsTemplate.tsx +3 -2
- package/src/components/templates/TitleField.tsx +1 -1
- package/src/components/templates/UnsupportedField.tsx +4 -3
- package/src/components/templates/WrapIfAdditionalTemplate.tsx +2 -9
- package/src/components/templates/index.ts +3 -1
- package/src/components/widgets/AltDateTimeWidget.tsx +1 -1
- package/src/components/widgets/AltDateWidget.tsx +7 -13
- package/src/components/widgets/CheckboxWidget.tsx +3 -5
- package/src/components/widgets/CheckboxesWidget.tsx +8 -10
- package/src/components/widgets/ColorWidget.tsx +2 -1
- package/src/components/widgets/DateTimeWidget.tsx +3 -10
- package/src/components/widgets/DateWidget.tsx +2 -1
- package/src/components/widgets/EmailWidget.tsx +2 -1
- package/src/components/widgets/FileWidget.tsx +9 -8
- package/src/components/widgets/HiddenWidget.tsx +1 -1
- package/src/components/widgets/PasswordWidget.tsx +2 -1
- package/src/components/widgets/RadioWidget.tsx +8 -10
- package/src/components/widgets/RangeWidget.tsx +1 -1
- package/src/components/widgets/RatingWidget.tsx +48 -47
- package/src/components/widgets/SelectWidget.tsx +48 -31
- package/src/components/widgets/TextWidget.tsx +2 -1
- package/src/components/widgets/TextareaWidget.tsx +10 -7
- package/src/components/widgets/TimeWidget.tsx +2 -1
- package/src/components/widgets/URLWidget.tsx +2 -1
- package/src/components/widgets/UpDownWidget.tsx +2 -1
- package/src/components/widgets/index.ts +1 -1
- package/src/getDefaultRegistry.ts +2 -9
- package/src/getTestRegistry.tsx +2 -7
- package/src/index.ts +10 -5
- package/src/withTheme.tsx +14 -9
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import { ComponentType, ReactNode } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
ANY_OF_KEY,
|
|
1
|
+
import type { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import type {
|
|
4
3
|
FieldProps,
|
|
5
4
|
FieldPathId,
|
|
6
5
|
FormContextType,
|
|
7
6
|
GenericObjectType,
|
|
7
|
+
RJSFSchema,
|
|
8
|
+
Registry,
|
|
9
|
+
StrictRJSFSchema,
|
|
10
|
+
UiSchema,
|
|
11
|
+
} from '@rjsf/utils';
|
|
12
|
+
import {
|
|
13
|
+
ANY_OF_KEY,
|
|
8
14
|
getDiscriminatorFieldFromSchema,
|
|
9
15
|
getTemplate,
|
|
10
16
|
getTestIds,
|
|
@@ -15,13 +21,9 @@ import {
|
|
|
15
21
|
ONE_OF_KEY,
|
|
16
22
|
PROPERTIES_KEY,
|
|
17
23
|
READONLY_KEY,
|
|
18
|
-
RJSFSchema,
|
|
19
|
-
Registry,
|
|
20
|
-
StrictRJSFSchema,
|
|
21
24
|
toFieldPathId,
|
|
22
25
|
UI_OPTIONS_KEY,
|
|
23
26
|
UI_GLOBAL_OPTIONS_KEY,
|
|
24
|
-
UiSchema,
|
|
25
27
|
ITEMS_KEY,
|
|
26
28
|
useDeepCompareMemo,
|
|
27
29
|
} from '@rjsf/utils';
|
|
@@ -73,11 +75,7 @@ export interface GridProps extends GenericObjectType {
|
|
|
73
75
|
value?: unknown;
|
|
74
76
|
}
|
|
75
77
|
|
|
76
|
-
export type GridSchemaType =
|
|
77
|
-
/** The limited set of props which are keyed using the `GridType` enumeration and return an object
|
|
78
|
-
*/
|
|
79
|
-
[gridType in GridType]?: object;
|
|
80
|
-
};
|
|
78
|
+
export type GridSchemaType = Partial<Record<GridType, object>>;
|
|
81
79
|
|
|
82
80
|
/** The types which comprise the possibilities for the `layoutGridSchema` prop
|
|
83
81
|
*/
|
|
@@ -106,13 +104,16 @@ export const LAYOUT_GRID_UI_OPTION = 'layoutGrid';
|
|
|
106
104
|
export const LAYOUT_GRID_OPTION = `ui:${LAYOUT_GRID_UI_OPTION}`;
|
|
107
105
|
|
|
108
106
|
/** Type used to return options list and whether it has a discriminator */
|
|
109
|
-
|
|
107
|
+
interface OneOfOptionsInfoType<S extends StrictRJSFSchema = RJSFSchema> {
|
|
108
|
+
options: S[];
|
|
109
|
+
hasDiscriminator: boolean;
|
|
110
|
+
}
|
|
110
111
|
|
|
111
112
|
/** Type used to represent a React-based rendering component */
|
|
112
113
|
type RenderComponent = ComponentType<any>;
|
|
113
114
|
|
|
114
115
|
/** Type used to determine what are the UIComponent and props from the grid schema */
|
|
115
|
-
|
|
116
|
+
interface UIComponentPropsType {
|
|
116
117
|
/** The name of the component */
|
|
117
118
|
name: string;
|
|
118
119
|
/** The render component if specified */
|
|
@@ -121,7 +122,7 @@ type UIComponentPropsType = {
|
|
|
121
122
|
uiProps: ConfigObject;
|
|
122
123
|
/** The special case where the component is immediately rendered */
|
|
123
124
|
rendered: ReactNode;
|
|
124
|
-
}
|
|
125
|
+
}
|
|
125
126
|
|
|
126
127
|
/** Returns either the `value` if it is non-nullish or the fallback
|
|
127
128
|
*
|
|
@@ -282,6 +283,7 @@ export function computeArraySchemasIfPresent<S extends StrictRJSFSchema = RJSFSc
|
|
|
282
283
|
fieldPathId: FieldPathId;
|
|
283
284
|
} {
|
|
284
285
|
let rawSchema: S | undefined;
|
|
286
|
+
let resultPathId = fieldPathId;
|
|
285
287
|
if (isNumericIndex(potentialIndex) && schema && schema?.type === 'array' && has(schema, ITEMS_KEY)) {
|
|
286
288
|
const index = Number(potentialIndex);
|
|
287
289
|
const items = schema[ITEMS_KEY];
|
|
@@ -294,12 +296,12 @@ export function computeArraySchemasIfPresent<S extends StrictRJSFSchema = RJSFSc
|
|
|
294
296
|
} else {
|
|
295
297
|
rawSchema = items as S;
|
|
296
298
|
}
|
|
297
|
-
|
|
299
|
+
resultPathId = {
|
|
298
300
|
[ID_KEY]: fieldPathId[ID_KEY],
|
|
299
301
|
path: [...fieldPathId.path.slice(0, fieldPathId.path.length - 1), index],
|
|
300
302
|
};
|
|
301
303
|
}
|
|
302
|
-
return { rawSchema, fieldPathId };
|
|
304
|
+
return { rawSchema, fieldPathId: resultPathId };
|
|
303
305
|
}
|
|
304
306
|
|
|
305
307
|
/** Given a `dottedPath` to a field in the `initialSchema`, iterate through each individual path in the schema until
|
|
@@ -453,8 +455,8 @@ export function computeUIComponentPropsFromGridSchema<
|
|
|
453
455
|
if (isString(prop)) {
|
|
454
456
|
const match: string[] | null = LOOKUP_REGEX.exec(prop);
|
|
455
457
|
if (Array.isArray(match) && match.length > 1) {
|
|
456
|
-
const
|
|
457
|
-
uiProps[key] = lookupFromFormContext(registry,
|
|
458
|
+
const lookupName = match[1];
|
|
459
|
+
uiProps[key] = lookupFromFormContext(registry, lookupName, lookupName);
|
|
458
460
|
}
|
|
459
461
|
}
|
|
460
462
|
});
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
getUiOptions,
|
|
4
|
-
titleId,
|
|
5
|
-
FieldProps,
|
|
6
|
-
FormContextType,
|
|
7
|
-
RJSFSchema,
|
|
8
|
-
StrictRJSFSchema,
|
|
9
|
-
TemplatesType,
|
|
10
|
-
} from '@rjsf/utils';
|
|
1
|
+
import type { FieldProps, FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';
|
|
2
|
+
import { getTemplate, getUiOptions, titleId } from '@rjsf/utils';
|
|
11
3
|
|
|
12
4
|
/** The `LayoutHeaderField` component renders a `TitleFieldTemplate` with an `id` derived from the `fieldPathId`
|
|
13
5
|
* and whether it is `required` from the props. The `title` is derived from the props as follows:
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
|
+
import type {
|
|
3
|
+
EnumOptionsType,
|
|
4
|
+
FieldProps,
|
|
5
|
+
FormContextType,
|
|
6
|
+
RJSFSchema,
|
|
7
|
+
SchemaUtilsType,
|
|
8
|
+
StrictRJSFSchema,
|
|
9
|
+
UiSchema,
|
|
10
|
+
} from '@rjsf/utils';
|
|
2
11
|
import {
|
|
3
12
|
ANY_OF_KEY,
|
|
4
13
|
CONST_KEY,
|
|
5
14
|
DEFAULT_KEY,
|
|
6
|
-
EnumOptionsType,
|
|
7
15
|
ERRORS_KEY,
|
|
8
|
-
FieldProps,
|
|
9
|
-
FormContextType,
|
|
10
16
|
getDiscriminatorFieldFromSchema,
|
|
11
17
|
hashObject,
|
|
12
18
|
ID_KEY,
|
|
13
19
|
ONE_OF_KEY,
|
|
14
20
|
optionsList,
|
|
15
21
|
PROPERTIES_KEY,
|
|
16
|
-
RJSFSchema,
|
|
17
22
|
getTemplate,
|
|
18
23
|
getUiOptions,
|
|
19
24
|
getWidget,
|
|
20
|
-
SchemaUtilsType,
|
|
21
|
-
StrictRJSFSchema,
|
|
22
|
-
UiSchema,
|
|
23
25
|
} from '@rjsf/utils';
|
|
24
26
|
import get from 'lodash/get';
|
|
25
27
|
import has from 'lodash/has';
|
|
@@ -111,7 +113,7 @@ export default function LayoutMultiSchemaField<
|
|
|
111
113
|
hideError = false,
|
|
112
114
|
} = props;
|
|
113
115
|
const { widgets, schemaUtils, globalUiOptions } = registry;
|
|
114
|
-
const [enumOptions, setEnumOptions] = useState(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData)
|
|
116
|
+
const [enumOptions, setEnumOptions] = useState(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData));
|
|
115
117
|
const id = get(fieldPathId, ID_KEY);
|
|
116
118
|
const discriminator = getDiscriminatorFieldFromSchema(schema);
|
|
117
119
|
const FieldErrorTemplate = getTemplate<'FieldErrorTemplate', T, S, F>('FieldErrorTemplate', registry, options);
|
|
@@ -124,7 +126,7 @@ export default function LayoutMultiSchemaField<
|
|
|
124
126
|
useEffect(() => {
|
|
125
127
|
setEnumOptions(computeEnumOptions(schema, options, schemaUtils, uiSchema, formData));
|
|
126
128
|
// We are using hashes in place of the dependencies
|
|
127
|
-
//
|
|
129
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
128
130
|
}, [schemaHash, optionsHash, schemaUtils, uiSchemaHash, formDataHash]);
|
|
129
131
|
const {
|
|
130
132
|
widget = discriminator ? 'radio' : 'select',
|
|
@@ -142,7 +144,7 @@ export default function LayoutMultiSchemaField<
|
|
|
142
144
|
const option = getSelectedOption<S>(enumOptions, selectorField, selectedOption);
|
|
143
145
|
// If the subschema doesn't declare a type, infer the type from the parent schema
|
|
144
146
|
optionSchema = optionSchema?.type ? optionSchema : ({ ...optionSchema, type: option?.type || baseType } as S);
|
|
145
|
-
const Widget = getWidget<T, S, F>(optionSchema
|
|
147
|
+
const Widget = getWidget<T, S, F>(optionSchema, widget, widgets);
|
|
146
148
|
|
|
147
149
|
// The following code was copied from `@rjsf`'s `SchemaField`
|
|
148
150
|
// Set hideError to the value provided in the uiSchema, otherwise stick with the prop to propagate to children
|
|
@@ -159,6 +161,9 @@ export default function LayoutMultiSchemaField<
|
|
|
159
161
|
* will use it as the index of the new option to select
|
|
160
162
|
*/
|
|
161
163
|
const onOptionChange = (opt?: unknown) => {
|
|
164
|
+
if (disabled || readonly) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
162
167
|
const newOption = getSelectedOption<S>(enumOptions, selectorField, opt);
|
|
163
168
|
const oldOption = getSelectedOption<S>(enumOptions, selectorField, selectedOption);
|
|
164
169
|
|