@nolwenture/formik-jsonschema-form 1.0.0-beta.28 → 1.0.0-beta.29

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 (69) hide show
  1. package/dist/cjs/Form/fields/ArrayField/ArrayField.js +12 -10
  2. package/dist/cjs/Form/fields/ArrayField/styledComponents.js +1 -2
  3. package/dist/cjs/Form/fields/BooleanField/BooleanField.js +3 -1
  4. package/dist/cjs/Form/fields/DateField/DateField.js +3 -1
  5. package/dist/cjs/Form/fields/FileUploadField/FileUploadField.js +3 -1
  6. package/dist/cjs/Form/fields/MultipleChoiceField/MultipleChoiceField.js +3 -1
  7. package/dist/cjs/Form/fields/NullField/NullField.js +3 -1
  8. package/dist/cjs/Form/fields/ObjectField/ObjectField.js +2 -1
  9. package/dist/cjs/Form/fields/ObjectField/styledComponents.js +1 -6
  10. package/dist/cjs/Form/fields/RadioField/RadioField.js +3 -1
  11. package/dist/cjs/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +3 -1
  12. package/dist/cjs/Form/fields/SearchableSelectField/SearchableSelectField.js +3 -1
  13. package/dist/cjs/Form/fields/StringField/StringField.js +3 -1
  14. package/dist/cjs/Form/fields/TextAreaField/TextAreaField.js +3 -1
  15. package/dist/cjs/Form/fields/ToggleField/ToggleField.js +3 -1
  16. package/dist/cjs/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +2 -2
  17. package/dist/cjs/Form/templates/index.js +1 -0
  18. package/dist/cjs/FormView/fields/ArrayField.js +6 -5
  19. package/dist/cjs/FormView/fields/BooleanField.js +3 -1
  20. package/dist/cjs/FormView/fields/MultipleChoiceField.js +3 -1
  21. package/dist/cjs/FormView/fields/NullField.js +3 -1
  22. package/dist/cjs/FormView/fields/ObjectField/ObjectField.js +3 -1
  23. package/dist/cjs/FormView/fields/StringField.js +3 -1
  24. package/dist/cjs/FormView/fields/TextAreaField.js +3 -1
  25. package/dist/cjs/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +2 -2
  26. package/dist/cjs/FormView/templates/index.js +1 -0
  27. package/dist/esm/Form/fields/ArrayField/ArrayField.js +13 -11
  28. package/dist/esm/Form/fields/ArrayField/styledComponents.js +1 -2
  29. package/dist/esm/Form/fields/BooleanField/BooleanField.js +3 -1
  30. package/dist/esm/Form/fields/DateField/DateField.js +3 -1
  31. package/dist/esm/Form/fields/FileUploadField/FileUploadField.js +3 -1
  32. package/dist/esm/Form/fields/MultipleChoiceField/MultipleChoiceField.js +3 -1
  33. package/dist/esm/Form/fields/NullField/NullField.js +3 -1
  34. package/dist/esm/Form/fields/ObjectField/ObjectField.js +2 -1
  35. package/dist/esm/Form/fields/ObjectField/styledComponents.js +0 -5
  36. package/dist/esm/Form/fields/RadioField/RadioField.js +3 -1
  37. package/dist/esm/Form/fields/SearchableMultiTagSelectField/SearchableMultiTagSelectField.js +3 -1
  38. package/dist/esm/Form/fields/SearchableSelectField/SearchableSelectField.js +3 -1
  39. package/dist/esm/Form/fields/StringField/StringField.js +3 -1
  40. package/dist/esm/Form/fields/TextAreaField/TextAreaField.js +3 -1
  41. package/dist/esm/Form/fields/ToggleField/ToggleField.js +3 -1
  42. package/dist/esm/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +2 -2
  43. package/dist/esm/Form/templates/index.js +1 -0
  44. package/dist/esm/FormView/fields/ArrayField.js +6 -5
  45. package/dist/esm/FormView/fields/BooleanField.js +3 -1
  46. package/dist/esm/FormView/fields/MultipleChoiceField.js +3 -1
  47. package/dist/esm/FormView/fields/NullField.js +3 -1
  48. package/dist/esm/FormView/fields/ObjectField/ObjectField.js +3 -1
  49. package/dist/esm/FormView/fields/StringField.js +3 -1
  50. package/dist/esm/FormView/fields/TextAreaField.js +3 -1
  51. package/dist/esm/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +2 -2
  52. package/dist/esm/FormView/templates/index.js +1 -0
  53. package/dist/types/Form/components/index.d.ts +0 -2
  54. package/dist/types/Form/fields/ArrayField/styledComponents.d.ts +0 -1
  55. package/dist/types/Form/fields/ObjectField/index.d.ts +0 -1
  56. package/dist/types/Form/fields/ObjectField/styledComponents.d.ts +0 -1
  57. package/dist/types/Form/fields/index.d.ts +0 -2
  58. package/dist/types/Form/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +2 -3
  59. package/dist/types/Form/templates/CollapsibleObjectFieldTemplate/CollapsibleObjectFieldTemplate.d.ts +2 -3
  60. package/dist/types/Form/templates/FieldTemplate/FieldTemplate.d.ts +2 -3
  61. package/dist/types/Form/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +2 -3
  62. package/dist/types/Form/templates/index.d.ts +6 -6
  63. package/dist/types/FormView/templates/ArrayFieldTemplate/ArrayFieldTemplate.d.ts +2 -3
  64. package/dist/types/FormView/templates/FieldTemplate/FieldTemplate.d.ts +2 -3
  65. package/dist/types/FormView/templates/ObjectFieldTemplate/ObjectFieldTemplate.d.ts +2 -3
  66. package/dist/types/FormView/templates/index.d.ts +5 -5
  67. package/dist/types/common/types/Schemas.d.ts +1 -0
  68. package/dist/types/common/types/Templates.d.ts +12 -6
  69. package/package.json +1 -1
@@ -32,12 +32,12 @@ const moveInArray = (values, index, direction) => {
32
32
  }
33
33
  };
