@truedat/df 8.6.7 → 8.7.1

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 (102) 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/SelectDynamicFormWithTranslations.js +14 -15
  7. package/src/components/SelectableDynamicForm.js +1 -1
  8. package/src/components/__tests__/DynamicFieldValue.spec.js +2 -2
  9. package/src/components/__tests__/DynamicFormViewer.spec.js +7 -7
  10. package/src/components/__tests__/EditableDynamicFieldValue.spec.js +1 -1
  11. package/src/components/__tests__/FieldViewerValue.spec.js +12 -12
  12. package/src/components/__tests__/SelectDynamicFormWithTranslations.spec.js +1 -1
  13. package/src/components/__tests__/SelectableDynamicForm.spec.js +16 -12
  14. package/src/components/hierarchies/HierarchyView.js +9 -9
  15. package/src/components/hierarchies/__tests__/HierarchyRoutes.spec.js +1 -1
  16. package/src/components/widgets/DropdownDataLoader.js +1 -1
  17. package/src/components/widgets/DynamicField.js +5 -5
  18. package/src/components/widgets/DynamicTableField.js +129 -125
  19. package/src/components/widgets/GroupPreview.js +2 -2
  20. package/src/components/widgets/HierarchyPreview.js +1 -1
  21. package/src/components/widgets/ImageField.js +2 -3
  22. package/src/components/widgets/MarkdownField.js +0 -1
  23. package/src/components/widgets/StandardDropdown.js +5 -5
  24. package/src/components/widgets/StringField.js +1 -4
  25. package/src/components/widgets/TableField.js +1 -1
  26. package/src/components/widgets/UserGroupPreview.js +1 -1
  27. package/src/components/widgets/__tests__/CheckboxField.spec.js +2 -2
  28. package/src/components/widgets/__tests__/DropdownField.spec.js +2 -2
  29. package/src/components/widgets/__tests__/DynamicField.spec.js +11 -3
  30. package/src/components/widgets/__tests__/DynamicTableField.spec.js +237 -237
  31. package/src/components/widgets/__tests__/GroupPreview.spec.js +11 -11
  32. package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +3 -3
  33. package/src/components/widgets/__tests__/NumberField.spec.js +1 -1
  34. package/src/components/widgets/__tests__/PairListField.spec.js +3 -3
  35. package/src/components/widgets/__tests__/StandardDropdown.spec.js +1 -1
  36. package/src/components/widgets/__tests__/UserGroupPreview.spec.js +14 -10
  37. package/src/messages/index.js +1 -1
  38. package/src/reducers/__tests__/dfMessage.spec.js +5 -5
  39. package/src/reducers/__tests__/selectedDomain.spec.js +2 -2
  40. package/src/reducers/__tests__/selectedDomains.spec.js +2 -2
  41. package/src/reducers/dfMessage.js +4 -4
  42. package/src/selectors/getOptions.js +2 -2
  43. package/src/selectors/templates.js +2 -2
  44. package/src/templates/components/Template.js +2 -2
  45. package/src/templates/components/TemplateFilters.js +1 -1
  46. package/src/templates/components/TemplateLoader.js +1 -1
  47. package/src/templates/components/TemplateRoutes.js +1 -1
  48. package/src/templates/components/Templates.js +1 -6
  49. package/src/templates/components/TemplatesContext.js +3 -3
  50. package/src/templates/components/TemplatesTable.js +1 -1
  51. package/src/templates/components/__tests__/TemplateLoader.spec.js +2 -2
  52. package/src/templates/components/__tests__/TemplateRoutes.spec.js +1 -1
  53. package/src/templates/components/__tests__/TemplatesTable.spec.js +1 -1
  54. package/src/templates/components/templateForm/ActiveGroupForm.js +3 -3
  55. package/src/templates/components/templateForm/ConditionalFieldForm.js +3 -3
  56. package/src/templates/components/templateForm/DependentDomain.js +3 -3
  57. package/src/templates/components/templateForm/FieldDefinition.js +126 -129
  58. package/src/templates/components/templateForm/HierarchiesList.js +1 -1
  59. package/src/templates/components/templateForm/MandatoryConditional.js +2 -2
  60. package/src/templates/components/templateForm/TemplateForm.js +46 -41
  61. package/src/templates/components/templateForm/ValuesConfiguration.js +69 -56
  62. package/src/templates/components/templateForm/ValuesField.js +43 -43
  63. package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +35 -35
  64. package/src/templates/components/templateForm/__tests__/DependentDomain.spec.js +1 -1
  65. package/src/templates/components/templateForm/__tests__/FieldDefinition.spec.js +227 -201
  66. package/src/templates/components/templateForm/__tests__/FieldForm.spec.js +12 -10
  67. package/src/templates/components/templateForm/__tests__/MandatoryConditional.spec.js +3 -3
  68. package/src/templates/components/templateForm/__tests__/SwitchListForm.spec.js +5 -5
  69. package/src/templates/components/templateForm/__tests__/SwitchSegment.spec.js +8 -8
  70. package/src/templates/components/templateForm/__tests__/TableValuesForm.spec.js +207 -189
  71. package/src/templates/components/templateForm/__tests__/TemplateForm.spec.js +42 -13
  72. package/src/templates/components/templateForm/__tests__/TemplateFormActions.spec.js +1 -1
  73. package/src/templates/components/templateForm/__tests__/TemplateRelationsForm.spec.js +3 -1
  74. package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +6 -6
  75. package/src/templates/components/templateForm/__tests__/ValuesListForm.spec.js +4 -4
  76. package/src/templates/components/templateForm/__tests__/ValuesSelector.spec.js +3 -3
  77. package/src/templates/components/templateForm/widgetDefinitions.js +2 -0
  78. package/src/templates/reducers/__tests__/allTemplates.spec.js +4 -4
  79. package/src/templates/reducers/__tests__/selectedTemplate.spec.js +2 -2
  80. package/src/templates/reducers/__tests__/template.spec.js +4 -4
  81. package/src/templates/reducers/__tests__/templateDeleting.spec.js +2 -2
  82. package/src/templates/reducers/__tests__/templateLoading.spec.js +2 -2
  83. package/src/templates/reducers/__tests__/templates.spec.js +3 -3
  84. package/src/templates/reducers/__tests__/templatesLoading.spec.js +2 -2
  85. package/src/templates/sagas/__tests__/createTemplate.spec.js +3 -3
  86. package/src/templates/sagas/__tests__/fetchTemplates.spec.js +1 -1
  87. package/src/templates/sagas/index.js +2 -2
  88. package/src/templates/utils/__tests__/applyDefaults.spec.js +4 -4
  89. package/src/templates/utils/__tests__/filterDomains.spec.js +15 -15
  90. package/src/templates/utils/__tests__/filterFields.spec.js +2 -2
  91. package/src/templates/utils/__tests__/filterSwitches.spec.js +5 -5
  92. package/src/templates/utils/__tests__/filterValues.spec.js +4 -4
  93. package/src/templates/utils/__tests__/formatLegacyContent.spec.js +7 -7
  94. package/src/templates/utils/applyTemplate.js +66 -53
  95. package/src/templates/utils/filterDepends.js +1 -1
  96. package/src/templates/utils/filterSwitches.js +3 -3
  97. package/src/templates/utils/filterValues.js +4 -5
  98. package/src/templates/utils/flattenFields.js +2 -2
  99. package/src/templates/utils/formatLegacyContent.js +2 -1
  100. package/src/templates/utils/parseFieldOptions.js +15 -14
  101. package/src/templates/utils/parseGroups.js +43 -43
  102. package/src/templates/utils/validateContent.js +4 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truedat/df",
