@truedat/df 7.5.9 → 7.5.11

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 (213) hide show
  1. package/package.json +43 -67
  2. package/src/components/DynamicFieldValue.js +0 -1
  3. package/src/components/DynamicForm.js +5 -4
  4. package/src/components/DynamicFormViewer.js +0 -1
  5. package/src/components/DynamicFormWithTranslations.js +3 -3
  6. package/src/components/EditableDynamicFieldValue.js +1 -2
  7. package/src/components/FieldGroupDetail.js +0 -1
  8. package/src/components/FieldGroupSegment.js +17 -29
  9. package/src/components/FieldGroupWithTranslations.js +19 -38
  10. package/src/components/FieldViewerValue.js +4 -7
  11. package/src/components/OriginLabel.js +0 -1
  12. package/src/components/SelectDynamicFormWithTranslations.js +4 -6
  13. package/src/components/SelectableDynamicForm.js +5 -11
  14. package/src/components/__tests__/DynamicFieldValue.spec.js +0 -1
  15. package/src/components/__tests__/DynamicForm.spec.js +25 -23
  16. package/src/components/__tests__/EditableDynamicFieldValue.spec.js +0 -1
  17. package/src/components/__tests__/FieldGroupDetail.spec.js +0 -1
  18. package/src/components/__tests__/FieldViewerValue.spec.js +1 -6
  19. package/src/components/__tests__/SelectableDynamicForm.spec.js +102 -46
  20. package/src/components/__tests__/__snapshots__/DynamicFieldValue.spec.js.snap +2 -2
  21. package/src/components/__tests__/__snapshots__/DynamicForm.spec.js.snap +94 -81
  22. package/src/components/__tests__/__snapshots__/FieldGroupDetail.spec.js.snap +2 -2
  23. package/src/components/__tests__/__snapshots__/FieldViewerValue.spec.js.snap +1 -7
  24. package/src/components/__tests__/__snapshots__/SelectableDynamicForm.spec.js.snap +39 -39
  25. package/src/components/hierarchies/Hierarchies.js +2 -4
  26. package/src/components/hierarchies/HierarchiesView.js +1 -2
  27. package/src/components/hierarchies/HierarchyCrumbs.js +1 -2
  28. package/src/components/hierarchies/HierarchyRoutes.js +44 -39
  29. package/src/components/hierarchies/HierarchyView.js +4 -7
  30. package/src/components/hierarchies/__tests__/Hierarchies.spec.js +2 -3
  31. package/src/components/hierarchies/__tests__/HierarchiesView.spec.js +3 -7
  32. package/src/components/hierarchies/__tests__/HierarchyCrumbs.spec.js +0 -1
  33. package/src/components/hierarchies/__tests__/HierarchyRoutes.spec.js +79 -0
  34. package/src/components/hierarchies/__tests__/HierarchyView.spec.js +2 -10
  35. package/src/components/hierarchies/__tests__/__snapshots__/Hierarchies.spec.js.snap +1 -0
  36. package/src/components/hierarchies/__tests__/__snapshots__/HierarchiesView.spec.js.snap +7 -5
  37. package/src/components/hierarchies/__tests__/__snapshots__/HierarchyCrumbs.spec.js.snap +4 -2
  38. package/src/components/hierarchies/__tests__/__snapshots__/HierarchyRoutes.spec.js.snap +60 -0
  39. package/src/components/hierarchies/__tests__/__snapshots__/HierarchyView.spec.js.snap +8 -6
  40. package/src/components/widgets/CheckboxField.js +0 -1
  41. package/src/components/widgets/ColorPickerField.js +2 -3
  42. package/src/components/widgets/DateField.js +0 -1
  43. package/src/components/widgets/DateTimeField.js +0 -1
  44. package/src/components/widgets/DomainDropdown.js +1 -1
  45. package/src/components/widgets/DomainPreview.js +1 -2
  46. package/src/components/widgets/DropdownDataLoader.js +3 -3
  47. package/src/components/widgets/DropdownField.js +5 -4
  48. package/src/components/widgets/DynamicField.js +0 -5
  49. package/src/components/widgets/EnrichedTextField.js +0 -1
  50. package/src/components/widgets/HierarchyDropdown.js +1 -1
  51. package/src/components/widgets/HierarchyPreview.js +0 -1
  52. package/src/components/widgets/IdentifierField.js +0 -1
  53. package/src/components/widgets/ImageField.js +1 -1
  54. package/src/components/widgets/ImagePreview.js +0 -1
  55. package/src/components/widgets/NumberField.js +6 -7
  56. package/src/components/widgets/PairListField.js +5 -6
  57. package/src/components/widgets/PasswordField.js +1 -2
  58. package/src/components/widgets/RadioField.js +0 -1
  59. package/src/components/widgets/StandardDropdown.js +0 -1
  60. package/src/components/widgets/StringField.js +0 -1
  61. package/src/components/widgets/SystemPreview.js +2 -3
  62. package/src/components/widgets/TableField.js +5 -5
  63. package/src/components/widgets/TextField.js +1 -2
  64. package/src/components/widgets/__tests__/CheckboxField.spec.js +33 -23
  65. package/src/components/widgets/__tests__/ColorPickerField.spec.js +5 -12
  66. package/src/components/widgets/__tests__/DateField.spec.js +5 -5
  67. package/src/components/widgets/__tests__/DateTimeField.spec.js +5 -5
  68. package/src/components/widgets/__tests__/DomainPreview.spec.js +12 -14
  69. package/src/components/widgets/__tests__/DropdownDataLoader.spec.js +5 -5
  70. package/src/components/widgets/__tests__/DropdownField.spec.js +18 -29
  71. package/src/components/widgets/__tests__/DynamicField.spec.js +0 -1
  72. package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +4 -5
  73. package/src/components/widgets/__tests__/HierarchyPreview.spec.js +0 -1
  74. package/src/components/widgets/__tests__/ImageField.spec.js +5 -10
  75. package/src/components/widgets/__tests__/NumberField.spec.js +23 -5
  76. package/src/components/widgets/__tests__/PairListField.spec.js +69 -59
  77. package/src/components/widgets/__tests__/PasswordField.spec.js +3 -4
  78. package/src/components/widgets/__tests__/RadioField.spec.js +5 -5
  79. package/src/components/widgets/__tests__/StandardDropdown.spec.js +45 -46
  80. package/src/components/widgets/__tests__/StringField.spec.js +10 -13
  81. package/src/components/widgets/__tests__/SystemPreview.spec.js +13 -15
  82. package/src/components/widgets/__tests__/TableField.spec.js +32 -32
  83. package/src/components/widgets/__tests__/TextField.spec.js +5 -5
  84. package/src/components/widgets/__tests__/__snapshots__/CheckboxField.spec.js.snap +58 -29
  85. package/src/components/widgets/__tests__/__snapshots__/ColorPickerField.spec.js.snap +221 -36
  86. package/src/components/widgets/__tests__/__snapshots__/DateField.spec.js.snap +21 -16
  87. package/src/components/widgets/__tests__/__snapshots__/DateTimeField.spec.js.snap +21 -20
  88. package/src/components/widgets/__tests__/__snapshots__/DomainPreview.spec.js.snap +26 -21
  89. package/src/components/widgets/__tests__/__snapshots__/DropdownDataLoader.spec.js.snap +1 -1
  90. package/src/components/widgets/__tests__/__snapshots__/DropdownField.spec.js.snap +93 -43
  91. package/src/components/widgets/__tests__/__snapshots__/DynamicField.spec.js.snap +2 -14
  92. package/src/components/widgets/__tests__/__snapshots__/ImageField.spec.js.snap +16 -28
  93. package/src/components/widgets/__tests__/__snapshots__/NumberField.spec.js.snap +11 -9
  94. package/src/components/widgets/__tests__/__snapshots__/PairListField.spec.js.snap +53 -39
  95. package/src/components/widgets/__tests__/__snapshots__/PasswordField.spec.js.snap +15 -8
  96. package/src/components/widgets/__tests__/__snapshots__/RadioField.spec.js.snap +41 -22
  97. package/src/components/widgets/__tests__/__snapshots__/StandardDropdown.spec.js.snap +78 -31
  98. package/src/components/widgets/__tests__/__snapshots__/StringField.spec.js.snap +78 -38
  99. package/src/components/widgets/__tests__/__snapshots__/SystemPreview.spec.js.snap +24 -21
  100. package/src/components/widgets/__tests__/__snapshots__/TableField.spec.js.snap +138 -174
  101. package/src/components/widgets/__tests__/__snapshots__/TextField.spec.js.snap +12 -7
  102. package/src/reducers/__tests__/dfMessage.spec.js +14 -18
  103. package/src/reducers/dfMessage.js +8 -7
  104. package/src/selectors/index.js +0 -1
  105. package/src/templates/components/NewTemplate.js +0 -1
  106. package/src/templates/components/Template.js +10 -3
  107. package/src/templates/components/TemplateCard.js +3 -4
  108. package/src/templates/components/TemplateCrumbs.js +2 -3
  109. package/src/templates/components/TemplateFilters.js +0 -1
  110. package/src/templates/components/TemplateLoader.js +25 -101
  111. package/src/templates/components/TemplateRoutes.js +29 -45
  112. package/src/templates/components/Templates.js +1 -5
  113. package/src/templates/components/TemplatesContext.js +3 -7
  114. package/src/templates/components/TemplatesTable.js +1 -2
  115. package/src/templates/components/__tests__/NewTemplate.spec.js +5 -10
  116. package/src/templates/components/__tests__/Template.spec.js +0 -1
  117. package/src/templates/components/__tests__/TemplateLoader.spec.js +71 -109
  118. package/src/templates/components/__tests__/TemplateRoutes.spec.js +63 -0
  119. package/src/templates/components/__tests__/TemplatesTable.spec.js +15 -9
  120. package/src/templates/components/__tests__/__snapshots__/NewTemplate.spec.js.snap +335 -22
  121. package/src/templates/components/__tests__/__snapshots__/Template.spec.js.snap +49 -48
  122. package/src/templates/components/__tests__/__snapshots__/TemplateLoader.spec.js.snap +7 -1
  123. package/src/templates/components/__tests__/__snapshots__/TemplateRoutes.spec.js.snap +38 -0
  124. package/src/templates/components/__tests__/__snapshots__/TemplatesTable.spec.js.snap +94 -1
  125. package/src/templates/components/index.js +1 -2
  126. package/src/templates/components/templateForm/ActiveGroupForm.js +1 -4
  127. package/src/templates/components/templateForm/ConditionalFieldForm.js +0 -1
  128. package/src/templates/components/templateForm/DefaultValue.js +0 -1
  129. package/src/templates/components/templateForm/DependentDomain.js +0 -1
  130. package/src/templates/components/templateForm/DependentFormField.js +0 -1
  131. package/src/templates/components/templateForm/FieldForm.js +5 -5
  132. package/src/templates/components/templateForm/GroupsList.js +0 -1
  133. package/src/templates/components/templateForm/HierarchiesList.js +1 -2
  134. package/src/templates/components/templateForm/MandatoryConditional.js +0 -1
  135. package/src/templates/components/templateForm/SwitchListForm.js +2 -2
  136. package/src/templates/components/templateForm/SwitchSegment.js +0 -1
  137. package/src/templates/components/templateForm/TemplateForm.js +1 -1
  138. package/src/templates/components/templateForm/TemplateFormActions.js +3 -4
  139. package/src/templates/components/templateForm/ValuesField.js +1 -3
  140. package/src/templates/components/templateForm/ValuesListForm.js +3 -3
  141. package/src/templates/components/templateForm/ValuesSelector.js +0 -1
  142. package/src/templates/components/templateForm/__tests__/ActiveGroupForm.spec.js +8 -13
  143. package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +198 -113
  144. package/src/templates/components/templateForm/__tests__/DependentDomain.spec.js +0 -1
  145. package/src/templates/components/templateForm/__tests__/DependentFormField.spec.js +0 -1
  146. package/src/templates/components/templateForm/__tests__/FieldForm.spec.js +106 -72
  147. package/src/templates/components/templateForm/__tests__/GroupsList.spec.js +7 -12
  148. package/src/templates/components/templateForm/__tests__/MandatoryConditional.spec.js +0 -1
  149. package/src/templates/components/templateForm/__tests__/SwitchListForm.spec.js +71 -50
  150. package/src/templates/components/templateForm/__tests__/SwitchSegment.spec.js +37 -62
  151. package/src/templates/components/templateForm/__tests__/TemplateForm.spec.js +0 -1
  152. package/src/templates/components/templateForm/__tests__/TemplateFormActions.spec.js +19 -15
  153. package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +84 -62
  154. package/src/templates/components/templateForm/__tests__/ValuesListForm.spec.js +108 -144
  155. package/src/templates/components/templateForm/__tests__/ValuesSelector.spec.js +36 -36
  156. package/src/templates/components/templateForm/__tests__/__snapshots__/ActiveGroupForm.spec.js.snap +654 -86
  157. package/src/templates/components/templateForm/__tests__/__snapshots__/DefaultValue.spec.js.snap +45 -23
  158. package/src/templates/components/templateForm/__tests__/__snapshots__/FieldForm.spec.js.snap +1700 -1025
  159. package/src/templates/components/templateForm/__tests__/__snapshots__/GroupsList.spec.js.snap +44 -39
  160. package/src/templates/components/templateForm/__tests__/__snapshots__/SwitchListForm.spec.js.snap +225 -60
  161. package/src/templates/components/templateForm/__tests__/__snapshots__/SwitchSegment.spec.js.snap +1 -1
  162. package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateForm.spec.js.snap +89 -92
  163. package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateFormActions.spec.js.snap +66 -100
  164. package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesField.spec.js.snap +542 -231
  165. package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesListForm.spec.js.snap +264 -268
  166. package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesSelector.spec.js.snap +146 -11
  167. package/src/templates/reducers/__tests__/allTemplates.spec.js +1 -1
  168. package/src/templates/reducers/__tests__/template.spec.js +3 -2
  169. package/src/templates/reducers/__tests__/templateLoading.spec.js +2 -2
  170. package/src/templates/reducers/__tests__/templates.spec.js +1 -1
  171. package/src/templates/reducers/__tests__/templatesLoading.spec.js +1 -1
  172. package/src/templates/reducers/allTemplates.js +1 -2
  173. package/src/templates/reducers/template.js +2 -1
  174. package/src/templates/reducers/templateRedirect.js +1 -1
  175. package/src/templates/reducers/templates.js +1 -1
  176. package/src/templates/reducers/templatesLoading.js +1 -1
  177. package/src/templates/routines.js +0 -2
  178. package/src/templates/sagas/__tests__/deleteTemplate.spec.js +2 -2
  179. package/src/templates/sagas/__tests__/fetchTemplates.spec.js +3 -6
  180. package/src/templates/sagas/__tests__/updateTemplate.spec.js +4 -4
  181. package/src/templates/sagas/deleteTemplate.js +1 -1
  182. package/src/templates/sagas/fetchTemplate.js +1 -1
  183. package/src/templates/sagas/fetchTemplates.js +1 -1
  184. package/src/templates/sagas/updateTemplate.js +1 -1
  185. package/src/templates/utils/filterSwitches.js +2 -2
  186. package/src/templates/utils/filterValues.js +2 -2
  187. package/src/api/hierarchies.js +0 -4
  188. package/src/components/FieldGroupCopy.js +0 -108
  189. package/src/components/FieldGroupSubSegment/FieldGroupSubSegment.js +0 -181
  190. package/src/components/FieldGroupSubSegment/__tests__/FieldGroupSubSegment.spec.js +0 -221
  191. package/src/components/FieldGroupSubSegment/__tests__/__snapshots__/FieldGroupSubSegment.spec.js.snap +0 -230
  192. package/src/components/FieldGroupSubSegment/constants.js +0 -68
  193. package/src/components/FieldGroupSubSegment/copyValidations.js +0 -75
  194. package/src/components/FieldGroupSubSegment/handleCopyModule.js +0 -186
  195. package/src/components/__tests__/FieldGroupCopy.spec.js +0 -14
  196. package/src/components/__tests__/__snapshots__/FieldGroupCopy.spec.js.snap +0 -307
  197. package/src/components/widgets/CopyField/CopyField.js +0 -270
  198. package/src/components/widgets/CopyField/CopyFieldCell.js +0 -138
  199. package/src/components/widgets/CopyField/CopyFieldColumn.js +0 -53
  200. package/src/components/widgets/CopyField/CopyFieldSelectableCell.js +0 -71
  201. package/src/components/widgets/CopyField/CustomStyles.js +0 -91
  202. package/src/components/widgets/CopyField/__tests__/CopyField.spec.js +0 -82
  203. package/src/components/widgets/CopyField/__tests__/CopyFieldCell.spec.js +0 -67
  204. package/src/components/widgets/CopyField/__tests__/CopyFieldColumn.spec.js +0 -33
  205. package/src/components/widgets/CopyField/__tests__/CopyFieldSelectableCell.spec.js +0 -49
  206. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyField.spec.js.snap +0 -279
  207. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldCell.spec.js.snap +0 -67
  208. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldColumn.spec.js.snap +0 -42
  209. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldSelectableCell.spec.js.snap +0 -60
  210. package/src/hooks/useHierarchies.js +0 -112
  211. package/src/selectors/subscopedTemplates.js +0 -16
  212. package/src/templates/components/TemplatesLoader.js +0 -24
  213. package/src/templates/components/__tests__/TemplatesLoader.spec.js +0 -29