34
34
  const ArrayField = (props) => {
35
- const { fields: { SchemaField }, templates, components: { SelectFieldInput, ArrayFieldItem, ArrayFieldItemButtons, ArrayFieldList, ArrayFieldAddButton, ArrayFieldRemoveButton, ArrayFieldUpButton, ArrayFieldDownButton, }, useItemsAsAdditionalItems, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
35
+ const { fields: { SchemaField }, templates, components: { SelectFieldInput, ArrayFieldItem, ArrayFieldItemButtons, ArrayFieldAddButton, ArrayFieldRemoveButton, ArrayFieldUpButton, ArrayFieldDownButton, }, useItemsAsAdditionalItems, } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
36
36
  (0, hooks_1.useSetDefault)(props);
37
37
  const { name, schema, uiSchema } = props;
38
38
  const { type, props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
39
39
  const [{ value }, _, { setValue }] = (0, formik_1.useField)(name);
40
- const { items, additionalItems, } = (0, react_1.useMemo)(() => {
40
+ const schemas = (0, react_1.useMemo)(() => {
41
41
  let items = schema.items && typeof schema.items !== "boolean" ? schema.items : [];
42
42
  if (!Array.isArray(items)) {
43
43
  items = [items];
@@ -99,21 +99,23 @@ const ArrayField = (props) => {
99
99
  const { disabled } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
100
100
  const valueArray = Array.isArray(value) ? value : undefined;
101
101
  const preventManipulation = disabled || schema.readOnly;
102
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
103
- const SelectedArrayFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ArrayFieldTemplate;
102
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
103
+ templates[props.uiSchema?.["ui:template"]]) ??
104
+ templates.FieldTemplate;
105
+ const SelectedArrayFieldTemplate = (props.uiSchema?.["ui:template"] &&
106
+ templates[props.uiSchema?.["ui:template"]]) ??
107
+ templates.ArrayFieldTemplate;
104
108
  return schema.anyOf !== undefined ? ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: (0, jsx_runtime_1.jsx)(SelectFieldInput, { type,
105
109
  readOnly: schema.readOnly,
106
- ...inputProps, name: name, formikAs: "select", multiple: enums?.type === utils_1.EnumsTypes.MULTI_SELECT, children: enums?.values.map((option, index) => ((0, jsx_runtime_1.jsx)("option", { value: option.const, children: option.title }, index))) }) })) : ((0, jsx_runtime_1.jsxs)(SelectedArrayFieldTemplate, { ...props, "data-fjsf-array": name, children: [(0, jsx_runtime_1.jsxs)(ArrayFieldList, { children: [(items || []).map((itemSchema, index) => ((0, jsx_runtime_1.jsx)(ArrayFieldItem, { children: (0, jsx_runtime_1.jsx)(SchemaField, { name: `${name}[${index}]`, schema: prepareChildSchema(itemSchema, schema), uiSchema: {
110
+ ...inputProps, name: name, formikAs: "select", multiple: enums?.type === utils_1.EnumsTypes.MULTI_SELECT, children: enums?.values.map((option, index) => ((0, jsx_runtime_1.jsx)("option", { value: option.const, children: option.title }, index))) }) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SelectedArrayFieldTemplate, { ...props, "data-fjsf-array": name, items: valueArray, renderItem: (item, index) => ((0, jsx_runtime_1.jsxs)(ArrayFieldItem, { children: [(0, jsx_runtime_1.jsx)(SchemaField, { name: `${name}[${index}]`, schema: prepareChildSchema((index < schemas.items.length && schemas.items[index]) ??
111
+ schemas.additionalItems, schema), uiSchema: {
107
112
  disabled,
108
113
  ...(uiSchema?.[index] || uiSchema?.items),
109
114
  },
110
115
  // "true" will prevent validation for required array fields
111
116
  // since a value always exists in the array
112
- forceDefaultValue: false }) }, index))), (valueArray?.slice(items.length) || []).map((_, index) => ((0, jsx_runtime_1.jsxs)(ArrayFieldItem, { children: [(0, jsx_runtime_1.jsx)(SchemaField, { name: `${name}[${index + items.length}]`, schema: prepareChildSchema(additionalItems, schema), uiSchema: {
113
- disabled,
114
- ...(uiSchema?.[index + items.length] || uiSchema?.items),
115
- } }), !preventManipulation && ((0, jsx_runtime_1.jsxs)(ArrayFieldItemButtons, { children: [(0, jsx_runtime_1.jsx)(ArrayFieldRemoveButton, { ...(uiSchema?.["ui:removeButtonOptions"]?.props ?? {}), onClick: () => setValue(removeFromArray(value, index + items.length)), children: uiSchema?.["ui:removeButtonOptions"]?.content ?? "-" }), value.length > 1 && index > 0 && ((0, jsx_runtime_1.jsx)(ArrayFieldUpButton, { ...(uiSchema?.["ui:upButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + items.length, -1)), children: uiSchema?.["ui:upButtonOptions"]?.content ?? "↑" })), value.length > 1 &&
116
- index < value?.slice(items.length).length - 1 && ((0, jsx_runtime_1.jsx)(ArrayFieldDownButton, { ...(uiSchema?.["ui:downButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + items.length, 1)), children: uiSchema?.["ui:downButtonOptions"]?.content ?? "↓" }))] }))] }, index)))] }), additionalItems && !preventManipulation && ((0, jsx_runtime_1.jsx)(ArrayFieldAddButton, { ...(uiSchema?.["ui:addButtonOptions"]?.props ?? {}), onClick: () => setValue(appendArray(value)), children: uiSchema?.["ui:addButtonOptions"]?.content ?? "+" }))] }));
117
+ forceDefaultValue: index >= schemas.items.length }), !preventManipulation && index >= schemas.items.length && ((0, jsx_runtime_1.jsxs)(ArrayFieldItemButtons, { children: [(0, jsx_runtime_1.jsx)(ArrayFieldRemoveButton, { ...(uiSchema?.["ui:removeButtonOptions"]?.props ?? {}), onClick: () => setValue(removeFromArray(value, index + schemas.items.length)), children: uiSchema?.["ui:removeButtonOptions"]?.content ?? "-" }), value.length > 1 && index > 0 && ((0, jsx_runtime_1.jsx)(ArrayFieldUpButton, { ...(uiSchema?.["ui:upButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + schemas.items.length, -1)), children: uiSchema?.["ui:upButtonOptions"]?.content ?? "↑" })), value.length > 1 &&
118
+ index < value?.slice(schemas.items.length).length - 1 && ((0, jsx_runtime_1.jsx)(ArrayFieldDownButton, { ...(uiSchema?.["ui:downButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + schemas.items.length, 1)), children: uiSchema?.["ui:downButtonOptions"]?.content ?? "↓" }))] }))] }, index)) }), schemas.additionalItems && !preventManipulation && ((0, jsx_runtime_1.jsx)(ArrayFieldAddButton, { ...(uiSchema?.["ui:addButtonOptions"]?.props ?? {}), onClick: () => setValue(appendArray(value)), children: uiSchema?.["ui:addButtonOptions"]?.content ?? "+" }))] }));
117
119
  };
118
120
  exports.ArrayField = ArrayField;
119
121
  function prepareChildSchema(childSchema, parentSchema) {
@@ -3,10 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ArrayFieldAddButton = exports.ArrayFieldRemoveButton = exports.ArrayFieldDownButton = exports.ArrayFieldUpButton = exports.ArrayFieldLineButton = exports.ArrayFieldButton = exports.ArrayFieldItemButtons = exports.ArrayFieldItem = exports.ArrayFieldList = void 0;
6
+ exports.ArrayFieldAddButton = exports.ArrayFieldRemoveButton = exports.ArrayFieldDownButton = exports.ArrayFieldUpButton = exports.ArrayFieldLineButton = exports.ArrayFieldButton = exports.ArrayFieldItemButtons = exports.ArrayFieldItem = void 0;
7
7
  const styled_components_1 = __importDefault(require("styled-components"));
8
8
  const styledComponents_1 = require("../ObjectField/styledComponents");
9
- exports.ArrayFieldList = styledComponents_1.ObjectFieldList;
10
9
  exports.ArrayFieldItem = styledComponents_1.ObjectFieldItem;
11
10
  exports.ArrayFieldItemButtons = styledComponents_1.ObjectFieldItemButtons;
12
11
  exports.ArrayFieldButton = (0, styled_components_1.default)(styledComponents_1.ObjectFieldButton) ``;
@@ -13,7 +13,9 @@ const BooleanField = (props) => {
13
13
  const { name, uiSchema } = props;
14
14
  const { label, props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
15
15
  const { values, setValues } = (0, formik_1.useFormikContext)();
16
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
16
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
17
+ templates[props.uiSchema?.["ui:template"]]) ??
18
+ templates.FieldTemplate;
17
19
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: (0, jsx_runtime_1.jsxs)(BooleanFieldWrapper, { children: [(0, jsx_runtime_1.jsx)(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "checkbox" }), (0, jsx_runtime_1.jsx)("span", { onClick: () => {
18
20
  setValues({
19
21
  ...values,
@@ -12,7 +12,9 @@ const DateField = (props) => {
12
12
  (0, hooks_1.useSetDefault)(props);
13
13
  const { name, uiSchema } = props;
14
14
  const { props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
15
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
15
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
16
+ templates[props.uiSchema?.["ui:template"]]) ??
17
+ templates.FieldTemplate;
16
18
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: (0, jsx_runtime_1.jsx)(styledComponents_1.DateFieldWrapper, { children: (0, jsx_runtime_1.jsx)(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "date" }) }) }));
17
19
  };
18
20
  exports.DateField = DateField;
@@ -61,7 +61,9 @@ const FileUploadField = (props) => {
61
61
  setFieldValue(name, null);
62
62
  }
63
63
  };
64
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
64
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
65
+ templates[props.uiSchema?.["ui:template"]]) ??
66
+ templates.FieldTemplate;
65
67
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-object": name, children: (0, jsx_runtime_1.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 }) }));
66
68
  };
67
69
  exports.FileUploadField = FileUploadField;
@@ -27,7 +27,9 @@ const MultipleChoiceField = (props) => {
27
27
  return { "data-fjsf-string": name };
28
28
  }
29
29
  })();
30
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
30
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
31
+ templates[props.uiSchema?.["ui:template"]]) ??
32
+ templates.FieldTemplate;
31
33
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: (0, jsx_runtime_1.jsx)(MultipleChoiceFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name, enums: enums, style: style, value: value, form: form }) }));
32
34
  };
33
35
  exports.MultipleChoiceField = MultipleChoiceField;
@@ -7,7 +7,9 @@ const FormRegistry_1 = require("../../FormRegistry");
7
7
  const NullField = (props) => {
8
8
  const { templates } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
9
9
  const { name, uiSchema } = props;
10
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
10
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
11
+ templates[props.uiSchema?.["ui:template"]]) ??
12
+ templates.FieldTemplate;
11
13
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-null": name }));
12
14
  };
13
15
  exports.NullField = NullField;
@@ -52,7 +52,8 @@ const ObjectField = (props) => {
52
52
  return ((0, jsx_runtime_1.jsx)(ObjectFieldButton, { ...(uiSchema?.["ui:customButtonOptions"]?.props ?? {}), onClick: onClick, children: uiSchema?.["ui:customButtonOptions"]?.content ?? "" }));
53
53
  }
54
54
  };
55
- const SelectedObjectFieldTemplate = templates[props.uiSchema?.["ui:template"]] ??
55
+ const SelectedObjectFieldTemplate = (props.uiSchema?.["ui:template"] &&
56
+ templates[props.uiSchema?.["ui:template"]]) ??
56
57
  (props.uiSchema?.["ui:options"]?.isCollapsible
57
58
  ? templates.CollapsibleObjectFieldTemplate
58
59
  : templates.ObjectFieldTemplate);
@@ -1,12 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectFieldSectionTitle = exports.ObjectFieldSectionWrapper = exports.ObjectFieldAddButton = exports.ObjectFieldRemoveButton = exports.ObjectFieldDownButton = exports.ObjectFieldUpButton = exports.ObjectFieldLineButton = exports.ObjectFieldButton = exports.ObjectFieldItemButtons = exports.ObjectFieldItem = exports.ObjectFieldList = void 0;
3
+ exports.ObjectFieldSectionTitle = exports.ObjectFieldSectionWrapper = exports.ObjectFieldAddButton = exports.ObjectFieldRemoveButton = exports.ObjectFieldDownButton = exports.ObjectFieldUpButton = exports.ObjectFieldLineButton = exports.ObjectFieldButton = exports.ObjectFieldItemButtons = exports.ObjectFieldItem = void 0;
4
4
  const styled_components_1 = require("styled-components");
5
- exports.ObjectFieldList = styled_components_1.styled.ul `
6
- color: ${(props) => props.theme.color.text.default};
7
- list-style-type: none;
8
- padding: 0;
9
- `;
10
5
  exports.ObjectFieldItem = styled_components_1.styled.li `
11
6
  color: ${(props) => props.theme.color.text.default};
12
7
  display: flex;
@@ -11,7 +11,9 @@ const RadioField = (props) => {
11
11
  (0, hooks_1.useSetDefault)(props);
12
12
  const { name, uiSchema } = props;
13
13
  const { label, props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
14
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
14
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
15
+ templates[props.uiSchema?.["ui:template"]]) ??
16
+ templates.FieldTemplate;
15
17
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: (0, jsx_runtime_1.jsx)(RadioFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, label: label, name: name }) }));
16
18
  };
17
19
  exports.RadioField = RadioField;
@@ -12,7 +12,9 @@ const SearchableMultiTagSelectField = (props) => {
12
12
  const { name, uiSchema } = props;
13
13
  const { placeholder, emptySearchMessage, props: inputProps, } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
14
14
  const enums = (0, react_1.useMemo)(() => (0, utils_1.getEnums)(props), [props]);
15
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
15
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
16
+ templates[props.uiSchema?.["ui:template"]]) ??
17
+ templates.FieldTemplate;
16
18
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: (0, jsx_runtime_1.jsx)(SearchableMultiTagSelectFieldInput, { ...inputProps, name: name, placeholder: placeholder, emptySearchMessage: emptySearchMessage, enums: enums }) }));
17
19
  };
18
20
  exports.SearchableMultiTagSelectField = SearchableMultiTagSelectField;
@@ -119,7 +119,9 @@ const SearchableSelectField = (props) => {
119
119
  const fieldDataAttribute = schema.type === "string"
120
120
  ? { "data-fjsf-string": name }
121
121
  : { "data-fjsf-number": name };
122
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
122
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
123
+ templates[props.uiSchema?.["ui:template"]]) ??
124
+ templates.FieldTemplate;
123
125
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: (0, jsx_runtime_1.jsxs)(SearchableSelectFieldContainer, { ref: containerRef, onBlur: handleBlur, children: [(0, jsx_runtime_1.jsxs)(SearchableSelectFieldInputContainer, { children: [(0, jsx_runtime_1.jsx)(SearchableSelectFieldInputElement, { ...inputProps, name: name, type: "text", placeholder: placeholder, value: searchTerm, onChange: handleSearchChange, onFocus: handleFocus }), searchTerm && !hideClearButton && ((0, jsx_runtime_1.jsx)(SearchableSelectFieldClearButton, { onClick: handleClear, children: clearButtonText ?? "✕" }))] }), showOptions && ((0, jsx_runtime_1.jsxs)(SearchableSelectFieldDropdownContainer, { role: "dropdown-list",
124
126
  //ref={moreRef} //TODO
125
127
  style: {
@@ -18,7 +18,9 @@ const StringField = (props) => {
18
18
  const fieldDataAttribute = schema.type === "string"
19
19
  ? { "data-fjsf-string": name }
20
20
  : { "data-fjsf-number": name };
21
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
21
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
22
+ templates[props.uiSchema?.["ui:template"]]) ??
23
+ templates.FieldTemplate;
22
24
  switch (enums?.type) {
23
25
  case "select":
24
26
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: (0, jsx_runtime_1.jsx)(styledComponents_1.StringFieldWrapper, { children: (0, jsx_runtime_1.jsxs)(SelectFieldInput, { type,
@@ -11,7 +11,9 @@ const TextAreaField = (props) => {
11
11
  (0, hooks_1.useSetDefault)(props);
12
12
  const { name, uiSchema } = props;
13
13
  const { props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
14
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
14
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
15
+ templates[props.uiSchema?.["ui:template"]]) ??
16
+ templates.FieldTemplate;
15
17
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: (0, jsx_runtime_1.jsx)(TextAreaFieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, formikAs: "textarea" }) }));
16
18
  };
17
19
  exports.TextAreaField = TextAreaField;
@@ -11,7 +11,9 @@ const ToggleField = (props) => {
11
11
  (0, hooks_1.useSetDefault)(props);
12
12
  const { name, uiSchema } = props;
13
13
  const { props: inputProps } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
14
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
14
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
15
+ templates[props.uiSchema?.["ui:template"]]) ??
16
+ templates.FieldTemplate;
15
17
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: (0, jsx_runtime_1.jsx)(ToggleFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name }) }));
16
18
  };
17
19
  exports.ToggleField = ToggleField;
@@ -10,7 +10,7 @@ const styledComponents_1 = require("./styledComponents");
10
10
  const ArrayFieldTemplate = (props) => {
11
11
  const { components } = (0, react_1.useContext)(FormRegistry_1.FormRegistry);
12
12
  const { Wrapper, Title, Description, Help, Info, RequiredIndicator, ErrorMessage, } = (0, styledComponents_1.getComponents)(components);
13
- const { name, uiSchema, children, ...otherProps } = props;
13
+ const { name, uiSchema, items, renderItem, ...otherProps } = props;
14
14
  const title = (0, utils_1.getTitle)(props);
15
15
  const description = (0, utils_1.getDescription)(props);
16
16
  const { help, info, props: { wrapper: wrapperProps = {}, title: titleProps, description: descriptionProps, help: helpProps, error: errorProps, } = {}, } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
@@ -31,6 +31,6 @@ const ArrayFieldTemplate = (props) => {
31
31
  // In case of array of objects, it will give error message as an object value,
32
32
  // which is incorrect value for React, causing UI to crash.
33
33
  const errorIsString = typeof error === "string";
34
- return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [title && ((0, jsx_runtime_1.jsxs)(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(Info, { ...info }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), children, help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help }), errorIsString && (0, jsx_runtime_1.jsx)(ErrorMessage, { ...errorProps, name: name })] }));
34
+ return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...mergedWrapperProps, children: [title && ((0, jsx_runtime_1.jsxs)(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && (0, jsx_runtime_1.jsx)(RequiredIndicator, {})] })), info && (0, jsx_runtime_1.jsx)(Info, { ...info }), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), items && items.map((item, index) => renderItem(item, index)), help && (0, jsx_runtime_1.jsx)(Help, { ...helpProps, children: help }), errorIsString && (0, jsx_runtime_1.jsx)(ErrorMessage, { ...errorProps, name: name })] }));
35
35
  };
36
36
  exports.ArrayFieldTemplate = ArrayFieldTemplate;
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.templates = exports.templateComponents = void 0;
37
+ //Please keep this in alphabetical order
37
38
  const ArrayFieldTemplate = __importStar(require("./ArrayFieldTemplate"));
38
39
  const CollapsibleObjectFieldTemplate = __importStar(require("./CollapsibleObjectFieldTemplate"));
39
40
  const FieldTemplate = __importStar(require("./FieldTemplate"));
@@ -20,10 +20,11 @@ const ArrayField = (props) => {
20
20
  }
21
21
  return item;
22
22
  }
23
- const SelectedArrayFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ArrayFieldTemplate;
24
- return ((0, jsx_runtime_1.jsx)(SelectedArrayFieldTemplate, { ...props, children: value &&
25
- value.map((item, index) => typeof item === "object" ? ((0, jsx_runtime_1.jsx)(ArrayFieldItem, { children: (0, jsx_runtime_1.jsx)(SchemaField, { name: `${name}[${index}]`, schema: typeof props.schema.additionalItems !== "boolean"
26
- ? props.schema.additionalItems
27
- : {}, uiSchema: uiSchema }) }, index)) : ((0, jsx_runtime_1.jsx)(ArrayFieldItem, { children: (0, jsx_runtime_1.jsx)("div", { "data-keyword": item, children: getValue(item) }) }, item))) }));
23
+ const SelectedArrayFieldTemplate = (props.uiSchema?.["ui:template"] &&
24
+ templates[props.uiSchema?.["ui:template"]]) ??
25
+ templates.ArrayFieldTemplate;
26
+ return ((0, jsx_runtime_1.jsx)(SelectedArrayFieldTemplate, { ...props, items: value, renderItem: (item, index) => typeof item === "object" ? ((0, jsx_runtime_1.jsx)(ArrayFieldItem, { children: (0, jsx_runtime_1.jsx)(SchemaField, { name: `${name}[${index}]`, schema: typeof props.schema.additionalItems !== "boolean"
27
+ ? props.schema.additionalItems
28
+ : {}, uiSchema: uiSchema }) }, index)) : ((0, jsx_runtime_1.jsx)(ArrayFieldItem, { children: (0, jsx_runtime_1.jsx)("div", { "data-keyword": item, children: getValue(item) }) }, item)) }));
28
29
  };
29
30
  exports.ArrayField = ArrayField;
@@ -25,7 +25,9 @@ const BooleanField = (props) => {
25
25
  }
26
26
  return typeof label === "string" ? label : undefined;
27
27
  }
28
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
28
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
29
+ templates[props.uiSchema?.["ui:template"]]) ??
30
+ templates.FieldTemplate;
29
31
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, children: (0, jsx_runtime_1.jsx)(BooleanFieldWrapper, { children: (0, jsx_runtime_1.jsx)(BooleanFieldValue, { name: name, value: value, label: findLabel(label) }) }) }));
30
32
  };
31
33
  exports.BooleanField = BooleanField;
@@ -16,7 +16,9 @@ const MultipleChoiceField = (props) => {
16
16
  const selected = (0, utils_1.getSelectedEnum)(value, enums);
17
17
  const notSelected = enums?.values?.filter((v) => Array.isArray(value) && !value.includes(v));
18
18
  const hideNotSelected = onlyShowSelected === true || selected === undefined;
19
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
19
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
20
+ templates[props.uiSchema?.["ui:template"]]) ??
21
+ templates.FieldTemplate;
20
22
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, children: (0, jsx_runtime_1.jsx)(MultipleChoiceFieldValue, { inputProps: inputProps, name: name, style: style, selected: selected, notSelected: hideNotSelected ? undefined : notSelected }) }));
21
23
  };
22
24
  exports.MultipleChoiceField = MultipleChoiceField;
@@ -6,7 +6,9 @@ const react_1 = require("react");
6
6
  const FormViewRegistry_1 = require("../FormViewRegistry");
7
7
  const NullField = (props) => {
8
8
  const { templates } = (0, react_1.useContext)(FormViewRegistry_1.FormViewRegistry);
9
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
9
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
10
+ templates[props.uiSchema?.["ui:template"]]) ??
11
+ templates.FieldTemplate;
10
12
  return (0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props });
11
13
  };
12
14
  exports.NullField = NullField;
@@ -31,7 +31,9 @@ const ObjectField = (props) => {
31
31
  }
32
32
  }, [valuesToRemove]);
33
33
  const orderedProperties = (0, utils_1.orderByUiSchema)(uiSchema?.["ui:order"], Object.keys(properties || {}));
34
- const SelectedObjectFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ObjectFieldTemplate;
34
+ const SelectedObjectFieldTemplate = (props.uiSchema?.["ui:template"] &&
35
+ templates[props.uiSchema?.["ui:template"]]) ??
36
+ templates.ObjectFieldTemplate;
35
37
  return ((0, jsx_runtime_1.jsx)(SelectedObjectFieldTemplate, { ...props, children: orderedProperties
36
38
  .map((child, index) => {
37
39
  if (typeof child === "string") {
@@ -16,7 +16,9 @@ const StringField = (props) => {
16
16
  value =
17
17
  enums.values.find((element) => element.const === value)?.title ?? value;
18
18
  }
19
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
19
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
20
+ templates[props.uiSchema?.["ui:template"]]) ??
21
+ templates.FieldTemplate;
20
22
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, children: (0, jsx_runtime_1.jsx)(StringFieldValue, { "data-keyword": value, children: value }) }));
21
23
  };
22
24
  exports.StringField = StringField;
@@ -10,7 +10,9 @@ const TextAreaField = (props) => {
10
10
  const { name, uiSchema } = props;
11
11
  const { values } = (0, formik_1.useFormikContext)();
12
12
  const value = (0, formik_1.getIn)(values, name);
13
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
13
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
14
+ templates[props.uiSchema?.["ui:template"]]) ??
15
+ templates.FieldTemplate;
14
16
  return ((0, jsx_runtime_1.jsx)(SelectedFieldTemplate, { ...props, children: (0, jsx_runtime_1.jsx)(TextAreaValue, { children: value }) }));
15
17
  };
16
18
  exports.TextAreaField = TextAreaField;
@@ -9,12 +9,12 @@ const styledComponents_1 = require("./styledComponents");
9
9
  const ArrayFieldTemplate = (props) => {
10
10
  const { components } = (0, react_1.useContext)(FormViewRegistry_1.FormViewRegistry);
11
11
  const { Wrapper, Title, Description } = (0, styledComponents_1.getComponents)(components);
12
- const { name, uiSchema, children } = props;
12
+ const { name, uiSchema, items, renderItem } = props;
13
13
  const title = (0, utils_1.getTitle)(props);
14
14
  const description = (0, utils_1.getDescription)(props);
15
15
  const { help, info,
16
16
  //TODO: This is not right
17
17
  props: { wrapper: wrapperProps, title: titleProps, description: descriptionProps, help: helpProps, error: errorProps, } = {}, } = (0, react_1.useMemo)(() => (0, utils_1.extractUiSchema)(uiSchema), [uiSchema]);
18
- return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...wrapperProps, children: [title && ((0, jsx_runtime_1.jsx)(Title, { ...titleProps, htmlFor: name, children: title })), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), children] }));
18
+ return ((0, jsx_runtime_1.jsxs)(Wrapper, { ...wrapperProps, children: [title && ((0, jsx_runtime_1.jsx)(Title, { ...titleProps, htmlFor: name, children: title })), description && ((0, jsx_runtime_1.jsx)(Description, { ...descriptionProps, children: description })), items && items.map((item, index) => renderItem(item, index))] }));
19
19
  };
20
20
  exports.ArrayFieldTemplate = ArrayFieldTemplate;
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.templates = exports.templateComponents = void 0;
37
+ //Please keep this in alphabetical order
37
38
  const ArrayFieldTemplate = __importStar(require("./ArrayFieldTemplate"));
38
39
  const FieldTemplate = __importStar(require("./FieldTemplate"));
39
40
  const ObjectFieldTemplate = __importStar(require("./ObjectFieldTemplate"));
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useContext, useMemo } from "react";
3
3
  import { useField } from "formik";
4
4
  import { EnumsTypes, extractUiSchema, getEnums } from "../../../utils";
@@ -29,12 +29,12 @@ const moveInArray = (values, index, direction) => {
29
29
  }
30
30
  };
31
31
  export const ArrayField = (props) => {
32
- const { fields: { SchemaField }, templates, components: { SelectFieldInput, ArrayFieldItem, ArrayFieldItemButtons, ArrayFieldList, ArrayFieldAddButton, ArrayFieldRemoveButton, ArrayFieldUpButton, ArrayFieldDownButton, }, useItemsAsAdditionalItems, } = useContext(FormRegistry);
32
+ const { fields: { SchemaField }, templates, components: { SelectFieldInput, ArrayFieldItem, ArrayFieldItemButtons, 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]);
36
36
  const [{ value }, _, { setValue }] = useField(name);
37
- const { items, additionalItems, } = useMemo(() => {
37
+ const schemas = useMemo(() => {
38
38
  let items = schema.items && typeof schema.items !== "boolean" ? schema.items : [];
39
39
  if (!Array.isArray(items)) {
40
40
  items = [items];
@@ -96,21 +96,23 @@ 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
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
100
- const SelectedArrayFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ArrayFieldTemplate;
99
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
100
+ templates[props.uiSchema?.["ui:template"]]) ??
101
+ templates.FieldTemplate;
102
+ const SelectedArrayFieldTemplate = (props.uiSchema?.["ui:template"] &&
103
+ templates[props.uiSchema?.["ui:template"]]) ??
104
+ templates.ArrayFieldTemplate;
101
105
  return schema.anyOf !== undefined ? (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: _jsx(SelectFieldInput, { type,
102
106
  readOnly: schema.readOnly,
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: {
107
+ ...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(_Fragment, { children: [_jsx(SelectedArrayFieldTemplate, { ...props, "data-fjsf-array": name, items: valueArray, renderItem: (item, index) => (_jsxs(ArrayFieldItem, { children: [_jsx(SchemaField, { name: `${name}[${index}]`, schema: prepareChildSchema((index < schemas.items.length && schemas.items[index]) ??
108
+ schemas.additionalItems, schema), uiSchema: {
104
109
  disabled,
105
110
  ...(uiSchema?.[index] || uiSchema?.items),
106
111
  },
107
112
  // "true" will prevent validation for required array fields
108
113
  // since a value always exists in the array
109
- forceDefaultValue: false }) }, index))), (valueArray?.slice(items.length) || []).map((_, index) => (_jsxs(ArrayFieldItem, { children: [_jsx(SchemaField, { name: `${name}[${index + items.length}]`, schema: prepareChildSchema(additionalItems, schema), uiSchema: {
110
- disabled,
111
- ...(uiSchema?.[index + items.length] || uiSchema?.items),
112
- } }), !preventManipulation && (_jsxs(ArrayFieldItemButtons, { children: [_jsx(ArrayFieldRemoveButton, { ...(uiSchema?.["ui:removeButtonOptions"]?.props ?? {}), onClick: () => setValue(removeFromArray(value, index + items.length)), children: uiSchema?.["ui:removeButtonOptions"]?.content ?? "-" }), value.length > 1 && index > 0 && (_jsx(ArrayFieldUpButton, { ...(uiSchema?.["ui:upButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + items.length, -1)), children: uiSchema?.["ui:upButtonOptions"]?.content ?? "↑" })), value.length > 1 &&
113
- index < value?.slice(items.length).length - 1 && (_jsx(ArrayFieldDownButton, { ...(uiSchema?.["ui:downButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + items.length, 1)), children: uiSchema?.["ui:downButtonOptions"]?.content ?? "↓" }))] }))] }, index)))] }), additionalItems && !preventManipulation && (_jsx(ArrayFieldAddButton, { ...(uiSchema?.["ui:addButtonOptions"]?.props ?? {}), onClick: () => setValue(appendArray(value)), children: uiSchema?.["ui:addButtonOptions"]?.content ?? "+" }))] }));
114
+ forceDefaultValue: index >= schemas.items.length }), !preventManipulation && index >= schemas.items.length && (_jsxs(ArrayFieldItemButtons, { children: [_jsx(ArrayFieldRemoveButton, { ...(uiSchema?.["ui:removeButtonOptions"]?.props ?? {}), onClick: () => setValue(removeFromArray(value, index + schemas.items.length)), children: uiSchema?.["ui:removeButtonOptions"]?.content ?? "-" }), value.length > 1 && index > 0 && (_jsx(ArrayFieldUpButton, { ...(uiSchema?.["ui:upButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + schemas.items.length, -1)), children: uiSchema?.["ui:upButtonOptions"]?.content ?? "↑" })), value.length > 1 &&
115
+ index < value?.slice(schemas.items.length).length - 1 && (_jsx(ArrayFieldDownButton, { ...(uiSchema?.["ui:downButtonOptions"]?.props ?? {}), onClick: () => setValue(moveInArray(value, index + schemas.items.length, 1)), children: uiSchema?.["ui:downButtonOptions"]?.content ?? "↓" }))] }))] }, index)) }), schemas.additionalItems && !preventManipulation && (_jsx(ArrayFieldAddButton, { ...(uiSchema?.["ui:addButtonOptions"]?.props ?? {}), onClick: () => setValue(appendArray(value)), children: uiSchema?.["ui:addButtonOptions"]?.content ?? "+" }))] }));
114
116
  };
115
117
  function prepareChildSchema(childSchema, parentSchema) {
116
118
  if (!childSchema || typeof childSchema === "boolean") {
@@ -1,6 +1,5 @@
1
1
  import styled from "styled-components";
2
- import { ObjectFieldButton, ObjectFieldItem, ObjectFieldItemButtons, ObjectFieldList, } from "../ObjectField/styledComponents";
3
- export const ArrayFieldList = ObjectFieldList;
2
+ import { ObjectFieldButton, ObjectFieldItem, ObjectFieldItemButtons, } from "../ObjectField/styledComponents";
4
3
  export const ArrayFieldItem = ObjectFieldItem;
5
4
  export const ArrayFieldItemButtons = ObjectFieldItemButtons;
6
5
  export const ArrayFieldButton = styled(ObjectFieldButton) ``;
@@ -10,7 +10,9 @@ export const BooleanField = (props) => {
10
10
  const { name, uiSchema } = props;
11
11
  const { label, props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
12
12
  const { values, setValues } = useFormikContext();
13
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
13
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
14
+ templates[props.uiSchema?.["ui:template"]]) ??
15
+ templates.FieldTemplate;
14
16
  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: () => {
15
17
  setValues({
16
18
  ...values,
@@ -9,6 +9,8 @@ export const DateField = (props) => {
9
9
  useSetDefault(props);
10
10
  const { name, uiSchema } = props;
11
11
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
12
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
12
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
13
+ templates[props.uiSchema?.["ui:template"]]) ??
14
+ templates.FieldTemplate;
13
15
  return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: _jsx(DateFieldWrapper, { children: _jsx(FieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, type: "date" }) }) }));
14
16
  };
@@ -58,6 +58,8 @@ export const FileUploadField = (props) => {
58
58
  setFieldValue(name, null);
59
59
  }
60
60
  };
61
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
61
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
62
+ templates[props.uiSchema?.["ui:template"]]) ??
63
+ templates.FieldTemplate;
62
64
  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 }) }));
63
65
  };
@@ -24,6 +24,8 @@ export const MultipleChoiceField = (props) => {
24
24
  return { "data-fjsf-string": name };
25
25
  }
26
26
  })();
27
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
27
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
28
+ templates[props.uiSchema?.["ui:template"]]) ??
29
+ templates.FieldTemplate;
28
30
  return (_jsx(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(MultipleChoiceFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name, enums: enums, style: style, value: value, form: form }) }));
29
31
  };
@@ -4,6 +4,8 @@ import { FormRegistry } from "../../FormRegistry";
4
4
  export const NullField = (props) => {
5
5
  const { templates } = useContext(FormRegistry);
6
6
  const { name, uiSchema } = props;
7
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
7
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
8
+ templates[props.uiSchema?.["ui:template"]]) ??
9
+ templates.FieldTemplate;
8
10
  return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-null": name }));
9
11
  };
@@ -49,7 +49,8 @@ export const ObjectField = (props) => {
49
49
  return (_jsx(ObjectFieldButton, { ...(uiSchema?.["ui:customButtonOptions"]?.props ?? {}), onClick: onClick, children: uiSchema?.["ui:customButtonOptions"]?.content ?? "" }));
50
50
  }
51
51
  };
52
- const SelectedObjectFieldTemplate = templates[props.uiSchema?.["ui:template"]] ??
52
+ const SelectedObjectFieldTemplate = (props.uiSchema?.["ui:template"] &&
53
+ templates[props.uiSchema?.["ui:template"]]) ??
53
54
  (props.uiSchema?.["ui:options"]?.isCollapsible
54
55
  ? templates.CollapsibleObjectFieldTemplate
55
56
  : templates.ObjectFieldTemplate);
@@ -1,9 +1,4 @@
1
1
  import { styled } from "styled-components";
2
- export const ObjectFieldList = styled.ul `
3
- color: ${(props) => props.theme.color.text.default};
4
- list-style-type: none;
5
- padding: 0;
6
- `;
7
2
  export const ObjectFieldItem = styled.li `
8
3
  color: ${(props) => props.theme.color.text.default};
9
4
  display: flex;
@@ -8,6 +8,8 @@ export const RadioField = (props) => {
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { label, props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
11
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
12
+ templates[props.uiSchema?.["ui:template"]]) ??
13
+ templates.FieldTemplate;
12
14
  return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsx(RadioFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, label: label, name: name }) }));
13
15
  };
@@ -9,6 +9,8 @@ export const SearchableMultiTagSelectField = (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
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
12
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
13
+ templates[props.uiSchema?.["ui:template"]]) ??
14
+ templates.FieldTemplate;
13
15
  return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-array": name, children: _jsx(SearchableMultiTagSelectFieldInput, { ...inputProps, name: name, placeholder: placeholder, emptySearchMessage: emptySearchMessage, enums: enums }) }));
14
16
  };
@@ -116,7 +116,9 @@ export const SearchableSelectField = (props) => {
116
116
  const fieldDataAttribute = schema.type === "string"
117
117
  ? { "data-fjsf-string": name }
118
118
  : { "data-fjsf-number": name };
119
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
119
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
120
+ templates[props.uiSchema?.["ui:template"]]) ??
121
+ templates.FieldTemplate;
120
122
  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",
121
123
  //ref={moreRef} //TODO
122
124
  style: {
@@ -15,7 +15,9 @@ 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
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
19
+ templates[props.uiSchema?.["ui:template"]]) ??
20
+ templates.FieldTemplate;
19
21
  switch (enums?.type) {
20
22
  case "select":
21
23
  return (_jsx(SelectedFieldTemplate, { ...props, ...fieldDataAttribute, children: _jsx(StringFieldWrapper, { children: _jsxs(SelectFieldInput, { type,
@@ -8,6 +8,8 @@ export const TextAreaField = (props) => {
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
11
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
12
+ templates[props.uiSchema?.["ui:template"]]) ??
13
+ templates.FieldTemplate;
12
14
  return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-string": name, children: _jsx(TextAreaFieldInput, { readOnly: props.schema.readOnly, ...inputProps, name: name, formikAs: "textarea" }) }));
13
15
  };
@@ -8,6 +8,8 @@ export const ToggleField = (props) => {
8
8
  useSetDefault(props);
9
9
  const { name, uiSchema } = props;
10
10
  const { props: inputProps } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
11
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
11
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
12
+ templates[props.uiSchema?.["ui:template"]]) ??
13
+ templates.FieldTemplate;
12
14
  return (_jsx(SelectedFieldTemplate, { ...props, "data-fjsf-boolean": name, children: _jsx(ToggleFieldInput, { inputProps: { readOnly: props.schema.readOnly, ...inputProps }, name: name }) }));
13
15
  };
@@ -7,7 +7,7 @@ import { getComponents } from "./styledComponents";
7
7
  export const ArrayFieldTemplate = (props) => {
8
8
  const { components } = useContext(FormRegistry);
9
9
  const { Wrapper, Title, Description, Help, Info, RequiredIndicator, ErrorMessage, } = getComponents(components);
10
- const { name, uiSchema, children, ...otherProps } = props;
10
+ const { name, uiSchema, items, renderItem, ...otherProps } = props;
11
11
  const title = getTitle(props);
12
12
  const description = getDescription(props);
13
13
  const { help, info, props: { wrapper: wrapperProps = {}, title: titleProps, description: descriptionProps, help: helpProps, error: errorProps, } = {}, } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
@@ -28,5 +28,5 @@ export const ArrayFieldTemplate = (props) => {
28
28
  // In case of array of objects, it will give error message as an object value,
29
29
  // which is incorrect value for React, causing UI to crash.
30
30
  const errorIsString = typeof error === "string";
31
- return (_jsxs(Wrapper, { ...mergedWrapperProps, children: [title && (_jsxs(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && _jsx(RequiredIndicator, {})] })), info && _jsx(Info, { ...info }), description && (_jsx(Description, { ...descriptionProps, children: description })), children, help && _jsx(Help, { ...helpProps, children: help }), errorIsString && _jsx(ErrorMessage, { ...errorProps, name: name })] }));
31
+ return (_jsxs(Wrapper, { ...mergedWrapperProps, children: [title && (_jsxs(Title, { ...titleProps, htmlFor: name, children: [title, props?.required && _jsx(RequiredIndicator, {})] })), info && _jsx(Info, { ...info }), description && (_jsx(Description, { ...descriptionProps, children: description })), items && items.map((item, index) => renderItem(item, index)), help && _jsx(Help, { ...helpProps, children: help }), errorIsString && _jsx(ErrorMessage, { ...errorProps, name: name })] }));
32
32
  };
@@ -1,3 +1,4 @@
1
+ //Please keep this in alphabetical order
1
2
  import * as ArrayFieldTemplate from "./ArrayFieldTemplate";
2
3
  import * as CollapsibleObjectFieldTemplate from "./CollapsibleObjectFieldTemplate";
3
4
  import * as FieldTemplate from "./FieldTemplate";
@@ -17,9 +17,10 @@ export const ArrayField = (props) => {
17
17
  }
18
18
  return item;
19
19
  }
20
- const SelectedArrayFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ArrayFieldTemplate;
21
- return (_jsx(SelectedArrayFieldTemplate, { ...props, children: value &&
22
- value.map((item, index) => typeof item === "object" ? (_jsx(ArrayFieldItem, { children: _jsx(SchemaField, { name: `${name}[${index}]`, schema: typeof props.schema.additionalItems !== "boolean"
23
- ? props.schema.additionalItems
24
- : {}, uiSchema: uiSchema }) }, index)) : (_jsx(ArrayFieldItem, { children: _jsx("div", { "data-keyword": item, children: getValue(item) }) }, item))) }));
20
+ const SelectedArrayFieldTemplate = (props.uiSchema?.["ui:template"] &&
21
+ templates[props.uiSchema?.["ui:template"]]) ??
22
+ templates.ArrayFieldTemplate;
23
+ return (_jsx(SelectedArrayFieldTemplate, { ...props, items: value, renderItem: (item, index) => typeof item === "object" ? (_jsx(ArrayFieldItem, { children: _jsx(SchemaField, { name: `${name}[${index}]`, schema: typeof props.schema.additionalItems !== "boolean"
24
+ ? props.schema.additionalItems
25
+ : {}, uiSchema: uiSchema }) }, index)) : (_jsx(ArrayFieldItem, { children: _jsx("div", { "data-keyword": item, children: getValue(item) }) }, item)) }));
25
26
  };
@@ -22,6 +22,8 @@ export const BooleanField = (props) => {
22
22
  }
23
23
  return typeof label === "string" ? label : undefined;
24
24
  }
25
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
25
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
26
+ templates[props.uiSchema?.["ui:template"]]) ??
27
+ templates.FieldTemplate;
26
28
  return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(BooleanFieldWrapper, { children: _jsx(BooleanFieldValue, { name: name, value: value, label: findLabel(label) }) }) }));
27
29
  };
@@ -13,6 +13,8 @@ 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
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
16
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
17
+ templates[props.uiSchema?.["ui:template"]]) ??
18
+ templates.FieldTemplate;
17
19
  return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(MultipleChoiceFieldValue, { inputProps: inputProps, name: name, style: style, selected: selected, notSelected: hideNotSelected ? undefined : notSelected }) }));
18
20
  };
@@ -3,6 +3,8 @@ import { useContext } from "react";
3
3
  import { FormViewRegistry } from "../FormViewRegistry";
4
4
  export const NullField = (props) => {
5
5
  const { templates } = useContext(FormViewRegistry);
6
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
6
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
7
+ templates[props.uiSchema?.["ui:template"]]) ??
8
+ templates.FieldTemplate;
7
9
  return _jsx(SelectedFieldTemplate, { ...props });
8
10
  };
@@ -28,7 +28,9 @@ export const ObjectField = (props) => {
28
28
  }
29
29
  }, [valuesToRemove]);
30
30
  const orderedProperties = orderByUiSchema(uiSchema?.["ui:order"], Object.keys(properties || {}));
31
- const SelectedObjectFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.ObjectFieldTemplate;
31
+ const SelectedObjectFieldTemplate = (props.uiSchema?.["ui:template"] &&
32
+ templates[props.uiSchema?.["ui:template"]]) ??
33
+ templates.ObjectFieldTemplate;
32
34
  return (_jsx(SelectedObjectFieldTemplate, { ...props, children: orderedProperties
33
35
  .map((child, index) => {
34
36
  if (typeof child === "string") {
@@ -13,6 +13,8 @@ export const StringField = (props) => {
13
13
  value =
14
14
  enums.values.find((element) => element.const === value)?.title ?? value;
15
15
  }
16
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
16
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
17
+ templates[props.uiSchema?.["ui:template"]]) ??
18
+ templates.FieldTemplate;
17
19
  return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(StringFieldValue, { "data-keyword": value, children: value }) }));
18
20
  };
@@ -7,6 +7,8 @@ export const TextAreaField = (props) => {
7
7
  const { name, uiSchema } = props;
8
8
  const { values } = useFormikContext();
9
9
  const value = getIn(values, name);
10
- const SelectedFieldTemplate = templates[props.uiSchema?.["ui:template"]] ?? templates.FieldTemplate;
10
+ const SelectedFieldTemplate = (props.uiSchema?.["ui:template"] &&
11
+ templates[props.uiSchema?.["ui:template"]]) ??
12
+ templates.FieldTemplate;
11
13
  return (_jsx(SelectedFieldTemplate, { ...props, children: _jsx(TextAreaValue, { children: value }) }));
12
14
  };
@@ -6,11 +6,11 @@ import { getComponents } from "./styledComponents";
6
6
  export const ArrayFieldTemplate = (props) => {
7
7
  const { components } = useContext(FormViewRegistry);
8
8
  const { Wrapper, Title, Description } = getComponents(components);
9
- const { name, uiSchema, children } = props;
9
+ const { name, uiSchema, items, renderItem } = props;
10
10
  const title = getTitle(props);
11
11
  const description = getDescription(props);
12
12
  const { help, info,
13
13
  //TODO: This is not right
14
14
  props: { wrapper: wrapperProps, title: titleProps, description: descriptionProps, help: helpProps, error: errorProps, } = {}, } = useMemo(() => extractUiSchema(uiSchema), [uiSchema]);
15
- return (_jsxs(Wrapper, { ...wrapperProps, children: [title && (_jsx(Title, { ...titleProps, htmlFor: name, children: title })), description && (_jsx(Description, { ...descriptionProps, children: description })), children] }));
15
+ return (_jsxs(Wrapper, { ...wrapperProps, children: [title && (_jsx(Title, { ...titleProps, htmlFor: name, children: title })), description && (_jsx(Description, { ...descriptionProps, children: description })), items && items.map((item, index) => renderItem(item, index))] }));
16
16
  };
@@ -1,3 +1,4 @@
1
+ //Please keep this in alphabetical order
1
2
  import * as ArrayFieldTemplate from "./ArrayFieldTemplate";
2
3
  import * as FieldTemplate from "./FieldTemplate";
3
4
  import * as ObjectFieldTemplate from "./ObjectFieldTemplate";
@@ -139,7 +139,6 @@ export declare const components: {
139
139
  ref?: ((instance: HTMLSpanElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLSpanElement> | null | undefined;
140
140
  }, never>> & string;
141
141
  ObjectFieldSection: import("react").FC<import("../fields/ObjectField").ObjectFieldSectionProps>;
142
- ObjectFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
143
142
  ObjectFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
144
143
  ObjectFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
145
144
  ObjectFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>> & string;
@@ -190,7 +189,6 @@ export declare const components: {
190
189
  FileUploadFieldFileInfoText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
191
190
  FileUploadFieldContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
192
191
  BooleanFieldWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
193
- ArrayFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
194
192
  ArrayFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
195
193
  ArrayFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
196
194
  ArrayFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>, "ref"> & {
@@ -1,4 +1,3 @@
1
- export declare const ArrayFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
2
1
  export declare const ArrayFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
3
2
  export declare const ArrayFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
4
3
  export declare const ArrayFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>, "ref"> & {
@@ -1,7 +1,6 @@
1
1
  export * as fields from "./ObjectField";
2
2
  declare const components: {
3
3
  ObjectFieldSection: import("react").FC<import("./types").ObjectFieldSectionProps>;
4
- ObjectFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
5
4
  ObjectFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
6
5
  ObjectFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
7
6
  ObjectFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>> & string;
@@ -1,4 +1,3 @@
1
- export declare const ObjectFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
2
1
  export declare const ObjectFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
3
2
  export declare const ObjectFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
4
3
  export declare const ObjectFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>> & string;
@@ -71,7 +71,6 @@ export declare const fieldComponents: {
71
71
  ref?: ((instance: HTMLSpanElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLSpanElement> | null | undefined;
72
72
  }, never>> & string;
73
73
  ObjectFieldSection: import("react").FC<ObjectField.ObjectFieldSectionProps>;
74
- ObjectFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
75
74
  ObjectFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
76
75
  ObjectFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
77
76
  ObjectFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>> & string;
@@ -122,7 +121,6 @@ export declare const fieldComponents: {
122
121
  FileUploadFieldFileInfoText: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
123
122
  FileUploadFieldContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
124
123
  BooleanFieldWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
125
- ArrayFieldList: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, never>> & string;
126
124
  ArrayFieldItem: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, never>> & string;
127
125
  ArrayFieldItemButtons: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
128
126
  ArrayFieldButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, never>, "ref"> & {
@@ -1,3 +1,2 @@
1
- import type { ArrayFieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const ArrayFieldTemplate: React.FC<ArrayFieldTemplateProps>;
1
+ import type { ArrayFieldTemplateType } from "../../../common/types";
2
+ export declare const ArrayFieldTemplate: ArrayFieldTemplateType;
@@ -1,3 +1,2 @@
1
- import type { ObjectFieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const CollapsibleObjectFieldTemplate: React.FC<ObjectFieldTemplateProps>;
1
+ import type { ObjectFieldTemplateType } from "../../../common/types";
2
+ export declare const CollapsibleObjectFieldTemplate: ObjectFieldTemplateType;
@@ -1,3 +1,2 @@
1
- import type { FieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const FieldTemplate: React.FC<FieldTemplateProps>;
1
+ import type { FieldTemplateType } from "../../../common/types";
2
+ export declare const FieldTemplate: FieldTemplateType;
@@ -1,3 +1,2 @@
1
- import type { ObjectFieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const ObjectFieldTemplate: React.FC<ObjectFieldTemplateProps>;
1
+ import type { ObjectFieldTemplateType } from "../../../common/types";
2
+ export declare const ObjectFieldTemplate: ObjectFieldTemplateType;
@@ -1,4 +1,4 @@
1
- import { ArrayFieldTemplateProps, FieldTemplateProps, ObjectFieldTemplateProps } from "../../common/types";
1
+ import type { TemplateType } from "../../common/types";
2
2
  import * as ObjectFieldTemplate from "./ObjectFieldTemplate";
3
3
  export declare const templateComponents: {
4
4
  getComponents(components: import("..").ComponentsType): {
@@ -41,11 +41,11 @@ export declare const templateComponents: {
41
41
  ArrayFieldTemplateErrorMessage: typeof import("../components/ErrorMessage").ErrorMessage | undefined;
42
42
  };
43
43
  export declare const templates: {
44
- ObjectFieldTemplate: React.FC<ObjectFieldTemplateProps>;
45
- FieldTemplate: React.FC<FieldTemplateProps>;
46
- CollapsibleObjectFieldTemplate: React.FC<ObjectFieldTemplateProps>;
47
- ArrayFieldTemplate: React.FC<ArrayFieldTemplateProps>;
44
+ ObjectFieldTemplate: import("../../common/types").ObjectFieldTemplateType;
45
+ FieldTemplate: import("../../common/types").FieldTemplateType;
46
+ CollapsibleObjectFieldTemplate: import("../../common/types").ObjectFieldTemplateType;
47
+ ArrayFieldTemplate: import("../../common/types").ArrayFieldTemplateType;
48
48
  };
49
49
  export type TemplatesType = typeof templates & {
50
- [key: string]: React.FC<ArrayFieldTemplateProps> | React.FC<FieldTemplateProps> | React.FC<ObjectFieldTemplateProps>;
50
+ [key: string]: TemplateType;
51
51
  };
@@ -1,3 +1,2 @@
1
- import type { ArrayFieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const ArrayFieldTemplate: React.FC<ArrayFieldTemplateProps>;
1
+ import type { ArrayFieldTemplateType } from "../../../common/types";
2
+ export declare const ArrayFieldTemplate: ArrayFieldTemplateType;
@@ -1,3 +1,2 @@
1
- import type { FieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const FieldTemplate: React.FC<FieldTemplateProps>;
1
+ import type { FieldTemplateType } from "../../../common/types";
2
+ export declare const FieldTemplate: FieldTemplateType;
@@ -1,3 +1,2 @@
1
- import type { ObjectFieldTemplateProps } from "../../../common/types";
2
- import React from "react";
3
- export declare const ObjectFieldTemplate: React.FC<ObjectFieldTemplateProps>;
1
+ import type { ObjectFieldTemplateType } from "../../../common/types";
2
+ export declare const ObjectFieldTemplate: ObjectFieldTemplateType;
@@ -1,4 +1,4 @@
1
- import { ArrayFieldTemplateProps, FieldTemplateProps, ObjectFieldTemplateProps } from "../../common/types";
1
+ import type { TemplateType } from "../../common/types";
2
2
  import * as ObjectFieldTemplate from "./ObjectFieldTemplate";
3
3
  export declare const templateComponents: {
4
4
  getComponents(components: import("../components").ComponentsType): {
@@ -14,10 +14,10 @@ export declare const templateComponents: {
14
14
  ArrayFieldTemplateDescription: typeof import("../components").FieldDescription | undefined;
15
15
  };
16
16
  export declare const templates: {
17
- ObjectFieldTemplate: React.FC<ObjectFieldTemplateProps>;
18
- FieldTemplate: React.FC<FieldTemplateProps>;
19
- ArrayFieldTemplate: React.FC<ArrayFieldTemplateProps>;
17
+ ObjectFieldTemplate: import("../../common/types").ObjectFieldTemplateType;
18
+ FieldTemplate: import("../../common/types").FieldTemplateType;
19
+ ArrayFieldTemplate: import("../../common/types").ArrayFieldTemplateType;
20
20
  };
21
21
  export type TemplatesType = typeof templates & {
22
- [key: string]: React.FC<ArrayFieldTemplateProps> | React.FC<FieldTemplateProps> | React.FC<ObjectFieldTemplateProps>;
22
+ [key: string]: TemplateType;
23
23
  };
@@ -16,6 +16,7 @@ export type UiSchema = {
16
16
  "ui:help"?: React.ReactNode | string;
17
17
  "ui:info"?: FieldInfoProps;
18
18
  "ui:field"?: Field | string;
19
+ "ui:template"?: string;
19
20
  "ui:options"?: {
20
21
  [key: string]: boolean | number | string | object | any[] | null;
21
22
  };
@@ -1,10 +1,4 @@
1
1
  import type { Schema, UiSchema } from "./Schemas";
2
- export type ArrayFieldTemplateProps = React.PropsWithChildren<{
3
- name: string;
4
- schema: Schema;
5
- [key: string]: any;
6
- uiSchema?: UiSchema;
7
- }>;
8
2
  export type FieldTemplateProps = React.PropsWithChildren<{
9
3
  name: string;
10
4
  schema: Schema;
@@ -18,3 +12,15 @@ export type ObjectFieldTemplateProps = {
18
12
  children: React.ReactNode;
19
13
  [key: string]: any;
20
14
  };
15
+ export type ArrayFieldTemplateProps = React.PropsWithChildren<{
16
+ name: string;
17
+ schema: Schema;
18
+ uiSchema?: UiSchema;
19
+ items?: any[];
20
+ renderItem: (item: any, index: number) => React.ReactNode;
21
+ [key: string]: any;
22
+ }>;
23
+ export type FieldTemplateType = React.FC<FieldTemplateProps>;
24
+ export type ObjectFieldTemplateType = React.FC<ObjectFieldTemplateProps>;
25
+ export type ArrayFieldTemplateType = React.FC<ArrayFieldTemplateProps>;
26
+ export type TemplateType = FieldTemplateType | ObjectFieldTemplateType | ArrayFieldTemplateType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nolwenture/formik-jsonschema-form",
3
- "version": "1.0.0-beta.28",
3
+ "version": "1.0.0-beta.29",
4
4
  "description": "Formik form generation from json schema",
5
5
  "author": "anttivikman <antti.vikman@nolwenture.com>",
6
6
  "contributors": [