3
- "version": "8.6.7",
3
+ "version": "8.7.1",
4
4
  "description": "Truedat Web Data Quality Module",
5
5
  "sideEffects": false,
6
6
  "module": "src/index.js",
@@ -51,14 +51,14 @@
51
51
  "@testing-library/jest-dom": "^6.6.3",
52
52
  "@testing-library/react": "^16.3.0",
53
53
  "@testing-library/user-event": "^14.6.1",
54
- "@truedat/test": "8.6.7",
54
+ "@truedat/test": "8.7.1",
55
55
  "identity-obj-proxy": "^3.0.0",
56
56
  "jest": "^29.7.0",
57
57
  "redux-saga-test-plan": "^4.0.6"
58
58
  },
59
59
  "dependencies": {
60
60
  "@apollo/client": "^3.13.8",
61
- "@truedat/core": "8.6.7",
61
+ "@truedat/core": "8.7.1",
62
62
  "axios": "^1.15.0",
63
63
  "graphql": "^16.11.0",
64
64
  "is-hotkey": "^0.2.0",
@@ -87,5 +87,5 @@
87
87
  "semantic-ui-react": "^3.0.0-beta.2",
88
88
  "swr": "^2.3.3"
89
89
  },
90
- "gitHead": "17b10e045d4b90147c0f98ed5e781c20804024ba"
90
+ "gitHead": "f7605a6ea3f78839b42bb7d8339eec125ba49acb"
91
91
  }