@@ -1,9 +1,7 @@
1
- import React from "react";
2
- import { Route, Switch } from "react-router-dom";
3
- import { Unauthorized } from "@truedat/core/components";
4
- import { useAuthorized } from "@truedat/core/hooks";
5
- import { useParams } from "react-router-dom";
6
- import { useHistory } from "react-router-dom";
1
+ import { Route, Routes } from "react-router";
2
+ import { ProtectedRoute, Loader } from "@truedat/core/router";
3
+ import { useParams } from "react-router";
4
+ import { useNavigate } from "react-router";
7
5
  import {
8
6
  linkTo,
9
7
  HIERARCHY,
@@ -17,15 +15,26 @@ import {
17
15
  useHierarchyPatch,
18
16
  useHierarchyPost,
19
17
  useHierarchyDelete,
20
- } from "../../hooks/useHierarchies";
18
+ } from "@truedat/core/hooks/useHierarchies";
21
19
 
22
20
  import HierarchiesView from "./HierarchiesView";
23
21
  import HierarchyView from "./HierarchyView";
24
22
 
23
+ const HierarchyLoader = () => {
24
+ const { hierarchyId } = useParams();
25
+ useHierarchy(hierarchyId);
26
+ return null;
27
+ };
28
+
29
+ const InitialHierarchyLoader = () => {
30
+ useInitialHiearchy();
31
+ return null;
32
+ };
33
+
25
34
  const HierarchyEdit = () => {
26
- const history = useHistory();
35
+ const navigate = useNavigate();
27
36
  const navigateToDetail = ({ id: id }) =>
28
- history.push(linkTo.HIERARCHY({ hierarchyId: id }));
37
+ navigate(linkTo.HIERARCHY({ hierarchyId: id }));
29
38
  const { hierarchyId } = useParams();
30
39
  const { trigger: patch } = useHierarchyPatch(hierarchyId, navigateToDetail);
31
40
  const { data: originalHierarchy, loading } = useHierarchy(hierarchyId);
@@ -40,9 +49,9 @@ const HierarchyEdit = () => {
40
49
  };
41
50
 
42
51
  const HierarchyNew = () => {
43
- const history = useHistory();
52
+ const navigate = useNavigate();
44
53
  const navigateToDetail = ({ id: id }) =>
45
- history.push(linkTo.HIERARCHY({ hierarchyId: id }));
54
+ navigate(linkTo.HIERARCHY({ hierarchyId: id }));
46
55
  const { trigger: post } = useHierarchyPost(navigateToDetail);
47
56
  const { data: originalHierarchy, loading } = useInitialHiearchy();
48
57
  return (
@@ -56,8 +65,8 @@ const HierarchyNew = () => {
56
65
  };
57
66
 
58
67
  const HierarchyDetail = () => {
59
- const history = useHistory();
60
- const navigateToList = () => history.push(linkTo.HIERARCHIES());
68
+ const navigate = useNavigate();
69
+ const navigateToList = () => navigate(linkTo.HIERARCHIES());
61
70
  const { hierarchyId } = useParams();
62
71
  const { trigger: onDelete } = useHierarchyDelete(hierarchyId, navigateToList);
63
72
  const { data: originalHierarchy, loading } = useHierarchy(hierarchyId);
@@ -72,33 +81,29 @@ const HierarchyDetail = () => {
72
81
  };
73
82
 
74
83
  export const HierarchyRoutes = () => {
75
- const authorized = useAuthorized();
76
84
  return (
77
- <Route
78
- path={HIERARCHIES}
79
- render={() => (
80
- <Switch>
81
- <Route
82
- exact
83
- path={HIERARCHY_EDIT}
84
- render={() => (authorized ? <HierarchyEdit /> : <Unauthorized />)}
85
- />
86
- <Route
87
- exact
88
- path={HIERARCHY_CREATE}
89
- render={() => (authorized ? <HierarchyNew /> : <Unauthorized />)}
90
- />
91
- <Route
92
- exact
93
- path={HIERARCHY}
94
- render={() => (authorized ? <HierarchyDetail /> : <Unauthorized />)}
95
- />
96
- <Route
97
- render={() => (authorized ? <HierarchiesView /> : <Unauthorized />)}
98
- />
99
- </Switch>
100
- )}
101
- />
85
+ <Routes>
86
+ <Route path={HIERARCHIES} element={<ProtectedRoute />}>
87
+ <Route index element={<HierarchiesView />} />
88
+ <Route
89
+ path={"new"}
90
+ element={
91
+ <>
92
+ <InitialHierarchyLoader />
93
+ <HierarchyNew />
94
+ </>
95
+ }
96
+ />
97
+ <Route
98
+ path={":hierarchyId"}
99
+ element={<Loader loaders={<HierarchyLoader />} />}
100
+ >
101
+ <Route index element={<HierarchyDetail />} />
102
+ <Route path={"edit"} element={<HierarchyEdit />} />
103
+ </Route>
104
+ </Route>
105
+ <Route path="*" element={null} />
106
+ </Routes>
102
107
  );
103
108
  };
104
109
 
@@ -1,9 +1,9 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState, useEffect } from "react";
2
+ import { useState, useEffect } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { Button, Header, Icon, Segment } from "semantic-ui-react";
5
5
  import { useIntl } from "react-intl";
6
- import { Link } from "react-router-dom";
6
+ import { Link } from "react-router";
7
7
  import { linkTo } from "@truedat/core/routes";
8
8
  import { CSVFileModal } from "@truedat/core/components";
9
9
  import { HistoryBackButton } from "@truedat/core/components";
@@ -107,8 +107,8 @@ export const HierarchyView = ({
107
107
  originalNode?.description != description)
108
108
  ? "dirty"
109
109
  : node.editionStatus == "dirty"
110
- ? null
111
- : node.editionStatus
110
+ ? null
111
+ : node.editionStatus
112
112
  )(originalHierarchy.nodes),
113
113
  }
114
114
  : node
@@ -169,12 +169,10 @@ export const HierarchyView = ({
169
169
  }
170
170
  )}
171
171
  />
172
-
173
172
  <HistoryBackButton
174
173
  floated="right"
175
174
  content={formatMessage({ id: "actions.cancel" })}
176
175
  />
177
-
178
176
  <CSVFileModal
179
177
  param="hierarchy"
180
178
  onSubmit={(nodes) => {
@@ -204,7 +202,6 @@ export const HierarchyView = ({
204
202
  to={linkTo.HIERARCHY_EDIT({ hierarchyId: hierarchy.id })}
205
203
  content={formatMessage({ id: "actions.edit" })}
206
204
  />
207
-
208
205
  <ConfirmModal
209
206
  icon="trash"
210
207
  trigger={
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import Hierarchies from "../Hierarchies";
4
3
  import en from "../../../messages/en";
@@ -7,7 +6,7 @@ const renderOpts = { messages: { en: en } };
7
6
 
8
7
  const data = [
9
8
  {
10
- id: 1,
9
+ id: "1",
11
10
  name: "Baggins",
12
11
  nodes: [
13
12
  {
@@ -19,7 +18,7 @@ const data = [
19
18
  },
20
19
  ];
21
20
 
22
- jest.mock("../../../hooks/useHierarchies", () => ({
21
+ jest.mock("@truedat/core/hooks/useHierarchies", () => ({
23
22
  useHierarchies: jest.fn(() => ({
24
23
  loading: false,
25
24
  data: data,
@@ -1,13 +1,9 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import HierarchiesView from "../HierarchiesView";
4
- import en from "../../../messages/en";
5
-
6
- const renderOpts = { messages: { en: en } };
7
3
 
8
4
  const data = [
9
5
  {
10
- id: 1,
6
+ id: "1",
11
7
  name: "Baggins",
12
8
  nodes: [
13
9
  {
@@ -19,7 +15,7 @@ const data = [
19
15
  },
20
16
  ];
21
17
 
22
- jest.mock("../../../hooks/useHierarchies", () => ({
18
+ jest.mock("@truedat/core/hooks/useHierarchies", () => ({
23
19
  useHierarchies: jest.fn(() => ({
24
20
  loading: false,
25
21
  data: data,
@@ -28,7 +24,7 @@ jest.mock("../../../hooks/useHierarchies", () => ({
28
24
 
29
25
  describe("<HierarchiesView />", () => {
30
26
  it("matche the last snapshot", () => {
31
- const { container } = render(<HierarchiesView />, renderOpts);
27
+ const { container } = render(<HierarchiesView />);
32
28
  expect(container).toMatchSnapshot();
33
29
  });
34
30
  });
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import HierarchyCrumbs from "../HierarchyCrumbs";
4
3
 
@@ -0,0 +1,79 @@
1
+ import React from "react";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
+ import { HierarchyRoutes } from "../HierarchyRoutes";
4
+ import { useAuthorized } from "@truedat/core/hooks/useAuthorized";
5
+ import {
6
+ HIERARCHIES,
7
+ HIERARCHY,
8
+ HIERARCHY_EDIT,
9
+ HIERARCHY_CREATE,
10
+ } from "@truedat/core/routes";
11
+
12
+ jest.mock("@truedat/core/hooks/useAuthorized", () => ({
13
+ useAuthorized: jest.fn(() => true),
14
+ }));
15
+
16
+ // Mock all child components
17
+ jest.mock("../HierarchiesView", () => () => <div>HierarchiesView</div>);
18
+ jest.mock("../HierarchyView", () => () => <div>HierarchyView</div>);
19
+
20
+ // Mock hooks
21
+ jest.mock("@truedat/core/hooks/useHierarchies", () => ({
22
+ useInitialHiearchy: jest.fn(() => ({
23
+ data: { id: "initial" },
24
+ loading: false,
25
+ })),
26
+ useHierarchy: jest.fn(() => ({ data: { id: "123" }, loading: false })),
27
+ useHierarchyPatch: jest.fn(() => ({ trigger: jest.fn() })),
28
+ useHierarchyPost: jest.fn(() => ({ trigger: jest.fn() })),
29
+ useHierarchyDelete: jest.fn(() => ({ trigger: jest.fn() })),
30
+ }));
31
+
32
+ describe("<HierarchyRoutes />", () => {
33
+ it("renders correctly with default route", async () => {
34
+ const rendered = render(<HierarchyRoutes />);
35
+ await waitForLoad(rendered);
36
+ expect(rendered.container).toMatchSnapshot();
37
+ });
38
+
39
+ it("renders correctly with hierarchies route", async () => {
40
+ const rendered = render(<HierarchyRoutes />, {
41
+ routes: [HIERARCHIES],
42
+ });
43
+ await waitForLoad(rendered);
44
+ expect(rendered.container).toMatchSnapshot();
45
+ });
46
+
47
+ it("renders correctly with hierarchy detail route", async () => {
48
+ const rendered = render(<HierarchyRoutes />, {
49
+ routes: [HIERARCHY.replace(":hierarchyId", "123")],
50
+ });
51
+ await waitForLoad(rendered);
52
+ expect(rendered.container).toMatchSnapshot();
53
+ });
54
+
55
+ it("renders correctly with hierarchy edit route", async () => {
56
+ const rendered = render(<HierarchyRoutes />, {
57
+ routes: [HIERARCHY_EDIT.replace(":hierarchyId", "123")],
58
+ });
59
+ await waitForLoad(rendered);
60
+ expect(rendered.container).toMatchSnapshot();
61
+ });
62
+
63
+ it("renders correctly with hierarchy create route", async () => {
64
+ const rendered = render(<HierarchyRoutes />, {
65
+ routes: [HIERARCHY_CREATE],
66
+ });
67
+ await waitForLoad(rendered);
68
+ expect(rendered.container).toMatchSnapshot();
69
+ });
70
+
71
+ it("renders unauthorized component when not authorized", async () => {
72
+ useAuthorized.mockReturnValueOnce(false);
73
+ const rendered = render(<HierarchyRoutes />, {
74
+ routes: [HIERARCHIES],
75
+ });
76
+ await waitForLoad(rendered);
77
+ expect(rendered.container).toMatchSnapshot();
78
+ });
79
+ });
@@ -1,16 +1,8 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import HierarchyView from "../HierarchyView";
4
- import en from "../../../messages/en";
5
-
6
- const renderOpts = {
7
- messages: {
8
- en: { ...en, "actions.edit": "Edit", "actions.delete": "Delete" },
9
- },
10
- };
11
3
 
12
4
  const originalHierarchy = {
13
- id: 1,
5
+ id: "1",
14
6
  name: "Baggins",
15
7
  nodes: [
16
8
  {
@@ -30,7 +22,7 @@ const opts = {
30
22
 
31
23
  describe("<HierarchyView />", () => {
32
24
  it("matches the last snapshot", () => {
33
- const { container } = render(<HierarchyView {...opts} />, renderOpts);
25
+ const { container } = render(<HierarchyView {...opts} />);
34
26
  expect(container).toMatchSnapshot();
35
27
  });
36
28
  });
@@ -33,6 +33,7 @@ exports[`<Hierarchies /> matches the last snapshot 1`] = `
33
33
  class=""
34
34
  >
35
35
  <a
36
+ data-discover="true"
36
37
  href="/hierarchies/1"
37
38
  >
38
39
  Baggins
@@ -10,10 +10,11 @@ exports[`<HierarchiesView /> matche the last snapshot 1`] = `
10
10
  >
11
11
  <a
12
12
  class="ui primary right floated button"
13
+ data-discover="true"
13
14
  href="/hierarchies/new"
14
15
  role="button"
15
16
  >
16
- New hierarchy
17
+ hierarchy.create
17
18
  </a>
18
19
  <i
19
20
  aria-hidden="true"
@@ -22,11 +23,11 @@ exports[`<HierarchiesView /> matche the last snapshot 1`] = `
22
23
  <div
23
24
  class="content"
24
25
  >
25
- Hierarchies
26
+ hierarchies.header
26
27
  <div
27
28
  class="sub header"
28
29
  >
29
- List of hierarchies
30
+ hierarchies.subheader
30
31
  </div>
31
32
  </div>
32
33
  </h2>
@@ -45,12 +46,12 @@ exports[`<HierarchiesView /> matche the last snapshot 1`] = `
45
46
  <th
46
47
  class=""
47
48
  >
48
- Hierarchy name
49
+ hierarchy.name
49
50
  </th>
50
51
  <th
51
52
  class=""
52
53
  >
53
- Description
54
+ hierarchy.description
54
55
  </th>
55
56
  </tr>
56
57
  </thead>
@@ -64,6 +65,7 @@ exports[`<HierarchiesView /> matche the last snapshot 1`] = `
64
65
  class=""
65
66
  >
66
67
  <a
68
+ data-discover="true"
67
69
  href="/hierarchies/1"
68
70
  >
69
71
  Baggins
@@ -10,9 +10,10 @@ exports[`<HierarchyCrumbs /> matches the latest snapshot 1`] = `
10
10
  >
11
11
  <a
12
12
  class="section"
13
+ data-discover="true"
13
14
  href="/hierarchies"
14
15
  >
15
- Hierarchies
16
+ navigation.hierarchies
16
17
  </a>
17
18
  <i
18
19
  aria-hidden="true"
@@ -32,9 +33,10 @@ exports[`<HierarchyCrumbs /> matches the latest snapshot 1`] = `
32
33
  >
33
34
  <a
34
35
  class="section"
36
+ data-discover="true"
35
37
  href="/hierarchies"
36
38
  >
37
- Hierarchies
39
+ navigation.hierarchies
38
40
  </a>
39
41
  <i
40
42
  aria-hidden="true"
@@ -0,0 +1,60 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`<HierarchyRoutes /> renders correctly with default route 1`] = `<div />`;
4
+
5
+ exports[`<HierarchyRoutes /> renders correctly with hierarchies route 1`] = `
6
+ <div>
7
+ <div>
8
+ HierarchiesView
9
+ </div>
10
+ </div>
11
+ `;
12
+
13
+ exports[`<HierarchyRoutes /> renders correctly with hierarchy create route 1`] = `
14
+ <div>
15
+ <div>
16
+ HierarchyView
17
+ </div>
18
+ </div>
19
+ `;
20
+
21
+ exports[`<HierarchyRoutes /> renders correctly with hierarchy detail route 1`] = `
22
+ <div>
23
+ <div>
24
+ HierarchyView
25
+ </div>
26
+ </div>
27
+ `;
28
+
29
+ exports[`<HierarchyRoutes /> renders correctly with hierarchy edit route 1`] = `
30
+ <div>
31
+ <div>
32
+ HierarchyView
33
+ </div>
34
+ </div>
35
+ `;
36
+
37
+ exports[`<HierarchyRoutes /> renders unauthorized component when not authorized 1`] = `
38
+ <div>
39
+ <div
40
+ class="ui icon visible bottom attached message center"
41
+ >
42
+ <i
43
+ aria-hidden="true"
44
+ class="warning sign icon"
45
+ />
46
+ <div
47
+ class="content"
48
+ >
49
+ <div
50
+ class="header"
51
+ >
52
+ view.unauthorized.head
53
+ </div>
54
+ <p>
55
+ view.unauthorized.content
56
+ </p>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ `;
@@ -7,9 +7,10 @@ exports[`<HierarchyView /> matches the last snapshot 1`] = `
7
7
  >
8
8
  <a
9
9
  class="section"
10
+ data-discover="true"
10
11
  href="/hierarchies"
11
12
  >
12
- Hierarchies
13
+ navigation.hierarchies
13
14
  </a>
14
15
  <i
15
16
  aria-hidden="true"
@@ -35,15 +36,16 @@ exports[`<HierarchyView /> matches the last snapshot 1`] = `
35
36
  >
36
37
  <a
37
38
  class="ui primary right floated button"
39
+ data-discover="true"
38
40
  href="/hierarchies/1/edit"
39
41
  role="button"
40
42
  >
41
- Edit
43
+ actions.edit
42
44
  </a>
43
45
  <button
44
46
  class="ui secondary right floated button"
45
47
  >
46
- Delete
48
+ actions.delete
47
49
  </button>
48
50
  </div>
49
51
  </div>
@@ -80,7 +82,7 @@ exports[`<HierarchyView /> matches the last snapshot 1`] = `
80
82
  >
81
83
  <input
82
84
  disabled=""
83
- placeholder="Hierarchy name"
85
+ placeholder="hierarchy.name"
84
86
  tabindex="-1"
85
87
  type="text"
86
88
  value="Baggins"
@@ -103,7 +105,7 @@ exports[`<HierarchyView /> matches the last snapshot 1`] = `
103
105
  aria-hidden="true"
104
106
  class="cut large icon li_trash"
105
107
  style="cursor: pointer; visibility: hidden;"
106
- title="Delete node"
108
+ title="hierarchy.delete_node"
107
109
  />
108
110
  <div
109
111
  style="display: flex; flex-direction: row; align-items: self-start;"
@@ -124,7 +126,7 @@ exports[`<HierarchyView /> matches the last snapshot 1`] = `
124
126
  </div>
125
127
  <input
126
128
  disabled=""
127
- placeholder="Node"
129
+ placeholder="hierarchy.node"
128
130
  tabindex="-1"
129
131
  type="text"
130
132
  value="Fosco"
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Form } from "semantic-ui-react";
5
4
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { GithubPicker } from "react-color";
4
3
 
@@ -6,7 +5,7 @@ export const ColorPickerField = ({ field: { name, value }, onChange }) => (
6
5
  <GithubPicker
7
6
  name="color_picker"
8
7
  value={value}
9
- onChangeComplete={color => {
8
+ onChangeComplete={(color) => {
10
9
  onChange(null, { name, value: color.hex });
11
10
  }}
12
11
  />
@@ -14,7 +13,7 @@ export const ColorPickerField = ({ field: { name, value }, onChange }) => (
14
13
 
15
14
  ColorPickerField.propTypes = {
16
15
  field: PropTypes.object,
17
- onChange: PropTypes.func
16
+ onChange: PropTypes.func,
18
17
  };
19
18
 
20
19
  export default ColorPickerField;
@@ -1,6 +1,5 @@
1
1
  import _ from "lodash/fp";
2
2
  import PropTypes from "prop-types";
3
- import React from "react";
4
3
  import { DateInput } from "semantic-ui-calendar-react";
5
4
 
6
5
  export const DateField = ({ field: { name, value }, onChange }) => {
@@ -1,6 +1,5 @@
1
1
  import _ from "lodash/fp";
2
2
  import PropTypes from "prop-types";
3
- import React from "react";
4
3
  import { DateTimeInput } from "semantic-ui-calendar-react";
5
4
 
6
5
  export const DateTimeField = ({ field: { name, value } = {}, onChange }) => (
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState } from "react";
2
+ import { useState } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { Form } from "semantic-ui-react";
5
5
  import { DomainSelector } from "@truedat/core/components";
@@ -1,10 +1,9 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { useQuery } from "@apollo/client";
5
4
  import { linkTo } from "@truedat/core/routes";
6
5
  import { Label } from "semantic-ui-react";
7
- import { Link } from "react-router-dom";
6
+ import { Link } from "react-router";
8
7
  import { DOMAIN_PREVIEW_QUERY } from "../../api/queries";
9
8
 
10
9
  export const DomainPreview = ({ domains }) =>
@@ -1,8 +1,8 @@
1
- import React from "react";
1
+ import { lazy } from "react";
2
2
  import PropTypes from "prop-types";
3
3
 
4
- const SystemsLoader = React.lazy(() =>
5
- import("@truedat/dd/components/SystemsLoader")
4
+ const SystemsLoader = lazy(
5
+ () => import("@truedat/core/components/SystemsLoader")
6
6
  );
7
7
 
8
8
  export const DropdownDataLoader = ({ type }) =>
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { connect } from "react-redux";
5
4
  import { Dimmer, Loader } from "semantic-ui-react";
@@ -22,9 +21,11 @@ export const DropdownField = ({ field, loading, onChange, scope }) => {
22
21
  <StandardDropdown field={field} onChange={onChange} />
23
22
  </>
24
23
  )}
25
- <Dimmer active={loading} inverted>
26
- <Loader />
27
- </Dimmer>
24
+ {loading ? (
25
+ <Dimmer active inverted>
26
+ <Loader />
27
+ </Dimmer>
28
+ ) : null}
28
29
  </Dimmer.Dimmable>
29
30
  );
30
31
  };
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Form, Icon, Popup, Label } from "semantic-ui-react";
5
4
  import { FormattedMessage } from "react-intl";
@@ -19,7 +18,6 @@ import TableField from "./TableField";
19
18
  import TextField from "./TextField";
20
19
  import NumberField from "./NumberField";
21
20
  import DateField from "./DateField";
22
- import CopyField from "./CopyField/CopyField";
23
21
 
24
22
  const isNullOrEmpty = (value) =>
25
23
  !_.isNumber(value) && (!value || _.isEmpty(value));
@@ -38,8 +36,6 @@ const FieldByWidget = ({ scope, widget, onChange, field }) => {
38
36
  return <TextField field={field} onChange={onChange} />;
39
37
  case "color_picker":
40
38
  return <ColorPickerField field={field} onChange={onChange} />;
41
- case "copy":
42
- return <CopyField fields={field} onChange={onChange} />;
43
39
  case "pair_list":
44
40
  return <PairListField field={field} onChange={onChange} />;
45
41
  case "enriched_text":
@@ -144,7 +140,6 @@ export const DynamicField = ({
144
140
  </Label>
145
141
  ) : null}
146
142
  </label>
147
-
148
143
  <FieldByWidget
149
144
  field={{ ...fieldProps, value, cardinality }}
150
145
  onChange={onChange}