@truedat/bg 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 (236) hide show
  1. package/package.json +41 -70
  2. package/src/concepts/components/Concept.js +22 -19
  3. package/src/concepts/components/ConceptActions.js +39 -34
  4. package/src/concepts/components/ConceptArchive.js +0 -1
  5. package/src/concepts/components/ConceptArchiveRow.js +3 -4
  6. package/src/concepts/components/ConceptCompleteness.js +1 -2
  7. package/src/concepts/components/ConceptConfidentialButton.js +1 -2
  8. package/src/concepts/components/ConceptCreate.js +1 -1
  9. package/src/concepts/components/ConceptCrumbs.js +10 -8
  10. package/src/concepts/components/ConceptDeleteModalBody.js +7 -10
  11. package/src/concepts/components/ConceptDetails.js +3 -3
  12. package/src/concepts/components/ConceptEdit.js +5 -5
  13. package/src/concepts/components/ConceptForm.js +39 -43
  14. package/src/concepts/components/ConceptHeader.js +0 -1
  15. package/src/concepts/components/ConceptLinksDropdownSelector.js +1 -2
  16. package/src/concepts/components/ConceptLoader.js +3 -3
  17. package/src/concepts/components/ConceptManageDomain.js +2 -1
  18. package/src/concepts/components/ConceptManageDomainPopup.js +1 -1
  19. package/src/concepts/components/ConceptRoutes.js +263 -226
  20. package/src/concepts/components/ConceptRow.js +0 -1
  21. package/src/concepts/components/ConceptSubscription.js +15 -14
  22. package/src/concepts/components/ConceptSummary.js +0 -1
  23. package/src/concepts/components/ConceptTabPane.js +36 -41
  24. package/src/concepts/components/ConceptTabs.js +1 -4
  25. package/src/concepts/components/ConceptTaxonomy.js +1 -3
  26. package/src/concepts/components/Concepts.js +0 -1
  27. package/src/concepts/components/ConceptsActions.js +2 -3
  28. package/src/concepts/components/ConceptsBulkUpdate.js +3 -6
  29. package/src/concepts/components/ConceptsLabelResults.js +0 -1
  30. package/src/concepts/components/ConceptsLinkDecorator.js +1 -2
  31. package/src/concepts/components/ConceptsLinksManagement.js +7 -8
  32. package/src/concepts/components/ConceptsPagination.js +0 -1
  33. package/src/concepts/components/ConceptsPanel.js +5 -4
  34. package/src/concepts/components/ConceptsTable.js +2 -3
  35. package/src/concepts/components/ConceptsUpdateButton.js +6 -6
  36. package/src/concepts/components/ConceptsUploadButton.js +0 -1
  37. package/src/concepts/components/ConceptsUploadEvents.js +0 -2
  38. package/src/concepts/components/ConceptsUploadEventsTable.js +12 -19
  39. package/src/concepts/components/DomainConcepts.js +0 -1
  40. package/src/concepts/components/EventRow.js +0 -1
  41. package/src/concepts/components/Events.js +3 -4
  42. package/src/concepts/components/FieldGroupTable.js +1 -2
  43. package/src/concepts/components/LinkedMessage.js +9 -13
  44. package/src/concepts/components/SharedToDomains.js +8 -7
  45. package/src/concepts/components/SharedToDomainsPopup.js +1 -1
  46. package/src/concepts/components/SharedToForm.js +3 -6
  47. package/src/concepts/components/__tests__/Concept.spec.js +8 -42
  48. package/src/concepts/components/__tests__/ConceptActions.spec.js +7 -7
  49. package/src/concepts/components/__tests__/ConceptArchive.spec.js +5 -5
  50. package/src/concepts/components/__tests__/ConceptArchiveLoader.spec.js +15 -14
  51. package/src/concepts/components/__tests__/ConceptArchiveRow.spec.js +0 -1
  52. package/src/concepts/components/__tests__/ConceptCompleteness.spec.js +0 -1
  53. package/src/concepts/components/__tests__/ConceptConfidentialButton.spec.js +10 -17
  54. package/src/concepts/components/__tests__/ConceptContext.spec.js +1 -1
  55. package/src/concepts/components/__tests__/ConceptCrumbs.spec.js +12 -34
  56. package/src/concepts/components/__tests__/ConceptDeleteModalBody.spec.js +47 -26
  57. package/src/concepts/components/__tests__/ConceptDetails.spec.js +1 -9
  58. package/src/concepts/components/__tests__/ConceptEdit.spec.js +2 -2
  59. package/src/concepts/components/__tests__/ConceptForm.spec.js +26 -19
  60. package/src/concepts/components/__tests__/ConceptHeader.spec.js +33 -57
  61. package/src/concepts/components/__tests__/ConceptLinksManagement.spec.js +27 -34
  62. package/src/concepts/components/__tests__/ConceptLoader.spec.js +51 -37
  63. package/src/concepts/components/__tests__/ConceptManageDomain.spec.js +12 -47
  64. package/src/concepts/components/__tests__/ConceptManageDomainPopup.spec.js +65 -24
  65. package/src/concepts/components/__tests__/ConceptRow.spec.js +6 -17
  66. package/src/concepts/components/__tests__/ConceptSubscription.spec.js +9 -9
  67. package/src/concepts/components/__tests__/ConceptSubscriptionLoader.spec.js +20 -16
  68. package/src/concepts/components/__tests__/ConceptSummary.spec.js +11 -10
  69. package/src/concepts/components/__tests__/ConceptTabPane.spec.js +73 -5
  70. package/src/concepts/components/__tests__/ConceptTabs.spec.js +6 -21
  71. package/src/concepts/components/__tests__/ConceptTaxonomy.spec.js +16 -12
  72. package/src/concepts/components/__tests__/Concepts.spec.js +6 -26
  73. package/src/concepts/components/__tests__/ConceptsActions.spec.js +0 -1
  74. package/src/concepts/components/__tests__/ConceptsBulkUpdate.spec.js +31 -36
  75. package/src/concepts/components/__tests__/ConceptsLabelResults.spec.js +4 -5
  76. package/src/concepts/components/__tests__/ConceptsLinkDecorator.spec.js +3 -4
  77. package/src/concepts/components/__tests__/ConceptsPanel.spec.js +7 -26
  78. package/src/concepts/components/__tests__/ConceptsTable.spec.js +34 -60
  79. package/src/concepts/components/__tests__/ConceptsUpdateButton.spec.js +6 -7
  80. package/src/concepts/components/__tests__/ConceptsUploadButton.spec.js +25 -13
  81. package/src/concepts/components/__tests__/ConceptsUploadEventsTable.spec.js +11 -9
  82. package/src/concepts/components/__tests__/Events.spec.js +10 -10
  83. package/src/concepts/components/__tests__/SharedToDomains.spec.js +25 -19
  84. package/src/concepts/components/__tests__/SharedToDomainsPopup.spec.js +48 -36
  85. package/src/concepts/components/__tests__/SharedToForm.spec.js +24 -32
  86. package/src/concepts/components/__tests__/__snapshots__/Concept.spec.js.snap +108 -23
  87. package/src/concepts/components/__tests__/__snapshots__/ConceptActions.spec.js.snap +12 -16
  88. package/src/concepts/components/__tests__/__snapshots__/ConceptArchive.spec.js.snap +77 -65
  89. package/src/concepts/components/__tests__/__snapshots__/ConceptArchiveRow.spec.js.snap +2 -4
  90. package/src/concepts/components/__tests__/__snapshots__/ConceptConfidentialButton.spec.js.snap +11 -31
  91. package/src/concepts/components/__tests__/__snapshots__/ConceptCrumbs.spec.js.snap +41 -56
  92. package/src/concepts/components/__tests__/__snapshots__/ConceptDeleteModalBody.spec.js.snap +3 -5
  93. package/src/concepts/components/__tests__/__snapshots__/ConceptDetails.spec.js.snap +0 -1
  94. package/src/concepts/components/__tests__/__snapshots__/ConceptEdit.spec.js.snap +1 -12
  95. package/src/concepts/components/__tests__/__snapshots__/ConceptForm.spec.js.snap +10 -11
  96. package/src/concepts/components/__tests__/__snapshots__/ConceptHeader.spec.js.snap +2 -2
  97. package/src/concepts/components/__tests__/__snapshots__/ConceptLinksManagement.spec.js.snap +14 -14
  98. package/src/concepts/components/__tests__/__snapshots__/ConceptLoader.spec.js.snap +14 -9
  99. package/src/concepts/components/__tests__/__snapshots__/ConceptManageDomain.spec.js.snap +43 -5
  100. package/src/concepts/components/__tests__/__snapshots__/ConceptManageDomainPopup.spec.js.snap +10 -163
  101. package/src/concepts/components/__tests__/__snapshots__/ConceptRow.spec.js.snap +4 -7
  102. package/src/concepts/components/__tests__/__snapshots__/ConceptSubscription.spec.js.snap +8 -55
  103. package/src/concepts/components/__tests__/__snapshots__/ConceptSubscriptionLoader.spec.js.snap +1 -1
  104. package/src/concepts/components/__tests__/__snapshots__/ConceptSummary.spec.js.snap +6 -6
  105. package/src/concepts/components/__tests__/__snapshots__/ConceptTabPane.spec.js.snap +18 -34
  106. package/src/concepts/components/__tests__/__snapshots__/ConceptTabs.spec.js.snap +26 -13
  107. package/src/concepts/components/__tests__/__snapshots__/ConceptTaxonomy.spec.js.snap +63 -53
  108. package/src/concepts/components/__tests__/__snapshots__/Concepts.spec.js.snap +10 -25
  109. package/src/concepts/components/__tests__/__snapshots__/ConceptsActions.spec.js.snap +1 -0
  110. package/src/concepts/components/__tests__/__snapshots__/ConceptsBulkUpdate.spec.js.snap +7 -6
  111. package/src/concepts/components/__tests__/__snapshots__/ConceptsLabelResults.spec.js.snap +1 -1
  112. package/src/concepts/components/__tests__/__snapshots__/ConceptsLinkDecorator.spec.js.snap +1 -0
  113. package/src/concepts/components/__tests__/__snapshots__/ConceptsPanel.spec.js.snap +10 -25
  114. package/src/concepts/components/__tests__/__snapshots__/ConceptsTable.spec.js.snap +1 -1
  115. package/src/concepts/components/__tests__/__snapshots__/ConceptsUpdateButton.spec.js.snap +1 -1
  116. package/src/concepts/components/__tests__/__snapshots__/ConceptsUploadButton.spec.js.snap +9 -74
  117. package/src/concepts/components/__tests__/__snapshots__/ConceptsUploadEventsTable.spec.js.snap +14 -14
  118. package/src/concepts/components/__tests__/__snapshots__/Events.spec.js.snap +83 -43
  119. package/src/concepts/components/__tests__/__snapshots__/SharedToDomains.spec.js.snap +56 -33
  120. package/src/concepts/components/__tests__/__snapshots__/SharedToDomainsPopup.spec.js.snap +9 -145
  121. package/src/concepts/components/__tests__/__snapshots__/SharedToForm.spec.js.snap +2 -2
  122. package/src/concepts/reducers/__tests__/conceptRedirect.spec.js +1 -1
  123. package/src/concepts/reducers/conceptRedirect.js +4 -6
  124. package/src/concepts/relations/components/ConceptImplementationLinks.js +5 -4
  125. package/src/concepts/relations/components/ConceptLinkActions.js +1 -1
  126. package/src/concepts/relations/components/ConceptLinksActions.js +4 -4
  127. package/src/concepts/relations/components/ConceptRelationActions.js +3 -4
  128. package/src/concepts/relations/components/ConceptRelationForm.js +3 -3
  129. package/src/concepts/relations/components/ConceptRelationRow.js +10 -10
  130. package/src/concepts/relations/components/ConceptRelations.js +10 -11
  131. package/src/concepts/relations/components/ConceptRelationsRoutes.js +20 -39
  132. package/src/concepts/relations/components/ConceptRelationsSummary.js +26 -29
  133. package/src/concepts/relations/components/ConceptSelector.js +4 -7
  134. package/src/concepts/relations/components/ConceptStructureLinks.js +2 -2
  135. package/src/concepts/relations/components/__tests__/ConceptImplementationLinks.spec.js +19 -59
  136. package/src/concepts/relations/components/__tests__/ConceptLinksActions.spec.js +9 -10
  137. package/src/concepts/relations/components/__tests__/ConceptRelationActions.spec.js +9 -7
  138. package/src/concepts/relations/components/__tests__/ConceptRelationForm.spec.js +30 -42
  139. package/src/concepts/relations/components/__tests__/ConceptRelationRow.spec.js +11 -16
  140. package/src/concepts/relations/components/__tests__/ConceptRelations.spec.js +11 -14
  141. package/src/concepts/relations/components/__tests__/ConceptRelationsRoutes.spec.js +108 -8
  142. package/src/concepts/relations/components/__tests__/ConceptRelationsSummary.spec.js +39 -38
  143. package/src/concepts/relations/components/__tests__/ConceptSelector.spec.js +24 -36
  144. package/src/concepts/relations/components/__tests__/ConceptStructureLinks.spec.js +21 -11
  145. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptImplementationLinks.spec.js.snap +131 -28
  146. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptLinksActions.spec.js.snap +4 -3
  147. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationActions.spec.js.snap +10 -26
  148. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationForm.spec.js.snap +15 -19
  149. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationRow.spec.js.snap +36 -33
  150. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelations.spec.js.snap +76 -51
  151. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationsRoutes.spec.js.snap +15 -29
  152. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptRelationsSummary.spec.js.snap +45 -100
  153. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptSelector.spec.js.snap +9 -9
  154. package/src/concepts/relations/components/__tests__/__snapshots__/ConceptStructureLinks.spec.js.snap +10 -10
  155. package/src/concepts/relations/sagas/conceptLinkAction.js +2 -2
  156. package/src/concepts/relations/sagas/linkConcept.js +1 -1
  157. package/src/concepts/relations/selectors/getBusinessConceptsLinksToImplementationsColumns.js +1 -2
  158. package/src/concepts/relations/selectors/getConceptLinks.js +1 -2
  159. package/src/concepts/relations/selectors/getConceptRelations.js +14 -14
  160. package/src/concepts/sagas/__tests__/saveSharedTo.spec.js +3 -3
  161. package/src/concepts/sagas/__tests__/setConfidentialConcept.spec.js +5 -5
  162. package/src/concepts/sagas/conceptAction.js +2 -2
  163. package/src/concepts/sagas/fetchConceptArchive.js +1 -1
  164. package/src/concepts/sagas/setConfidentialConcept.js +2 -2
  165. package/src/concepts/selectors/__tests__/getConceptDomainPath.spec.js +2 -2
  166. package/src/concepts/selectors/getConceptColumns.js +1 -2
  167. package/src/concepts/selectors/getConceptTemplate.js +1 -1
  168. package/src/concepts/selectors/getConceptUploadEventColumns.js +0 -1
  169. package/src/concepts/selectors/getConceptVersionPath.js +2 -2
  170. package/src/concepts/selectors/getParsedEvents.js +2 -2
  171. package/src/concepts/selectors/getTemplateFields.js +3 -3
  172. package/src/concepts/selectors/getTemplateGroups.js +1 -1
  173. package/src/hooks/__mocks__/useDomains.js +42 -0
  174. package/src/hooks/useDomains.js +3 -3
  175. package/src/taxonomy/components/AddDomainMember.js +3 -4
  176. package/src/taxonomy/components/Domain.js +19 -23
  177. package/src/taxonomy/components/DomainActions.js +1 -2
  178. package/src/taxonomy/components/DomainCards.js +4 -6
  179. package/src/taxonomy/components/DomainContent.js +42 -87
  180. package/src/taxonomy/components/DomainCrumbs.js +4 -4
  181. package/src/taxonomy/components/DomainDetail.js +4 -5
  182. package/src/taxonomy/components/DomainForm.js +1 -3
  183. package/src/taxonomy/components/DomainImplementations.js +8 -7
  184. package/src/taxonomy/components/DomainItem.js +1 -2
  185. package/src/taxonomy/components/DomainMembers.js +0 -1
  186. package/src/taxonomy/components/DomainRoutes.js +15 -21
  187. package/src/taxonomy/components/DomainSearch.js +0 -1
  188. package/src/taxonomy/components/DomainStructures.js +0 -1
  189. package/src/taxonomy/components/DomainTabs.js +3 -4
  190. package/src/taxonomy/components/DomainTaxonomy.js +1 -2
  191. package/src/taxonomy/components/Domains.js +15 -5
  192. package/src/taxonomy/components/DomainsActions.js +2 -4
  193. package/src/taxonomy/components/EditDomain.js +5 -5
  194. package/src/taxonomy/components/NewDomain.js +4 -4
  195. package/src/taxonomy/components/__tests__/AddDomainMember.spec.js +6 -5
  196. package/src/taxonomy/components/__tests__/Domain.spec.js +63 -123
  197. package/src/taxonomy/components/__tests__/DomainActions.spec.js +0 -1
  198. package/src/taxonomy/components/__tests__/DomainCards.spec.js +44 -51
  199. package/src/taxonomy/components/__tests__/DomainContent.spec.js +138 -158
  200. package/src/taxonomy/components/__tests__/DomainCrumbs.spec.js +14 -19
  201. package/src/taxonomy/components/__tests__/DomainDetail.spec.js +2 -3
  202. package/src/taxonomy/components/__tests__/DomainForm.spec.js +44 -60
  203. package/src/taxonomy/components/__tests__/DomainItem.spec.js +17 -14
  204. package/src/taxonomy/components/__tests__/DomainMembers.spec.js +9 -13
  205. package/src/taxonomy/components/__tests__/DomainRoutes.spec.js +54 -0
  206. package/src/taxonomy/components/__tests__/DomainStructures.spec.js +10 -51
  207. package/src/taxonomy/components/__tests__/DomainTabs.spec.js +14 -33
  208. package/src/taxonomy/components/__tests__/DomainTaxonomy.spec.js +17 -16
  209. package/src/taxonomy/components/__tests__/Domains.spec.js +63 -95
  210. package/src/taxonomy/components/__tests__/DomainsActions.spec.js +12 -11
  211. package/src/taxonomy/components/__tests__/EditDomain.spec.js +13 -54
  212. package/src/taxonomy/components/__tests__/NewDomain.spec.js +17 -61
  213. package/src/taxonomy/components/__tests__/__snapshots__/AddDomainMember.spec.js.snap +10 -9
  214. package/src/taxonomy/components/__tests__/__snapshots__/Domain.spec.js.snap +53 -72
  215. package/src/taxonomy/components/__tests__/__snapshots__/DomainActions.spec.js.snap +2 -1
  216. package/src/taxonomy/components/__tests__/__snapshots__/DomainCards.spec.js.snap +247 -27
  217. package/src/taxonomy/components/__tests__/__snapshots__/DomainContent.spec.js.snap +14 -294
  218. package/src/taxonomy/components/__tests__/__snapshots__/DomainCrumbs.spec.js.snap +6 -2
  219. package/src/taxonomy/components/__tests__/__snapshots__/DomainDetail.spec.js.snap +5 -4
  220. package/src/taxonomy/components/__tests__/__snapshots__/DomainForm.spec.js.snap +13 -12
  221. package/src/taxonomy/components/__tests__/__snapshots__/DomainItem.spec.js.snap +16 -12
  222. package/src/taxonomy/components/__tests__/__snapshots__/DomainRoutes.spec.js.snap +52 -0
  223. package/src/taxonomy/components/__tests__/__snapshots__/DomainStructures.spec.js.snap +7 -7
  224. package/src/taxonomy/components/__tests__/__snapshots__/DomainTabs.spec.js.snap +10 -5
  225. package/src/taxonomy/components/__tests__/__snapshots__/DomainTaxonomy.spec.js.snap +37 -29
  226. package/src/taxonomy/components/__tests__/__snapshots__/Domains.spec.js.snap +123 -6
  227. package/src/taxonomy/components/__tests__/__snapshots__/DomainsActions.spec.js.snap +2 -1
  228. package/src/taxonomy/components/__tests__/__snapshots__/EditDomain.spec.js.snap +15 -14
  229. package/src/taxonomy/components/__tests__/__snapshots__/NewDomain.spec.js.snap +31 -28
  230. package/src/taxonomy/selectors/index.js +0 -1
  231. package/src/concepts/relations/components/__tests__/ConceptSelector2.spec.js +0 -76
  232. package/src/concepts/selectors/__tests__/getConceptSubscope.spec.js +0 -37
  233. package/src/concepts/selectors/__tests__/getSidemenuGlossarySubscopes.spec.js +0 -17
  234. package/src/concepts/selectors/getConceptStatus.js +0 -1
  235. package/src/concepts/selectors/getConceptSubscope.js +0 -19
  236. package/src/concepts/selectors/getSidemenuGlossarySubscopes.js +0 -8