@@ -31,9 +31,9 @@ export const DynamicFormViewer = ({
31
31
  name={
32
32
  name
33
33
  ? formatMessage({
34
- id: `templates.groups.${name}`,
35
- defaultMessage: name,
36
- })
34
+ id: `templates.groups.${name}`,
35
+ defaultMessage: name,
36
+ })
37
37
  : null
38
38
  }
39
39
  fields={fields}
@@ -60,7 +60,7 @@ export const DynamicFormWithTranslations = ({
60
60
  i18nContent,
61
61
  fieldsToOmit,
62
62
  selectedDomain,
63
- requiredLangs
63
+ requiredLangs,
64
64
  );
65
65
 
66
66
  return parsedGroups.map(({ name, langs }, i) => (
@@ -69,9 +69,9 @@ export const DynamicFormWithTranslations = ({
69
69
  name={
70
70
  name
71
71
  ? formatMessage({
72
- id: `templates.groups.${name}`,
73
- defaultMessage: name,
74
- })
72
+ id: `templates.groups.${name}`,
73
+ defaultMessage: name,
74
+ })
75
75
  : null
76
76
  }
77
77
  scope={template?.scope}
@@ -15,7 +15,7 @@ const parseField = (field) => {
15
15
  _.prop("fixed_tuple"),
16
16
  _.find({ value }),
17
17
  _.prop("text"),
18
- _.defaultTo(value)
18
+ _.defaultTo(value),
19
19
  )(values);
20
20
  return {
21
21
  ...field,
@@ -27,7 +27,7 @@ export const FieldGroupWithTranslations = ({
27
27
  } = useLanguage();
28
28
  const selectedAltLang = altLang || altLangs[0];
29
29
  const hasTranslations = hasTranslatableFields(
30
- fieldsByLang[defaultLang] || []
30
+ fieldsByLang[defaultLang] || [],
31
31
  );
32
32
 
33
33
  const getFieldForLang = (field, lang) => {
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import { useEffect, useState } from "react";
2
+ import { useState } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { Grid, Header } from "semantic-ui-react";
5
5
  import { TemplateSelector } from "@truedat/core/components";
@@ -29,13 +29,15 @@ export default function SelectDynamicFormWithTranslations({
29
29
  showTemplateSectionTitle,
30
30
  }) {
31
31
  const [thisTemplate, setThisTemplate] = useState();
32
- const template = _.isEmpty(selectedTemplate) ? thisTemplate : selectedTemplate;
32
+ const template = _.isEmpty(selectedTemplate)
33
+ ? thisTemplate
34
+ : selectedTemplate;
33
35
  const { enabledLangs } = useLanguage();
34
36
  const { formatMessage } = useIntl();
35
37
  const domainIdsArray = _.isArray(domainIds) ? domainIds : [];
36
- const domain = _.size(domainIdsArray) > 0 ? { id: _.head(domainIdsArray) } : null;
38
+ const domain =
39
+ _.size(domainIdsArray) > 0 ? { id: _.head(domainIdsArray) } : null;
37
40
  const hasDomainSelection = domain !== null;
38
- const domainKey = domainIdsArray.join(",");
39
41
  const templateTitle =
40
42
  template &&
41
43
  formatMessage({
@@ -50,17 +52,11 @@ export default function SelectDynamicFormWithTranslations({
50
52
  });
51
53
  };
52
54
 
53
- useEffect(() => {
54
- if (actionKey === "create") {
55
- setThisTemplate(undefined);
56
- onChangeTemplate(undefined);
57
- }
58
- // eslint-disable-next-line react-hooks/exhaustive-deps
59
- }, [domainKey]);
60
-
61
55
  const applyTemplateToLangs = (tpl) => {
62
56
  enabledLangs.forEach((lang) => {
63
- const content = tpl ? applyTemplate(tpl)(i18nContent[lang] || {}, domain?.id) : {};
57
+ const content = tpl
58
+ ? applyTemplate(tpl)(i18nContent[lang] || {}, domain?.id)
59
+ : {};
64
60
  handleChange(content, tpl, lang);
65
61
  });
66
62
  };
@@ -89,10 +85,13 @@ export default function SelectDynamicFormWithTranslations({
89
85
 
90
86
  return (
91
87
  <>
92
- {(beforeSelector || (hasDomainSelection && (!actionKey || actionKey === "create"))) && (
88
+ {(beforeSelector ||
89
+ (hasDomainSelection && (!actionKey || actionKey === "create"))) && (
93
90
  <Grid stackable>
94
91
  <Grid.Row columns={beforeSelector ? 2 : 1} verticalAlign="bottom">
95
- {beforeSelector ? <Grid.Column>{beforeSelector}</Grid.Column> : null}
92
+ {beforeSelector ? (
93
+ <Grid.Column>{beforeSelector}</Grid.Column>
94
+ ) : null}
96
95
  {hasDomainSelection && (!actionKey || actionKey === "create") ? (
97
96
  <Grid.Column>
98
97
  <TemplateSelector
@@ -16,7 +16,7 @@ export default function SelectableDynamicForm({
16
16
  actionKey,
17
17
  onChange,
18
18
  onNameChange,
19
- onTemplateChange = () => { },
19
+ onTemplateChange = () => {},
20
20
  onBlur,
21
21
  label,
22
22
  placeholder,
@@ -57,7 +57,7 @@ describe("<DynamicFieldValue />", () => {
57
57
  value={{ value: "foo bar", origin: "user" }}
58
58
  type="group"
59
59
  widget="dropdown"
60
- />
60
+ />,
61
61
  );
62
62
 
63
63
  expect(rendered.getByText(/foo bar/i)).toBeInTheDocument();
@@ -82,7 +82,7 @@ describe("<DynamicFieldValue />", () => {
82
82
  value={{ value: ["foo bar", "bar baz"], origin: "user" }}
83
83
  type="group"
84
84
  widget="checkbox"
85
- />
85
+ />,
86
86
  );
87
87
 
88
88
  expect(rendered.getByText(/foo bar/i)).toBeInTheDocument();
@@ -116,7 +116,7 @@ describe("<DynamicFormViewer />", () => {
116
116
  };
117
117
 
118
118
  const { container } = render(
119
- <DynamicFormViewer template={template} content={content} />
119
+ <DynamicFormViewer template={template} content={content} />,
120
120
  );
121
121
 
122
122
  const reader = container.querySelector(".markdown-reader");
@@ -126,7 +126,7 @@ describe("<DynamicFormViewer />", () => {
126
126
 
127
127
  it("renders group fields through GroupPreview", () => {
128
128
  const rendered = render(
129
- <DynamicFormViewer template={groupTemplate} content={groupContent} />
129
+ <DynamicFormViewer template={groupTemplate} content={groupContent} />,
130
130
  );
131
131
 
132
132
  expect(rendered.getByText(/foo bar/i)).toBeInTheDocument();
@@ -138,7 +138,7 @@ describe("<DynamicFormViewer />", () => {
138
138
  <DynamicFormViewer
139
139
  template={unnamedGroupTemplate}
140
140
  content={groupContent}
141
- />
141
+ />,
142
142
  );
143
143
 
144
144
  expect(rendered.getByText(/foo bar/i)).toBeInTheDocument();
@@ -150,7 +150,7 @@ describe("<DynamicFormViewer />", () => {
150
150
  const rendered = render(<DynamicFormViewer content={groupContent} />);
151
151
 
152
152
  expect(
153
- rendered.container.querySelector(".ui.negative.message")
153
+ rendered.container.querySelector(".ui.negative.message"),
154
154
  ).toBeInTheDocument();
155
155
  });
156
156
 
@@ -159,7 +159,7 @@ describe("<DynamicFormViewer />", () => {
159
159
  <DynamicFormViewerFetcher
160
160
  template={groupTemplate}
161
161
  content={groupContent}
162
- />
162
+ />,
163
163
  );
164
164
 
165
165
  expect(useTemplate).not.toHaveBeenCalled();
@@ -174,7 +174,7 @@ describe("<DynamicFormViewer />", () => {
174
174
  });
175
175
 
176
176
  const rendered = render(
177
- <DynamicFormViewerFetcher template="group-template" />
177
+ <DynamicFormViewerFetcher template="group-template" />,
178
178
  );
179
179
 
180
180
  expect(useTemplate).toHaveBeenCalledWith({
@@ -195,7 +195,7 @@ describe("<DynamicFormViewer />", () => {
195
195
  template="group-template"
196
196
  domainIds={[1]}
197
197
  content={groupContent}
198
- />
198
+ />,
199
199
  );
200
200
 
201
201
  expect(useTemplate).toHaveBeenCalledWith({
@@ -31,7 +31,7 @@ describe("<EditableDynamicFieldValue />", () => {
31
31
  };
32
32
  const wrapper = render(
33
33
  <EditableDynamicFieldValue {...props} />,
34
- renderOpts
34
+ renderOpts,
35
35
  );
36
36
  expect(wrapper).toMatchSnapshot();
37
37
  });
@@ -73,7 +73,7 @@ describe("<FieldViewerValue />", () => {
73
73
  }`, () => {
74
74
  const { container } = render(<FieldViewerValue {...props} />);
75
75
  expect(container).toMatchSnapshot();
76
- })
76
+ }),
77
77
  );
78
78
 
79
79
  it("matches the latest snapshot for multiple", () => {
@@ -94,7 +94,7 @@ describe("<FieldViewerValue />", () => {
94
94
  values={{
95
95
  processed_groups: ["Group alias"],
96
96
  }}
97
- />
97
+ />,
98
98
  );
99
99
 
100
100
  expect(container.textContent).toContain("Group alias");
@@ -109,7 +109,7 @@ describe("<FieldViewerValue />", () => {
109
109
  value={markdown}
110
110
  label="md"
111
111
  widget="markdown"
112
- />
112
+ />,
113
113
  );
114
114
 
115
115
  const reader = container.querySelector(".markdown-reader");
@@ -124,7 +124,7 @@ describe("<FieldViewerValue />", () => {
124
124
  value=" "
125
125
  label="md"
126
126
  widget="markdown"
127
- />
127
+ />,
128
128
  );
129
129
  expect(container.firstChild).toBeNull();
130
130
  });
@@ -144,7 +144,7 @@ describe("<FieldViewerValue />", () => {
144
144
  },
145
145
  },
146
146
  ]}
147
- />
147
+ />,
148
148
  );
149
149
 
150
150
  const tableCell = rendered.container.querySelector("tbody td");
@@ -162,7 +162,7 @@ describe("<FieldViewerValue />", () => {
162
162
  table_columns: [{ name: "col1", cardinality: "*", type: "string" }],
163
163
  }}
164
164
  value={[{}]}
165
- />
165
+ />,
166
166
  );
167
167
 
168
168
  expect(rendered.container.querySelector("tbody td")).toBeEmptyDOMElement();
@@ -170,7 +170,7 @@ describe("<FieldViewerValue />", () => {
170
170
 
171
171
  it("returns null when the field value is nil", () => {
172
172
  const { container } = render(
173
- <FieldViewerValue type="string" value={null} />
173
+ <FieldViewerValue type="string" value={null} />,
174
174
  );
175
175
 
176
176
  expect(container.firstChild).toBeNull();
@@ -185,7 +185,7 @@ describe("<FieldViewerValue />", () => {
185
185
  values={{
186
186
  processed_groups: [{ name: "Data Owners" }],
187
187
  }}
188
- />
188
+ />,
189
189
  );
190
190
 
191
191
  expect(rendered.getByText("Data Owners")).toBeInTheDocument();
@@ -202,7 +202,7 @@ describe("<FieldViewerValue />", () => {
202
202
  values={{
203
203
  processed_groups: [{ name: "Data Owners" }],
204
204
  }}
205
- />
205
+ />,
206
206
  );
207
207
 
208
208
  expect(rendered.getByText("Data Owners")).toBeInTheDocument();
@@ -211,7 +211,7 @@ describe("<FieldViewerValue />", () => {
211
211
 
212
212
  it("renders user_group values using the raw name when they are not groups", () => {
213
213
  const rendered = render(
214
- <FieldViewerValue type="user_group" value="user:Jane Doe" multiple />
214
+ <FieldViewerValue type="user_group" value="user:Jane Doe" multiple />,
215
215
  );
216
216
 
217
217
  expect(rendered.getByText("Jane Doe")).toBeInTheDocument();
@@ -224,11 +224,11 @@ describe("<FieldViewerValue />", () => {
224
224
  type="string"
225
225
  value="identifier-value"
226
226
  widget="identifier"
227
- />
227
+ />,
228
228
  );
229
229
 
230
230
  expect(
231
- rendered.container.querySelector(".identifier-value")
231
+ rendered.container.querySelector(".identifier-value"),
232
232
  ).toHaveTextContent("identifier-value");
233
233
  });
234
234
  });
@@ -65,7 +65,7 @@ describe("<SelectDynamicFormWithTranslations />", () => {
65
65
  onChangeContent={onChangeContent}
66
66
  onChangeTemplate={jest.fn()}
67
67
  scope="bg"
68
- />
68
+ />,
69
69
  );
70
70
 
71
71
  await waitFor(() => {
@@ -37,7 +37,7 @@ describe("<SelectableDynamicForm />", () => {
37
37
 
38
38
  expect(rendered.getByText(/loading/i)).toBeInTheDocument();
39
39
  expect(
40
- rendered.container.querySelector(".ui.loader")
40
+ rendered.container.querySelector(".ui.loader"),
41
41
  ).not.toBeInTheDocument();
42
42
 
43
43
  await waitFor(() => {
@@ -48,7 +48,7 @@ describe("<SelectableDynamicForm />", () => {
48
48
 
49
49
  expect(rendered.queryByText(/loading/i)).not.toBeInTheDocument();
50
50
  expect(
51
- rendered.container.querySelector(".ui.loader")
51
+ rendered.container.querySelector(".ui.loader"),
52
52
  ).not.toBeInTheDocument();
53
53
  });
54
54
 
@@ -59,7 +59,7 @@ describe("<SelectableDynamicForm />", () => {
59
59
  const user = userEvent.setup({ delay: null });
60
60
  await user.click(await rendered.findByText(/template1/i));
61
61
  expect(
62
- rendered.container.querySelector(".ui.loader")
62
+ rendered.container.querySelector(".ui.loader"),
63
63
  ).not.toBeInTheDocument();
64
64
  });
65
65
 
@@ -73,7 +73,7 @@ describe("<SelectableDynamicForm />", () => {
73
73
  await user.click(templateOption);
74
74
 
75
75
  expect(
76
- rendered.container.querySelector(".ui.loader")
76
+ rendered.container.querySelector(".ui.loader"),
77
77
  ).not.toBeInTheDocument();
78
78
  });
79
79
 
@@ -86,7 +86,7 @@ describe("<SelectableDynamicForm />", () => {
86
86
  await user.click(await rendered.findByText(/template2/i));
87
87
 
88
88
  expect(
89
- rendered.container.querySelector(".ui.loader")
89
+ rendered.container.querySelector(".ui.loader"),
90
90
  ).not.toBeInTheDocument();
91
91
  });
92
92
 
@@ -100,7 +100,7 @@ describe("<SelectableDynamicForm />", () => {
100
100
  };
101
101
  const rendered = render(
102
102
  <SelectableDynamicForm {...thisProps} />,
103
- renderOpts
103
+ renderOpts,
104
104
  );
105
105
  await waitForLoad(rendered);
106
106
 
@@ -140,7 +140,7 @@ describe("<SelectableDynamicForm />", () => {
140
140
  };
141
141
  render(<SelectableDynamicForm {...thisProps} />, renderOpts);
142
142
  await waitFor(() =>
143
- expect(onNameChange).toHaveBeenCalledWith("template1")
143
+ expect(onNameChange).toHaveBeenCalledWith("template1"),
144
144
  );
145
145
  });
146
146
  });
@@ -169,7 +169,7 @@ describe("<SelectableDynamicForm />", () => {
169
169
  onChange={jest.fn()}
170
170
  onNameChange={jest.fn()}
171
171
  />,
172
- renderOpts
172
+ renderOpts,
173
173
  );
174
174
  await waitForLoad(rendered);
175
175
  expect(rendered.container).toMatchSnapshot();
@@ -200,11 +200,15 @@ describe("<SelectableDynamicForm />", () => {
200
200
  {...props}
201
201
  disableSelector
202
202
  selectedTemplate={selectedTemplate}
203
- />
203
+ />,
204
204
  );
205
205
  await waitForLoad(rendered);
206
- expect(rendered.container.querySelector(".ui.search.selection.dropdown")).not.toBeInTheDocument();
207
- expect(rendered.queryByText(/template\.selector\.placeholder/i)).not.toBeInTheDocument();
206
+ expect(
207
+ rendered.container.querySelector(".ui.search.selection.dropdown"),
208
+ ).not.toBeInTheDocument();
209
+ expect(
210
+ rendered.queryByText(/template\.selector\.placeholder/i),
211
+ ).not.toBeInTheDocument();
208
212
  });
209
213
 
210
214
  it("matches snapshot when disableSelector and selectedTemplate are set", async () => {
@@ -213,7 +217,7 @@ describe("<SelectableDynamicForm />", () => {
213
217
  {...props}
214
218
  disableSelector
215
219
  selectedTemplate={selectedTemplate}
216
- />
220
+ />,
217
221
  );
218
222
  await waitForLoad(rendered);
219
223
  expect(rendered.container).toMatchSnapshot();
@@ -15,7 +15,7 @@ const getLastId = _.flow(
15
15
  _.pathOr([], "nodes"),
16
16
  _.map("id"),
17
17
  _.concat(0),
18
- _.max
18
+ _.max,
19
19
  );
20
20
 
21
21
  const validateHierarchy = (hierarchy) => {
@@ -33,7 +33,7 @@ const validateHierarchy = (hierarchy) => {
33
33
  ...node,
34
34
  error: hasError,
35
35
  };
36
- })
36
+ }),
37
37
  )(hierarchy),
38
38
  };
39
39
 
@@ -42,7 +42,7 @@ const validateHierarchy = (hierarchy) => {
42
42
  _.flow(
43
43
  _.pathOr([], "nodes"),
44
44
  _.filter({ error: true }),
45
- _.isEmpty
45
+ _.isEmpty,
46
46
  )(validatedHierarchy);
47
47
  return [valid, validatedHierarchy];
48
48
  };
@@ -75,13 +75,13 @@ export const HierarchyView = ({
75
75
  const addedNodes = _.flow(
76
76
  _.pathOr([], "nodes"),
77
77
  _.filter({ editionStatus: "added" }),
78
- _.size
78
+ _.size,
79
79
  )(hierarchy);
80
80
 
81
81
  const modifiedNodes = _.flow(
82
82
  _.pathOr([], "nodes"),
83
83
  _.filter({ editionStatus: "dirty" }),
84
- _.size
84
+ _.size,
85
85
  )(hierarchy);
86
86
 
87
87
  const updateMetadata = ({ name, description }) =>
@@ -108,10 +108,10 @@ export const HierarchyView = ({
108
108
  ? "dirty"
109
109
  : node.editionStatus == "dirty"
110
110
  ? null
111
- : node.editionStatus
111
+ : node.editionStatus,
112
112
  )(originalHierarchy.nodes),
113
113
  }
114
- : node
114
+ : node,
115
115
  )(hierarchy.nodes),
116
116
  });
117
117
  };
@@ -132,7 +132,7 @@ export const HierarchyView = ({
132
132
  _.flow(
133
133
  _.pathOr([], "nodes"),
134
134
  _.find({ id: id }),
135
- _.isEmpty
135
+ _.isEmpty,
136
136
  )(originalHierarchy)
137
137
  ? null
138
138
  : setDeletedNodes(deletedNodes + 1);
@@ -166,7 +166,7 @@ export const HierarchyView = ({
166
166
  added: addedNodes,
167
167
  modified: modifiedNodes,
168
168
  deleted: deletedNodes,
169
- }
169
+ },
170
170
  )}
171
171
  />
172
172
  <HistoryBackButton
@@ -1,6 +1,5 @@
1
1
  import React from "react";
2
2
  import { render, waitForLoad } from "@truedat/test/render";
3
- import { HierarchyRoutes } from "../HierarchyRoutes";
4
3
  import { useAuthorized } from "@truedat/core/hooks/useAuthorized";
5
4
  import {
6
5
  HIERARCHIES,
@@ -8,6 +7,7 @@ import {
8
7
  HIERARCHY_EDIT,
9
8
  HIERARCHY_CREATE,
10
9
  } from "@truedat/core/routes";
10
+ import { HierarchyRoutes } from "../HierarchyRoutes";
11
11
 
12
12
  jest.mock("@truedat/core/hooks/useAuthorized", () => ({
13
13
  useAuthorized: jest.fn(() => true),
@@ -2,7 +2,7 @@ import { lazy } from "react";
2
2
  import PropTypes from "prop-types";
3
3
 
4
4
  const SystemsLoader = lazy(
5
- () => import("@truedat/core/components/SystemsLoader")
5
+ () => import("@truedat/core/components/SystemsLoader"),
6
6
  );
7
7
 
8
8
  export const DropdownDataLoader = ({ type }) =>
@@ -34,14 +34,14 @@ export const DynamicField = ({
34
34
  >
35
35
  <label>
36
36
  {(label && fieldProps.type != "hierarchy") ||
37
- (fieldProps.type == "hierarchy" &&
38
- (fieldProps.values.hierarchy.min_depth == 0 ||
39
- !fieldProps.values.hierarchy.min_depth)) ? (
37
+ (fieldProps.type == "hierarchy" &&
38
+ (fieldProps.values.hierarchy.min_depth == 0 ||
39
+ !fieldProps.values.hierarchy.min_depth)) ? (
40
40
  <FormattedMessage id={`fields.${label}`} defaultMessage={label} />
41
41
  ) : null}
42
42
  {label &&
43
- fieldProps.type == "hierarchy" &&
44
- fieldProps.values.hierarchy.min_depth > 0 ? (
43
+ fieldProps.type == "hierarchy" &&
44
+ fieldProps.values.hierarchy.min_depth > 0 ? (
45
45
  <>
46
46
  <FormattedMessage id={`fields.${label}`} defaultMessage={label} />
47
47
  <Label pointing="left">