@reltio/profile 1.4.1585 → 1.4.1586-mui5

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 (335) hide show
  1. package/.DS_Store +0 -0
  2. package/index.ts +4 -0
  3. package/package.json +40 -23
  4. package/public/bundle.js +205 -0
  5. package/{bundle.js.LICENSE.txt → public/bundle.js.LICENSE.txt} +44 -16
  6. package/public/package.json +24 -0
  7. package/scripts/build/index.js +20 -0
  8. package/src/.DS_Store +0 -0
  9. package/src/components/.DS_Store +0 -0
  10. package/src/components/BackgroundProcessIndicator/BackgroundProcessIndicator.tsx +101 -0
  11. package/src/components/BackgroundProcessIndicator/styles.ts +50 -0
  12. package/src/components/DCRReviewPerspectiveView/DCRReviewPerspectiveView.tsx +77 -0
  13. package/src/components/DCRReviewPerspectiveView/__tests__/DCRReviewPerspectiveView.test.tsx +156 -0
  14. package/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/DCRProfileBand.tsx +22 -0
  15. package/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/__tests__/DCRProfileBand.test.tsx +92 -0
  16. package/src/components/DCRReviewPerspectiveView/components/DCRProfileBand/styles.ts +11 -0
  17. package/src/components/DCRReviewPerspectiveView/hooks/useWorkflowTasks.ts +31 -0
  18. package/src/components/DCRReviewPerspectiveView/index.ts +1 -0
  19. package/src/components/DCRReviewPerspectiveView/styles.ts +33 -0
  20. package/src/components/EntityMapView/EntityMapView.tsx +64 -0
  21. package/src/components/EntityMapView/__tests__/EntityMapView.spec.js +121 -0
  22. package/src/components/EntityMapView/styles.ts +20 -0
  23. package/src/components/EntityMapView/useMarkers.ts +27 -0
  24. package/src/components/HierarchyPathsView/ConfigContext.ts +4 -0
  25. package/src/components/HierarchyPathsView/HierarchyPathsHeader.tsx +32 -0
  26. package/src/components/HierarchyPathsView/HierarchyPathsView.tsx +90 -0
  27. package/src/components/HierarchyPathsView/Node.tsx +62 -0
  28. package/src/components/HierarchyPathsView/__tests__/HierarchyPathsView.test.tsx +547 -0
  29. package/src/components/HierarchyPathsView/__tests__/IntegrationHierarchyPathsView.test.tsx +47 -0
  30. package/src/components/HierarchyPathsView/__tests__/Node.test.tsx +152 -0
  31. package/src/components/HierarchyPathsView/__tests__/data/metadata.data.ts +33 -0
  32. package/src/components/HierarchyPathsView/__tests__/data/store.data.ts +37 -0
  33. package/src/components/HierarchyPathsView/__tests__/data/treePaths.data.ts +63 -0
  34. package/src/components/HierarchyPathsView/defaultTypeIcon.png +0 -0
  35. package/src/components/HierarchyPathsView/helpers.ts +3 -0
  36. package/src/components/HierarchyPathsView/hooks/useDynamicNodesHeights.ts +33 -0
  37. package/src/components/HierarchyPathsView/hooks/useLoadPaths.ts +76 -0
  38. package/src/components/HierarchyPathsView/icons/ShowGraph.svg +10 -0
  39. package/src/components/HierarchyPathsView/index.ts +1 -0
  40. package/src/components/HierarchyPathsView/styles.ts +60 -0
  41. package/src/components/HierarchyPathsView/theme/__tests__/node-content-renderer.test.tsx +78 -0
  42. package/src/components/HierarchyPathsView/theme/__tests__/tree-node-data-renderer.test.tsx +72 -0
  43. package/src/components/HierarchyPathsView/theme/index.ts +8 -0
  44. package/src/components/HierarchyPathsView/theme/node-content-renderer.tsx +84 -0
  45. package/src/components/HierarchyPathsView/theme/styles.ts +102 -0
  46. package/src/components/HierarchyPathsView/theme/tree-node-data-renderer.tsx +70 -0
  47. package/src/components/HierarchyPathsView/types.ts +17 -0
  48. package/src/components/ImageAttributeView/ImageAttributeView.tsx +87 -0
  49. package/src/components/ImageAttributeView/ImageAttributeViewEditableContent/ImageAttributeViewEditableContent.tsx +52 -0
  50. package/src/components/ImageAttributeView/ImageAttributeViewEditableContent/__tests__/ImageAttributeViewEditableContent.test.tsx +136 -0
  51. package/src/components/ImageAttributeView/ImageLineCaption/ImageLineCaption.tsx +18 -0
  52. package/src/components/ImageAttributeView/ImageLineCaption/__tests__/ImageLineCaption.test.tsx +15 -0
  53. package/src/components/ImageAttributeView/ImageLineCaption/styles.ts +10 -0
  54. package/src/components/ImageAttributeView/__tests__/ImageAttributeView.test.tsx +151 -0
  55. package/src/components/ImageAttributeView/__tests__/IntegrationImageAttributeView.test.tsx +36 -0
  56. package/src/components/ImageAttributeView/__tests__/data/store.data.ts +22 -0
  57. package/src/components/ImageAttributeView/styles.ts +13 -0
  58. package/src/components/Notifications/Notification.tsx +98 -0
  59. package/src/components/Notifications/Notifications.tsx +17 -0
  60. package/src/components/Notifications/__tests__/Notification.spec.tsx +230 -0
  61. package/src/components/Notifications/__tests__/Notifications.spec.tsx +37 -0
  62. package/src/components/Notifications/index.ts +1 -0
  63. package/src/components/Notifications/styles.ts +17 -0
  64. package/src/components/Notifications/types.ts +21 -0
  65. package/src/components/PerspectiveProfileBand/PerspectiveProfileBand.tsx +304 -0
  66. package/src/components/PerspectiveProfileBand/__tests__/PerspectiveProfileBand.specs.tsx +526 -0
  67. package/src/components/PerspectiveProfileBand/__tests__/data/collaboration.data.ts +23 -0
  68. package/src/components/PerspectiveProfileBand/__tests__/data/store.data.ts +162 -0
  69. package/src/components/PerspectiveProfileBand/copy.svg +14 -0
  70. package/src/components/PerspectiveProfileBand/hooks/useCloneAction.ts +94 -0
  71. package/src/components/PerspectiveProfileBand/index.ts +1 -0
  72. package/src/components/PerspectiveProfileBand/styles.ts +27 -0
  73. package/src/components/PerspectiveProfileBand/suggest.svg +16 -0
  74. package/src/components/ProfileAttributesView/ProfileAttributesView.tsx +21 -0
  75. package/src/components/ProfileAttributesView/__tests__/ProfileAttributesView.test.tsx +70 -0
  76. package/src/components/ProfileErrorsPanel/ProfileErrorsPanel.tsx +70 -0
  77. package/src/components/ProfileErrorsPanel/__tests__/ProfileErrorsPanel.specs.tsx +140 -0
  78. package/src/components/ProfileErrorsPanel/components/Error.tsx +50 -0
  79. package/src/components/ProfileErrorsPanel/components/ErrorsPanel.tsx +65 -0
  80. package/src/components/ProfileErrorsPanel/components/__tests__/Error.specs.tsx +264 -0
  81. package/src/components/ProfileErrorsPanel/components/__tests__/ErrorsPanel.specs.tsx +93 -0
  82. package/src/components/ProfileErrorsPanel/helpers.ts +45 -0
  83. package/src/components/ProfileErrorsPanel/icons/hyperlink.svg +4 -0
  84. package/src/components/ProfileErrorsPanel/index.ts +1 -0
  85. package/src/components/ProfileErrorsPanel/styles.ts +100 -0
  86. package/src/components/ProfileErrorsPanel/useCachedErrors.ts +11 -0
  87. package/src/components/ProfileLayout/ProfileLayout.tsx +56 -0
  88. package/src/components/ProfileLayout/__tests__/ProfileLayout.specs.tsx +56 -0
  89. package/src/components/ProfileLayout/index.ts +1 -0
  90. package/src/components/ProfileLayout/styles.ts +19 -0
  91. package/src/components/ProfileLayoutItem/ProfileLayoutItem.tsx +89 -0
  92. package/src/components/ProfileLayoutItem/__tests__/ProfileLayoutItem.test.tsx +165 -0
  93. package/src/components/ProfileLayoutItem/__tests__/data/store.data.ts +29 -0
  94. package/src/components/ProfileLayoutItem/index.ts +1 -0
  95. package/src/components/ProfileLayoutItem/styles.ts +13 -0
  96. package/src/components/ProfilePerspectiveResizablePanes/ProfilePerspectiveResizablePanes.tsx +34 -0
  97. package/src/components/ProfilePerspectiveResizablePanes/styles.ts +9 -0
  98. package/src/components/ProfilePerspectiveView/ProfilePerspectiveView.tsx +193 -0
  99. package/src/components/ProfilePerspectiveView/__tests__/IntegrationProfilePerspective.test.tsx +417 -0
  100. package/src/components/ProfilePerspectiveView/__tests__/ProfilePerspectiveView.specs.tsx +1503 -0
  101. package/src/components/ProfilePerspectiveView/__tests__/data/entities.data.ts +19 -0
  102. package/src/components/ProfilePerspectiveView/__tests__/data/entity.data.ts +25 -0
  103. package/src/components/ProfilePerspectiveView/__tests__/data/metadata.data.ts +33 -0
  104. package/src/components/ProfilePerspectiveView/__tests__/data/profile.data.ts +22 -0
  105. package/src/components/ProfilePerspectiveView/__tests__/data/store.data.ts +51 -0
  106. package/src/components/ProfilePerspectiveView/hooks/data/backgroundUpdateDalay.ts +2 -0
  107. package/src/components/ProfilePerspectiveView/hooks/useBackgroundProcessIndicator.ts +121 -0
  108. package/src/components/ProfilePerspectiveView/hooks/useProfileLayout.ts +101 -0
  109. package/src/components/ProfilePerspectiveView/hooks/useProfileRightSidePanelElements.tsx +167 -0
  110. package/src/components/ProfilePerspectiveView/hooks/useWorkflowTasks.ts +15 -0
  111. package/src/components/ProfilePerspectiveView/index.ts +1 -0
  112. package/src/components/ProfilePerspectiveView/styles.ts +38 -0
  113. package/src/components/ProfilePotentialMatchesView/ActionButtons.tsx +39 -0
  114. package/src/components/ProfilePotentialMatchesView/MatchCard.tsx +53 -0
  115. package/src/components/ProfilePotentialMatchesView/ProfilePotentialMatchesView.tsx +137 -0
  116. package/src/components/ProfilePotentialMatchesView/__tests__/ActionButtons.specs.tsx +89 -0
  117. package/src/components/ProfilePotentialMatchesView/__tests__/MatchCard.specs.tsx +62 -0
  118. package/src/components/ProfilePotentialMatchesView/__tests__/ProfilePotentialMatchesView.specs.tsx +267 -0
  119. package/src/components/ProfilePotentialMatchesView/__tests__/commonData.ts +91 -0
  120. package/src/components/ProfilePotentialMatchesView/styles.ts +30 -0
  121. package/src/components/ProfileRelationsView/ProfileRelationsView.tsx +24 -0
  122. package/src/components/ProfileRelationsView/__tests__/ProfileRelationsView.test.tsx +112 -0
  123. package/src/components/ProfileRelationsView/components/EditableRelationItem/EditableRelationItem.tsx +133 -0
  124. package/src/components/ProfileRelationsView/components/EditableRelationItem/__tests__/EditableRelationItem.specs.tsx +222 -0
  125. package/src/components/ProfileRelationsView/components/EditableRelationItem/styles.ts +59 -0
  126. package/src/components/ProfileRelationsView/components/RelationArrowButton/RelationArrowButton.tsx +29 -0
  127. package/src/components/ProfileRelationsView/components/RelationArrowButton/__tests__/RelationArrowButton.specs.tsx +99 -0
  128. package/src/components/ProfileRelationsView/components/RelationArrowButton/styles.ts +8 -0
  129. package/src/components/ProfileRelationsView/components/RelationTooltip/RelationTooltip.tsx +83 -0
  130. package/src/components/ProfileRelationsView/components/RelationTooltip/__tests__/RelationTooltip.test.tsx +155 -0
  131. package/src/components/ProfileRelationsView/components/RelationTooltip/styles.ts +27 -0
  132. package/src/components/ProfileRelationsView/components/RelationsContent/RelationsContent.tsx +62 -0
  133. package/src/components/ProfileRelationsView/components/RelationsContent/__tests__/RelationsContent.specs.tsx +148 -0
  134. package/src/components/ProfileRelationsView/components/RelationsContent/styles.ts +15 -0
  135. package/src/components/ProfileRelationsView/components/RelationsEditableContent/RelationsEditableContent.tsx +153 -0
  136. package/src/components/ProfileRelationsView/components/RelationsEditableContent/__tests__/RelationsEditableContent.specs.tsx +367 -0
  137. package/src/components/ProfileRelationsView/components/RelationsEditableContent/styles.ts +28 -0
  138. package/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/FilterButton.tsx +113 -0
  139. package/src/components/ProfileRelationsView/components/RelationsHeader/FilterButton/styles.ts +43 -0
  140. package/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/ImportFromDT.tsx +65 -0
  141. package/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/MultipleImportIcon.tsx +23 -0
  142. package/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/__tests__/ImportFromDT.test.tsx +500 -0
  143. package/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/__tests__/MultipleImportIcon.test.tsx +20 -0
  144. package/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/hooks/useImportFromDTLoader.ts +84 -0
  145. package/src/components/ProfileRelationsView/components/RelationsHeader/ImportFromDT/styles.ts +37 -0
  146. package/src/components/ProfileRelationsView/components/RelationsHeader/RelationsHeader.tsx +39 -0
  147. package/src/components/ProfileRelationsView/components/RelationsHeader/__tests__/RelationsHeader.test.tsx +82 -0
  148. package/src/components/ProfileRelationsView/components/RelationsHeader/styles.ts +18 -0
  149. package/src/components/ProfileRelationsView/components/RelationsList/Ratings/Ratings.tsx +60 -0
  150. package/src/components/ProfileRelationsView/components/RelationsList/Ratings/__tests__/Ratings.test.tsx +64 -0
  151. package/src/components/ProfileRelationsView/components/RelationsList/Ratings/styles.ts +48 -0
  152. package/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/RatingsButtons.tsx +74 -0
  153. package/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/__tests__/RatingsButtons.test.tsx +72 -0
  154. package/src/components/ProfileRelationsView/components/RelationsList/RatingsButtons/styles.ts +20 -0
  155. package/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/RatingsPopup.tsx +109 -0
  156. package/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/__tests__/RatingsPopup.test.tsx +106 -0
  157. package/src/components/ProfileRelationsView/components/RelationsList/RatingsPopup/styles.ts +133 -0
  158. package/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/RelationAttributes.tsx +81 -0
  159. package/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/__tests__/RelationAttributes.test.tsx +218 -0
  160. package/src/components/ProfileRelationsView/components/RelationsList/RelationAttributes/styles.ts +12 -0
  161. package/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/RelationComplexItem.tsx +129 -0
  162. package/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/__tests__/RelationComplexItem.test.tsx +303 -0
  163. package/src/components/ProfileRelationsView/components/RelationsList/RelationCompexItem/styles.ts +51 -0
  164. package/src/components/ProfileRelationsView/components/RelationsList/RelationItem/RelationItem.tsx +103 -0
  165. package/src/components/ProfileRelationsView/components/RelationsList/RelationItem/__tests__/RelationItem.test.tsx +222 -0
  166. package/src/components/ProfileRelationsView/components/RelationsList/RelationItem/styles.ts +72 -0
  167. package/src/components/ProfileRelationsView/components/RelationsList/RelationsList.tsx +69 -0
  168. package/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/ShowDetailsButton.tsx +28 -0
  169. package/src/components/ProfileRelationsView/components/RelationsList/ShowDetailsButton/__tests__/ShowDetailsButton.test.tsx +33 -0
  170. package/src/components/ProfileRelationsView/components/RelationsList/__tests__/RelationsList.test.tsx +143 -0
  171. package/src/components/ProfileRelationsView/components/RelationsView/RelationsView.tsx +108 -0
  172. package/src/components/ProfileRelationsView/components/RelationsView/__tests__/RelationsView.test.tsx +183 -0
  173. package/src/components/ProfileRelationsView/components/RelationsView/index.ts +1 -0
  174. package/src/components/ProfileRelationsView/components/RelationsView/styles.ts +22 -0
  175. package/src/components/ProfileRelationsView/components/SecondLevelWrapper/SecondLevelWrapper.tsx +66 -0
  176. package/src/components/ProfileRelationsView/components/SecondLevelWrapper/__tests__/SecondLevelWrapper.test.tsx +234 -0
  177. package/src/components/ProfileRelationsView/components/SecondLevelWrapper/styles.ts +12 -0
  178. package/src/components/ProfileRelationsView/components/SuggestedButtons/SuggestedButtons.tsx +23 -0
  179. package/src/components/ProfileRelationsView/components/SuggestedButtons/__tests__/SuggestedButtons.test.tsx +33 -0
  180. package/src/components/ProfileRelationsView/components/SuggestedButtons/styles.ts +7 -0
  181. package/src/components/ProfileRelationsView/contexts/ImportDTContext.ts +7 -0
  182. package/src/components/ProfileRelationsView/contexts/RelationsViewStateContext.ts +6 -0
  183. package/src/components/ProfileRelationsView/helpers/__tests__/filters.test.tsx +10 -0
  184. package/src/components/ProfileRelationsView/helpers/__tests__/ratings.test.ts +92 -0
  185. package/src/components/ProfileRelationsView/helpers/__tests__/relation.test.tsx +27 -0
  186. package/src/components/ProfileRelationsView/helpers/filters.ts +17 -0
  187. package/src/components/ProfileRelationsView/helpers/permissions.ts +17 -0
  188. package/src/components/ProfileRelationsView/helpers/ratings.ts +35 -0
  189. package/src/components/ProfileRelationsView/helpers/relation.ts +15 -0
  190. package/src/components/ProfileRelationsView/hooks/useRelationInfo.ts +25 -0
  191. package/src/components/ProfileRelationsView/hooks/useRelationsState.ts +92 -0
  192. package/src/components/ProfileRelationsView/hooks/useSecondLevelConnections.ts +76 -0
  193. package/src/components/ProfileRelationsView/hooks/useSuggestedRelations.ts +54 -0
  194. package/src/components/ProfileSingleAttributeView/ProfileSingleAttributeView.tsx +20 -0
  195. package/src/components/ProfileSingleAttributeView/__tests__/IntegrationProfileSingleAttribute.test.tsx +368 -0
  196. package/src/components/ProfileSingleAttributeView/__tests__/ProfileSingleAttributeView.test.tsx +933 -0
  197. package/src/components/ProfileSingleAttributeView/__tests__/data/metadata.data.ts +103 -0
  198. package/src/components/ProfileSingleAttributeView/__tests__/data/store.data.ts +42 -0
  199. package/src/components/ProfileSingleAttributeView/components/FilterButton/FilterButton.tsx +63 -0
  200. package/src/components/ProfileSingleAttributeView/components/FilterButton/__tests__/FilterButton.spec.tsx +93 -0
  201. package/src/components/ProfileSingleAttributeView/components/FilterButton/styles.ts +27 -0
  202. package/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/SingleAttributeEditableContent.tsx +204 -0
  203. package/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/__tests__/SingleAttributeEditableContent.specs.tsx +559 -0
  204. package/src/components/ProfileSingleAttributeView/components/SingleAttributeEditableContent/styles.ts +28 -0
  205. package/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/SingleAttributeHeader.tsx +58 -0
  206. package/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/__tests__/SingleAttributeHeader.test.tsx +188 -0
  207. package/src/components/ProfileSingleAttributeView/components/SingleAttributeHeader/styles.ts +21 -0
  208. package/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/SingleAttributeReadableContent.tsx +31 -0
  209. package/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/__tests__/SingleAttributeReadableContent.spec.tsx +42 -0
  210. package/src/components/ProfileSingleAttributeView/components/SingleAttributeReadableContent/styles.ts +9 -0
  211. package/src/components/ProfileSingleAttributeView/components/SingleAttributeView/SingleAttributeView.tsx +90 -0
  212. package/src/components/ProfileSingleAttributeView/components/SingleAttributeView/__tests__/SingleAttributeView.test.tsx +346 -0
  213. package/src/components/ProfileSingleAttributeView/components/SingleAttributeView/styles.ts +22 -0
  214. package/src/components/ProfileSingleAttributeView/contexts/SingleAttributeContext.ts +20 -0
  215. package/src/components/ProfileSingleAttributeView/hooks/useSingleAttribute.ts +25 -0
  216. package/src/components/ProfileSingleAttributeView/styles.ts +26 -0
  217. package/src/components/ProfileTableAttributeView/ProfileTableAttributeView.tsx +20 -0
  218. package/src/components/ProfileTableAttributeView/__tests__/IntegrationProfileTableAttributeView.test.tsx +278 -0
  219. package/src/components/ProfileTableAttributeView/__tests__/ProfileTableAttributeView.test.tsx +744 -0
  220. package/src/components/ProfileTableAttributeView/__tests__/data/metadata.data.ts +141 -0
  221. package/src/components/ProfileTableAttributeView/__tests__/data/store.data.ts +48 -0
  222. package/src/components/ProfileTableAttributeView/components/AttributeEditing/AttributeEditing.tsx +97 -0
  223. package/src/components/ProfileTableAttributeView/components/AttributeEditing/__tests__/AttributeEditing.test.tsx +409 -0
  224. package/src/components/ProfileTableAttributeView/components/AttributeEditing/styles.ts +17 -0
  225. package/src/components/ProfileTableAttributeView/components/AttributeTable/AttributeTable.tsx +171 -0
  226. package/src/components/ProfileTableAttributeView/components/AttributeTable/EditButtons.tsx +28 -0
  227. package/src/components/ProfileTableAttributeView/components/AttributeTable/__tests__/AttributeTable.test.tsx +431 -0
  228. package/src/components/ProfileTableAttributeView/components/AttributeTable/__tests__/EditButtons.test.tsx +54 -0
  229. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/BlobRenderer.tsx +20 -0
  230. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/DefaultCellValueRenderer.tsx +43 -0
  231. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/HeadCellRenderer.tsx +19 -0
  232. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/RowCellRenderer.tsx +33 -0
  233. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/__tests__/BlobRenderer.test.tsx +29 -0
  234. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/__tests__/DefaultCellValueRenderer.test.tsx +149 -0
  235. package/src/components/ProfileTableAttributeView/components/AttributeTable/cell-renderers/styles.ts +61 -0
  236. package/src/components/ProfileTableAttributeView/components/AttributeTable/styles.ts +21 -0
  237. package/src/components/ProfileTableAttributeView/components/AttributeTableHeader/AttributeTableHeader.tsx +53 -0
  238. package/src/components/ProfileTableAttributeView/components/AttributeTableHeader/__tests__/AttributeTableHeader.test.tsx +96 -0
  239. package/src/components/ProfileTableAttributeView/components/AttributeTableHeader/styles.ts +7 -0
  240. package/src/components/ProfileTableAttributeView/components/TableAttributeContent/TableAttributeContent.tsx +123 -0
  241. package/src/components/ProfileTableAttributeView/components/TableAttributeContent/__tests__/TableAttributeContent.test.tsx +600 -0
  242. package/src/components/ProfileTableAttributeView/components/TableAttributeContent/hooks/useEditableAttribute.ts +212 -0
  243. package/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/TableAttributeEditableContent.tsx +96 -0
  244. package/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/__tests__/TableAttributeEditableContent.test.tsx +450 -0
  245. package/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/hooks/__tests__/useExpandAttributes.test.tsx +92 -0
  246. package/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/hooks/useExpandAttributes.ts +88 -0
  247. package/src/components/ProfileTableAttributeView/components/TableAttributeEditableContent/styles.ts +21 -0
  248. package/src/components/ProfileTableAttributeView/components/TableAttributeView/TableAttributeView.tsx +64 -0
  249. package/src/components/ProfileTableAttributeView/components/TableAttributeView/__tests__/TableAttributeView.test.tsx +139 -0
  250. package/src/components/ProfileTableAttributeView/components/TableAttributeView/styles.ts +20 -0
  251. package/src/components/ProfileTableAttributeView/components/types.ts +16 -0
  252. package/src/components/ProfileTableAttributeView/contexts/TableAttributeContext.tsx +34 -0
  253. package/src/components/ProfileTableAttributeView/helpers/tableAttributeHelpers.ts +72 -0
  254. package/src/components/ProfileTableAttributeView/hooks/__tests__/helpers.test.ts +97 -0
  255. package/src/components/ProfileTableAttributeView/hooks/helpers.ts +13 -0
  256. package/src/components/ProfileTableAttributeView/hooks/reducer.ts +19 -0
  257. package/src/components/ProfileTableAttributeView/hooks/useTableAttribute.ts +77 -0
  258. package/src/components/RightSidePanel/RightSidePanel.tsx +43 -0
  259. package/src/components/RightSidePanel/__tests__/RightSidePanel.spec.tsx +149 -0
  260. package/src/components/RightSidePanel/components/CollaborationButton/CollaborationButton.tsx +22 -0
  261. package/src/components/RightSidePanel/components/CollaborationButton/__tests__/CollaborationButton.spec.tsx +24 -0
  262. package/src/components/RightSidePanel/components/CollaborationList/CollaborationList.tsx +56 -0
  263. package/src/components/RightSidePanel/components/CollaborationList/__tests__/CollaborationList.spec.tsx +104 -0
  264. package/src/components/RightSidePanel/components/CollaborationList/styles.ts +15 -0
  265. package/src/components/RightSidePanel/components/CollaborationPanelEmptyState/CollaborationPanelEmptyState.tsx +14 -0
  266. package/src/components/RightSidePanel/components/CollaborationPanelEmptyState/__tests__/CollaborationPanelEmptyState.specs.tsx +16 -0
  267. package/src/components/RightSidePanel/components/DBConnectorsList/DBConnectorsList.tsx +19 -0
  268. package/src/components/RightSidePanel/components/DBConnectorsList/__tests__/DBConnectorsList.spec.tsx +42 -0
  269. package/src/components/RightSidePanel/components/DBConnectorsList/styles.ts +12 -0
  270. package/src/components/RightSidePanel/components/WorkflowButton/WorkflowButton.tsx +21 -0
  271. package/src/components/RightSidePanel/components/WorkflowButton/__tests__/WorkflowButton.spec.tsx +23 -0
  272. package/src/components/RightSidePanel/components/WorkflowList/WorkflowList.tsx +18 -0
  273. package/src/components/RightSidePanel/components/WorkflowList/__tests__/WorkflowList.spec.tsx +46 -0
  274. package/src/components/RightSidePanel/components/WorkflowList/styles.ts +9 -0
  275. package/src/components/RightSidePanel/components/WorkflowPanelEmptyState/WorkflowPanelEmptyState.tsx +14 -0
  276. package/src/components/RightSidePanel/components/WorkflowPanelEmptyState/__tests__/WorkflowPanelEmptyState.specs.tsx +17 -0
  277. package/src/components/RightSidePanel/icons/CollaborationIcon.svg +18 -0
  278. package/src/components/RightSidePanel/icons/ConnectorsIcon.svg +3 -0
  279. package/src/components/RightSidePanel/styles.ts +21 -0
  280. package/src/components/Sandbox/CustomView.tsx +59 -0
  281. package/src/components/Sandbox/__tests__/CustomView.test.tsx +294 -0
  282. package/src/components/Sandbox/styles.ts +10 -0
  283. package/src/components/TagPerspectiveView/TagPerspectiveView.tsx +79 -0
  284. package/src/components/TagPerspectiveView/__tests__/TagPerspectiveView.test.tsx +146 -0
  285. package/src/components/TagPerspectiveView/components/TagListHeader/TagListHeader.tsx +48 -0
  286. package/src/components/TagPerspectiveView/components/TagListHeader/__tests__/TagListHeader.test.tsx +60 -0
  287. package/src/components/TagPerspectiveView/components/TagListHeader/index.ts +1 -0
  288. package/src/components/TagPerspectiveView/components/TagListHeader/styles.ts +36 -0
  289. package/src/components/TagPerspectiveView/components/TagProfileBand/TagProfileBand.tsx +21 -0
  290. package/src/components/TagPerspectiveView/components/TagProfileBand/__tests__/TagProfileBand.test.tsx +14 -0
  291. package/src/components/TagPerspectiveView/components/TagProfileBand/index.ts +1 -0
  292. package/src/components/TagPerspectiveView/components/TagProfileBand/styles.ts +24 -0
  293. package/src/components/TagPerspectiveView/hooks/__tests__/useTag.test.tsx +166 -0
  294. package/src/components/TagPerspectiveView/hooks/__tests__/useTagsProvider.test.tsx +208 -0
  295. package/src/components/TagPerspectiveView/hooks/useTag.ts +48 -0
  296. package/src/components/TagPerspectiveView/hooks/useTagsProvider.ts +83 -0
  297. package/src/components/TagPerspectiveView/index.ts +1 -0
  298. package/src/components/TagPerspectiveView/styles.ts +43 -0
  299. package/src/components/hooks/helpers/__tests__/helpers.test.ts +688 -0
  300. package/src/components/hooks/helpers/index.ts +77 -0
  301. package/src/components/hooks/useProfileValidation.ts +30 -0
  302. package/src/components/hooks/useSingleAttributeLoader.ts +164 -0
  303. package/src/components/views/HOCs/styles.ts +37 -0
  304. package/src/components/views/HOCs/withDragHandle.tsx +26 -0
  305. package/src/components/views/HOCs/withErrorBoundary.tsx +27 -0
  306. package/src/components/views/StubView.tsx +18 -0
  307. package/src/components/views/ViewComponent.tsx +25 -0
  308. package/src/components/views/ViewsFactory.tsx +143 -0
  309. package/src/components/views/__tests__/ViewComponent.specs.tsx +47 -0
  310. package/src/components/views/__tests__/ViewsFactory.specs.tsx +256 -0
  311. package/src/components/views/styles.ts +16 -0
  312. package/src/perspectives/DCRReviewPerspective.tsx +51 -0
  313. package/src/perspectives/ProfilePerspective.tsx +104 -0
  314. package/src/perspectives/TagPerspective.tsx +42 -0
  315. package/src/perspectives/__tests__/DCRReviewPerspective.spec.tsx +54 -0
  316. package/src/perspectives/__tests__/ProfilePerspective.spec.tsx +76 -0
  317. package/src/perspectives/__tests__/helpers.spec.ts +131 -0
  318. package/src/perspectives/helpers.ts +29 -0
  319. package/src/types/index.ts +9 -0
  320. package/stories/Profile.stories.tsx +35 -0
  321. package/stories/utils/entity.ts +80 -0
  322. package/stories/utils/hierarchyTree/config.ts +13 -0
  323. package/stories/utils/hierarchyTree/hopsResponse.ts +182 -0
  324. package/stories/utils/hierarchyTree/treeResponse.ts +412 -0
  325. package/stories/utils/mdmStore.ts +64 -0
  326. package/stories/utils/metadata.ts +701 -0
  327. package/stories/utils/profilePerspectiveConfig.ts +95 -0
  328. package/stories/utils/relationsTableView/config.ts +18 -0
  329. package/stories/utils/relationsTableView/connections.ts +647 -0
  330. package/stories/utils/responses.ts +62 -0
  331. package/tsconfig.json +4 -0
  332. package/webpack.config.js +10 -0
  333. package/bundle.js +0 -2
  334. /package/{5271a9e7b6651c852e93.png → public/5271a9e7b6651c852e93.png} +0 -0
  335. /package/{main.css → public/main.css} +0 -0