@@ -1,10 +1,9 @@
1
1
  import _ from "lodash/fp";
2
2
  import React from "react";
3
- import { Unauthorized } from "@truedat/core/components";
4
- import { useAuthorized } from "@truedat/core/hooks";
5
3
  import UserSearchFiltersLoader from "@truedat/dd/components/UserSearchFiltersLoader";
6
4
  import PropTypes from "prop-types";
7
- import { Route, Switch } from "react-router-dom/cjs/react-router-dom.min";
5
+ import { Routes, Route } from "react-router";
6
+ import { ProtectedRoute } from "@truedat/core/router";
8
7
  import {
9
8
  DOMAIN,
10
9
  DOMAIN_CONCEPTS,
@@ -21,99 +20,55 @@ import DomainImplementations from "./DomainImplementations";
21
20
  import DomainMembers from "./DomainMembers";
22
21
  import AddDomainMember from "./AddDomainMember";
23
22
 
24
- const RolesLoader = React.lazy(() =>
25
- import("@truedat/auth/roles/components/RolesLoader")
23
+ const RolesLoader = React.lazy(
24
+ () => import("@truedat/auth/roles/components/RolesLoader")
26
25
  );
27
26
 
28
- const DomainContent = ({
29
- domain,
30
- domains,
31
- taxonomyConfig: { priorityTabs, hiddenTabs },
32
- }) => {
33
- const ddAuthorized = useAuthorized("data_dictionary");
34
- const dqAuthorized = useAuthorized("quality");
35
-
36
- const routes = [
37
- {
38
- key: "subdomains",
39
- path: DOMAIN_SUBDOMAINS,
40
- component: <DomainCards domain={domain} domains={domains} />,
41
- },
42
- {
43
- key: "concepts",
44
- path: DOMAIN_CONCEPTS,
45
- component: <DomainConcepts domain={domain} />,
46
- },
47
- {
48
- key: "structures",
49
- path: DOMAIN_STRUCTURES,
50
- component: ddAuthorized ? (
51
- <DomainStructures domain={domain} />
52
- ) : (
53
- <Unauthorized />
54
- ),
55
- },
56
- {
57
- key: "implementations",
58
- path: DOMAIN_IMPLEMENTATIONS,
59
- component: dqAuthorized ? (
60
- <>
61
- <UserSearchFiltersLoader scope="rule_implementation" />
62
- <DomainImplementations domain={domain} />
63
- </>
64
- ) : (
65
- <Unauthorized />
66
- ),
67
- },
68
- {
69
- key: "members",
70
- path: DOMAIN_MEMBERS,
71
- component: <DomainMembers domainId={domain.id} />,
72
- },
73
- {
74
- key: "members-new",
75
- path: DOMAIN_MEMBERS_NEW,
76
- component: (
77
- <>
78
- <RolesLoader />
79
- <AddDomainMember id={parseInt(domain.id)} />
80
- </>
81
- ),
82
- },
83
- ];
84
-
85
- const getPaths = ({ key, path }) =>
86
- _.cond([
87
- [
88
- (key) => !_.head(priorityTabs) && key === _.head(routes).key,
89
- () => [path, DOMAIN],
90
- ],
91
- [(key) => key === _.head(priorityTabs), () => [path, DOMAIN]],
92
- [_.stubTrue, () => path],
93
- ])(key);
94
-
27
+ const DomainContent = ({ domain, domains }) => {
95
28
  return (
96
- <Switch>
97
- {_.map((route) =>
98
- _.includes(route.key, hiddenTabs) && false ? (
99
- <Unauthorized key={route.key} />
100
- ) : (
101
- <Route
102
- exact
103
- key={route.key}
104
- path={getPaths(route)}
105
- render={() => route.component}
106
- />
107
- )
108
- )(routes)}
109
- </Switch>
29
+ <Routes>
30
+ <Route path="concepts" element={<DomainConcepts domain={domain} />} />
31
+
32
+ <Route
33
+ path="structures"
34
+ element={
35
+ <ProtectedRoute authorization="data_dictionary">
36
+ <DomainStructures domain={domain} />
37
+ </ProtectedRoute>
38
+ }
39
+ />
40
+ <Route
41
+ path="implementations"
42
+ element={
43
+ <ProtectedRoute authorization="quality">
44
+ <UserSearchFiltersLoader scope="rule_implementation" />
45
+ <DomainImplementations domain={domain} />
46
+ </ProtectedRoute>
47
+ }
48
+ />
49
+ <Route path="members">
50
+ <Route index element={<DomainMembers domainId={domain.id} />} />
51
+ <Route
52
+ path="new"
53
+ element={
54
+ <>
55
+ <RolesLoader />
56
+ <AddDomainMember id={parseInt(domain.id)} />
57
+ </>
58
+ }
59
+ />
60
+ </Route>
61
+ <Route
62
+ path="subdomains?"
63
+ element={<DomainCards domain={domain} domains={domains} />}
64
+ />
65
+ </Routes>
110
66
  );
111
67
  };
112
68
 
113
69
  DomainContent.propTypes = {
114
70
  domain: PropTypes.object,
115
71
  domains: PropTypes.array,
116
- taxonomyConfig: PropTypes.object,
117
72
  };
118
73
 
119
74
  export default DomainContent;
@@ -1,5 +1,5 @@
1
- import React, { Fragment } from "react";
2
- import { Link } from "react-router-dom";
1
+ import { Fragment } from "react";
2
+ import { Link } from "react-router";
3
3
  import PropTypes from "prop-types";
4
4
  import { Breadcrumb } from "semantic-ui-react";
5
5
  import { FormattedMessage } from "react-intl";
@@ -26,9 +26,9 @@ export const DomainCrumbs = ({ domain, actionCrumb }) => {
26
26
  <Breadcrumb.Section
27
27
  key={i}
28
28
  as={Link}
29
- to={linkTo.DOMAIN({ id: parseInt(p) })}
29
+ to={linkTo.DOMAIN({ id: p })}
30
30
  >
31
- {domains.find((d) => d.id === parseInt(p)).name}
31
+ {domains.find((d) => `${d.id}` === `${p}`).name}
32
32
  </Breadcrumb.Section>
33
33
  </Fragment>
34
34
  ))
@@ -1,8 +1,7 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Icon, Header, Grid, GridRow } from "semantic-ui-react";
5
- import { useHistory } from "react-router-dom";
4
+ import { useNavigate } from "react-router";
6
5
  import { FormattedMessage, useIntl } from "react-intl";
7
6
  import { linkTo } from "@truedat/core/routes";
8
7
  import { DOMAINS_QUERY } from "@truedat/core/api/queries";
@@ -18,7 +17,7 @@ export const DomainDetail = ({ id }) => {
18
17
  variables: { action: "viewDomain", fetchPolicy: "no-cache" },
19
18
  });
