diff --git a/CHANGELOG.md b/CHANGELOG.md index 6698dfbc56..fc11e0d4b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,15 +21,54 @@ should change the heading of the (upcoming) version to include a major version b ## @rjsf/antd - Set peerDependency for `@ant-design/icons` to `^6.0.0`, fixing [#4643](https://github.com/rjsf-team/react-jsonschema-form/issues/4643) +- Added `MultiSchemaFieldTemplate` + +## @rjsf/chakra-ui + +- Added `MultiSchemaFieldTemplate` + +## @rjsf/core + +- Refactored `MultiSchemaField` to use the `MultiSchemaFieldTemplate` provided by the registry. +- Added `MultiSchemaFieldTemplate` component to maintain the same functionality as the previous `MultiSchemaField` implementation. + +## @rjsf/daisyui + +- Added `MultiSchemaFieldTemplate` + +## @rjsf/fluentui-rc + +- Added `MultiSchemaFieldTemplate` + +## @rjsf/mui + +- Added `MultiSchemaFieldTemplate` ## @rjsf/primereact - New theme! +## @rjsf/react-bootstrap + +- Added `MultiSchemaFieldTemplate` + +## @rjsf/semantic-ui + +- Added `MultiSchemaFieldTemplate` + +## @rjsf/shadcn + +- Added `MultiSchemaFieldTemplate` + ## @rjsf/utils - Fixed issue where oneOf radio button could not be modified when defaults were set, fixing [#4634](https://github.com/rjsf-team/react-jsonschema-form/issues/4634) - Fix default value for object properties such as enums that are rendered in select, radio inputs, etc. +- Add support for `MultiSchemaFieldTemplate`, with new `MultiSchemaFieldTemplateProps`, to the `TemplatesType` interface + +## Dev / docs / playground + +- Added documentation for the new `MultiSchemaFieldTemplate` # 6.0.0-beta.10 diff --git a/packages/antd/src/templates/MultiSchemaFieldTemplate/index.tsx b/packages/antd/src/templates/MultiSchemaFieldTemplate/index.tsx new file mode 100644 index 0000000000..c0afcd2072 --- /dev/null +++ b/packages/antd/src/templates/MultiSchemaFieldTemplate/index.tsx @@ -0,0 +1,16 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { optionSchemaField, selector } = props; + + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/antd/src/templates/index.ts b/packages/antd/src/templates/index.ts index b4dc42140d..40b60b9347 100644 --- a/packages/antd/src/templates/index.ts +++ b/packages/antd/src/templates/index.ts @@ -9,6 +9,7 @@ import { AddButton, CopyButton, MoveDownButton, MoveUpButton, RemoveButton } fro import FieldErrorTemplate from './FieldErrorTemplate'; import FieldTemplate from './FieldTemplate'; import GridTemplate from './GridTemplate'; +import MultiSchemaFieldTemplate from './MultiSchemaFieldTemplate'; import ObjectFieldTemplate from './ObjectFieldTemplate'; import SubmitButton from './SubmitButton'; import TitleField from './TitleField'; @@ -36,6 +37,7 @@ export function generateTemplates< FieldErrorTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/chakra-ui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/chakra-ui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..c0afcd2072 --- /dev/null +++ b/packages/chakra-ui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,16 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { optionSchemaField, selector } = props; + + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/chakra-ui/src/MultiSchemaFieldTemplate/index.ts b/packages/chakra-ui/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/chakra-ui/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/chakra-ui/src/Templates/Templates.ts b/packages/chakra-ui/src/Templates/Templates.ts index ffa8822eb4..5dca9821ec 100644 --- a/packages/chakra-ui/src/Templates/Templates.ts +++ b/packages/chakra-ui/src/Templates/Templates.ts @@ -9,6 +9,7 @@ import FieldErrorTemplate from '../FieldErrorTemplate'; import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; import GridTemplate from '../GridTemplate'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -38,6 +39,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/core/src/components/fields/MultiSchemaField.tsx b/packages/core/src/components/fields/MultiSchemaField.tsx index a4e46d5ad0..4ebdf255e9 100644 --- a/packages/core/src/components/fields/MultiSchemaField.tsx +++ b/packages/core/src/components/fields/MultiSchemaField.tsx @@ -9,6 +9,7 @@ import { FieldProps, FormContextType, getDiscriminatorFieldFromSchema, + getTemplate, getUiOptions, getWidget, mergeSchemas, @@ -157,6 +158,12 @@ class AnyOfField( + 'MultiSchemaFieldTemplate', + registry, + globalUiOptions, + ); + const { selectedOption, retrievedOptions } = this.state; const { widget = 'select', @@ -215,36 +222,45 @@ class AnyOfField= 0 ? selectedOption : undefined} + options={{ enumOptions, ...uiOptions }} + registry={registry} + formContext={formContext} + placeholder={placeholder} + autocomplete={autocomplete} + autofocus={autofocus} + label={title ?? name} + hideLabel={!displayLabel} + readonly={readonly} + /> + ); + + const optionsSchemaField = + (optionSchema && optionSchema.type !== 'null' && ( + <_SchemaField {...this.props} schema={optionSchema} uiSchema={optionUiSchema} /> + )) || + null; + return ( -
-
- = 0 ? selectedOption : undefined} - options={{ enumOptions, ...uiOptions }} - registry={registry} - formContext={formContext} - placeholder={placeholder} - autocomplete={autocomplete} - autofocus={autofocus} - label={title ?? name} - hideLabel={!displayLabel} - readonly={readonly} - /> -
- {optionSchema && optionSchema.type !== 'null' && ( - <_SchemaField {...this.props} schema={optionSchema} uiSchema={optionUiSchema} /> - )} -
+ ); } } diff --git a/packages/core/src/components/templates/MultiSchemaFieldTemplate.tsx b/packages/core/src/components/templates/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..7fe003e348 --- /dev/null +++ b/packages/core/src/components/templates/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,20 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; + +/** The `MultiSchemaFieldTemplate` component renders the layout for the MultiSchemaField, which supports choosing + * a schema from a list of schemas defined using `anyOf` or `oneOf`. + * + * @param props - The `MultiSchemaFieldTemplate` to be rendered + */ +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { selector, optionSchemaField } = props; + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/core/src/components/templates/index.ts b/packages/core/src/components/templates/index.ts index b1007b81de..e3c3bf2457 100644 --- a/packages/core/src/components/templates/index.ts +++ b/packages/core/src/components/templates/index.ts @@ -13,6 +13,7 @@ import FieldTemplate from './FieldTemplate'; import FieldErrorTemplate from './FieldErrorTemplate'; import FieldHelpTemplate from './FieldHelpTemplate'; import GridTemplate from './GridTemplate'; +import MultiSchemaFieldTemplate from './MultiSchemaFieldTemplate'; import ObjectFieldTemplate from './ObjectFieldTemplate'; import TitleField from './TitleField'; import UnsupportedField from './UnsupportedField'; @@ -37,6 +38,7 @@ function templates(props: MultiSchemaFieldTemplateProps) { + const { optionSchemaField, selector } = props; + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/daisyui/src/templates/MultiSchemaFieldTemplate/index.ts b/packages/daisyui/src/templates/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/daisyui/src/templates/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/daisyui/src/templates/Templates.tsx b/packages/daisyui/src/templates/Templates.tsx index fe881980aa..1c5e17a695 100644 --- a/packages/daisyui/src/templates/Templates.tsx +++ b/packages/daisyui/src/templates/Templates.tsx @@ -11,6 +11,7 @@ import FieldErrorTemplate from './FieldErrorTemplate'; import FieldHelpTemplate from './FieldHelpTemplate'; import FieldTemplate from './FieldTemplate'; import GridTemplate from './GridTemplate/GridTemplate'; +import MultiSchemaFieldTemplate from './MultiSchemaFieldTemplate'; import ObjectFieldTemplate from './ObjectFieldTemplate'; import TitleFieldTemplate from './TitleField/TitleField'; import WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate'; @@ -53,6 +54,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate, WrapIfAdditionalTemplate, diff --git a/packages/daisyui/test/__snapshots__/Array.test.tsx.snap b/packages/daisyui/test/__snapshots__/Array.test.tsx.snap index 27aef877ed..d8a068ccb6 100644 --- a/packages/daisyui/test/__snapshots__/Array.test.tsx.snap +++ b/packages/daisyui/test/__snapshots__/Array.test.tsx.snap @@ -3540,6 +3540,7 @@ exports[`array fields array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -7206,6 +7207,7 @@ exports[`array fields array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -10803,6 +10805,7 @@ exports[`array fields array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -14557,6 +14560,7 @@ exports[`array fields array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -18393,6 +18397,7 @@ exports[`array fields checkboxes 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -22114,6 +22119,7 @@ exports[`array fields empty errors array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -25708,6 +25714,7 @@ exports[`array fields empty errors array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -29384,6 +29391,7 @@ exports[`array fields fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -32990,6 +32998,7 @@ exports[`array fields fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -36639,6 +36648,7 @@ exports[`array fields fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -40325,6 +40335,7 @@ exports[`array fields has errors 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -43919,6 +43930,7 @@ exports[`array fields has errors 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -47593,6 +47605,7 @@ exports[`array fields no errors 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -51187,6 +51200,7 @@ exports[`array fields no errors 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -54861,6 +54875,7 @@ exports[`with title and description array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -58562,6 +58577,7 @@ exports[`with title and description array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -62194,6 +62210,7 @@ exports[`with title and description array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -65961,6 +65978,7 @@ exports[`with title and description array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -69810,6 +69828,7 @@ exports[`with title and description checkboxes 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -73555,6 +73574,7 @@ exports[`with title and description fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -77202,6 +77222,7 @@ exports[`with title and description fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -80868,6 +80889,7 @@ exports[`with title and description fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -84548,6 +84570,7 @@ exports[`with title and description from both array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -88256,6 +88279,7 @@ exports[`with title and description from both array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -91890,6 +91914,7 @@ exports[`with title and description from both array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -95659,6 +95684,7 @@ exports[`with title and description from both array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -99510,6 +99536,7 @@ exports[`with title and description from both checkboxes 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -103258,6 +103285,7 @@ exports[`with title and description from both fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -106906,6 +106934,7 @@ exports[`with title and description from both fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -110569,6 +110598,7 @@ exports[`with title and description from both fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -114250,6 +114280,7 @@ exports[`with title and description from uiSchema array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -117952,6 +117983,7 @@ exports[`with title and description from uiSchema array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -121580,6 +121612,7 @@ exports[`with title and description from uiSchema array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -125345,6 +125378,7 @@ exports[`with title and description from uiSchema array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -129192,6 +129226,7 @@ exports[`with title and description from uiSchema checkboxes 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -132934,6 +132969,7 @@ exports[`with title and description from uiSchema fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -136576,6 +136612,7 @@ exports[`with title and description from uiSchema fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -140235,6 +140272,7 @@ exports[`with title and description from uiSchema fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -143926,6 +143964,7 @@ exports[`with title and description with global label off array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -147612,6 +147651,7 @@ exports[`with title and description with global label off array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -151226,6 +151266,7 @@ exports[`with title and description with global label off array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -154980,6 +155021,7 @@ exports[`with title and description with global label off array icons 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -158816,6 +158858,7 @@ exports[`with title and description with global label off checkboxes 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -162569,6 +162612,7 @@ exports[`with title and description with global label off fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -166201,6 +166245,7 @@ exports[`with title and description with global label off fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -169854,6 +169899,7 @@ exports[`with title and description with global label off fixed array 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], diff --git a/packages/daisyui/test/__snapshots__/Form.test.tsx.snap b/packages/daisyui/test/__snapshots__/Form.test.tsx.snap index 837747ae37..19bbdec510 100644 --- a/packages/daisyui/test/__snapshots__/Form.test.tsx.snap +++ b/packages/daisyui/test/__snapshots__/Form.test.tsx.snap @@ -3534,6 +3534,7 @@ exports[`single fields checkbox field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -7150,6 +7151,7 @@ exports[`single fields checkbox field with label 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -10782,6 +10784,7 @@ exports[`single fields checkbox field with label and description 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -14425,6 +14428,7 @@ exports[`single fields checkbox field with label and rich text description 1`] = "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -18098,6 +18102,7 @@ exports[`single fields checkboxes field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -21832,6 +21837,7 @@ exports[`single fields field with description 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -25429,6 +25435,7 @@ exports[`single fields field with description 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -29102,6 +29109,7 @@ exports[`single fields field with description in uiSchema 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -32705,6 +32713,7 @@ exports[`single fields field with description in uiSchema 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -36383,6 +36392,7 @@ exports[`single fields field with markdown description 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -39986,6 +39996,7 @@ exports[`single fields field with markdown description 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -43664,6 +43675,7 @@ exports[`single fields field with markdown description in uiSchema 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -47268,6 +47280,7 @@ exports[`single fields field with markdown description in uiSchema 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -50937,6 +50950,7 @@ exports[`single fields format color 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -54580,6 +54594,7 @@ exports[`single fields format date 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -58234,6 +58249,7 @@ exports[`single fields format datetime 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -61888,6 +61904,7 @@ exports[`single fields format time 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -65524,6 +65541,7 @@ exports[`single fields help and error display 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -69184,6 +69202,7 @@ exports[`single fields hidden field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -72781,6 +72800,7 @@ exports[`single fields hidden field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -76417,6 +76437,7 @@ exports[`single fields hidden label 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -80055,6 +80076,7 @@ exports[`single fields null field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -83664,6 +83686,7 @@ exports[`single fields number field 0 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -87305,6 +87328,7 @@ exports[`single fields number field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -90946,6 +90970,7 @@ exports[`single fields password field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -94590,6 +94615,7 @@ exports[`single fields radio field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -98261,6 +98287,7 @@ exports[`single fields schema examples 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -101936,6 +101963,7 @@ exports[`single fields select field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -105627,6 +105655,7 @@ exports[`single fields select field multiple choice 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -109380,6 +109409,7 @@ exports[`single fields select field multiple choice enumDisabled 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -113139,6 +113169,7 @@ exports[`single fields select field multiple choice enumDisabled using checkboxe "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -116881,6 +116912,7 @@ exports[`single fields select field multiple choice formData 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -120662,6 +120694,7 @@ exports[`single fields select field multiple choice with labels 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -124396,6 +124429,7 @@ exports[`single fields select field single choice enumDisabled 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -128081,6 +128115,7 @@ exports[`single fields select field single choice enumDisabled using radio widge "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -131761,6 +131796,7 @@ exports[`single fields select field single choice form disabled using radio widg "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -135438,6 +135474,7 @@ exports[`single fields select field single choice formData 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -139119,6 +139156,7 @@ exports[`single fields select field single choice uiSchema disabled using radio "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -142793,6 +142831,7 @@ exports[`single fields slider field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -146436,6 +146475,7 @@ exports[`single fields string field format data-url 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -150058,6 +150098,7 @@ exports[`single fields string field format email 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -153701,6 +153742,7 @@ exports[`single fields string field format uri 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -157342,6 +157384,7 @@ exports[`single fields string field regular 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -160982,6 +161025,7 @@ exports[`single fields string field with placeholder 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -164626,6 +164670,7 @@ exports[`single fields textarea field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -168264,6 +168309,7 @@ exports[`single fields title field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -171878,6 +171924,7 @@ exports[`single fields title field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -175543,6 +175590,7 @@ exports[`single fields unsupported field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -179172,6 +179220,7 @@ exports[`single fields up/down field 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -182816,6 +182865,7 @@ exports[`single fields using custom tagName 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], diff --git a/packages/daisyui/test/__snapshots__/Object.test.tsx.snap b/packages/daisyui/test/__snapshots__/Object.test.tsx.snap index e79ec3b13a..9a0805392c 100644 --- a/packages/daisyui/test/__snapshots__/Object.test.tsx.snap +++ b/packages/daisyui/test/__snapshots__/Object.test.tsx.snap @@ -3536,6 +3536,7 @@ exports[`object fields additionalProperties 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -7124,6 +7125,7 @@ exports[`object fields additionalProperties 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -10844,6 +10846,7 @@ exports[`object fields object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -14453,6 +14456,7 @@ exports[`object fields object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -18104,6 +18108,7 @@ exports[`object fields object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -21766,6 +21771,7 @@ exports[`object fields show add button and fields if additionalProperties is tru "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -25351,6 +25357,7 @@ exports[`object fields show add button and fields if additionalProperties is tru "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -29057,6 +29064,7 @@ exports[`object fields with title and description additionalProperties 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -32674,6 +32682,7 @@ exports[`object fields with title and description additionalProperties 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -36380,6 +36389,7 @@ exports[`object fields with title and description from both additionalProperties "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -40016,6 +40026,7 @@ exports[`object fields with title and description from both additionalProperties "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -43744,6 +43755,7 @@ exports[`object fields with title and description from both object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -47407,6 +47419,7 @@ exports[`object fields with title and description from both object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -51075,6 +51088,7 @@ exports[`object fields with title and description from both object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -54748,6 +54762,7 @@ exports[`object fields with title and description from uiSchema additionalProper "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -58378,6 +58393,7 @@ exports[`object fields with title and description from uiSchema additionalProper "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -62098,6 +62114,7 @@ exports[`object fields with title and description from uiSchema object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -65749,6 +65766,7 @@ exports[`object fields with title and description from uiSchema object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -69408,6 +69426,7 @@ exports[`object fields with title and description from uiSchema object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -73078,6 +73097,7 @@ exports[`object fields with title and description from uiSchema show add button "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -76705,6 +76725,7 @@ exports[`object fields with title and description from uiSchema show add button "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -80433,6 +80454,7 @@ exports[`object fields with title and description object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -84077,6 +84099,7 @@ exports[`object fields with title and description object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -87737,6 +87760,7 @@ exports[`object fields with title and description object 1`] = ` "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -91404,6 +91428,7 @@ exports[`object fields with title and description show add button and fields if "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -95018,6 +95043,7 @@ exports[`object fields with title and description show add button and fields if "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -98726,6 +98752,7 @@ exports[`object fields with title and description with global label off addition "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -102328,6 +102355,7 @@ exports[`object fields with title and description with global label off addition "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -106048,6 +106076,7 @@ exports[`object fields with title and description with global label off object 1 "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -109677,6 +109706,7 @@ exports[`object fields with title and description with global label off object 1 "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -113329,6 +113359,7 @@ exports[`object fields with title and description with global label off object 1 "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -116988,6 +117019,7 @@ exports[`object fields with title and description with global label off show add "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], @@ -120587,6 +120619,7 @@ exports[`object fields with title and description with global label off show add "FieldHelpTemplate": [Function], "FieldTemplate": [Function], "GridTemplate": [Function], + "MultiSchemaFieldTemplate": [Function], "ObjectFieldTemplate": [Function], "TitleFieldTemplate": [Function], "UnsupportedFieldTemplate": [Function], diff --git a/packages/docs/docs/advanced-customization/custom-templates.md b/packages/docs/docs/advanced-customization/custom-templates.md index 701b064f91..45f67397e6 100644 --- a/packages/docs/docs/advanced-customization/custom-templates.md +++ b/packages/docs/docs/advanced-customization/custom-templates.md @@ -33,6 +33,7 @@ Below is the table that lists all the `templates`, their props interface, their | [FieldHelpTemplate\*](#fieldhelptemplate) | FieldHelpProps | ui:FieldHelpTemplate | Formerly internal `Help` component accessible only to `SchemaField` | | [FieldTemplate](#fieldtemplate) | FieldTemplateProps | ui:FieldTemplate | Formerly `Form.FieldTemplate` or `Registry.FieldTemplate` | | [GridTemplate](#gridtemplate) | GridTemplateProps | ui:GridTemplate | Theme dependent implementations of a Grid element for either rows or columns | +| [MultiSchemaFieldTemplate](#multischemafieldtemplate) | MultiSchemaFieldTemplateProps | ui:MultiSchemaFieldTemplate | Formerly part of `@rjsf/core `MultiSchemaField`, refactored as a template | | [ObjectFieldTemplate](#objectfieldtemplate) | ObjectFieldTemplateProps | ui:ObjectFieldTemplate | Formerly `Form.ObjectFieldTemplate` or `Registry.ObjectFieldTemplate` | | [TitleFieldTemplate\*](#titlefieldtemplate) | TitleFieldProps | ui:TitleFieldTemplate | Formerly a `field` in `@rjsf.core` moved to `templates` with the `Template` suffix. Previously implemented in each theme. | | [UnsupportedFieldTemplate\*](#unsupportedfieldtemplate) | UnsupportedFieldProps | ui:UnsupportedFieldTemplate | Formerly a `field` in `@rjsf.core` moved to `templates` with the `Template` suffix. | @@ -795,6 +796,60 @@ The following props are passed to the `GridTemplate`: - `children`: The contents of the grid template - `column`: Optional flag indicating whether the grid element represents a column, necessary for themes which have components for Rows vs Column +## MultiSchemaFieldTemplate + +Each theme implements a `MultiSchemaFieldTemplate` used to render the layout of a MultiSchemaField, i.e. a field described by a `oneOf` or `anyOf` schema. +The template typically renders a Widget used to select the schema to use, as well as a field for the selected schema. + +```tsx +import { MultiSchemaFieldTemplateProps, RJSFSchema } from '@rjsf/utils'; +import validator from '@rjsf/validator-ajv8'; + +const schema: RJSFSchema = { + type: 'object', + properties: { + myField: { + oneOf: [ + { + type: 'string', + title: 'String Field', + description: 'A field that accepts a string', + }, + { + type: 'number', + title: 'Number Field', + description: 'A field that accepts a number', + }, + ], + }, + }, +}; + +function MultiSchemaFieldTemplate(props: MultiSchemaFieldTemplateProps) { + const { selector, optionSchemaField } = props; + return ( +
+ {selector} +
+ {optionSchemaField} +
+ ); +} + +render( +
, + document.getElementById('app'), +); +``` + +The following props are passed to the `MultiSchemaFieldTemplate`: + +- `selector`: The rendered Widget used to select a multischema option. +- `optionSchemaField`: The rendered SchemaField representing the selected option. +- `schema`: The schema object for the field. +- `uiSchema`: The uiSchema object for the field. +- `registry`: The `registry` object. + ## ObjectFieldTemplate ```tsx diff --git a/packages/docs/docs/migration-guides/v6.x upgrade guide.md b/packages/docs/docs/migration-guides/v6.x upgrade guide.md index 1bbb239a21..64341d65e3 100644 --- a/packages/docs/docs/migration-guides/v6.x upgrade guide.md +++ b/packages/docs/docs/migration-guides/v6.x upgrade guide.md @@ -96,6 +96,12 @@ If you have implemented your own `ArrayFieldItemTemplate` or `ArrayField` then y A new, theme-dependent template `GridTemplate` was added to support the new layout feature and must be provided if you are building your own `registry.templates` rather than overloading them via the `templates` props. +#### MultiSchemaFieldTemplate + +This new template was created to extract styling applied to the `MultiSchemaField` component in the `@rjsf/core` package. + +If you have styled your form using the following classNames and you do NOT use the `@rjsf/core` theme, you may need to adjust your styles, as they may have been removed from your theme: `panel`, `panel-default`, `panel-body`, `form-group`. + #### SchemaUtilsType Five new functions were added to this type, so if you have your own implementation of this type, you will need to add them to yours. @@ -291,7 +297,13 @@ Use the `ui:enumNames` in the `UiSchema` instead. In fixing [#2280](https://github.com/rjsf-team/react-jsonschema-form/issues/2280), the following `Bootstrap 3` classes (`form-group`, `has-error` and `has-danger` error classes) were removed from the `classNames` prop passed down to the `FieldTemplate`. They were instead moved into the `core` theme's `WrapIfAdditionalTemplate` to ensure that theme was -unchanged. As a result, the themes (other than `core`) will no longer render those classes. +unchanged. + +Additionally, the Bootstrap 3 classes `panel`, `panel-default`, `panel-body`, and `form-group` were removed from the +`MultiSchemaField` component in the `@rjsf/core` package, and moved into the `core` theme's `MultiSchemaFieldTemplate` +to ensure that the theme was unchanged. + +As a result, the themes (other than `core`) will no longer render these classes. If you use a non-`core` theme and were relying on them for in your application's styling or behavior (via css overrides perhaps), then you can still use the non-`Bootstrap 3` RJSF marker class (see below) or your specific theme's error classes. @@ -334,6 +346,7 @@ The following new types were added to `@rjsf/utils`: - `ArrayFieldItemTemplateType`: The properties of each element in the ArrayFieldTemplateProps.items array. NOTE: `ArrayFieldTemplateItemType` is an alias to this type - `FoundFieldType`: The interface for the return value of the `findFieldInSchema` function - `GridTemplateProps`: The properties that are passed to a `GridTemplate` +- `MultiSchemaFieldTemplateProps`: The properties that are passed to a `MultiSchemaFieldTemplate` - `TestIdShape`: The interface for the test ID proxy objects that are returned by the `getTestId` utility function ### New non-validator utility functions diff --git a/packages/fluentui-rc/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/fluentui-rc/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..e964d8f90b --- /dev/null +++ b/packages/fluentui-rc/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,25 @@ +import { makeStyles } from '@fluentui/react-components'; +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; + +const useStyles = makeStyles({ + root: { + '> div': { marginBottom: '4px' }, + }, +}); + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { selector, optionSchemaField } = props; + + const styles = useStyles(); + + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/fluentui-rc/src/MultiSchemaFieldTemplate/index.ts b/packages/fluentui-rc/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/fluentui-rc/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/fluentui-rc/src/Templates/Templates.ts b/packages/fluentui-rc/src/Templates/Templates.ts index edbfaad90d..ee685bdfd0 100644 --- a/packages/fluentui-rc/src/Templates/Templates.ts +++ b/packages/fluentui-rc/src/Templates/Templates.ts @@ -9,6 +9,7 @@ import FieldErrorTemplate from '../FieldErrorTemplate'; import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; import GridTemplate from '../GridTemplate'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -38,6 +39,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/mui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/mui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..a4ee5c8ec4 --- /dev/null +++ b/packages/mui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,20 @@ +import Box from '@mui/material/Box'; +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; +import FormControl from '@mui/material/FormControl'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { optionSchemaField, selector } = props; + + return ( + + + {selector} + + {optionSchemaField} + + ); +} diff --git a/packages/mui/src/MultiSchemaFieldTemplate/index.ts b/packages/mui/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/mui/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/mui/src/Templates/Templates.ts b/packages/mui/src/Templates/Templates.ts index 564570a498..ccc1a290f4 100644 --- a/packages/mui/src/Templates/Templates.ts +++ b/packages/mui/src/Templates/Templates.ts @@ -11,6 +11,7 @@ import FieldErrorTemplate from '../FieldErrorTemplate'; import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; import GridTemplate from '../GridTemplate'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -39,6 +40,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/primereact/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/primereact/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..a217112189 --- /dev/null +++ b/packages/primereact/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,17 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; +import { Fieldset } from 'primereact/fieldset'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { selector, optionSchemaField } = props; + + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/primereact/src/MultiSchemaFieldTemplate/index.ts b/packages/primereact/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/primereact/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/primereact/src/Templates/Templates.ts b/packages/primereact/src/Templates/Templates.ts index 94460602c7..0cc1a84fbc 100644 --- a/packages/primereact/src/Templates/Templates.ts +++ b/packages/primereact/src/Templates/Templates.ts @@ -10,6 +10,7 @@ import { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } from '../IconB import FieldErrorTemplate from '../FieldErrorTemplate'; import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -40,6 +41,7 @@ export function generateTemplates< FieldErrorTemplate, FieldHelpTemplate, FieldTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/react-bootstrap/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/react-bootstrap/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..de09889ae1 --- /dev/null +++ b/packages/react-bootstrap/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,15 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; +import Card from 'react-bootstrap/Card'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>({ selector, optionSchemaField }: MultiSchemaFieldTemplateProps) { + return ( + + {selector} + {optionSchemaField} + + ); +} diff --git a/packages/react-bootstrap/src/MultiSchemaFieldTemplate/index.ts b/packages/react-bootstrap/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/react-bootstrap/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/react-bootstrap/src/Templates/Templates.ts b/packages/react-bootstrap/src/Templates/Templates.ts index b624dd4d3e..009dd99e57 100644 --- a/packages/react-bootstrap/src/Templates/Templates.ts +++ b/packages/react-bootstrap/src/Templates/Templates.ts @@ -9,6 +9,7 @@ import FieldErrorTemplate from '../FieldErrorTemplate'; import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; import GridTemplate from '../GridTemplate'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -38,6 +39,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/semantic-ui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/semantic-ui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..894e5ad01b --- /dev/null +++ b/packages/semantic-ui/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,16 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>(props: MultiSchemaFieldTemplateProps) { + const { selector, optionSchemaField } = props; + + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/semantic-ui/src/MultiSchemaFieldTemplate/index.ts b/packages/semantic-ui/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/semantic-ui/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/semantic-ui/src/Templates/Templates.ts b/packages/semantic-ui/src/Templates/Templates.ts index 564570a498..ccc1a290f4 100644 --- a/packages/semantic-ui/src/Templates/Templates.ts +++ b/packages/semantic-ui/src/Templates/Templates.ts @@ -11,6 +11,7 @@ import FieldErrorTemplate from '../FieldErrorTemplate'; import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; import GridTemplate from '../GridTemplate'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -39,6 +40,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/shadcn/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx b/packages/shadcn/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx new file mode 100644 index 0000000000..8789dc6850 --- /dev/null +++ b/packages/shadcn/src/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx @@ -0,0 +1,15 @@ +import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; +import { cn } from '../lib/utils'; + +export default function MultiSchemaFieldTemplate< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +>({ selector, optionSchemaField }: MultiSchemaFieldTemplateProps) { + return ( +
+
{selector}
+ {optionSchemaField} +
+ ); +} diff --git a/packages/shadcn/src/MultiSchemaFieldTemplate/index.ts b/packages/shadcn/src/MultiSchemaFieldTemplate/index.ts new file mode 100644 index 0000000000..505305c6b6 --- /dev/null +++ b/packages/shadcn/src/MultiSchemaFieldTemplate/index.ts @@ -0,0 +1,2 @@ +export { default } from './MultiSchemaFieldTemplate'; +export * from './MultiSchemaFieldTemplate'; diff --git a/packages/shadcn/src/Templates/Templates.ts b/packages/shadcn/src/Templates/Templates.ts index 07ddb8f6d2..27f0554ef4 100644 --- a/packages/shadcn/src/Templates/Templates.ts +++ b/packages/shadcn/src/Templates/Templates.ts @@ -10,6 +10,7 @@ import FieldHelpTemplate from '../FieldHelpTemplate'; import FieldTemplate from '../FieldTemplate'; import GridTemplate from '../GridTemplate'; import { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } from '../IconButton'; +import MultiSchemaFieldTemplate from '../MultiSchemaFieldTemplate'; import ObjectFieldTemplate from '../ObjectFieldTemplate'; import SubmitButton from '../SubmitButton'; import TitleField from '../TitleField'; @@ -38,6 +39,7 @@ export function generateTemplates< FieldHelpTemplate, FieldTemplate, GridTemplate, + MultiSchemaFieldTemplate, ObjectFieldTemplate, TitleFieldTemplate: TitleField, WrapIfAdditionalTemplate, diff --git a/packages/utils/src/types.ts b/packages/utils/src/types.ts index f494dca54c..869c472376 100644 --- a/packages/utils/src/types.ts +++ b/packages/utils/src/types.ts @@ -341,6 +341,8 @@ export type TemplatesType>; /** The template to use to render a Grid element */ GridTemplate: ComponentType; + /** The template to use while rendering a multi-schema field (i.e. anyOf, oneOf) */ + MultiSchemaFieldTemplate: ComponentType>; /** The template to use while rendering an object */ ObjectFieldTemplate: ComponentType>; /** The template to use for rendering the title of a field */ @@ -777,6 +779,18 @@ export type WrapIfAdditionalTemplateProps< | 'registry' >; +/** The properties that are passed to a MultiSchemaFieldTemplate implementation */ +export interface MultiSchemaFieldTemplateProps< + T = any, + S extends StrictRJSFSchema = RJSFSchema, + F extends FormContextType = any, +> extends RJSFBaseProps { + /** The rendered widget used to select a schema option */ + selector: ReactNode; + /** The rendered SchemaField for the selected schema option */ + optionSchemaField: ReactNode; +} + /** The properties that are passed to a Widget implementation */ export interface WidgetProps extends GenericObjectType, diff --git a/packages/utils/test/getTemplate.test.ts b/packages/utils/test/getTemplate.test.ts index 550297d514..6f41deca07 100644 --- a/packages/utils/test/getTemplate.test.ts +++ b/packages/utils/test/getTemplate.test.ts @@ -40,6 +40,7 @@ const registry: Registry = { FieldHelpTemplate: FakeTemplate, FieldTemplate: FakeTemplate, GridTemplate: FakeTemplate, + MultiSchemaFieldTemplate: FakeTemplate, ObjectFieldTemplate: FakeTemplate, TitleFieldTemplate: FakeTemplate, UnsupportedFieldTemplate: FakeTemplate, @@ -62,6 +63,7 @@ const uiOptions: UIOptionsType = { FieldHelpTemplate: CustomTemplate as unknown as UIOptionsType['FieldHelpTemplate'], FieldTemplate: CustomTemplate as unknown as UIOptionsType['FieldTemplate'], GridTemplate: CustomTemplate as unknown as UIOptionsType['GridTemplate'], + MultiSchemaFieldTemplate: CustomTemplate as unknown as UIOptionsType['MultiSchemaFieldTemplate'], ObjectFieldTemplate: CustomTemplate as unknown as UIOptionsType['ObjectFieldTemplate'], TitleFieldTemplate: CustomTemplate as unknown as UIOptionsType['TitleFieldTemplate'], UnsupportedFieldTemplate: CustomTemplate as unknown as UIOptionsType['UnsupportedFieldTemplate'],