@truedat/df 8.7.0 → 8.7.2

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 (101) hide show
  1. package/package.json +4 -4
  2. package/src/components/DynamicFormViewer.js +3 -3
  3. package/src/components/DynamicFormWithTranslations.js +4 -4
  4. package/src/components/FieldGroupDetail.js +1 -1
  5. package/src/components/FieldGroupWithTranslations.js +1 -1
  6. package/src/components/SelectableDynamicForm.js +1 -1
  7. package/src/components/__tests__/DynamicFieldValue.spec.js +2 -2
  8. package/src/components/__tests__/DynamicFormViewer.spec.js +7 -7
  9. package/src/components/__tests__/EditableDynamicFieldValue.spec.js +1 -1
  10. package/src/components/__tests__/FieldViewerValue.spec.js +12 -12
  11. package/src/components/__tests__/SelectDynamicFormWithTranslations.spec.js +1 -1
  12. package/src/components/__tests__/SelectableDynamicForm.spec.js +16 -12
  13. package/src/components/hierarchies/HierarchyView.js +9 -9
  14. package/src/components/hierarchies/__tests__/HierarchyRoutes.spec.js +1 -1
  15. package/src/components/widgets/DropdownDataLoader.js +1 -1
  16. package/src/components/widgets/DynamicField.js +5 -5
  17. package/src/components/widgets/DynamicTableField.js +129 -125
  18. package/src/components/widgets/GroupPreview.js +2 -2
  19. package/src/components/widgets/HierarchyPreview.js +1 -1
  20. package/src/components/widgets/ImageField.js +2 -3
  21. package/src/components/widgets/MarkdownField.js +0 -1
  22. package/src/components/widgets/StandardDropdown.js +5 -5
  23. package/src/components/widgets/StringField.js +1 -4
  24. package/src/components/widgets/TableField.js +1 -1
  25. package/src/components/widgets/UserGroupPreview.js +1 -1
  26. package/src/components/widgets/__tests__/CheckboxField.spec.js +2 -2
  27. package/src/components/widgets/__tests__/DropdownField.spec.js +2 -2
  28. package/src/components/widgets/__tests__/DynamicField.spec.js +11 -3
  29. package/src/components/widgets/__tests__/DynamicTableField.spec.js +237 -237
  30. package/src/components/widgets/__tests__/GroupPreview.spec.js +11 -11
  31. package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +3 -3
  32. package/src/components/widgets/__tests__/NumberField.spec.js +1 -1
  33. package/src/components/widgets/__tests__/PairListField.spec.js +3 -3
  34. package/src/components/widgets/__tests__/StandardDropdown.spec.js +1 -1
  35. package/src/components/widgets/__tests__/UserGroupPreview.spec.js +14 -10
  36. package/src/messages/index.js +1 -1
  37. package/src/reducers/__tests__/dfMessage.spec.js +5 -5
  38. package/src/reducers/__tests__/selectedDomain.spec.js +2 -2
  39. package/src/reducers/__tests__/selectedDomains.spec.js +2 -2
  40. package/src/reducers/dfMessage.js +4 -4
  41. package/src/selectors/getOptions.js +2 -2
  42. package/src/selectors/templates.js +2 -2
  43. package/src/templates/components/Template.js +2 -2
  44. package/src/templates/components/TemplateFilters.js +1 -1
  45. package/src/templates/components/TemplateLoader.js +1 -1
  46. package/src/templates/components/TemplateRoutes.js +1 -1
  47. package/src/templates/components/Templates.js +1 -6
  48. package/src/templates/components/TemplatesContext.js +3 -3
  49. package/src/templates/components/TemplatesTable.js +1 -1
  50. package/src/templates/components/__tests__/TemplateLoader.spec.js +2 -2
  51. package/src/templates/components/__tests__/TemplateRoutes.spec.js +1 -1
  52. package/src/templates/components/__tests__/TemplatesTable.spec.js +1 -1
  53. package/src/templates/components/templateForm/ActiveGroupForm.js +3 -3
  54. package/src/templates/components/templateForm/ConditionalFieldForm.js +3 -3
  55. package/src/templates/components/templateForm/DependentDomain.js +3 -3
  56. package/src/templates/components/templateForm/FieldDefinition.js +126 -129
  57. package/src/templates/components/templateForm/HierarchiesList.js +1 -1
  58. package/src/templates/components/templateForm/MandatoryConditional.js +2 -2
  59. package/src/templates/components/templateForm/TemplateForm.js +46 -41
  60. package/src/templates/components/templateForm/ValuesConfiguration.js +69 -56
  61. package/src/templates/components/templateForm/ValuesField.js +43 -43
  62. package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +35 -35
  63. package/src/templates/components/templateForm/__tests__/DependentDomain.spec.js +1 -1
  64. package/src/templates/components/templateForm/__tests__/FieldDefinition.spec.js +227 -201
  65. package/src/templates/components/templateForm/__tests__/FieldForm.spec.js +12 -10
  66. package/src/templates/components/templateForm/__tests__/MandatoryConditional.spec.js +3 -3
  67. package/src/templates/components/templateForm/__tests__/SwitchListForm.spec.js +5 -5
  68. package/src/templates/components/templateForm/__tests__/SwitchSegment.spec.js +8 -8
  69. package/src/templates/components/templateForm/__tests__/TableValuesForm.spec.js +207 -189
  70. package/src/templates/components/templateForm/__tests__/TemplateForm.spec.js +42 -13
  71. package/src/templates/components/templateForm/__tests__/TemplateFormActions.spec.js +1 -1
  72. package/src/templates/components/templateForm/__tests__/TemplateRelationsForm.spec.js +3 -1
  73. package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +6 -6
  74. package/src/templates/components/templateForm/__tests__/ValuesListForm.spec.js +4 -4
  75. package/src/templates/components/templateForm/__tests__/ValuesSelector.spec.js +3 -3
  76. package/src/templates/components/templateForm/widgetDefinitions.js +2 -0
  77. package/src/templates/reducers/__tests__/allTemplates.spec.js +4 -4
  78. package/src/templates/reducers/__tests__/selectedTemplate.spec.js +2 -2
  79. package/src/templates/reducers/__tests__/template.spec.js +4 -4
  80. package/src/templates/reducers/__tests__/templateDeleting.spec.js +2 -2
  81. package/src/templates/reducers/__tests__/templateLoading.spec.js +2 -2
  82. package/src/templates/reducers/__tests__/templates.spec.js +3 -3
  83. package/src/templates/reducers/__tests__/templatesLoading.spec.js +2 -2
  84. package/src/templates/sagas/__tests__/createTemplate.spec.js +3 -3
  85. package/src/templates/sagas/__tests__/fetchTemplates.spec.js +1 -1
  86. package/src/templates/sagas/index.js +2 -2
  87. package/src/templates/utils/__tests__/applyDefaults.spec.js +4 -4
  88. package/src/templates/utils/__tests__/filterDomains.spec.js +15 -15
  89. package/src/templates/utils/__tests__/filterFields.spec.js +2 -2
  90. package/src/templates/utils/__tests__/filterSwitches.spec.js +5 -5
  91. package/src/templates/utils/__tests__/filterValues.spec.js +4 -4
  92. package/src/templates/utils/__tests__/formatLegacyContent.spec.js +7 -7
  93. package/src/templates/utils/applyTemplate.js +66 -53
  94. package/src/templates/utils/filterDepends.js +1 -1
  95. package/src/templates/utils/filterSwitches.js +3 -3
  96. package/src/templates/utils/filterValues.js +4 -5
  97. package/src/templates/utils/flattenFields.js +2 -2
  98. package/src/templates/utils/formatLegacyContent.js +2 -1
  99. package/src/templates/utils/parseFieldOptions.js +15 -14
  100. package/src/templates/utils/parseGroups.js +43 -43
  101. package/src/templates/utils/validateContent.js +4 -4