20
19
 
21
- const history = useHistory();
20
+ const navigate = useNavigate();
22
21
  const { formatMessage } = useIntl();
23
22
 
24
23
  const available_actions = domain
@@ -45,9 +44,9 @@ export const DomainDetail = ({ id }) => {
45
44
  const { id, parent_id } = domain;
46
45
  await deleteDomain(id);
47
46
  if (parent_id) {
48
- history.push(linkTo.DOMAIN_CONCEPTS({ id: parent_id }));
47
+ navigate(linkTo.DOMAIN_CONCEPTS({ id: parent_id }));
49
48
  } else {
50
- history.push(linkTo.DOMAINS());
49
+ navigate(linkTo.DOMAINS());
51
50
  }
52
51
  client.resetStore();
53
52
  };
@@ -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 { Button, Form } from "semantic-ui-react";
5
4
  import { useIntl } from "react-intl";
@@ -49,7 +48,6 @@ const DEFAULTS = {
49
48
 
50
49
  export const DomainForm = ({ domain = {}, onSubmit }) => {
51
50
  const { data: domains } = useDomains();
52
-
53
51
  const { formatMessage } = useIntl();
54
52
  const { handleSubmit, control, formState, watch } = useForm({
55
53
  mode: "all",
@@ -59,6 +57,7 @@ export const DomainForm = ({ domain = {}, onSubmit }) => {
59
57
  domain_group: domain?.domain_group?.name || null,
60
58
  },
61
59
  });
60
+
62
61
  const [group, type] = watch(["domain_group", "type"]);
63
62
  const domainTypes = getDomainTypes(domains);
64
63
  const domainGroups = getDomainGroups(domains);
@@ -68,7 +67,6 @@ export const DomainForm = ({ domain = {}, onSubmit }) => {
68
67
  domain?.domain_group?.status === "root" || !domain?.domain_group;
69
68
 
70
69
  const { errors, isDirty, isValid } = formState;
71
-
72
70
  const parentableIds = domain.parentable_ids || [];
73
71
  const domainParentOptions =
74
72
  domain?.id && domains ? getDomainParentOptions(parentableIds)(domains) : [];
@@ -1,16 +1,16 @@
1
- import React from "react";
1
+ import { lazy } from "react";
2
2
  import PropTypes from "prop-types";
3
3
 
4
- const ImplementationFiltersLoader = React.lazy(() =>
5
- import("@truedat/dq/components/ImplementationFiltersLoader")
4
+ const ImplementationFiltersLoader = lazy(
5
+ () => import("@truedat/dq/components/ImplementationFiltersLoader")
6
6
  );
7
7
 
8
- const ImplementationsLoader = React.lazy(() =>
9
- import("@truedat/dq/components/RuleImplementationsLoader")
8
+ const ImplementationsLoader = lazy(
9
+ () => import("@truedat/dq/components/RuleImplementationsLoader")
10
10
  );
11
11
 
12
- const ImplementationSearchResults = React.lazy(() =>
13
- import("@truedat/dq/components/ImplementationSearchResults")
12
+ const ImplementationSearchResults = lazy(
13
+ () => import("@truedat/dq/components/ImplementationSearchResults")
14
14
  );
15
15
 
16
16
  export const DomainImplementations = ({ domain = {} }) => {
@@ -18,6 +18,7 @@ export const DomainImplementations = ({ domain = {} }) => {
18
18
  taxonomy: [domain.id],
19
19
  status: ["published"],
20
20
  };
21
+
21
22
  return (
22
23
  <>
23
24
  <ImplementationFiltersLoader defaultFilters={defaultFilters} />
@@ -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 { List, Icon } from "semantic-ui-react";
5
4
 
@@ -19,7 +18,7 @@ export const DomainItem = ({ domain, index, size }) => (
19
18
  DomainItem.propTypes = {
20
19
  domain: PropTypes.object,
21
20
  index: PropTypes.number,
22
- size: PropTypes.number
21
+ size: PropTypes.number,
23
22
  };
24
23
 
25
24
  export default DomainItem;
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import ResourceMembers from "@truedat/core/components/ResourceMembers";
3
2
  import PropTypes from "prop-types";
4
3
 
@@ -1,29 +1,23 @@
1
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";
2
+ import { Routes, Route } from "react-router";
3
+ import { ProtectedRoute } from "@truedat/core/router";
5
4
  import { DOMAINS, DOMAIN, DOMAINS_NEW } from "@truedat/core/routes";
6
5
  import NewDomain from "./NewDomain";
7
6
  import Domains from "./Domains";
8
7
 
9
8
  const DomainRoutes = () => (
10
- <Switch>
11
- <Route exact path={DOMAINS_NEW} render={() => <NewDomain />} />
12
- <Route path={DOMAIN} render={() => <Domains />} />
13
- <Route exact path={DOMAINS} render={() => <Domains />} />
14
- </Switch>
15
- );
16
-
17
- const AuthorizedRoutes = () => <DomainRoutes />;
18
-
19
- const DomainsRoutes = () => {
20
- const authorized = useAuthorized(["taxonomy", "taxonomy_membership"]);
21
- return (
9
+ <Routes>
22
10
  <Route
23
- path={DOMAINS}
24
- render={() => (authorized ? <AuthorizedRoutes /> : <Unauthorized />)}
25
- />
26
- );
27
- };
11
+ path="domains"
12
+ element={
13
+ <ProtectedRoute authorization={["taxonomy", "taxonomy_membership"]} />
14
+ }
15
+ >
16
+ <Route index element={<Domains />} />
17
+ <Route path="new" element={<NewDomain />} />
18
+ <Route path=":id/*" element={<Domains />} />
19
+ </Route>
20
+ </Routes>
21
+ );
28
22
 
29
- export default DomainsRoutes;
23
+ export default DomainRoutes;
@@ -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 { useIntl } from "react-intl";
5
4
  import { connect } from "react-redux";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import StructuresView from "@truedat/dd/components/StructuresView";
4
3
 
@@ -1,8 +1,7 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { FormattedMessage } from "react-intl";
5
- import { Link, useLocation } from "react-router-dom";
4
+ import { Link, useLocation } from "react-router";
6
5
  import { Menu } from "semantic-ui-react";
7
6
  import { compile } from "path-to-regexp";
8
7
  import { useAuthorized } from "@truedat/core/hooks";
@@ -88,11 +87,11 @@ const DomainTabs = ({
88
87
 
89
88
  const maybeAddMain =
90
89
  key === _.head(orderedTabs).key
91
- ? _.concat([compile(DOMAIN)({ id })], tabUrls)
90
+ ? _.concat([compile(DOMAIN)({ id: `${id}` })], tabUrls)
92
91
  : tabUrls;
93
92
 
94
93
  return _.flow(
95
- _.map((url) => compile(url)({ id })),
94
+ _.map((url) => compile(url)({ id: `${id}` })),
96
95
  _.some((url) => path === url)
97
96
  )(maybeAddMain);
98
97
  };
@@ -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 { List } from "semantic-ui-react";
5
4
  import DomainItem from "./DomainItem";
@@ -24,7 +23,7 @@ export const DomainTaxonomy = ({ domain }) => {
24
23
  };
25
24
 
26
25
  DomainTaxonomy.propTypes = {
27
- domain: PropTypes.object
26
+ domain: PropTypes.object,
28
27
  };
29
28
 
30
29
  export default DomainTaxonomy;
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState } from "react";
2
+ import { useState } from "react";
3
3
  import { connect } from "react-redux";
4
4
  import PropTypes from "prop-types";
5
5
  import { FormattedMessage, useIntl } from "react-intl";
@@ -15,12 +15,13 @@ import {
15
15
  import { Loading } from "@truedat/core/components";
16
16
  import HierarchyNodeFinder from "@truedat/core/components/HierarchyNodeFinder";
17
17
  import { linkTo } from "@truedat/core/routes";
18
- import { useHistory, useParams } from "react-router-dom";
18
+ import { useParams, useNavigate } from "react-router";
19
19
  import searchImage from "assets/searching.png";
20
20
  import { useDomains } from "../../hooks/useDomains";
21
21
  import Domain from "./Domain";
22
22
  import DomainCrumbs from "./DomainCrumbs";
23
23
  import DomainCards from "./DomainCards";
24
+ import DomainsActions from "./DomainsActions";
24
25
 
25
26
  export const Domains = ({ taxonomyConfig }) => {
26
27
  const { minDomainsListWidth, maxDomainsListWidth, defaultDomainsListWidth } =
@@ -31,14 +32,15 @@ export const Domains = ({ taxonomyConfig }) => {
31
32
  animated: defaultDomainsListWidth > 0,
32
33
  });
33
34
  const { formatMessage } = useIntl();
34
- const history = useHistory();
35
+
36
+ const navigate = useNavigate();
35
37
  const { data: domains, actions, loading } = useDomains();
36
38
  const { id: urlId } = useParams();
37
39
  const domainId = !isNaN(parseInt(urlId)) ? parseInt(urlId) : undefined;
38
40
  const domain = _.find((d) => d.id == domainId)(domains);
39
41
 
40
42
  if (!loading && domainId && !domain) {
41
- history.push(linkTo.DOMAINS());
43
+ navigate(linkTo.DOMAINS());
42
44
  }
43
45
 
44
46
  const EmptyImage = () => (
@@ -178,7 +180,15 @@ export const Domains = ({ taxonomyConfig }) => {
178
180
  actions={actions}
179
181
  />
180
182
  ) : (
181
- <EmptyImage />
183
+ <>
184
+ <Header as="h4">
185
+ <Header.Content className="taxonomy-domains-domaincards-header-content">
186
+ <div></div>
187
+ <DomainsActions actions={actions} />
188
+ </Header.Content>
189
+ </Header>
190
+ <EmptyImage />
191
+ </>
182
192
  )}
183
193
  </Grid.Row>
184
194
  </Segment>
@@ -1,14 +1,12 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { useIntl } from "react-intl";
5
- import { Link } from "react-router-dom";
4
+ import { Link } from "react-router";
6
5
  import { Button } from "semantic-ui-react";
7
6
  import { DOMAINS_NEW } from "@truedat/core/routes";
8
7
 
9
8
  export const DomainsActions = ({ actions }) => {
10
9
  const canCreate = !_.isEmpty(actions) && _.has("create")(actions);
11
- const createUrl = () => DOMAINS_NEW;
12
10
  const { formatMessage } = useIntl();
13
11
  return (
14
12
  <>
@@ -18,7 +16,7 @@ export const DomainsActions = ({ actions }) => {
18
16
  content={formatMessage({ id: "domains.actions.create" })}
19
17
  icon="cube"
20
18
  as={Link}
21
- to={createUrl}
19
+ to={DOMAINS_NEW}
22
20
  />
23
21
  ) : null}
24
22
  </>
@@ -1,9 +1,8 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Container, Header, Icon, Segment } from "semantic-ui-react";
5
4
  import { FormattedMessage } from "react-intl";
6
- import { useHistory } from "react-router-dom";
5
+ import { useNavigate } from "react-router";
7
6
  import { linkTo } from "@truedat/core/routes";
8
7
 
9
8
  import { useQuery } from "@apollo/client";
@@ -14,7 +13,8 @@ import DomainForm from "./DomainForm";
14
13
 
15
14
  export const EditDomain = ({ domain }) => {
16
15
  const { trigger: updateDomain } = useDomainUpdate(domain.id);
17
- const history = useHistory();
16
+
17
+ const navigate = useNavigate();
18
18
  const { client } = useQuery(DOMAINS_QUERY, {
19
19
  variables: { action: "viewDomain", fetchPolicy: "no-cache" },
20
20
  });
@@ -23,13 +23,13 @@ export const EditDomain = ({ domain }) => {
23
23
  await updateDomain({ domain: data });
24
24
  const response = await updateDomain({ domain: data });
25
25
  if (response?.data?.data) {
26
- history.push(linkTo.DOMAIN_CONCEPTS({ id: response?.data?.data?.id }));
26
+ navigate(linkTo.DOMAIN_CONCEPTS({ id: response?.data?.data?.id }));
27
27
  client.resetStore();
28
28
  }
29
29
  };
30
30
 
31
31
  return _.isEmpty(domain) ? null : (
32
- <Container as={Segment} text>
32
+ <Container text>
33
33
  <Header as="h2">
34
34
  <Icon name="cube" />
35
35
  <Header.Content>
@@ -1,10 +1,9 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
 
4
3
  import { Container, Header, Icon, Segment } from "semantic-ui-react";
5
4
  import { FormattedMessage } from "react-intl";
6
5
  import { linkTo } from "@truedat/core/routes";
7
- import { useHistory } from "react-router-dom";
6
+ import { useNavigate } from "react-router";
8
7
 
9
8
  import { useQuery } from "@apollo/client";
10
9
  import { DOMAINS_QUERY } from "@truedat/core/api/queries";
@@ -15,7 +14,8 @@ import DomainForm from "./DomainForm";
15
14
 
16
15
  export const NewDomain = ({ domain }) => {
17
16
  const { trigger: createDomain } = useDomainCreate();
18
- const history = useHistory();
17
+
18
+ const navigate = useNavigate();
19
19
  const { client } = useQuery(DOMAINS_QUERY, {
20
20
  variables: { action: "viewDomain", fetchPolicy: "no-cache" },
21
21
  });
@@ -23,7 +23,7 @@ export const NewDomain = ({ domain }) => {
23
23
  const handleCreateDomain = async (data) => {
24
24
  const response = await createDomain({ domain: data });
25
25
  if (response?.data?.data) {
26
- history.push(linkTo.DOMAIN_CONCEPTS({ id: response?.data?.data?.id }));
26
+ navigate(linkTo.DOMAIN_CONCEPTS({ id: response?.data?.data?.id }));
27
27
  }
28
28
  client.resetStore();
29
29
  };
@@ -1,12 +1,13 @@
1
- import React from "react";
2
- import { render } from "@truedat/test/render";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
3
  import AddDomainMember from "../AddDomainMember";
4
4
 
5
5
  const props = { id: 1 };
6
6
 
7
7
  describe("<AddDomainMember />", () => {
8
- it("matches the latest snapshot", () => {
9
- const { container } = render(<AddDomainMember {...props} />);
10
- expect(container).toMatchSnapshot();
8
+ it("matches the latest snapshot", async () => {
9
+ const rendered = render(<AddDomainMember {...props} />);
10
+ await waitForLoad(rendered);
11
+ expect(rendered.container).toMatchSnapshot();
11
12
  });
12
13
  });