@@ -0,0 +1,222 @@
1
+ import React from 'react';
2
+ import {ReactWrapper, shallow} from 'enzyme';
3
+ import * as reactRedux from 'react-redux';
4
+ import {act} from 'react-dom/test-utils';
5
+ import {CommentsContainer, EntityTypeIcon, EntityUriLink} from '@reltio/components';
6
+ import RelationItem from '../RelationItem';
7
+ import RelationTooltip from '../../../RelationTooltip/RelationTooltip';
8
+ import {ShowDetailsButton} from '../../ShowDetailsButton/ShowDetailsButton';
9
+ import {RelationAttributes} from '../../RelationAttributes/RelationAttributes';
10
+ import {SuggestedButtons} from '../../../SuggestedButtons/SuggestedButtons';
11
+ import {rerenderWrapper} from '../../../../../../../../../__mocks__/test-utils';
12
+
13
+ const tenant = 't1';
14
+
15
+ const metadata = {
16
+ uri: 'configuration',
17
+ entityTypes: [
18
+ {
19
+ uri: 'configuration/entityTypes/HCP',
20
+ attributes: [
21
+ {
22
+ uri: 'configuration/entityTypes/HCP/attributes/Address'
23
+ }
24
+ ]
25
+ }
26
+ ],
27
+ relationTypes: []
28
+ };
29
+
30
+ const store = {
31
+ metadata: {
32
+ [tenant]: metadata
33
+ },
34
+ tenant: {
35
+ id: tenant
36
+ },
37
+ profile: {
38
+ entity: {
39
+ uri: 'currentEntityUri'
40
+ }
41
+ }
42
+ };
43
+
44
+ const renderRelationArrowButton = jest.fn();
45
+
46
+ describe('RelationItem tests', () => {
47
+ beforeAll(() => {
48
+ jest.spyOn(reactRedux, 'useSelector').mockImplementation((selector) => selector(store));
49
+ });
50
+
51
+ it('should render main parts', () => {
52
+ const connection = {};
53
+ const component = shallow(
54
+ <RelationItem renderRelationArrowButton={renderRelationArrowButton} connection={connection} />
55
+ );
56
+
57
+ expect(component.find(EntityTypeIcon)).toHaveLength(1);
58
+ expect(component.find(EntityUriLink)).toHaveLength(1);
59
+ expect(component.find(ShowDetailsButton)).toHaveLength(1);
60
+ });
61
+
62
+ it('should render components with correct props', () => {
63
+ const connection = {
64
+ entity: {
65
+ entityUri: 'entities/uri1',
66
+ entityType: 'configuration/entityTypes/HCP',
67
+ entityLabel: 'Label'
68
+ },
69
+ relation: {
70
+ relationUri: 'relations/uri1',
71
+ relationLabel: 'Relation Label',
72
+ relationType: 'configuration/relationTypes/HasAddress',
73
+ object: {
74
+ uri: 'relations/uri1',
75
+ type: 'configuration/relationTypes/HasAddress',
76
+ startObject: {
77
+ objectURI: 'entities/uri1'
78
+ },
79
+ endObject: {
80
+ objectURI: 'entities/uri2'
81
+ }
82
+ }
83
+ }
84
+ };
85
+ const component = shallow(
86
+ <RelationItem renderRelationArrowButton={renderRelationArrowButton} connection={connection} />
87
+ );
88
+
89
+ const entityTypeIcon = component.find(EntityTypeIcon);
90
+ expect(entityTypeIcon).toHaveLength(1);
91
+ expect(entityTypeIcon.prop('entityType')).toBe(store.metadata[tenant].entityTypes[0]);
92
+
93
+ const entityUriLink = component.find(EntityUriLink);
94
+ expect(entityUriLink).toHaveLength(1);
95
+ expect(entityUriLink.prop('value')).toBe(connection.entity.entityUri);
96
+ expect(entityUriLink.find('.relationLabel').text()).toBe(`, ${connection.relation.relationLabel}`);
97
+
98
+ const relationTooltip = entityUriLink.find(RelationTooltip);
99
+ expect(relationTooltip).toHaveLength(1);
100
+ expect(relationTooltip.props()).toMatchObject({
101
+ label: connection.entity.entityLabel,
102
+ entity: connection.entity
103
+ });
104
+ expect(new ReactWrapper(relationTooltip.prop('children')).text()).toBe(connection.entity.entityLabel);
105
+
106
+ const detailsButton = component.find(ShowDetailsButton);
107
+ expect(detailsButton).toHaveLength(1);
108
+
109
+ const commentContainer = component.find(CommentsContainer);
110
+ expect(commentContainer).toHaveLength(1);
111
+ expect(commentContainer.props()).toMatchObject({
112
+ objectType: 'relation',
113
+ relatedObjectUris: [store.profile.entity.uri, 'entities/uri1', 'configuration/relationTypes/HasAddress'],
114
+ uri: connection.relation.relationUri,
115
+ allowOnlyOneComment: true
116
+ });
117
+ });
118
+
119
+ it('show details button behavior', () => {
120
+ const connection = {
121
+ entity: {
122
+ entityUri: 'entities/uri1',
123
+ entityType: 'configuration/entityTypes/HCP',
124
+ entityLabel: 'Label'
125
+ },
126
+ relation: {
127
+ relationUri: 'relations/uri1',
128
+ relationLabel: 'Relation Label',
129
+ object: {
130
+ uri: 'relationUri',
131
+ type: 'relationType',
132
+ attributes: {
133
+ attrName: [{uri: 'uri1', value: ''}]
134
+ }
135
+ },
136
+ startDate: 1627066800000
137
+ }
138
+ };
139
+ const component = shallow(
140
+ <RelationItem renderRelationArrowButton={renderRelationArrowButton} connection={connection} />
141
+ );
142
+
143
+ let showDetails = component.find(ShowDetailsButton);
144
+ expect(showDetails.prop('show')).toBe(false);
145
+ expect(showDetails).toHaveLength(1);
146
+ let onToggle = showDetails.prop('onToggle') as () => void;
147
+ act(() => {
148
+ onToggle();
149
+ });
150
+ rerenderWrapper(component);
151
+
152
+ const relationAttributes = component.find(RelationAttributes);
153
+ expect(relationAttributes).toHaveLength(1);
154
+ expect(relationAttributes.props()).toMatchObject({
155
+ connection
156
+ });
157
+
158
+ showDetails = component.find(ShowDetailsButton);
159
+ expect(showDetails.prop('show')).toBe(true);
160
+
161
+ onToggle = showDetails.prop('onToggle') as () => void;
162
+ act(() => {
163
+ onToggle();
164
+ });
165
+ rerenderWrapper(component);
166
+
167
+ expect(component.find(RelationAttributes)).toHaveLength(0);
168
+
169
+ showDetails = component.find(ShowDetailsButton);
170
+ expect(showDetails.prop('show')).toBe(false);
171
+ });
172
+
173
+ it('should render SuggestedButtons if suggested property is true', () => {
174
+ const connection = {
175
+ entity: {
176
+ entityUri: 'entities/uri1',
177
+ entityType: 'configuration/entityTypes/HCP',
178
+ entityLabel: 'Label'
179
+ },
180
+ relation: {
181
+ relationUri: 'relations/uri1',
182
+ relationLabel: 'Relation Label',
183
+ relationType: 'configuration/relationTypes/HasAddress',
184
+ object: {
185
+ uri: 'relations/uri1',
186
+ type: 'configuration/relationTypes/HasAddress',
187
+ startObject: {
188
+ objectURI: 'entities/uri1'
189
+ },
190
+ endObject: {
191
+ objectURI: 'entities/uri2'
192
+ }
193
+ }
194
+ },
195
+ suggested: true
196
+ };
197
+ const acceptRelation = jest.fn().mockImplementation(() => jest.fn());
198
+ const ignoreRelation = jest.fn().mockImplementation(() => jest.fn());
199
+ const component = shallow(
200
+ <RelationItem
201
+ renderRelationArrowButton={renderRelationArrowButton}
202
+ connection={connection}
203
+ acceptRelation={acceptRelation}
204
+ ignoreRelation={ignoreRelation}
205
+ />
206
+ );
207
+ expect(component.find(SuggestedButtons)).toHaveLength(1);
208
+ expect(component.find(SuggestedButtons).props()).toMatchObject({
209
+ size: 'small',
210
+ acceptRelation: expect.any(Function),
211
+ ignoreRelation: expect.any(Function)
212
+ });
213
+ });
214
+ it('render arrow button correctly', () => {
215
+ const renderRelationArrowButton = () => <div className="arrowButton"></div>;
216
+ const connection = {};
217
+ const component = shallow(
218
+ <RelationItem renderRelationArrowButton={renderRelationArrowButton} connection={connection} />
219
+ );
220
+ expect(component.find('.arrowButton')).toHaveLength(1);
221
+ });
222
+ });
@@ -0,0 +1,72 @@
1
+ import {makeStyles} from '@mui/styles';
2
+
3
+ export const useStyles = makeStyles((theme) => ({
4
+ container: {
5
+ display: 'flex',
6
+ flexDirection: 'column',
7
+ paddingBottom: '2px'
8
+ },
9
+ row: {
10
+ display: 'flex',
11
+ alignItems: 'center',
12
+ flexDirection: 'row',
13
+ minHeight: '16px',
14
+ padding: '3px 11px 3px 16px'
15
+ },
16
+ rowInactive: {
17
+ background: theme.inactiveBackground
18
+ },
19
+ entityAvatar: {
20
+ height: '12px',
21
+ width: '12px',
22
+ fontSize: '11px',
23
+ marginRight: '8px'
24
+ },
25
+ entityLabelContainer: {
26
+ textDecoration: 'none',
27
+ cursor: 'pointer',
28
+ wordBreak: 'break-all',
29
+ paddingRight: '8px'
30
+ },
31
+ entityLabel: {
32
+ color: theme.palette.primary.main,
33
+ fontSize: '13px',
34
+ letterSpacing: 0,
35
+ lineHeight: '15px'
36
+ },
37
+ relationLabel: {
38
+ color: theme.palette.text.secondary,
39
+ fontSize: '13px',
40
+ letterSpacing: 0,
41
+ lineHeight: '15px'
42
+ },
43
+ showDetails: {
44
+ marginLeft: 'auto',
45
+ paddingRight: '5px'
46
+ },
47
+ attributesList: {
48
+ paddingLeft: '46px',
49
+ marginBottom: '10px',
50
+ color: theme.palette.text.secondary,
51
+ fontSize: '13px',
52
+ letterSpacing: 0
53
+ },
54
+ suggestedWrapper: {
55
+ backgroundColor: theme.suggested
56
+ },
57
+ commentsContainer: {
58
+ marginLeft: 'auto',
59
+ alignItems: 'center',
60
+ '& + $showDetails': {
61
+ marginLeft: '4px'
62
+ }
63
+ },
64
+ additionalButtonsWrapper: {
65
+ marginLeft: 'auto',
66
+ display: 'flex'
67
+ },
68
+ labelWrapper: {
69
+ display: 'flex',
70
+ alignItems: 'center'
71
+ }
72
+ }));
@@ -0,0 +1,69 @@
1
+ import React, {useMemo, useContext, useEffect} from 'react';
2
+ import {Connection, getRelationshipsObjectIdsForCollaboration, RelationsViewConfig} from '@reltio/mdm-sdk';
3
+ import {CollaborationContext} from '@reltio/components';
4
+ import RelationItem from './RelationItem/RelationItem';
5
+ import {RelationComplexItem} from './RelationCompexItem/RelationComplexItem';
6
+ import {useSuggestedRelations} from '../../hooks/useSuggestedRelations';
7
+ import {SecondLevelWrapper} from '../SecondLevelWrapper/SecondLevelWrapper';
8
+
9
+ type Props = {
10
+ className?: string;
11
+ connections: Array<Connection>;
12
+ loadRelations: () => void;
13
+ config?: RelationsViewConfig;
14
+ mainEnityUri?: string;
15
+ };
16
+
17
+ const RelationsList = ({className, connections = [], loadRelations, config, mainEnityUri}: Props) => {
18
+ const {isComplex, content} = config;
19
+ const {ignoreRelation, acceptRelation} = useSuggestedRelations(content, loadRelations, mainEnityUri);
20
+
21
+ const objectIds = useMemo(() => {
22
+ return getRelationshipsObjectIdsForCollaboration(connections);
23
+ }, [connections]);
24
+
25
+ const {getCommentsCount} = useContext(CollaborationContext);
26
+
27
+ useEffect(() => {
28
+ getCommentsCount(objectIds);
29
+ }, [getCommentsCount, objectIds]);
30
+
31
+ return (
32
+ <div className={className}>
33
+ {connections.map((connection) => {
34
+ const itemKey = `${connection?.relation?.relationUri}-${connection?.relation?.direction}`;
35
+
36
+ return (
37
+ <SecondLevelWrapper config={config} connection={connection} key={itemKey}>
38
+ {(renderRelationArrowButton) => {
39
+ if (isComplex) {
40
+ return (
41
+ <RelationComplexItem
42
+ loadRelations={loadRelations}
43
+ connection={connection}
44
+ acceptRelation={acceptRelation}
45
+ ignoreRelation={ignoreRelation}
46
+ renderRelationArrowButton={renderRelationArrowButton}
47
+ />
48
+ );
49
+ }
50
+
51
+ return (
52
+ <RelationItem
53
+ acceptRelation={acceptRelation}
54
+ ignoreRelation={ignoreRelation}
55
+ connection={connection}
56
+ renderRelationArrowButton={renderRelationArrowButton}
57
+ />
58
+ );
59
+ }}
60
+ </SecondLevelWrapper>
61
+ );
62
+ })}
63
+ </div>
64
+ );
65
+ };
66
+
67
+ RelationsList.displayName = 'RelationsList';
68
+
69
+ export default RelationsList;
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import i18n from 'ui-i18n';
3
+ import {SmallIconButtonWithTooltip} from '@reltio/components';
4
+ import InfoIconSelected from '@mui/icons-material/InfoRounded';
5
+ import InfoIcon from '@mui/icons-material/InfoOutlined';
6
+
7
+ type Props = {
8
+ show: boolean;
9
+ onToggle: () => void;
10
+ className?: string;
11
+ };
12
+
13
+ export const ShowDetailsButton = ({show, onToggle, className}: Props) => {
14
+ return (
15
+ <SmallIconButtonWithTooltip
16
+ className={className}
17
+ tooltipTitle={
18
+ show
19
+ ? i18n.text('Hide attributes of the relationship')
20
+ : i18n.text('Show attributes of the relationship')
21
+ }
22
+ tooltipPlacement="bottom-end"
23
+ size="XXS"
24
+ icon={show ? InfoIconSelected : InfoIcon}
25
+ onClick={onToggle}
26
+ />
27
+ );
28
+ };
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import {shallow} from 'enzyme';
3
+ import {SmallIconButtonWithTooltip} from '@reltio/components';
4
+ import InfoIconSelected from '@mui/icons-material/InfoRounded';
5
+ import InfoIcon from '@mui/icons-material/InfoOutlined';
6
+ import {ShowDetailsButton} from '../ShowDetailsButton';
7
+
8
+ describe('ShowDetailsButton tests', () => {
9
+ it('should pass main props correctly', () => {
10
+ const onToggle = jest.fn();
11
+ const component = shallow(<ShowDetailsButton show={true} onToggle={onToggle} className="className" />);
12
+ expect(component.find(SmallIconButtonWithTooltip).prop('onClick')).toEqual(onToggle);
13
+ expect(component.find(SmallIconButtonWithTooltip).prop('className')).toBe('className');
14
+ });
15
+
16
+ it('should render correctly if show is "true"', () => {
17
+ const onToggle = jest.fn();
18
+ const component = shallow(<ShowDetailsButton show={true} onToggle={onToggle} />);
19
+ expect(component.find(SmallIconButtonWithTooltip).prop('icon')).toEqual(InfoIconSelected);
20
+ expect(component.find(SmallIconButtonWithTooltip).prop('tooltipTitle')).toEqual(
21
+ 'Hide attributes of the relationship'
22
+ );
23
+ });
24
+
25
+ it('should render correctly if show is "false"', () => {
26
+ const onToggle = jest.fn();
27
+ const component = shallow(<ShowDetailsButton show={false} onToggle={onToggle} />);
28
+ expect(component.find(SmallIconButtonWithTooltip).prop('icon')).toEqual(InfoIcon);
29
+ expect(component.find(SmallIconButtonWithTooltip).prop('tooltipTitle')).toEqual(
30
+ 'Show attributes of the relationship'
31
+ );
32
+ });
33
+ });
@@ -0,0 +1,143 @@
1
+ import React from 'react';
2
+ import {mount, shallow} from 'enzyme';
3
+ import * as reactRedux from 'react-redux';
4
+ import {Connection, ProfileViewTypes, RelationsViewConfig} from '@reltio/mdm-sdk';
5
+ import RelationsList from '../RelationsList';
6
+ import {CollaborationContext} from '@reltio/components';
7
+ import {act} from 'react-dom/test-utils';
8
+ import {SecondLevelWrapper} from '../../SecondLevelWrapper/SecondLevelWrapper';
9
+
10
+ const SecondLevelWrapperMock = () => <div className="SecondLevelWrapperMock" />;
11
+ jest.mock('../../SecondLevelWrapper/SecondLevelWrapper', () => ({
12
+ ...(jest.requireActual('../../SecondLevelWrapper/SecondLevelWrapper') as Record<string, unknown>),
13
+ SecondLevelWrapper: SecondLevelWrapperMock
14
+ }));
15
+
16
+ const loadRelations = jest.fn();
17
+ const config: RelationsViewConfig = {
18
+ point: 'com.reltio.plugins.ui.view',
19
+ id: 'com.reltio.plugins.entity.org.amv2.HCPs_Rating',
20
+ class: ProfileViewTypes.Relations,
21
+ recordClass: 'com.reltio.plugins.entity.relations.ComplexRelationRecord',
22
+ type: 'rating',
23
+ sortOptions: {
24
+ consolidatedRating: 'Consolidated Rating'
25
+ },
26
+ sortOrder: 'desc',
27
+ caption: 'HCPs affiliated with this HCO',
28
+ defaultRelationType: {
29
+ name: 'configuration/relationTypes/HasHealthCareRole',
30
+ direction: 'inRelations'
31
+ },
32
+ content: {
33
+ inRelations: ['configuration/relationTypes/HasHealthCareRole'],
34
+ entityTypes: ['configuration/entityTypes/HCP']
35
+ },
36
+ suggested: [
37
+ {
38
+ outRelations: ['configuration/relationTypes/HasAddress'],
39
+ entityTypes: ['configuration/entityTypes/Location'],
40
+ nextEntry: {
41
+ inRelations: [
42
+ {
43
+ uri: 'configuration/relationTypes/HasAddress',
44
+ label: 'suggested'
45
+ }
46
+ ],
47
+ entityTypes: ['configuration/entityTypes/HCP']
48
+ }
49
+ }
50
+ ]
51
+ };
52
+
53
+ const getRenderedChildrenOfSecondLevelWrapperByName = (component, name) => {
54
+ return component
55
+ .find(SecondLevelWrapper)
56
+ .filterWhere((node) => {
57
+ return node.renderProp('children')(jest.fn()).name() === name;
58
+ })
59
+ .map((node) => node.renderProp('children')(jest.fn()));
60
+ };
61
+
62
+ describe('RelationsList tests', () => {
63
+ const dispatch = jest.fn();
64
+ beforeAll(() => {
65
+ jest.spyOn(reactRedux, 'useDispatch').mockReturnValue(dispatch);
66
+ });
67
+ it('should render nothing in case empty connections', () => {
68
+ const component = shallow(<RelationsList config={config} loadRelations={loadRelations} connections={[]} />);
69
+ const relationItem = getRenderedChildrenOfSecondLevelWrapperByName(component, 'RelationItem');
70
+ expect(relationItem).toHaveLength(0);
71
+ });
72
+
73
+ it('should render not complext RelationItems if isComplex is "false"', () => {
74
+ const connections = [
75
+ {relation: {relationUri: 'relations/1'}, entity: {entityUri: '1'}},
76
+ {relation: {relationUri: 'relations/2'}, entity: {entityUri: '2'}},
77
+ {relation: {relationUri: 'relations/3'}, entity: {entityUri: '3'}}
78
+ ] as Connection[];
79
+ const component = shallow(
80
+ <RelationsList loadRelations={loadRelations} connections={connections} config={config} />
81
+ );
82
+
83
+ const relationItem = getRenderedChildrenOfSecondLevelWrapperByName(component, 'RelationItem');
84
+
85
+ expect(relationItem).toHaveLength(3);
86
+ });
87
+
88
+ it('should render complex RelationItems if isComplex is "true"', () => {
89
+ const connections = [
90
+ {relation: {relationUri: 'relations/1'}, entity: {entityUri: '1'}},
91
+ {relation: {relationUri: 'relations/2'}, entity: {entityUri: '2'}},
92
+ {relation: {relationUri: 'relations/3'}, entity: {entityUri: '3'}}
93
+ ] as Connection[];
94
+
95
+ const component = shallow(
96
+ <RelationsList
97
+ loadRelations={loadRelations}
98
+ connections={connections}
99
+ config={{...config, isComplex: true}}
100
+ />
101
+ );
102
+ const relationComplexItem = getRenderedChildrenOfSecondLevelWrapperByName(component, 'RelationComplexItem');
103
+ expect(relationComplexItem).toHaveLength(3);
104
+ });
105
+
106
+ it('should SecondLevelWrapper use direction value for key', () => {
107
+ const connections = [
108
+ {relation: {relationUri: 'relations/1', direction: 'in'}, entity: {entityUri: '1'}},
109
+ {relation: {relationUri: 'relations/1', direction: 'out'}, entity: {entityUri: '2'}}
110
+ ] as Connection[];
111
+ const component = shallow(
112
+ <RelationsList loadRelations={loadRelations} connections={connections} config={config} />
113
+ );
114
+ const items = component.find(SecondLevelWrapper);
115
+
116
+ expect(items.at(0).key()).toBe('relations/1-in');
117
+ expect(items.at(1).key()).toBe('relations/1-out');
118
+ });
119
+
120
+ it('should call getCommentsCount with correct ids', async () => {
121
+ const getCommentsCount = jest.fn();
122
+ const connections = [
123
+ {relation: {relationUri: 'relations/1'}, entity: {entityUri: '1'}},
124
+ {relation: {relationUri: 'relations/2'}, entity: {entityUri: '2'}},
125
+ {relation: {relationUri: 'relations/3'}, entity: {entityUri: '3'}}
126
+ ] as Connection[];
127
+ const collaborationContext = ({
128
+ getCommentsCount
129
+ } as unknown) as React.ContextType<typeof CollaborationContext>;
130
+ await act(async () => {
131
+ mount(
132
+ <CollaborationContext.Provider value={collaborationContext}>
133
+ <RelationsList loadRelations={loadRelations} connections={connections} config={config} />
134
+ </CollaborationContext.Provider>
135
+ );
136
+ });
137
+ expect(getCommentsCount).toHaveBeenCalledWith([
138
+ connections[0].relation.relationUri,
139
+ connections[1].relation.relationUri,
140
+ connections[2].relation.relationUri
141
+ ]);
142
+ });
143
+ });
@@ -0,0 +1,108 @@
1
+ import React, {useContext, useEffect, useMemo} from 'react';
2
+ import {useSelector} from 'react-redux';
3
+ import mdmModule from '@reltio/mdm-module';
4
+ import {ActivityFilter, Connection, getEntitiesMapForConnections, RelationsViewConfig} from '@reltio/mdm-sdk';
5
+ import {
6
+ BasicTablePagination,
7
+ BasicView,
8
+ EntitiesMapContext,
9
+ useRelationsLoader,
10
+ EntityContext
11
+ } from '@reltio/components';
12
+ import RelationsHeader from '../RelationsHeader/RelationsHeader';
13
+ import {RelationsViewStateContext} from '../../contexts/RelationsViewStateContext';
14
+ import {ImportDTContext} from '../../contexts/ImportDTContext';
15
+ import {buildRelationsFilter} from '../../helpers/filters';
16
+ import {RelationsContent} from '../RelationsContent/RelationsContent';
17
+ import {pick} from 'ramda';
18
+ import {useStyles} from './styles';
19
+
20
+ type Props = {
21
+ config: RelationsViewConfig;
22
+ className?: string;
23
+ };
24
+
25
+ const RelationsView = ({config, className}: Props) => {
26
+ const styles = useStyles();
27
+
28
+ const {page, setPage, rowsPerPage, sortOrder, sortOption, showInactive, searchQuery, changeSearchQuery} =
29
+ useContext(RelationsViewStateContext);
30
+ const {selectors} = mdmModule;
31
+ const connections = useSelector((state) =>
32
+ selectors.getConnectionsWithDraftsByViewId(state, config.id)
33
+ ) as Connection[];
34
+ const entity = useSelector(selectors.getEntity);
35
+ const total = useSelector((state) => selectors.getTotalByViewId(state, config.id));
36
+ const mode = useSelector(selectors.getMode);
37
+ const sorting = useMemo(
38
+ () => ({
39
+ order: sortOrder,
40
+ field: sortOption
41
+ }),
42
+ [sortOrder, sortOption]
43
+ );
44
+
45
+ useEffect(() => {
46
+ changeSearchQuery('');
47
+ }, [entity?.uri]); //eslint-disable-line react-hooks/exhaustive-deps
48
+
49
+ const filter = useMemo(() => buildRelationsFilter(searchQuery), [searchQuery]);
50
+
51
+ const {isLoading, reload: loadRelations} = useRelationsLoader({
52
+ sorting,
53
+ filter,
54
+ page,
55
+ rowsPerPage,
56
+ config,
57
+ entity,
58
+ relationActivityFilter: showInactive ? ActivityFilter.ALL : ActivityFilter.ACTIVE_ONLY,
59
+ mode
60
+ });
61
+
62
+ const entitiesMap = useMemo(() => getEntitiesMapForConnections(connections), [connections]);
63
+
64
+ const importDTContextValue = useMemo(
65
+ () => ({
66
+ reloadRelations: loadRelations,
67
+ config: pick(['content', 'importFromDT', 'maxDtssImport'], config)
68
+ }),
69
+ [loadRelations, config]
70
+ );
71
+
72
+ return (
73
+ <EntityContext.Provider value={entity}>
74
+ <EntitiesMapContext.Provider value={entitiesMap}>
75
+ <BasicView className={className}>
76
+ <div className={styles.container}>
77
+ <ImportDTContext.Provider value={importDTContextValue}>
78
+ <RelationsHeader title={config.caption} total={total} />
79
+ </ImportDTContext.Provider>
80
+ <div className={styles.content}>
81
+ <RelationsContent
82
+ isLoading={isLoading}
83
+ config={config}
84
+ loadRelations={loadRelations}
85
+ connections={connections}
86
+ total={total}
87
+ />
88
+ {total > rowsPerPage && (
89
+ <BasicTablePagination
90
+ classes={{root: styles.pagination}}
91
+ count={total}
92
+ rowsPerPageOptions={[]}
93
+ rowsPerPage={rowsPerPage}
94
+ page={page}
95
+ onChangePage={setPage}
96
+ />
97
+ )}
98
+ </div>
99
+ </div>
100
+ </BasicView>
101
+ </EntitiesMapContext.Provider>
102
+ </EntityContext.Provider>
103
+ );
104
+ };
105
+
106
+ RelationsView.displayName = 'RelationsView';
107
+
108
+ export {RelationsView};