@@ -5,154 +5,151 @@ import { useIntl } from "react-intl";
5
5
  import { useEffect } from "react";
6
6
 
7
7
  import {
8
- getCardinalityOptions,
9
- getWidgetOptions,
10
- getTypeOptions,
11
- WIDGETS,
8
+ getCardinalityOptions,
9
+ getWidgetOptions,
10
+ getTypeOptions,
11
+ WIDGETS,
12
12
  } from "./widgetDefinitions";
13
13
  import { getValues } from "./valueDefinitions";
14
14
 
15
15
  const defaultType = (values) => _.flow(_.map("value"), _.first)(values);
16
16
 
17
17
  const FieldDefinition = ({
18
- allowedTypes = [],
19
- allowedWidgets = [],
20
- cardinality,
21
- defaultField,
22
- fieldNamePrefix,
23
- mandatory,
24
- onChange,
25
- subscribableField,
26
- type,
27
- valueName,
28
- widget,
18
+ allowedTypes = [],
19
+ allowedWidgets = [],
20
+ cardinality,
21
+ defaultField,
22
+ fieldNamePrefix,
23
+ mandatory,
24
+ onChange,
25
+ subscribableField,
26
+ type,
27
+ valueName,
28
+ widget,
29
29
  }) => {
30
- const { formatMessage } = useIntl();
30
+ const { formatMessage } = useIntl();
31
31
 
32
- const changeValue = (name, value) =>
33
- value == "null"
34
- ? onChange(null, { name, value: null })
35
- : onChange(null, {
36
- name,
37
- value: { [value]: null },
38
- });
39
-
40
- const handleTypeChange = (e, data) => {
41
- const { value } = data;
42
- changeValue(valueName, defaultType(getValues(widget, value)) || "null");
43
- onChange(e, {
44
- name: defaultField,
45
- value: { value: "", origin: "default" },
32
+ const changeValue = (name, value) =>
33
+ value == "null"
34
+ ? onChange(null, { name, value: null })
35
+ : onChange(null, {
36
+ name,
37
+ value: { [value]: null },
46
38
  });
47
- onChange(e, { name: subscribableField, value: false });
48
- onChange(e, data);
49
- };
50
39
 
51
- const handleCardinalityChange = (e, data) => {
52
- const value = data?.value;
53
- onChange(e, data);
54
- if (_.includes(value)(["1", "+"]) && !_.isEmpty(mandatory))
55
- onChange(e, { name: `${fieldNamePrefix}.mandatory`, value: null });
56
- };
40
+ const handleTypeChange = (e, data) => {
41
+ const { value } = data;
42
+ changeValue(valueName, defaultType(getValues(widget, value)) || "null");
43
+ onChange(e, {
44
+ name: defaultField,
45
+ value: { value: "", origin: "default" },
46
+ });
47
+ onChange(e, { name: subscribableField, value: false });
48
+ onChange(e, data);
49
+ };
57
50
 
58
- const handleWidgetChange = (e, data) => {
59
- const { value } = data;
60
- const types = _.find({ value })(WIDGETS).types;
61
- const updatedType = _.indexOf(type)(types) < 0 ? _.head(types) : type;
62
- changeValue(
63
- valueName,
64
- defaultType(getValues(value, updatedType)) || "null",
65
- );
66
- onChange(e, {
67
- name: defaultField,
68
- value: { value: "", origin: "default" },
69
- });
70
- onChange(e, { name: subscribableField, value: false });
71
- onChange(e, data);
72
- };
51
+ const handleCardinalityChange = (e, data) => {
52
+ const value = data?.value;
53
+ onChange(e, data);
54
+ if (_.includes(value)(["1", "+"]) && !_.isEmpty(mandatory))
55
+ onChange(e, { name: `${fieldNamePrefix}.mandatory`, value: null });
56
+ };
73
57
 
74
- const typeCheckOnChange = (widgetOption) => {
75
- if (widgetOption && _.indexOf(type)(widgetOption.types) < 0)
76
- onChange(null, {
77
- name: `${fieldNamePrefix}.type`,
78
- value: widgetOption.types[0],
79
- });
80
- };
58
+ const handleWidgetChange = (e, data) => {
59
+ const { value } = data;
60
+ const types = _.find({ value })(WIDGETS).types;
61
+ const updatedType = _.indexOf(type)(types) < 0 ? _.head(types) : type;
62
+ changeValue(
63
+ valueName,
64
+ defaultType(getValues(value, updatedType)) || "null",
65
+ );
66
+ onChange(e, {
67
+ name: defaultField,
68
+ value: { value: "", origin: "default" },
69
+ });
70
+ onChange(e, { name: subscribableField, value: false });
71
+ onChange(e, data);
72
+ };
81
73
 
82
- const cardinalityCheckOnChange = (widgetOption) => {
83
- if (
84
- widgetOption &&
85
- _.indexOf(cardinality)(widgetOption.cardinalities) < 0
86
- )
87
- onChange(null, {
88
- name: `${fieldNamePrefix}.cardinality`,
89
- value: widgetOption.cardinalities[0],
90
- });
91
- };
74
+ const typeCheckOnChange = (widgetOption) => {
75
+ if (widgetOption && _.indexOf(type)(widgetOption.types) < 0)
76
+ onChange(null, {
77
+ name: `${fieldNamePrefix}.type`,
78
+ value: widgetOption.types[0],
79
+ });
80
+ };
92
81
 
93
- //On widget change, verify if type and cardinality are still valid
94
- useEffect(() => {
95
- const widgetOption = _.find({ value: widget })(WIDGETS);
96
- typeCheckOnChange(widgetOption);
97
- cardinalityCheckOnChange(widgetOption);
98
- // eslint-disable-next-line react-hooks/exhaustive-deps
99
- }, [widget, type]);
82
+ const cardinalityCheckOnChange = (widgetOption) => {
83
+ if (widgetOption && _.indexOf(cardinality)(widgetOption.cardinalities) < 0)
84
+ onChange(null, {
85
+ name: `${fieldNamePrefix}.cardinality`,
86
+ value: widgetOption.cardinalities[0],
87
+ });
88
+ };
100
89
 
101
- const widgetOptions = _.isEmpty(allowedWidgets)
102
- ? getWidgetOptions()
103
- : _.filter((widget) => allowedWidgets.includes(widget.value))(
104
- getWidgetOptions(),
105
- );
106
- const typeOptions = _.isEmpty(allowedTypes)
107
- ? getTypeOptions(widget)
108
- : _.filter((type) => allowedTypes.includes(type.value))(
109
- getTypeOptions(widget),
110
- );
90
+ //On widget change, verify if type and cardinality are still valid
91
+ useEffect(() => {
92
+ const widgetOption = _.find({ value: widget })(WIDGETS);
93
+ typeCheckOnChange(widgetOption);
94
+ cardinalityCheckOnChange(widgetOption);
95
+ // eslint-disable-next-line react-hooks/exhaustive-deps
96
+ }, [widget, type]);
111
97
 
112
- return (
113
- <Form.Group size="small" widths="equal">
114
- <Form.Dropdown
115
- name={`${fieldNamePrefix}.widget`}
116
- fluid
117
- selection
118
- label={formatMessage({ id: "template.field.widget" })}
119
- value={widget}
120
- options={widgetOptions}
121
- required
122
- onChange={handleWidgetChange}
123
- />
124
- <Form.Dropdown
125
- fluid
126
- selection
127
- label={formatMessage({ id: "template.field.type" })}
128
- onChange={handleTypeChange}
129
- name={`${fieldNamePrefix}.type`}
130
- value={type}
131
- required
132
- options={typeOptions}
133
- />
134
- <Form.Dropdown
135
- fluid
136
- selection
137
- label={formatMessage({ id: "template.field.cardinality" })}
138
- name={`${fieldNamePrefix}.cardinality`}
139
- value={cardinality}
140
- onChange={handleCardinalityChange}
141
- required
142
- options={getCardinalityOptions(widget)}
143
- />
144
- </Form.Group>
145
- );
98
+ const widgetOptions = _.isEmpty(allowedWidgets)
99
+ ? getWidgetOptions()
100
+ : _.filter((widget) => allowedWidgets.includes(widget.value))(
101
+ getWidgetOptions(),
102
+ );
103
+ const typeOptions = _.isEmpty(allowedTypes)
104
+ ? getTypeOptions(widget)
105
+ : _.filter((type) => allowedTypes.includes(type.value))(
106
+ getTypeOptions(widget),
107
+ );
108
+
109
+ return (
110
+ <Form.Group size="small" widths="equal">
111
+ <Form.Dropdown
112
+ name={`${fieldNamePrefix}.widget`}
113
+ fluid
114
+ selection
115
+ label={formatMessage({ id: "template.field.widget" })}
116
+ value={widget}
117
+ options={widgetOptions}
118
+ required
119
+ onChange={handleWidgetChange}
120
+ />
121
+ <Form.Dropdown
122
+ fluid
123
+ selection
124
+ label={formatMessage({ id: "template.field.type" })}
125
+ onChange={handleTypeChange}
126
+ name={`${fieldNamePrefix}.type`}
127
+ value={type}
128
+ required
129
+ options={typeOptions}
130
+ />
131
+ <Form.Dropdown
132
+ fluid
133
+ selection
134
+ label={formatMessage({ id: "template.field.cardinality" })}
135
+ name={`${fieldNamePrefix}.cardinality`}
136
+ value={cardinality}
137
+ onChange={handleCardinalityChange}
138
+ required
139
+ options={getCardinalityOptions(widget)}
140
+ />
141
+ </Form.Group>
142
+ );
146
143
  };
147
144
 
148
145
  FieldDefinition.propTypes = {
149
- fieldNamePrefix: PropTypes.string,
150
- handleWidgetChange: PropTypes.func,
151
- handleTypeChange: PropTypes.func,
152
- handleCardinalityChange: PropTypes.func,
153
- type: PropTypes.string,
154
- widget: PropTypes.string,
155
- cardinality: PropTypes.string,
146
+ fieldNamePrefix: PropTypes.string,
147
+ handleWidgetChange: PropTypes.func,
148
+ handleTypeChange: PropTypes.func,
149
+ handleCardinalityChange: PropTypes.func,
150
+ type: PropTypes.string,
151
+ widget: PropTypes.string,
152
+ cardinality: PropTypes.string,
156
153
  };
157
154
 
158
155
  export default FieldDefinition;
@@ -15,7 +15,7 @@ export const HierarchiesList = ({ hierarchies, onChange, values, loading }) => {
15
15
 
16
16
  const options = _.flow(
17
17
  _.map(({ id, name }) => ({ text: name, value: id })),
18
- _.sortBy("text")
18
+ _.sortBy("text"),
19
19
  )(hierarchies);
20
20
 
21
21
  return (
@@ -16,13 +16,13 @@ export const MandatoryConditional = ({
16
16
  const fieldOptions = _.flow(
17
17
  _.reject({ name }),
18
18
  _.reject((field) => _.isEmpty(field?.values?.fixed)),
19
- _.map(({ label, name }) => ({ text: label, value: name }))
19
+ _.map(({ label, name }) => ({ text: label, value: name })),
20
20
  )(allFields);
21
21
  const valueOptions = _.flow(
22
22
  _.find({ name: depends }),
23
23
  _.propOr([], "values.fixed"),
24
24
  _.reject(_.isNil),
25
- _.map((value) => ({ text: value, value }))
25
+ _.map((value) => ({ text: value, value })),
26
26
  )(allFields);
27
27
  const handleChange = (e, { name, value }) => {
28
28
  if (_.includes("mandatory.on")(name) && !_.isEmpty(field?.mandatory?.to_be))
@@ -17,7 +17,7 @@ const scopeOptions = (formatMessage) =>
17
17
  text: formatMessage({ id: `template.scope.${value}` }),
18
18
  value,
19
19
  })),
20
- _.sortBy("text")
20
+ _.sortBy("text"),
21
21
  )([
22
22
  "bg",
23
23
  "dd",
@@ -66,55 +66,58 @@ export const TemplateForm = ({ loading, template, onSubmit }) => {
66
66
  });
67
67
 
68
68
  const handleRelationsChange = useCallback((relations) => {
69
- setEditedTemplate((prev) => _.assoc("template_resource_relations", relations)(prev));
69
+ setEditedTemplate((prev) =>
70
+ _.assoc("template_resource_relations", relations)(prev),
71
+ );
70
72
  }, []);
71
73
 
72
- const formattedFields = (fields) => _.flow(
73
- _.map((field) => {
74
- const fieldProperties = [
75
- "label",
76
- "name",
77
- "description",
78
- "type",
79
- "widget",
80
- "cardinality",
81
- "values",
82
- "default",
83
- "subscribable",
84
- "editable",
85
- "searchable",
86
- "ai_suggestion",
87
- ];
74
+ const formattedFields = (fields) =>
75
+ _.flow(
76
+ _.map((field) => {
77
+ const fieldProperties = [
78
+ "label",
79
+ "name",
80
+ "description",
81
+ "type",
82
+ "widget",
83
+ "cardinality",
84
+ "values",
85
+ "default",
86
+ "subscribable",
87
+ "editable",
88
+ "searchable",
89
+ "ai_suggestion",
90
+ ];
88
91
 
89
- const dependsProperty = _.isEmpty(_.path("depends.on")(field))
90
- ? []
91
- : ["depends"];
92
- const mandatoryProperty = _.isEmpty(_.path("mandatory.on")(field))
93
- ? []
94
- : ["mandatory"];
95
- const allFields = _.flow(
96
- _.concat(dependsProperty),
97
- _.concat(mandatoryProperty))
98
- (fieldProperties);
92
+ const dependsProperty = _.isEmpty(_.path("depends.on")(field))
93
+ ? []
94
+ : ["depends"];
95
+ const mandatoryProperty = _.isEmpty(_.path("mandatory.on")(field))
96
+ ? []
97
+ : ["mandatory"];
98
+ const allFields = _.flow(
99
+ _.concat(dependsProperty),
100
+ _.concat(mandatoryProperty),
101
+ )(fieldProperties);
99
102
 
100
- if (field?.type === "dynamic_table") {
101
- const tableColumns = formattedFields(field?.values?.table_columns);
102
- return _.flow(
103
- _.set("values.table_columns", tableColumns),
104
- _.pick(allFields),
105
- _.omit(["default"]))
106
- (field);
107
- }
108
- return _.pick(allFields)(field);
109
- })
110
- )(fields);
103
+ if (field?.type === "dynamic_table") {
104
+ const tableColumns = formattedFields(field?.values?.table_columns);
105
+ return _.flow(
106
+ _.set("values.table_columns", tableColumns),
107
+ _.pick(allFields),
108
+ _.omit(["default"]),
109
+ )(field);
110
+ }
111
+ return _.pick(allFields)(field);
112
+ }),
113
+ )(fields);
111
114
 
112
115
  const handleSubmit = () => {
113
116
  const formattedContent = _.flow(
114
117
  _.prop("content"),
115
118
  _.map(({ name, fields }) => {
116
119
  return { name, fields: formattedFields(fields) };
117
- })
120
+ }),
118
121
  )(editedTemplate);
119
122
 
120
123
  onSubmit({ template: { ...editedTemplate, content: formattedContent } });
@@ -213,7 +216,9 @@ export const TemplateForm = ({ loading, template, onSubmit }) => {
213
216
  label={formatMessage({ id: "template.form.subscope" })}
214
217
  value={subscopeValue}
215
218
  onChange={handleChange}
216
- disabled={editedTemplate?.scope !== "bg" && editedTemplate?.scope !== "ri"}
219
+ disabled={
220
+ editedTemplate?.scope !== "bg" && editedTemplate?.scope !== "ri"
221
+ }
217
222
  />
218
223
  </Form.Group>
219
224
  {scopesWithRelations?.includes(editedTemplate.scope) && (
@@ -4,64 +4,77 @@ import { useIntl } from "react-intl";
4
4
 
5
5
  const searchableEnabledScopes = ["bg", "dq", "ie", "ri", "dd"];
6
6
 
7
- const ValuesConfiguration = ({ aiSuggestion, editable, searchable, fieldNamePrefix, hasAiSuggestion, keyType, onChange, scope, subscribable, subscribableField }) => {
8
- const { formatMessage } = useIntl();
7
+ const ValuesConfiguration = ({
8
+ aiSuggestion,
9
+ editable,
10
+ searchable,
11
+ fieldNamePrefix,
12
+ hasAiSuggestion,
13
+ keyType,
14
+ onChange,
15
+ scope,
16
+ subscribable,
17
+ subscribableField,
18
+ }) => {
19
+ const { formatMessage } = useIntl();
9
20
 
10
- return <Form.Group size="small" widths="equal">
21
+ return (
22
+ <Form.Group size="small" widths="equal">
23
+ <Form.Field>
24
+ <Form.Checkbox
25
+ name={`${fieldNamePrefix}.editable`}
26
+ label={formatMessage({
27
+ id: "template.field.editable",
28
+ defaultMessage: "Editable",
29
+ })}
30
+ checked={editable}
31
+ onChange={(e, { name, checked: value }) =>
32
+ onChange(null, { name, value })
33
+ }
34
+ />
35
+ </Form.Field>
36
+ {hasAiSuggestion ? (
11
37
  <Form.Field>
12
- <Form.Checkbox
13
- name={`${fieldNamePrefix}.editable`}
14
- label={formatMessage({
15
- id: "template.field.editable",
16
- defaultMessage: "Editable",
17
- })}
18
- checked={editable}
19
- onChange={(e, { name, checked: value }) =>
20
- onChange(null, { name, value })
21
- }
22
- />
38
+ <Form.Checkbox
39
+ name={`${fieldNamePrefix}.ai_suggestion`}
40
+ label={formatMessage({
41
+ id: "template.field.ai_suggestion",
42
+ defaultMessage: "AI Suggestions",
43
+ })}
44
+ checked={aiSuggestion}
45
+ onChange={(_e, { name, checked: value }) =>
46
+ onChange(null, { name, value })
47
+ }
48
+ />
23
49
  </Form.Field>
24
- {hasAiSuggestion ? (
25
- <Form.Field>
26
- <Form.Checkbox
27
- name={`${fieldNamePrefix}.ai_suggestion`}
28
- label={formatMessage({
29
- id: "template.field.ai_suggestion",
30
- defaultMessage: "AI Suggestions",
31
- })}
32
- checked={aiSuggestion}
33
- onChange={(_e, { name, checked: value }) =>
34
- onChange(null, { name, value })
35
- }
36
- />
37
- </Form.Field>
38
- ) : null}
39
- {_.includes(scope)(searchableEnabledScopes) ? (
40
- <Form.Field>
41
- <Form.Checkbox
42
- name={`${fieldNamePrefix}.searchable`}
43
- label={formatMessage({
44
- id: "template.field.searchable",
45
- defaultMessage: "Sercheable",
46
- })}
47
- checked={searchable}
48
- onChange={(_e, { name, checked: value }) =>
49
- onChange(null, { name, value })
50
- }
51
- />
52
- </Form.Field>
53
- ) : null}
54
- {_.includes(keyType)(["fixed", "fixed_tuple"]) ? (
55
- <Form.Checkbox
56
- name={subscribableField}
57
- label={formatMessage({ id: "template.field.subscribable" })}
58
- checked={subscribable}
59
- onChange={(_e, { name, checked: value }) =>
60
- onChange(null, { name, value })
61
- }
62
- />
63
- ) : null}
50
+ ) : null}
51
+ {_.includes(scope)(searchableEnabledScopes) ? (
52
+ <Form.Field>
53
+ <Form.Checkbox
54
+ name={`${fieldNamePrefix}.searchable`}
55
+ label={formatMessage({
56
+ id: "template.field.searchable",
57
+ defaultMessage: "Sercheable",
58
+ })}
59
+ checked={searchable}
60
+ onChange={(_e, { name, checked: value }) =>
61
+ onChange(null, { name, value })
62
+ }
63
+ />
64
+ </Form.Field>
65
+ ) : null}
66
+ {_.includes(keyType)(["fixed", "fixed_tuple"]) ? (
67
+ <Form.Checkbox
68
+ name={subscribableField}
69
+ label={formatMessage({ id: "template.field.subscribable" })}
70
+ checked={subscribable}
71
+ onChange={(_e, { name, checked: value }) =>
72
+ onChange(null, { name, value })
73
+ }
74
+ />
75
+ ) : null}
64
76
  </Form.Group>
65
- }
77
+ );
78
+ };
66
79
 
67
- export default ValuesConfiguration;
80
+ export default ValuesConfiguration;
@@ -37,9 +37,9 @@ export const ValuesField = ({
37
37
  value == "null"
38
38
  ? onChange(null, { name, value: null })
39
39
  : onChange(null, {
40
- name,
41
- value: { [value]: null },
42
- });
40
+ name,
41
+ value: { [value]: null },
42
+ });
43
43
 
44
44
  const onSelectionChange = (e, { value }) => {
45
45
  onChange(e, { name: subscribableField, value: false });
@@ -56,52 +56,52 @@ export const ValuesField = ({
56
56
  return field.cardinality == "0"
57
57
  ? null
58
58
  : valueSegment(values, keyType, fieldType) && (
59
- <Segment>
60
- {_.size(values) > 1 ? (
61
- <Form.Dropdown
62
- fluid
63
- selection
64
- label={formatMessage({ id: "template.field.values" })}
65
- onChange={onSelectionChange}
66
- value={keyType || "null"}
67
- required
68
- options={valueTypes(values)}
59
+ <Segment>
60
+ {_.size(values) > 1 ? (
61
+ <Form.Dropdown
62
+ fluid
63
+ selection
64
+ label={formatMessage({ id: "template.field.values" })}
65
+ onChange={onSelectionChange}
66
+ value={keyType || "null"}
67
+ required
68
+ options={valueTypes(values)}
69
+ />
70
+ ) : null}
71
+ {keyType ? (
72
+ <ValuesSelector
73
+ cardinality={field?.cardinality}
74
+ defaultField={defaultField}
75
+ defaultValue={field?.default}
76
+ name={name}
77
+ formatMessage={formatMessage}
78
+ onChange={onChange}
79
+ type={keyType}
80
+ values={_.path(`values.${keyType}`)(field)}
81
+ />
82
+ ) : null}
83
+ <ValuesConfiguration
84
+ aiSuggestion={ai_suggestion}
85
+ editable={editable}
86
+ keyType={keyType}
87
+ onChange={onChange}
88
+ searchable={searchable}
89
+ fieldNamePrefix={fieldNamePrefix}
90
+ hasAiSuggestion={hasAiSuggestion}
91
+ subscribableField={subscribableField}
92
+ subscribable={field?.subscribable}
93
+ scope={scope}
69
94
  />
70
- ) : null}
71
- {keyType ? (
72
- <ValuesSelector
73
- cardinality={field?.cardinality}
95
+ <DefaultValue
74
96
  defaultField={defaultField}
75
- defaultValue={field?.default}
76
- name={name}
97
+ field={field}
98
+ fieldType={fieldType}
77
99
  formatMessage={formatMessage}
78
100
  onChange={onChange}
79
101
  type={keyType}
80
- values={_.path(`values.${keyType}`)(field)}
81
102
  />
82
- ) : null}
83
- <ValuesConfiguration
84
- aiSuggestion={ai_suggestion}
85
- editable={editable}
86
- keyType={keyType}
87
- onChange={onChange}
88
- searchable={searchable}
89
- fieldNamePrefix={fieldNamePrefix}
90
- hasAiSuggestion={hasAiSuggestion}
91
- subscribableField={subscribableField}
92
- subscribable={field?.subscribable}
93
- scope={scope}
94
- />
95
- <DefaultValue
96
- defaultField={defaultField}
97
- field={field}
98
- fieldType={fieldType}
99
- formatMessage={formatMessage}
100
- onChange={onChange}
101
- type={keyType}
102
- />
103
- </Segment>
104
- );
103
+ </Segment>
104
+ );
105
105
  };
106
106
 
107
107
  ValuesField.propTypes = {