@nolwenture/formik-jsonschema-form 1.0.0-beta.21 → 1.0.0-beta.25

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.
Files changed (114) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/Form/fields/ArrayField/ArrayField.js +5 -3
  3. package/dist/cjs/Form/fields/BooleanField/BooleanField.js +3 -2
  4. package/dist/cjs/Form/fields/DateField/DateField.js +3 -2
  5. package/dist/cjs/Form/fields/FileUploadField/FileUploadField.js +3 -2
  6. package/dist/cjs/Form/fields/MultipleChoiceField/MultipleChoiceField.js +3 -2
  7. package/dist/cjs/Form/fields/NullField/NullField.js +3 -2
  8. package/dist/cjs/Form/fields/ObjectField/ObjectField.js +6 -5
  9. package/dist/cjs/Form/fields/RadioField/RadioField.js +3 -2
  10. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +3 -2
  11. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/styledComponents.js +1 -1
  12. package/dist/cjs/Form/fields/SearchableSelectField/SearchableSelectField.js +3 -2
  13. package/dist/cjs/Form/fields/StringField/StringField.js +4 -3
  14. package/dist/cjs/Form/fields/TextAreaField/TextAreaField.js +3 -2
  15. package/dist/cjs/Form/fields/ToggleField/ToggleField.js +3 -2
  16. package/dist/cjs/Form/fields/index.js +0 -1
  17. package/dist/cjs/Form/index.js +0 -4
  18. package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +2 -2
  19. package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +2 -1
  20. package/dist/cjs/Form/templates/index.js +0 -1
  21. package/dist/cjs/FormView/components/Field.js +11 -6
  22. package/dist/cjs/FormView/fields/ArrayField.js +3 -2
  23. package/dist/cjs/FormView/fields/BooleanField.js +3 -2
  24. package/dist/cjs/FormView/fields/MultipleChoiceField.js +3 -2
  25. package/dist/cjs/FormView/fields/NullField.js +3 -2
  26. package/dist/cjs/FormView/fields/ObjectField/ObjectField.js +3 -5
  27. package/dist/cjs/FormView/fields/StringField.js +3 -2
  28. package/dist/cjs/FormView/fields/TextAreaField.js +3 -2
  29. package/dist/cjs/FormView/index.js +0 -4
  30. package/dist/cjs/FormView/templates/ObjectFieldTemplate/styledComponents.js +1 -1
  31. package/dist/cjs/FormView/templates/index.js +0 -4
  32. package/dist/cjs/common/index.js +19 -0
  33. package/dist/cjs/common/types/index.js +1 -0
  34. package/dist/cjs/index.js +2 -0
  35. package/dist/esm/Form/fields/ArrayField/ArrayField.js +5 -3
  36. package/dist/esm/Form/fields/BooleanField/BooleanField.js +3 -2
  37. package/dist/esm/Form/fields/DateField/DateField.js +3 -2
  38. package/dist/esm/Form/fields/FileUploadField/FileUploadField.js +3 -2
  39. package/dist/esm/Form/fields/MultipleChoiceField/MultipleChoiceField.js +3 -2
  40. package/dist/esm/Form/fields/NullField/NullField.js +3 -2
  41. package/dist/esm/Form/fields/ObjectField/ObjectField.js +6 -5
  42. package/dist/esm/Form/fields/RadioField/RadioField.js +3 -2
  43. package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +3 -2
  44. package/dist/esm/Form/fields/SearchableMultiTagSelectField/styledComponents.js +1 -1
  45. package/dist/esm/Form/fields/SearchableSelectField/SearchableSelectField.js +3 -2
  46. package/dist/esm/Form/fields/StringField/StringField.js +4 -3
  47. package/dist/esm/Form/fields/TextAreaField/TextAreaField.js +3 -2
  48. package/dist/esm/Form/fields/ToggleField/ToggleField.js +3 -2
  49. package/dist/esm/Form/fields/index.js +0 -1
  50. package/dist/esm/Form/index.js +0 -4
  51. package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +2 -2
  52. package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.js +2 -1
  53. package/dist/esm/Form/templates/index.js +0 -1
  54. package/dist/esm/FormView/components/Field.js +11 -6
  55. package/dist/esm/FormView/fields/ArrayField.js +3 -2
  56. package/dist/esm/FormView/fields/BooleanField.js +3 -2
  57. package/dist/esm/FormView/fields/MultipleChoiceField.js +3 -2
  58. package/dist/esm/FormView/fields/NullField.js +3 -2
  59. package/dist/esm/FormView/fields/ObjectField/ObjectField.js +3 -5
  60. package/dist/esm/FormView/fields/StringField.js +3 -2
  61. package/dist/esm/FormView/fields/TextAreaField.js +3 -2
  62. package/dist/esm/FormView/index.js +0 -4
  63. package/dist/esm/FormView/templates/ObjectFieldTemplate/styledComponents.js +1 -1
  64. package/dist/esm/FormView/templates/index.js +0 -4
  65. package/dist/esm/common/index.js +3 -0
  66. package/dist/esm/common/types/index.js +1 -0
  67. package/dist/esm/index.js +2 -0
  68. package/dist/types/Form/fields/index.d.ts +20 -17
  69. package/dist/types/Form/index.d.ts +0 -4
  70. package/dist/types/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +1 -1
  71. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.d.ts +2 -2
  72. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/styledComponents.d.ts +1 -1
  73. package/dist/types/Form/templates/FieldTemplate/FieldTemplate.d.ts +1 -1
  74. package/dist/types/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +1 -1
  75. package/dist/types/Form/templates/index.d.ts +8 -9
  76. package/dist/types/FormView/index.d.ts +0 -4
  77. package/dist/types/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +1 -1
  78. package/dist/types/FormView/templates/FieldTemplate/FieldTemplate.d.ts +1 -1
  79. package/dist/types/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +1 -1
  80. package/dist/types/FormView/templates/index.d.ts +7 -5
  81. package/dist/types/common/index.d.ts +3 -0
  82. package/dist/types/common/types/Field.d.ts +1 -1
  83. package/dist/types/common/types/Templates.d.ts +20 -0
  84. package/dist/types/common/types/index.d.ts +1 -0
  85. package/dist/types/index.d.ts +2 -0
  86. package/dist/types/utils/getTypes.d.ts +1 -1
  87. package/package.json +18 -7
  88. package/dist/cjs/Form/templates/CollapsibleObjectFieldTemplate/types.js +0 -2
  89. package/dist/cjs/Form/templates/FieldTemplate/types.js +0 -2
  90. package/dist/cjs/Form/templates/ObjectFieldTemplate/types.js +0 -2
  91. package/dist/cjs/FormView/templates/ArrayFieldTemplate/types.js +0 -2
  92. package/dist/cjs/FormView/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +0 -5
  93. package/dist/cjs/FormView/templates/CollapsibleObjectFieldTemplate/index.js +0 -37
  94. package/dist/cjs/FormView/templates/FieldTemplate/types.js +0 -2
  95. package/dist/cjs/FormView/templates/ObjectFieldTemplate/types.js +0 -2
  96. package/dist/esm/Form/templates/CollapsibleObjectFieldTemplate/types.js +0 -1
  97. package/dist/esm/Form/templates/FieldTemplate/types.js +0 -1
  98. package/dist/esm/Form/templates/ObjectFieldTemplate/types.js +0 -1
  99. package/dist/esm/FormView/templates/ArrayFieldTemplate/types.js +0 -1
  100. package/dist/esm/FormView/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.js +0 -2
  101. package/dist/esm/FormView/templates/CollapsibleObjectFieldTemplate/index.js +0 -1
  102. package/dist/esm/FormView/templates/FieldTemplate/types.js +0 -1
  103. package/dist/esm/FormView/templates/ObjectFieldTemplate/types.js +0 -1
  104. package/dist/types/Form/templates/ArrayFieldTemplate/types.d.ts +0 -7
  105. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/types.d.ts +0 -9
  106. package/dist/types/Form/templates/FieldTemplate/types.d.ts +0 -7
  107. package/dist/types/Form/templates/ObjectFieldTemplate/types.d.ts +0 -8
  108. package/dist/types/FormView/templates/ArrayFieldTemplate/types.d.ts +0 -7
  109. package/dist/types/FormView/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.d.ts +0 -1
  110. package/dist/types/FormView/templates/CollapsibleObjectFieldTemplate/index.d.ts +0 -1
  111. package/dist/types/FormView/templates/FieldTemplate/types.d.ts +0 -7
  112. package/dist/types/FormView/templates/ObjectFieldTemplate/types.d.ts +0 -8
  113. /package/dist/cjs/{Form/templates/ArrayFieldTemplate/types.js → common/types/Templates.js} +0 -0
  114. /package/dist/esm/{Form/templates/ArrayFieldTemplate/types.js → common/types/Templates.js} +0 -0
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./constants"), exports);
19
+ __exportStar(require("./FileUploadContext"), exports);
@@ -17,3 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./Field"), exports);
18
18
  __exportStar(require("./Form"), exports);
19
19
  __exportStar(require("./Schemas"), exports);
20
+ __exportStar(require("./Templates"), exports);
package/dist/cjs/index.js CHANGED
@@ -15,5 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  //This file exists for purpose releasing "moduleResolution": "node" compatible version (until we split this to multiple packages)
18
+ __exportStar(require("./common"), exports);
18
19
  __exportStar(require("./Form"), exports);
19
20
  __exportStar(require("./FormView"), exports);
21
+ __exportStar(require("./utils"), exports);
@@ -29,7 +29,7 @@ const moveInArray = (values, index, direction) => {
29
29
  }
30
30
  };
31
31
  export const ArrayField = (props) => {
32
- const { fields: { SchemaField }, templates: { ArrayFieldTemplate, FieldTemplate }, components: { SelectFieldInput, ArrayFieldItem, ArrayFieldItemButtons, ArrayFieldList, ArrayFieldAddButton, ArrayFieldRemoveButton, ArrayFieldUpButton, ArrayFieldDownButton, }, useItemsAsAdditionalItems, } = useContext(FormRegistry);
32
+ const { fields: { SchemaField }, templates, components: { SelectFieldInput, ArrayFieldItem, ArrayFieldItemButtons, ArrayFieldList, ArrayFieldAddButton, ArrayFieldRemoveButton, ArrayFieldUpButton, ArrayFieldDownButton, }, useItemsAsAdditionalItems, } = useContext(FormRegistry);
33
33
  useSetDefault(props);
34
34
  const { name, schema, uiSchema } = props;
35
35
  const { type, props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
@@ -96,9 +96,11 @@ export const ArrayField = (props) => {
96
96
  const { disabled } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
97
97
  const valueArray = Array.isArray(value) ? value : undefined;
98
98
  const preventManipulation = disabled || schema.readOnly;
99
- return schema.anyOf !== undefined ? (_jsx(FieldTemplate, { ...props, "data-fjsf-array": name, children: _jsx(SelectFieldInput, { type,
99
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
100
+ const SelectedArrayFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ArrayFieldTemplate;
101
+ return schema.anyOf !== undefined ? (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: _jsx(SelectFieldInput, { type,
100
102
  readOnly: schema.readOnly,
101
- ...inputProps, name: name, formikAs: "select", multiple: enums?.type === EnumsTypes.MULTI_SELECT, children: enums?.values.map((option, index) => (_jsx("option", { value: option.const, children: option.title }, index))) }) })) : (_jsxs(ArrayFieldTemplate, { ...props, "data-fjsf-array": name, children: [_jsxs(ArrayFieldList, { children: [(items || []).map((itemSchema, index) => (_jsx(ArrayFieldItem, { children: _jsx(SchemaField, { name: `${name}[${index}]`, schema: prepareChildSchema(itemSchema, schema), uiSchema: {
103
+ ...inputProps, name: name, formikAs: "select", multiple: enums?.type === EnumsTypes.MULTI_SELECT, children: enums?.values.map((option, index) => (_jsx("option", { value: option.const, children: option.title }, index))) }) })) : (_jsxs(SelectedArrayFieldTemplate, { ...props, "data-fjsf-array": name, children: [_jsxs(ArrayFieldList, { children: [(items || []).map((itemSchema, index) => (_jsx(ArrayFieldItem, { children: _jsx(SchemaField, { name: `${name}[${index}]`, schema: prepareChildSchema(itemSchema, schema), uiSchema: {
102
104
  disabled,
103
105
  ...(uiSchema?.[index] || uiSchema?.items),
104
106
  },
@@ -5,12 +5,13 @@ import { useSetDefault } from "../../hooks";
5
5
  import { FormRegistry } from "../../FormRegistry";
6
6
  import { extractUiSchema } from "../../../utils";
7
7
  export const BooleanField = (props) => {
8
- const { templates: { FieldTemplate }, components: { FieldInput, BooleanFieldWrapper }, } = useContext(FormRegistry);
8
+ const { templates, components: { FieldInput, BooleanFieldWrapper }, } = useContext(FormRegistry);
9
9
  useSetDefault(props);
10
10
  const { name, uiSchema } = props;
11
11
  const { label, props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
12
12
  const { values, setValues } = useFormikContext();
13
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsxs(BooleanFieldWrapper, { children: [_jsx(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "checkbox" }), _jsx("span", { onClick: () => {
13
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
14
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsxs(BooleanFieldWrapper, { children: [_jsx(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "checkbox" }), _jsx("span", { onClick: () => {
14
15
  setValues({
15
16
  ...values,
16
17
  [name]: !values?.[name],
@@ -5,9 +5,10 @@ import { useSetDefault } from "../../hooks";
5
5
  import { FormRegistry } from "../../FormRegistry";
6
6
  import { DateFieldWrapper } from "./styledComponents";
7
7
  export const DateField = (props) => {
8
- const { templates: { FieldTemplate }, components: { FieldInput }, } = useContext(FormRegistry);
8
+ const { templates, components: { FieldInput }, } = useContext(FormRegistry);
9
9
  useSetDefault(props);
10
10
  const { name, uiSchema } = props;
11
11
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
12
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-string": name, children: _jsx(DateFieldWrapper, { children: _jsx(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "date" }) }) }));
12
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
13
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: _jsx(DateFieldWrapper, { children: _jsx(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "date" }) }) }));
13
14
  };
@@ -6,7 +6,7 @@ import { FileUploadContext } from "../../../common/FileUploadContext";
6
6
  import { useSetDefault } from "../../hooks";
7
7
  import { FormRegistry } from "../../FormRegistry";
8
8
  export const FileUploadField = (props) => {
9
- const { templates: { FieldTemplate }, components: { FileUploadFieldInput }, } = useContext(FormRegistry);
9
+ const { templates, components: { FileUploadFieldInput }, } = useContext(FormRegistry);
10
10
  useSetDefault(props);
11
11
  const { name, uiSchema } = props;
12
12
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
@@ -58,5 +58,6 @@ export const FileUploadField = (props) => {
58
58
  setFieldValue(name, null);
59
59
  }
60
60
  };
61
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-object": name, children: _jsx(FileUploadFieldInput, { ...inputProps, name: name, value: value, handleRemoveFile: handleRemoveFile, uploadedFile: uploadedFile, setFieldValue: setFieldValue, handleFileUpload: handleFileUpload, uploadProgress: uploadProgress, removeButton: uiSchema["ui:removeButton"], uploadButtonText: uiSchema["ui:uploadButtonText"], infoText: uiSchema["ui:infoText"], hideRemoveButton: inputProps?.removeButton.hidden }) }));
61
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
62
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-object": name, children: _jsx(FileUploadFieldInput, { ...inputProps, name: name, value: value, handleRemoveFile: handleRemoveFile, uploadedFile: uploadedFile, setFieldValue: setFieldValue, handleFileUpload: handleFileUpload, uploadProgress: uploadProgress, removeButton: uiSchema["ui:removeButton"], uploadButtonText: uiSchema["ui:uploadButtonText"], infoText: uiSchema["ui:infoText"], hideRemoveButton: inputProps?.removeButton.hidden }) }));
62
63
  };
@@ -5,7 +5,7 @@ import { extractUiSchema, getEnums } from "../../../utils";
5
5
  import { useSetDefault } from "../../hooks";
6
6
  import { FormRegistry } from "../../FormRegistry";
7
7
  export const MultipleChoiceField = (props) => {
8
- const { templates: { FieldTemplate }, components: { MultipleChoiceFieldInput }, } = useContext(FormRegistry);
8
+ const { templates, components: { MultipleChoiceFieldInput }, } = useContext(FormRegistry);
9
9
  useSetDefault(props);
10
10
  const { name, uiSchema, schema } = props;
11
11
  const { props: inputProps, style } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
@@ -24,5 +24,6 @@ export const MultipleChoiceField = (props) => {
24
24
  return { "data-fjsf-string": name };
25
25
  }
26
26
  })();
27
- return (_jsx(FieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(MultipleChoiceFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name, enums: enums, style: style, value: value, form: form }) }));
27
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
28
+ return (_jsx(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(MultipleChoiceFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name, enums: enums, style: style, value: value, form: form }) }));
28
29
  };
@@ -2,7 +2,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useContext } from "react";
3
3
  import { FormRegistry } from "../../FormRegistry";
4
4
  export const NullField = (props) => {
5
- const { templates: { FieldTemplate }, } = useContext(FormRegistry);
5
+ const { templates } = useContext(FormRegistry);
6
6
  const { name, uiSchema } = props;
7
- return _jsx(FieldTemplate, { ...props, "data-fjsf-null": name });
7
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
8
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-null": name }));
8
9
  };
@@ -14,7 +14,7 @@ const useObjectField = (name) => {
14
14
  return { value, setValue };
15
15
  };
16
16
  export const ObjectField = (props) => {
17
- const { fields: { SchemaField }, templates: { ObjectFieldTemplate, CollapsibleObjectFieldTemplate }, components: { ObjectFieldItem, ObjectFieldItemButtons, ObjectFieldButton, ObjectFieldAddButton, ObjectFieldRemoveButton, ObjectFieldUpButton, ObjectFieldDownButton, ObjectFieldSection, }, hideUnmarkedAdditionalProperties, } = useContext(FormRegistry);
17
+ const { fields: { SchemaField }, templates, components: { ObjectFieldItem, ObjectFieldItemButtons, ObjectFieldButton, ObjectFieldAddButton, ObjectFieldRemoveButton, ObjectFieldUpButton, ObjectFieldDownButton, ObjectFieldSection, }, hideUnmarkedAdditionalProperties, } = useContext(FormRegistry);
18
18
  useSetDefault(props);
19
19
  const { name, schema, uiSchema } = props;
20
20
  const { value, setValue } = useObjectField(name);
@@ -32,9 +32,6 @@ export const ObjectField = (props) => {
32
32
  }, [valuesToRemove]);
33
33
  const propertyKeys = useMemo(() => Object.keys(properties || {}), [properties]);
34
34
  const additionalValues = useMemo(() => Object.fromEntries(Object.entries(value || {}).filter(([key, value]) => !propertyKeys.includes(key))), [value, propertyKeys]);
35
- const FieldTemplateComponent = props.uiSchema?.["ui:options"]?.isCollapsible
36
- ? CollapsibleObjectFieldTemplate
37
- : ObjectFieldTemplate;
38
35
  const orderedProperties = orderByUiSchema(uiSchema?.["ui:order"], Object.keys(properties || {}));
39
36
  const orderedAddProperties = orderByUiSchema(uiSchema?.["ui:order"], Object.keys(additionalValues || {}));
40
37
  const additionalPropertiesInOrder = orderAdditionalProperties(orderedAddProperties, Object.keys(additionalValues || {}));
@@ -52,7 +49,11 @@ export const ObjectField = (props) => {
52
49
  return (_jsx(ObjectFieldButton, { ...(uiSchema?.["ui:customButtonOptions"]?.props ?? {}), onClick: onClick, children: uiSchema?.["ui:customButtonOptions"]?.content ?? "" }));
53
50
  }
54
51
  };
55
- return (_jsxs(FieldTemplateComponent, { ...props, "data-fjsf-object": name, children: [orderedProperties
52
+ const SelectedObjectFieldTemplate = templates[props.uiSchema?.["ui:template"]] ??
53
+ (props.uiSchema?.["ui:options"]?.isCollapsible
54
+ ? templates.CollapsibleObjectFieldTemplate
55
+ : templates.ObjectFieldTemplate);
56
+ return (_jsxs(SelectedObjectFieldTemplate, { ...props, "data-fjsf-object": name, children: [orderedProperties
56
57
  .map((child) => {
57
58
  if (typeof child === "string") {
58
59
  const childSchema = properties?.[child];
@@ -4,9 +4,10 @@ import { extractUiSchema } from "../../../utils";
4
4
  import { useSetDefault } from "../../hooks";
5
5
  import { FormRegistry } from "../../FormRegistry";
6
6
  export const RadioField = (props) => {
7
- const { templates: { FieldTemplate }, components: { RadioFieldInput }, } = useContext(FormRegistry);
7
+ const { templates, components: { RadioFieldInput }, } = useContext(FormRegistry);
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { label, props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsx(RadioFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, label: label, name: name }) }));
11
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
12
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsx(RadioFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, label: label, name: name }) }));
12
13
  };
@@ -4,10 +4,11 @@ import { extractUiSchema, getEnums } from "../../../utils";
4
4
  import { useSetDefault } from "../../hooks";
5
5
  import { FormRegistry } from "../../FormRegistry";
6
6
  export const SearchableMultiTagSelectField = (props) => {
7
- const { templates: { FieldTemplate }, components: { SearchableMultiTagSelectFieldInput }, } = useContext(FormRegistry);
7
+ const { templates, components: { SearchableMultiTagSelectFieldInput }, } = useContext(FormRegistry);
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { placeholder, emptySearchMessage, props: inputProps, } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
11
  const enums = useMemo(() => getEnums(props), [props]);
12
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-array": name, children: _jsx(SearchableMultiTagSelectFieldInput, { ...inputProps, name: name, placeholder: placeholder, emptySearchMessage: emptySearchMessage, enums: enums }) }));
12
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
13
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: _jsx(SearchableMultiTagSelectFieldInput, { ...inputProps, name: name, placeholder: placeholder, emptySearchMessage: emptySearchMessage, enums: enums }) }));
13
14
  };
@@ -41,7 +41,7 @@ export const SearchableMultiTagSelectFieldOptionList = styled.ul `
41
41
  padding: unset;
42
42
  margin: unset;
43
43
  border: ${(props) => `${props.theme.strokeWidth.thin} solid ${props.theme.color.border.default}`};
44
- border-radius: ${(props) => props.theme.borderRadius.s};
44
+ border-radius: ${(props) => props.theme.borderRadius.none};
45
45
  position: absolute;
46
46
  background: ${(props) => props.theme.color.background.default};
47
47
  top: 100%;
@@ -5,7 +5,7 @@ import { extractUiSchema, getEnums } from "../../../utils";
5
5
  import { useSetDefault } from "../../hooks";
6
6
  import { FormRegistry } from "../../FormRegistry";
7
7
  export const SearchableSelectField = (props) => {
8
- const { templates: { FieldTemplate }, components: { SearchableSelectFieldContainer, SearchableSelectFieldDropdownContainer, SearchableSelectFieldListOption, SearchableSelectFieldListExpand, SearchableSelectFieldNotFound, SearchableSelectFieldInputElement, SearchableSelectFieldClearButton, SearchableSelectFieldInputContainer, }, } = useContext(FormRegistry);
8
+ const { templates, components: { SearchableSelectFieldContainer, SearchableSelectFieldDropdownContainer, SearchableSelectFieldListOption, SearchableSelectFieldListExpand, SearchableSelectFieldNotFound, SearchableSelectFieldInputElement, SearchableSelectFieldClearButton, SearchableSelectFieldInputContainer, }, } = useContext(FormRegistry);
9
9
  useSetDefault(props);
10
10
  const ListOption = (props) => {
11
11
  const { isActive, children, ...rest } = props;
@@ -116,7 +116,8 @@ export const SearchableSelectField = (props) => {
116
116
  const fieldDataAttribute = schema.type === "string"
117
117
  ? { "data-fjsf-string": name }
118
118
  : { "data-fjsf-number": name };
119
- return (_jsx(FieldTemplate, { ...props, ...fieldDataAttribute, children: _jsxs(SearchableSelectFieldContainer, { ref: containerRef, onBlur: handleBlur, children: [_jsxs(SearchableSelectFieldInputContainer, { children: [_jsx(SearchableSelectFieldInputElement, { ...inputProps, name: name, type: "text", placeholder: placeholder, value: searchTerm, onChange: handleSearchChange, onFocus: handleFocus }), searchTerm && !hideClearButton && (_jsx(SearchableSelectFieldClearButton, { onClick: handleClear, children: clearButtonText ?? "✕" }))] }), showOptions && (_jsxs(SearchableSelectFieldDropdownContainer, { role: "dropdown-list",
119
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
120
+ return (_jsx(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: _jsxs(SearchableSelectFieldContainer, { ref: containerRef, onBlur: handleBlur, children: [_jsxs(SearchableSelectFieldInputContainer, { children: [_jsx(SearchableSelectFieldInputElement, { ...inputProps, name: name, type: "text", placeholder: placeholder, value: searchTerm, onChange: handleSearchChange, onFocus: handleFocus }), searchTerm && !hideClearButton && (_jsx(SearchableSelectFieldClearButton, { onClick: handleClear, children: clearButtonText ?? "✕" }))] }), showOptions && (_jsxs(SearchableSelectFieldDropdownContainer, { role: "dropdown-list",
120
121
  //ref={moreRef} //TODO
121
122
  style: {
122
123
  maxHeight: dropdownOptions.height,
@@ -6,7 +6,7 @@ import { FormRegistry } from "../../FormRegistry";
6
6
  import { useSetDefault } from "../../hooks";
7
7
  import { StringFieldWrapper } from "./styledComponents";
8
8
  export const StringField = (props) => {
9
- const { templates: { FieldTemplate }, components: { FieldInput, SelectFieldInput }, } = useContext(FormRegistry);
9
+ const { templates, components: { FieldInput, SelectFieldInput }, } = useContext(FormRegistry);
10
10
  useSetDefault(props);
11
11
  const { name, uiSchema = {}, schema } = props;
12
12
  const { type, placeholder, props: inputProps, } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
@@ -15,9 +15,10 @@ export const StringField = (props) => {
15
15
  const fieldDataAttribute = schema.type === "string"
16
16
  ? { "data-fjsf-string": name }
17
17
  : { "data-fjsf-number": name };
18
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
18
19
  switch (enums?.type) {
19
20
  case "select":
20
- return (_jsx(FieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(StringFieldWrapper, { children: _jsxs(SelectFieldInput, { type,
21
+ return (_jsx(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(StringFieldWrapper, { children: _jsxs(SelectFieldInput, { type,
21
22
  readOnly: props.schema.readOnly,
22
23
  ...inputProps, name: name, formikAs: "select", onChange: (e) => {
23
24
  const selectedOption = enums?.values.find((option) => option.const.toString() === e.target.value);
@@ -29,7 +30,7 @@ export const StringField = (props) => {
29
30
  hidden: true,
30
31
  ...uiSchema["ui:placeholderOptionOptions"]?.props, children: placeholder }), enums?.values.map((option, index) => (_jsx("option", { value: option.const.toString(), children: option.title }, index)))] }) }) }));
31
32
  default:
32
- return (_jsx(FieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(StringFieldWrapper, { children: _jsx(FieldInput, { type,
33
+ return (_jsx(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(StringFieldWrapper, { children: _jsx(FieldInput, { type,
33
34
  placeholder,
34
35
  readOnly: props.schema.readOnly,
35
36
  ...inputProps, name: name }) }) }));
@@ -4,9 +4,10 @@ import { extractUiSchema } from "../../../utils";
4
4
  import { FormRegistry } from "../../FormRegistry";
5
5
  import { useSetDefault } from "../../hooks";
6
6
  export const TextAreaField = (props) => {
7
- const { templates: { FieldTemplate }, components: { TextAreaFieldInput }, } = useContext(FormRegistry);
7
+ const { templates, components: { TextAreaFieldInput }, } = useContext(FormRegistry);
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-string": name, children: _jsx(TextAreaFieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, formikAs: "textarea" }) }));
11
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
12
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: _jsx(TextAreaFieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, formikAs: "textarea" }) }));
12
13
  };
@@ -4,9 +4,10 @@ import { extractUiSchema } from "../../../utils";
4
4
  import { useSetDefault } from "../../hooks";
5
5
  import { FormRegistry } from "../../FormRegistry";
6
6
  export const ToggleField = (props) => {
7
- const { templates: { FieldTemplate }, components: { ToggleFieldInput }, } = useContext(FormRegistry);
7
+ const { templates, components: { ToggleFieldInput }, } = useContext(FormRegistry);
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
- return (_jsx(FieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsx(ToggleFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name }) }));
11
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
12
+ return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsx(ToggleFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name }) }));
12
13
  };
@@ -1,4 +1,3 @@
1
- //Please keep this in alphabetical order
2
1
  import * as AnyField from "./AnyField";
3
2
  import * as ArrayField from "./ArrayField";
4
3
  import * as BooleanField from "./BooleanField";
@@ -1,7 +1,3 @@
1
- export * from "../utils";
2
- export * from "../common/types";
3
- export * from "../common/constants";
4
- export * from "../common/FileUploadContext";
5
1
  export * from "./hooks";
6
2
  import { fields as FormFields } from "./fields";
7
3
  import { components as FormComponents } from "./components";
@@ -5,7 +5,7 @@ import { FormRegistry } from "../../FormRegistry";
5
5
  import { getComponents } from "./styledComponents";
6
6
  export const CollapsibleObjectFieldTemplate = (props) => {
7
7
  const { components } = useContext(FormRegistry);
8
- const { Toggle, ChildWrapper, RequiredIndicator, Icon, Description, Title, Wrapper, Help, Info, } = getComponents(components);
8
+ const { Toggle, ChildrenWrapper, RequiredIndicator, Icon, Description, Title, Wrapper, Help, Info, } = getComponents(components);
9
9
  const { children, name, uiSchema, ...otherProps } = props;
10
10
  const title = getTitle(props);
11
11
  const description = getDescription(props);
@@ -26,5 +26,5 @@ export const CollapsibleObjectFieldTemplate = (props) => {
26
26
  };
27
27
  const [collapsed, setCollapsed] = useState(isCollapsedOnLoad);
28
28
  const hide = collapsed;
29
- return (_jsxs(Wrapper, { ...mergedWrapperProps, children: [title && (_jsx(Toggle, { onClick: () => setCollapsed(!collapsed), ariaExpanded: !hide, ariaLabel: ariaLabel ?? name, children: _jsxs(Title, { style: { display: "flex", alignItems: "center" }, ...titleProps, children: [title, props?.required && _jsx(RequiredIndicator, {}), _jsx(Icon, { children: hide ? collapsedIcon ?? "▸" : openIcon ?? "▾" })] }) })), info && _jsx(Info, { ...info }), description && (_jsx(Description, { ...descriptionProps, children: description })), !hide && _jsx(Wrapper, { children: children }), help && _jsx(Help, { ...helpProps, children: help })] }));
29
+ return (_jsxs(Wrapper, { ...mergedWrapperProps, children: [title && (_jsx(Toggle, { onClick: () => setCollapsed(!collapsed), ariaExpanded: !hide, ariaLabel: ariaLabel ?? name, children: _jsxs(Title, { style: { display: "flex", alignItems: "center" }, ...titleProps, children: [title, props?.required && _jsx(RequiredIndicator, {}), _jsx(Icon, { children: hide ? collapsedIcon ?? "▸" : openIcon ?? "▾" })] }) })), info && _jsx(Info, { ...info }), description && (_jsx(Description, { ...descriptionProps, children: description })), !hide && _jsx(ChildrenWrapper, { children: children }), help && _jsx(Help, { ...helpProps, children: help })] }));
30
30
  };
@@ -37,6 +37,7 @@ export function getComponents(components) {
37
37
  components.ObjectFieldTemplateErrorMessage ??
38
38
  components.ErrorMessage,
39
39
  Toggle: components.CollapsibleObjectFieldTemplateToggle,
40
- ChildWrapper: components.CollapsibleObjectFieldTemplateToggle,
40
+ ChildrenWrapper: components.CollapsibleObjectFieldTemplateWrapper ??
41
+ components.ObjectFieldTemplateWrapper,
41
42
  };
42
43
  }
@@ -1,4 +1,3 @@
1
- //Please keep this in alphabetical order
2
1
  import * as ArrayFieldTemplate from "./ArrayFieldTemplate";
3
2
  import * as CollapsibleObjectFieldTemplate from "./CollapsibleObjectFieldTemplate";
4
3
  import * as FieldTemplate from "./FieldTemplate";
@@ -5,8 +5,8 @@ import { getStyle } from "../../utils/getStyle";
5
5
  export const FieldWrapper = styled.div `
6
6
  color: ${(props) => props.theme.color.text.default};
7
7
  font-family: ${(props) => props.theme.typography.fontFamily.base};
8
- margin: ${(props) => `${props.theme.spacing.l} 0`};
9
- width: clamp(20rem, 100%, 70rem);
8
+ margin: ${(props) => `0 0 ${props.theme.spacing.s} 0 `};
9
+ width: min(100%, 70rem);
10
10
  `;
11
11
  export const FieldTitle = styled.label `
12
12
  break-before: avoid;
@@ -16,7 +16,6 @@ export const FieldTitle = styled.label `
16
16
  font-size: ${(props) => props.theme.typography.size.base};
17
17
  font-weight: ${(props) => props.theme.typography.weight.bold};
18
18
  margin: ${(props) => `${props.theme.spacing.xs} 0`};
19
- padding-top: ${(props) => props.theme.spacing.s};
20
19
  width: 100%;
21
20
  `;
22
21
  export const FieldDescription = styled.div `
@@ -26,34 +25,38 @@ export const FieldDescription = styled.div `
26
25
  font-weight: ${(props) => props.theme.typography.weight.normal};
27
26
  font-style: italic;
28
27
  font-size: ${(props) => props.theme.typography.size.base};
29
- margin-bottom: ${(props) => props.theme.spacing.xs};
28
+ margin-bottom: ${(props) => props.theme.spacing.s};
30
29
  max-width: 66ch;
31
30
  `;
32
31
  export const StringFieldValue = styled.div `
33
32
  break-before: avoid;
34
33
  color: ${(props) => props.theme.color.text.default};
35
34
  font-family: ${(props) => props.theme.typography.fontFamily.base};
36
- margin-bottom: ${(props) => props.theme.spacing.m};
35
+ margin-bottom: ${(props) => props.theme.spacing.l};
37
36
  max-width: 66ch;
37
+ padding-left: ${(props) => props.theme.spacing.l};
38
38
  white-space: pre-line;
39
39
  `;
40
40
  export const TextAreaValue = styled.div `
41
41
  break-before: avoid;
42
42
  color: ${(props) => props.theme.color.text.default};
43
43
  font-family: ${(props) => props.theme.typography.fontFamily.base};
44
- margin-bottom: ${(props) => props.theme.spacing.m};
44
+ margin-bottom: ${(props) => props.theme.spacing.l};
45
45
  max-width: 66ch;
46
+ padding-left: ${(props) => props.theme.spacing.l};
46
47
  white-space: pre-line;
47
48
  `;
48
49
  export const ArrayFieldItem = styled.div `
49
50
  break-before: avoid;
50
51
  color: ${(props) => props.theme.color.text.default};
51
52
  font-family: ${(props) => props.theme.typography.fontFamily.base};
53
+ padding-left: ${(props) => props.theme.spacing.l};
52
54
  `;
53
55
  export const EJSFieldValue = styled.div `
54
56
  break-before: avoid;
55
57
  color: ${(props) => props.theme.color.text.default};
56
58
  font-family: ${(props) => props.theme.typography.fontFamily.base};
59
+ padding-left: ${(props) => props.theme.spacing.l};
57
60
  width: 100%;
58
61
  `;
59
62
  const NotSelected = styled.div `
@@ -91,6 +94,7 @@ const NotSelectedCircle = styled.span `
91
94
  export const BooleanFieldWrapper = styled.div `
92
95
  break-before: avoid;
93
96
  font-family: ${(props) => props.theme.typography.fontFamily.base};
97
+ padding-left: ${(props) => props.theme.spacing.l};
94
98
 
95
99
  `;
96
100
  export const MultipleChoiceFieldWrapper = styled.div `
@@ -98,6 +102,7 @@ export const MultipleChoiceFieldWrapper = styled.div `
98
102
  label {
99
103
  align-items: start;
100
104
  }
105
+ padding-left: ${(props) => props.theme.spacing.l};
101
106
  `;
102
107
  export const BooleanFieldValue = ({ name, className, value, label, }) => {
103
108
  return (_jsx("div", { className: className, children: value === true ? (_jsxs("div", { children: [_jsx("span", { children: "\u2713" }), _jsx("span", { children: label !== undefined ? label : "Selected" })] })) : (_jsxs("div", { children: [_jsx("span", { children: "\u2716" }), _jsx("span", { children: label !== undefined ? label : "Not selected" })] })) }));
@@ -4,7 +4,7 @@ import { useContext, useMemo } from "react";
4
4
  import { getEnums } from "../../utils";
5
5
  import { FormViewRegistry } from "../FormViewRegistry";
6
6
  export const ArrayField = (props) => {
7
- const { fields: { SchemaField }, templates: { ArrayFieldTemplate }, components: { ArrayFieldItem }, } = useContext(FormViewRegistry);
7
+ const { fields: { SchemaField }, templates, components: { ArrayFieldItem }, } = useContext(FormViewRegistry);
8
8
  const { name, uiSchema } = props;
9
9
  const [{ value }, _] = useField(name);
10
10
  const findEnumInProps = props.schema.additionalItems
@@ -17,7 +17,8 @@ export const ArrayField = (props) => {
17
17
  }
18
18
  return item;
19
19
  }
20
- return (_jsx(ArrayFieldTemplate, { ...props, children: value &&
20
+ const SelectedArrayFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ArrayFieldTemplate;
21
+ return (_jsx(SelectedArrayFieldTemplate, { ...props, children: value &&
21
22
  value.map((item, index) => typeof item === "object" ? (_jsx(ArrayFieldItem, { children: _jsx(SchemaField, { name: `${name}[${index}]`, schema: typeof props.schema.additionalItems !== "boolean"
22
23
  ? props.schema.additionalItems
23
24
  : {}, uiSchema: uiSchema }) }, index)) : (_jsx(ArrayFieldItem, { children: _jsx("div", { "data-keyword": item, children: getValue(item) }) }, item))) }));
@@ -4,7 +4,7 @@ import { getIn, useFormikContext } from "formik";
4
4
  import { extractUiSchema } from "../../utils";
5
5
  import { FormViewRegistry } from "../FormViewRegistry";
6
6
  export const BooleanField = (props) => {
7
- const { templates: { FieldTemplate }, components: { BooleanFieldValue, BooleanFieldWrapper }, } = useContext(FormViewRegistry);
7
+ const { templates, components: { BooleanFieldValue, BooleanFieldWrapper }, } = useContext(FormViewRegistry);
8
8
  const { name, uiSchema } = props;
9
9
  const { label } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
10
10
  const { values } = useFormikContext();
@@ -22,5 +22,6 @@ export const BooleanField = (props) => {
22
22
  }
23
23
  return typeof label === "string" ? label : undefined;
24
24
  }
25
- return (_jsx(FieldTemplate, { ...props, children: _jsx(BooleanFieldWrapper, { children: _jsx(BooleanFieldValue, { name: name, value: value, label: findLabel(label) }) }) }));
25
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
26
+ return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(BooleanFieldWrapper, { children: _jsx(BooleanFieldValue, { name: name, value: value, label: findLabel(label) }) }) }));
26
27
  };
@@ -4,7 +4,7 @@ import { getIn, useFormikContext } from "formik";
4
4
  import { extractUiSchema, getEnums, getSelectedEnum } from "../../utils";
5
5
  import { FormViewRegistry } from "../FormViewRegistry";
6
6
  export const MultipleChoiceField = (props) => {
7
- const { templates: { FieldTemplate }, components: { MultipleChoiceFieldValue }, } = useContext(FormViewRegistry);
7
+ const { templates, components: { MultipleChoiceFieldValue }, } = useContext(FormViewRegistry);
8
8
  const { name, uiSchema } = props;
9
9
  const { props: inputProps, style, onlyShowSelected, } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
10
10
  const enums = useMemo(() => getEnums(props), [props]);
@@ -13,5 +13,6 @@ export const MultipleChoiceField = (props) => {
13
13
  const selected = getSelectedEnum(value, enums);
14
14
  const notSelected = enums?.values?.filter((v) => Array.isArray(value) && !value.includes(v));
15
15
  const hideNotSelected = onlyShowSelected === true || selected === undefined;
16
- return (_jsx(FieldTemplate, { ...props, children: _jsx(MultipleChoiceFieldValue, { inputProps: inputProps, name: name, style: style, selected: selected, notSelected: hideNotSelected ? undefined : notSelected }) }));
16
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
17
+ return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(MultipleChoiceFieldValue, { inputProps: inputProps, name: name, style: style, selected: selected, notSelected: hideNotSelected ? undefined : notSelected }) }));
17
18
  };
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useContext } from "react";
3
3
  import { FormViewRegistry } from "../FormViewRegistry";
4
4
  export const NullField = (props) => {
5
- const { templates: { FieldTemplate }, } = useContext(FormViewRegistry);
6
- return _jsx(FieldTemplate, { ...props });
5
+ const { templates } = useContext(FormViewRegistry);
6
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
7
+ return _jsx(SelectedFieldTemplate, { ...props });
7
8
  };
@@ -12,7 +12,7 @@ const useObjectField = (name) => {
12
12
  return { value, setValue };
13
13
  };
14
14
  export const ObjectField = (props) => {
15
- const { fields: { SchemaField }, components: { ObjectFieldSection }, templates: { ObjectFieldTemplate, CollapsibleObjectFieldTemplate }, } = useContext(FormViewRegistry);
15
+ const { fields: { SchemaField }, components: { ObjectFieldSection }, templates, } = useContext(FormViewRegistry);
16
16
  const { name, schema, uiSchema } = props;
17
17
  const { value, setValue } = useObjectField(name);
18
18
  const [{ properties }, valuesToRemove] = useMemo(() => {
@@ -27,11 +27,9 @@ export const ObjectField = (props) => {
27
27
  setValue(newValue);
28
28
  }
29
29
  }, [valuesToRemove]);
30
- const FieldTemplateComponent = props.uiSchema?.["ui:options"]?.isCollapsible
31
- ? CollapsibleObjectFieldTemplate
32
- : ObjectFieldTemplate;
33
30
  const orderedProperties = orderByUiSchema(uiSchema?.["ui:order"], Object.keys(properties || {}));
34
- return (_jsx(FieldTemplateComponent, { ...props, children: orderedProperties
31
+ const SelectedObjectFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ObjectFieldTemplate;
32
+ return (_jsx(SelectedObjectFieldTemplate, { ...props, children: orderedProperties
35
33
  .map((child, index) => {
36
34
  if (typeof child === "string") {
37
35
  const childSchema = properties?.[child];
@@ -4,7 +4,7 @@ import { getIn, useFormikContext } from "formik";
4
4
  import { getEnums } from "../../utils";
5
5
  import { FormViewRegistry } from "../FormViewRegistry";
6
6
  export const StringField = (props) => {
7
- const { templates: { FieldTemplate }, components: { StringFieldValue }, } = useContext(FormViewRegistry);
7
+ const { templates, components: { StringFieldValue }, } = useContext(FormViewRegistry);
8
8
  const { name } = props;
9
9
  const { values } = useFormikContext();
10
10
  const enums = useMemo(() => getEnums(props), [props]);
@@ -13,5 +13,6 @@ export const StringField = (props) => {
13
13
  value =
14
14
  enums.values.find((element) => element.const === value)?.title ?? value;
15
15
  }
16
- return (_jsx(FieldTemplate, { ...props, children: _jsx(StringFieldValue, { "data-keyword": value, children: value }) }));
16
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
17
+ return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(StringFieldValue, { "data-keyword": value, children: value }) }));
17
18
  };
@@ -3,9 +3,10 @@ import { useContext } from "react";
3
3
  import { getIn, useFormikContext } from "formik";
4
4
  import { FormViewRegistry } from "../FormViewRegistry";
5
5
  export const TextAreaField = (props) => {
6
- const { templates: { FieldTemplate }, components: { TextAreaValue }, } = useContext(FormViewRegistry);
6
+ const { templates, components: { TextAreaValue }, } = useContext(FormViewRegistry);
7
7
  const { name, uiSchema } = props;
8
8
  const { values } = useFormikContext();
9
9
  const value = getIn(values, name);
10
- return (_jsx(FieldTemplate, { ...props, children: _jsx(TextAreaValue, { children: value }) }));
10
+ const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
11
+ return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(TextAreaValue, { children: value }) }));
11
12
  };
@@ -1,7 +1,3 @@
1
- export * from "../utils";
2
- export * from "../common/types";
3
- export * from "../common/constants";
4
- export * from "../common/FileUploadContext";
5
1
  import { fields as FormViewFields } from "./fields";
6
2
  import { components as FormViewComponents } from "./components";
7
3
  import { templates as FormViewTemplates } from "./templates";
@@ -6,7 +6,7 @@ export const ObjectFieldTemplateTitle = styled.div `
6
6
  font-family: ${(props) => props.theme.typography.fontFamily.heading};
7
7
  font-size: ${(props) => props.theme.typography.size.h4};
8
8
  font-weight: ${(props) => props.theme.typography.weight.bold};
9
- margin: ${(props) => `${props.theme.spacing.l} 0`};
9
+ margin: ${(props) => `${props.theme.spacing.s} 0`};
10
10
  `;
11
11
  export const ObjectFieldTemplateDescription = undefined;
12
12
  export function getComponents(components) {
@@ -1,12 +1,9 @@
1
- //Please keep this in alphabetical order
2
1
  import * as ArrayFieldTemplate from "./ArrayFieldTemplate";
3
2
  import * as FieldTemplate from "./FieldTemplate";
4
3
  import * as ObjectFieldTemplate from "./ObjectFieldTemplate";
5
- import * as CollapsibleObjectFieldTemplate from "./CollapsibleObjectFieldTemplate";
6
4
  //Please keep this in alphabetical order
7
5
  export const templateComponents = {
8
6
  ...ArrayFieldTemplate.components,
9
- //...CollapsibleObjectFieldTemplate.components, // In print version this should look same as the ObjectFieldTemplate
10
7
  //...FieldTemplate.components, // Field template uses generic components (should it own those?)
11
8
  ...ObjectFieldTemplate.components,
12
9
  };
@@ -15,5 +12,4 @@ export const templates = {
15
12
  ...ArrayFieldTemplate.templates,
16
13
  ...FieldTemplate.templates,
17
14
  ...ObjectFieldTemplate.templates,
18
- ...CollapsibleObjectFieldTemplate.templates,
19
15
  };
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export * from "./constants";
3
+ export * from "./FileUploadContext";
@@ -1,3 +1,4 @@
1
1
  export * from "./Field";
2
2
  export * from "./Form";
3
3
  export * from "./Schemas";
4
+ export * from "./Templates";