@reltio/components 1.4.1103 → 1.4.1106

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 (27) hide show
  1. package/cjs/components/CollaborationItem/CommentTarget/CommentTarget.js +14 -6
  2. package/cjs/components/MatchRulesBlock/MatchRulesBadge/MatchRulesBadge.js +2 -1
  3. package/cjs/components/MatchRulesBlock/MatchRulesBadge/styles.d.ts +1 -1
  4. package/cjs/components/MatchRulesBlock/MatchRulesBadge/styles.js +5 -3
  5. package/cjs/components/MergeButton/MergeButton.d.ts +1 -0
  6. package/cjs/components/NotMatchButton/NotMatchButton.d.ts +1 -0
  7. package/cjs/components/ProfileMatchCard/styles.js +2 -1
  8. package/cjs/components/VerticalHeadingsTable/VerticalHeadingsTable.d.ts +5 -1
  9. package/cjs/components/VerticalHeadingsTable/VerticalHeadingsTable.js +5 -3
  10. package/cjs/hooks/index.d.ts +1 -0
  11. package/cjs/hooks/index.js +3 -1
  12. package/cjs/hooks/useCommentsEntitiesMap.d.ts +2 -0
  13. package/cjs/hooks/useCommentsEntitiesMap.js +89 -0
  14. package/esm/components/CollaborationItem/CommentTarget/CommentTarget.js +14 -6
  15. package/esm/components/MatchRulesBlock/MatchRulesBadge/MatchRulesBadge.js +2 -1
  16. package/esm/components/MatchRulesBlock/MatchRulesBadge/styles.d.ts +1 -1
  17. package/esm/components/MatchRulesBlock/MatchRulesBadge/styles.js +5 -3
  18. package/esm/components/MergeButton/MergeButton.d.ts +1 -0
  19. package/esm/components/NotMatchButton/NotMatchButton.d.ts +1 -0
  20. package/esm/components/ProfileMatchCard/styles.js +2 -1
  21. package/esm/components/VerticalHeadingsTable/VerticalHeadingsTable.d.ts +5 -1
  22. package/esm/components/VerticalHeadingsTable/VerticalHeadingsTable.js +5 -3
  23. package/esm/hooks/index.d.ts +1 -0
  24. package/esm/hooks/index.js +1 -0
  25. package/esm/hooks/useCommentsEntitiesMap.d.ts +2 -0
  26. package/esm/hooks/useCommentsEntitiesMap.js +82 -0
  27. package/package.json +3 -3
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
14
  if (k2 === undefined) k2 = k;
4
15
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -44,7 +55,7 @@ var CommentTarget = function (_a) {
44
55
  var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata);
45
56
  var entitiesMap = react_1.useContext(contexts_1.EntitiesMapContext);
46
57
  var getContent = function () {
47
- var _a, _b;
58
+ var _a;
48
59
  switch (comment.objectType) {
49
60
  case mdm_sdk_1.CollaborationObjectTypes.ENTITY_ATTRIBUTE: {
50
61
  var attributeTypeUri = mdm_sdk_2.getAttributeTypeUriByValueUri(comment.objectId, entity.type);
@@ -68,10 +79,7 @@ var CommentTarget = function (_a) {
68
79
  }
69
80
  case mdm_sdk_1.CollaborationObjectTypes.RELATION: {
70
81
  var relatedEntityUri = utils_1.getRelatedEntityUri(comment, entity.uri);
71
- var relatedEntity = {
72
- uri: relatedEntityUri,
73
- label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
74
- };
82
+ var relatedEntity = __assign(__assign({}, (entitiesMap[relatedEntityUri] || {})), { uri: relatedEntityUri });
75
83
  return (react_1.default.createElement(react_1.default.Fragment, null,
76
84
  react_1.default.createElement(Typography_1.default, { className: styles.title }, ui_i18n_1.default.text('Selected relation:')),
77
85
  react_1.default.createElement(Typography_1.default, { className: styles.label },
@@ -85,7 +93,7 @@ var CommentTarget = function (_a) {
85
93
  var relatedEntityUri = utils_1.getRelatedEntityUri(comment, entity.uri);
86
94
  var relatedEntity = {
87
95
  uri: relatedEntityUri,
88
- label: (_b = entitiesMap[relatedEntityUri]) === null || _b === void 0 ? void 0 : _b.label
96
+ label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
89
97
  };
90
98
  return (react_1.default.createElement(react_1.default.Fragment, null,
91
99
  react_1.default.createElement(Typography_1.default, { className: styles.title }, ui_i18n_1.default.text('Selected potential match:')),
@@ -49,9 +49,10 @@ var classnames_1 = __importDefault(require("classnames"));
49
49
  var ArrowExpandButton_1 = __importDefault(require("../../ArrowExpandButton/ArrowExpandButton"));
50
50
  var styles_1 = __importDefault(require("./styles"));
51
51
  var MatchRulesBadge = react_1.forwardRef(function (_a, ref) {
52
+ var _b;
52
53
  var children = _a.children, expanded = _a.expanded, onExpand = _a.onExpand, className = _a.className, otherProps = __rest(_a, ["children", "expanded", "onExpand", "className"]);
53
54
  var styles = styles_1.default();
54
- return (react_1.default.createElement("div", __assign({ onClick: onExpand, ref: ref, className: classnames_1.default(styles.container, className) }, otherProps),
55
+ return (react_1.default.createElement("div", __assign({ onClick: onExpand, ref: ref, className: classnames_1.default(styles.container, className, (_b = {}, _b[styles.expanded] = expanded, _b)) }, otherProps),
55
56
  react_1.default.createElement(ArrowExpandButton_1.default, { expanded: expanded }),
56
57
  react_1.default.createElement("div", { className: styles.label }, children)));
57
58
  });
@@ -1,2 +1,2 @@
1
- declare const styles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"label" | "container">;
1
+ declare const styles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"label" | "expanded" | "container">;
2
2
  export default styles;
@@ -6,16 +6,18 @@ var styles = styles_1.makeStyles(function (theme) {
6
6
  label: {
7
7
  backgroundColor: 'rgba(43,152,240,0.12)',
8
8
  fontSize: '12px',
9
- lineHeight: '14px',
9
+ lineHeight: '15px',
10
10
  color: theme.palette.text.primary,
11
11
  display: 'flex',
12
12
  alignItems: 'center',
13
- padding: '4px 8px'
13
+ padding: '2px 7px'
14
14
  },
15
15
  container: {
16
16
  display: 'flex',
17
17
  alignItems: 'center',
18
- cursor: 'pointer',
18
+ cursor: 'pointer'
19
+ },
20
+ expanded: {
19
21
  marginBottom: '8px'
20
22
  }
21
23
  };
@@ -6,6 +6,7 @@ declare type Props = {
6
6
  entities: Entity[];
7
7
  entity: Entity;
8
8
  mode?: ActionButtonMode;
9
+ size?: string;
9
10
  onMenuClose?: () => void;
10
11
  disabled?: boolean;
11
12
  onStartRequest?: () => void;
@@ -6,6 +6,7 @@ declare type Props = {
6
6
  entities: Entity[];
7
7
  entity: Entity;
8
8
  mode?: ActionButtonMode;
9
+ size?: string;
9
10
  onMenuClose?: () => void;
10
11
  disabled?: boolean;
11
12
  onStartRequest?: () => void;
@@ -25,6 +25,7 @@ exports.useStyles = styles_1.makeStyles({
25
25
  paddingTop: '8px'
26
26
  },
27
27
  rulesContainer: {
28
- paddingLeft: '52px'
28
+ paddingLeft: '52px',
29
+ marginBottom: '8px'
29
30
  }
30
31
  });
@@ -1,9 +1,11 @@
1
1
  declare var _default: React.MemoExoticComponent<{
2
- ({ className, rowsData, columnsData, theadRowsNumber }: {
2
+ ({ className, rowsData, columnsData, theadRowsNumber, setHoveredColumn, resetHoveredColumn }: {
3
3
  className: any;
4
4
  rowsData: any;
5
5
  columnsData: any;
6
6
  theadRowsNumber?: number;
7
+ setHoveredColumn: any;
8
+ resetHoveredColumn: any;
7
9
  }): JSX.Element;
8
10
  propTypes: {
9
11
  rowsData: PropTypes.Requireable<PropTypes.InferProps<{
@@ -15,6 +17,8 @@ declare var _default: React.MemoExoticComponent<{
15
17
  columnsData: PropTypes.Requireable<object[]>;
16
18
  theadRowsNumber: PropTypes.Requireable<number>;
17
19
  className: PropTypes.Requireable<string>;
20
+ setHoveredColumn: PropTypes.Requireable<(...args: any[]) => any>;
21
+ resetHoveredColumn: PropTypes.Requireable<(...args: any[]) => any>;
18
22
  };
19
23
  }>;
20
24
  export default _default;
@@ -44,14 +44,14 @@ var DefaultCellRenderer = function (_a) {
44
44
  return value || null;
45
45
  };
46
46
  var VerticalHeadingsTable = function (_a) {
47
- var className = _a.className, rowsData = _a.rowsData, columnsData = _a.columnsData, _b = _a.theadRowsNumber, theadRowsNumber = _b === void 0 ? 0 : _b;
47
+ var className = _a.className, rowsData = _a.rowsData, columnsData = _a.columnsData, _b = _a.theadRowsNumber, theadRowsNumber = _b === void 0 ? 0 : _b, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
48
48
  var renderRow = function (rowData) {
49
49
  var CellRenderer = rowData.cellRenderer || DefaultCellRenderer;
50
50
  var HeadCellRenderer = rowData.headCellRenderer || DefaultHeadCellRenderer;
51
51
  return (react_1.default.createElement("tr", { key: rowData.id },
52
52
  react_1.default.createElement("th", { key: rowData.id },
53
53
  react_1.default.createElement(HeadCellRenderer, __assign({}, rowData))),
54
- columnsData.map(function (columnValue, index) { return (react_1.default.createElement("td", { key: index },
54
+ columnsData.map(function (columnValue, index) { return (react_1.default.createElement("td", { key: index, onMouseOver: function () { return setHoveredColumn(columnValue); }, onMouseLeave: resetHoveredColumn },
55
55
  react_1.default.createElement(CellRenderer, { value: columnValue[rowData.id], columnValue: columnValue, rowData: rowData }))); })));
56
56
  };
57
57
  return (react_1.default.createElement("table", { className: className },
@@ -67,6 +67,8 @@ VerticalHeadingsTable.propTypes = {
67
67
  })),
68
68
  columnsData: prop_types_1.default.arrayOf(prop_types_1.default.object),
69
69
  theadRowsNumber: prop_types_1.default.number,
70
- className: prop_types_1.default.string
70
+ className: prop_types_1.default.string,
71
+ setHoveredColumn: prop_types_1.default.func,
72
+ resetHoveredColumn: prop_types_1.default.func
71
73
  };
72
74
  exports.default = react_1.memo(VerticalHeadingsTable);
@@ -3,6 +3,7 @@ export { useAPI, CustomAction } from './useAPI';
3
3
  export type { CustomActionTask } from './useAPI';
4
4
  export { useAsyncMount } from './useAsyncMount';
5
5
  export { useCollaboration } from './useCollaboration';
6
+ export { useCommentsEntitiesMap } from './useCommentsEntitiesMap';
6
7
  export { useDidUpdateEffect } from './useDidUpdateEffect';
7
8
  export { usePrevious } from './usePrevious';
8
9
  export { useRelationTypeSelector } from './useRelationTypeSelector';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCollaboration = exports.useAsyncMount = exports.CustomAction = exports.useAPI = exports.useActions = void 0;
3
+ exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.CustomAction = exports.useAPI = exports.useActions = void 0;
4
4
  var useActions_1 = require("./useActions");
5
5
  Object.defineProperty(exports, "useActions", { enumerable: true, get: function () { return useActions_1.useActions; } });
6
6
  var useAPI_1 = require("./useAPI");
@@ -10,6 +10,8 @@ var useAsyncMount_1 = require("./useAsyncMount");
10
10
  Object.defineProperty(exports, "useAsyncMount", { enumerable: true, get: function () { return useAsyncMount_1.useAsyncMount; } });
11
11
  var useCollaboration_1 = require("./useCollaboration");
12
12
  Object.defineProperty(exports, "useCollaboration", { enumerable: true, get: function () { return useCollaboration_1.useCollaboration; } });
13
+ var useCommentsEntitiesMap_1 = require("./useCommentsEntitiesMap");
14
+ Object.defineProperty(exports, "useCommentsEntitiesMap", { enumerable: true, get: function () { return useCommentsEntitiesMap_1.useCommentsEntitiesMap; } });
13
15
  var useDidUpdateEffect_1 = require("./useDidUpdateEffect");
14
16
  Object.defineProperty(exports, "useDidUpdateEffect", { enumerable: true, get: function () { return useDidUpdateEffect_1.useDidUpdateEffect; } });
15
17
  var usePrevious_1 = require("./usePrevious");
@@ -0,0 +1,2 @@
1
+ import { Comment, Entity, EntitiesMap } from '@reltio/mdm-sdk';
2
+ export declare const useCommentsEntitiesMap: (comments: Comment[]) => EntitiesMap<Entity>;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useCommentsEntitiesMap = void 0;
18
+ var react_1 = require("react");
19
+ var ramda_1 = require("ramda");
20
+ var react_redux_1 = require("react-redux");
21
+ var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
22
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
23
+ var useSafePromise_1 = require("./useSafePromise");
24
+ var SELECT_OPTION = 'uri,label,type';
25
+ var useCommentsEntitiesMap = function (comments) {
26
+ var safePromise = useSafePromise_1.useSafePromise();
27
+ var currentEntityUri = react_redux_1.useSelector(mdm_module_1.default.selectors.getEntityUriWithDataTenant);
28
+ var _a = react_1.useState({}), entitiesMap = _a[0], setEntitiesMap = _a[1];
29
+ var getEntities = react_1.useCallback(function (entitiesUris) {
30
+ var requestFilters = [
31
+ {
32
+ filter: mdm_sdk_1.FilterOptions.EQUALS,
33
+ fieldName: 'uri',
34
+ values: entitiesUris
35
+ }
36
+ ];
37
+ var requestOptions = {
38
+ max: entitiesUris.length,
39
+ activeness: mdm_sdk_1.ActivityFilters.ALL,
40
+ select: 'uri,label,type'
41
+ };
42
+ return safePromise(mdm_sdk_1.getFilteredEntities(requestFilters, requestOptions));
43
+ }, [safePromise]);
44
+ var getNotFoundEntity = function (entityUri) {
45
+ return mdm_sdk_1.getEntity(entityUri, { options: SELECT_OPTION })
46
+ .then(function (entity) { return ({
47
+ uri: entityUri,
48
+ label: entity.label,
49
+ type: entity.type
50
+ }); })
51
+ .catch(function () { return ({}); });
52
+ };
53
+ var addNotFoundEntities = react_1.useCallback(function (entitiesUris, entities) {
54
+ return safePromise(Promise.all((entitiesUris || []).map(getNotFoundEntity))).then(ramda_1.pipe(ramda_1.reject(ramda_1.isEmpty), ramda_1.concat(entities)));
55
+ }, [safePromise]);
56
+ react_1.useEffect(function () {
57
+ var uniqEntitiesUris = ramda_1.pipe(ramda_1.reduce(function (entitiesUris, comment) {
58
+ var type = comment.objectType, relatedObjectUris = comment.relatedObjectUris;
59
+ if (type === 'relation' || type === 'potentialMatch') {
60
+ (relatedObjectUris || []).forEach(function (uri) {
61
+ if (uri !== currentEntityUri && mdm_sdk_1.isEntityUri(uri) && !entitiesMap[uri]) {
62
+ entitiesUris.push(uri);
63
+ }
64
+ });
65
+ }
66
+ return entitiesUris;
67
+ }, []), ramda_1.uniq)(comments || []);
68
+ if (uniqEntitiesUris.length) {
69
+ getEntities(uniqEntitiesUris)
70
+ .then(function (results) {
71
+ var getNotFoundUris = ramda_1.pipe(ramda_1.map(ramda_1.prop('uri')), ramda_1.difference(uniqEntitiesUris));
72
+ var notFoundEntities = getNotFoundUris(results);
73
+ return addNotFoundEntities(notFoundEntities, results);
74
+ })
75
+ .then(function (results) {
76
+ setEntitiesMap(function (prevEntitiesMap) {
77
+ return results.reduce(function (entities, entity) {
78
+ entities[entity.uri] = entity;
79
+ return entities;
80
+ }, __assign({}, prevEntitiesMap));
81
+ });
82
+ })
83
+ .catch(function () { });
84
+ }
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ }, [getEntities, addNotFoundEntities, comments, currentEntityUri]);
87
+ return entitiesMap;
88
+ };
89
+ exports.useCommentsEntitiesMap = useCommentsEntitiesMap;
@@ -1,3 +1,14 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  import React, { useContext } from 'react';
2
13
  import { useSelector } from 'react-redux';
3
14
  import i18n from 'ui-i18n';
@@ -19,7 +30,7 @@ export var CommentTarget = function (_a) {
19
30
  var metadata = useSelector(mdm.selectors.getMetadata);
20
31
  var entitiesMap = useContext(EntitiesMapContext);
21
32
  var getContent = function () {
22
- var _a, _b;
33
+ var _a;
23
34
  switch (comment.objectType) {
24
35
  case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {
25
36
  var attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);
@@ -43,10 +54,7 @@ export var CommentTarget = function (_a) {
43
54
  }
44
55
  case CollaborationObjectTypes.RELATION: {
45
56
  var relatedEntityUri = getRelatedEntityUri(comment, entity.uri);
46
- var relatedEntity = {
47
- uri: relatedEntityUri,
48
- label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
49
- };
57
+ var relatedEntity = __assign(__assign({}, (entitiesMap[relatedEntityUri] || {})), { uri: relatedEntityUri });
50
58
  return (React.createElement(React.Fragment, null,
51
59
  React.createElement(Typography, { className: styles.title }, i18n.text('Selected relation:')),
52
60
  React.createElement(Typography, { className: styles.label },
@@ -60,7 +68,7 @@ export var CommentTarget = function (_a) {
60
68
  var relatedEntityUri = getRelatedEntityUri(comment, entity.uri);
61
69
  var relatedEntity = {
62
70
  uri: relatedEntityUri,
63
- label: (_b = entitiesMap[relatedEntityUri]) === null || _b === void 0 ? void 0 : _b.label
71
+ label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
64
72
  };
65
73
  return (React.createElement(React.Fragment, null,
66
74
  React.createElement(Typography, { className: styles.title }, i18n.text('Selected potential match:')),
@@ -25,9 +25,10 @@ import classnames from 'classnames';
25
25
  import ArrowExpandButton from '../../ArrowExpandButton/ArrowExpandButton';
26
26
  import useStyles from './styles';
27
27
  var MatchRulesBadge = forwardRef(function (_a, ref) {
28
+ var _b;
28
29
  var children = _a.children, expanded = _a.expanded, onExpand = _a.onExpand, className = _a.className, otherProps = __rest(_a, ["children", "expanded", "onExpand", "className"]);
29
30
  var styles = useStyles();
30
- return (React.createElement("div", __assign({ onClick: onExpand, ref: ref, className: classnames(styles.container, className) }, otherProps),
31
+ return (React.createElement("div", __assign({ onClick: onExpand, ref: ref, className: classnames(styles.container, className, (_b = {}, _b[styles.expanded] = expanded, _b)) }, otherProps),
31
32
  React.createElement(ArrowExpandButton, { expanded: expanded }),
32
33
  React.createElement("div", { className: styles.label }, children)));
33
34
  });
@@ -1,2 +1,2 @@
1
- declare const styles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"label" | "container">;
1
+ declare const styles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"label" | "expanded" | "container">;
2
2
  export default styles;
@@ -4,16 +4,18 @@ var styles = makeStyles(function (theme) {
4
4
  label: {
5
5
  backgroundColor: 'rgba(43,152,240,0.12)',
6
6
  fontSize: '12px',
7
- lineHeight: '14px',
7
+ lineHeight: '15px',
8
8
  color: theme.palette.text.primary,
9
9
  display: 'flex',
10
10
  alignItems: 'center',
11
- padding: '4px 8px'
11
+ padding: '2px 7px'
12
12
  },
13
13
  container: {
14
14
  display: 'flex',
15
15
  alignItems: 'center',
16
- cursor: 'pointer',
16
+ cursor: 'pointer'
17
+ },
18
+ expanded: {
17
19
  marginBottom: '8px'
18
20
  }
19
21
  };
@@ -6,6 +6,7 @@ declare type Props = {
6
6
  entities: Entity[];
7
7
  entity: Entity;
8
8
  mode?: ActionButtonMode;
9
+ size?: string;
9
10
  onMenuClose?: () => void;
10
11
  disabled?: boolean;
11
12
  onStartRequest?: () => void;
@@ -6,6 +6,7 @@ declare type Props = {
6
6
  entities: Entity[];
7
7
  entity: Entity;
8
8
  mode?: ActionButtonMode;
9
+ size?: string;
9
10
  onMenuClose?: () => void;
10
11
  disabled?: boolean;
11
12
  onStartRequest?: () => void;
@@ -22,6 +22,7 @@ export var useStyles = makeStyles({
22
22
  paddingTop: '8px'
23
23
  },
24
24
  rulesContainer: {
25
- paddingLeft: '52px'
25
+ paddingLeft: '52px',
26
+ marginBottom: '8px'
26
27
  }
27
28
  });
@@ -1,9 +1,11 @@
1
1
  declare var _default: React.MemoExoticComponent<{
2
- ({ className, rowsData, columnsData, theadRowsNumber }: {
2
+ ({ className, rowsData, columnsData, theadRowsNumber, setHoveredColumn, resetHoveredColumn }: {
3
3
  className: any;
4
4
  rowsData: any;
5
5
  columnsData: any;
6
6
  theadRowsNumber?: number;
7
+ setHoveredColumn: any;
8
+ resetHoveredColumn: any;
7
9
  }): JSX.Element;
8
10
  propTypes: {
9
11
  rowsData: PropTypes.Requireable<PropTypes.InferProps<{
@@ -15,6 +17,8 @@ declare var _default: React.MemoExoticComponent<{
15
17
  columnsData: PropTypes.Requireable<object[]>;
16
18
  theadRowsNumber: PropTypes.Requireable<number>;
17
19
  className: PropTypes.Requireable<string>;
20
+ setHoveredColumn: PropTypes.Requireable<(...args: any[]) => any>;
21
+ resetHoveredColumn: PropTypes.Requireable<(...args: any[]) => any>;
18
22
  };
19
23
  }>;
20
24
  export default _default;
@@ -20,14 +20,14 @@ var DefaultCellRenderer = function (_a) {
20
20
  return value || null;
21
21
  };
22
22
  var VerticalHeadingsTable = function (_a) {
23
- var className = _a.className, rowsData = _a.rowsData, columnsData = _a.columnsData, _b = _a.theadRowsNumber, theadRowsNumber = _b === void 0 ? 0 : _b;
23
+ var className = _a.className, rowsData = _a.rowsData, columnsData = _a.columnsData, _b = _a.theadRowsNumber, theadRowsNumber = _b === void 0 ? 0 : _b, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
24
24
  var renderRow = function (rowData) {
25
25
  var CellRenderer = rowData.cellRenderer || DefaultCellRenderer;
26
26
  var HeadCellRenderer = rowData.headCellRenderer || DefaultHeadCellRenderer;
27
27
  return (React.createElement("tr", { key: rowData.id },
28
28
  React.createElement("th", { key: rowData.id },
29
29
  React.createElement(HeadCellRenderer, __assign({}, rowData))),
30
- columnsData.map(function (columnValue, index) { return (React.createElement("td", { key: index },
30
+ columnsData.map(function (columnValue, index) { return (React.createElement("td", { key: index, onMouseOver: function () { return setHoveredColumn(columnValue); }, onMouseLeave: resetHoveredColumn },
31
31
  React.createElement(CellRenderer, { value: columnValue[rowData.id], columnValue: columnValue, rowData: rowData }))); })));
32
32
  };
33
33
  return (React.createElement("table", { className: className },
@@ -43,6 +43,8 @@ VerticalHeadingsTable.propTypes = {
43
43
  })),
44
44
  columnsData: PropTypes.arrayOf(PropTypes.object),
45
45
  theadRowsNumber: PropTypes.number,
46
- className: PropTypes.string
46
+ className: PropTypes.string,
47
+ setHoveredColumn: PropTypes.func,
48
+ resetHoveredColumn: PropTypes.func
47
49
  };
48
50
  export default memo(VerticalHeadingsTable);
@@ -3,6 +3,7 @@ export { useAPI, CustomAction } from './useAPI';
3
3
  export type { CustomActionTask } from './useAPI';
4
4
  export { useAsyncMount } from './useAsyncMount';
5
5
  export { useCollaboration } from './useCollaboration';
6
+ export { useCommentsEntitiesMap } from './useCommentsEntitiesMap';
6
7
  export { useDidUpdateEffect } from './useDidUpdateEffect';
7
8
  export { usePrevious } from './usePrevious';
8
9
  export { useRelationTypeSelector } from './useRelationTypeSelector';
@@ -2,6 +2,7 @@ export { useActions } from './useActions';
2
2
  export { useAPI, CustomAction } from './useAPI';
3
3
  export { useAsyncMount } from './useAsyncMount';
4
4
  export { useCollaboration } from './useCollaboration';
5
+ export { useCommentsEntitiesMap } from './useCommentsEntitiesMap';
5
6
  export { useDidUpdateEffect } from './useDidUpdateEffect';
6
7
  export { usePrevious } from './usePrevious';
7
8
  export { useRelationTypeSelector } from './useRelationTypeSelector';
@@ -0,0 +1,2 @@
1
+ import { Comment, Entity, EntitiesMap } from '@reltio/mdm-sdk';
2
+ export declare const useCommentsEntitiesMap: (comments: Comment[]) => EntitiesMap<Entity>;
@@ -0,0 +1,82 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { useCallback, useEffect, useState } from 'react';
13
+ import { concat, difference, isEmpty, map, pipe, prop, reduce, reject, uniq } from 'ramda';
14
+ import { useSelector } from 'react-redux';
15
+ import mdm from '@reltio/mdm-module';
16
+ import { ActivityFilters, FilterOptions, getFilteredEntities, isEntityUri, getEntity } from '@reltio/mdm-sdk';
17
+ import { useSafePromise } from './useSafePromise';
18
+ var SELECT_OPTION = 'uri,label,type';
19
+ export var useCommentsEntitiesMap = function (comments) {
20
+ var safePromise = useSafePromise();
21
+ var currentEntityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);
22
+ var _a = useState({}), entitiesMap = _a[0], setEntitiesMap = _a[1];
23
+ var getEntities = useCallback(function (entitiesUris) {
24
+ var requestFilters = [
25
+ {
26
+ filter: FilterOptions.EQUALS,
27
+ fieldName: 'uri',
28
+ values: entitiesUris
29
+ }
30
+ ];
31
+ var requestOptions = {
32
+ max: entitiesUris.length,
33
+ activeness: ActivityFilters.ALL,
34
+ select: 'uri,label,type'
35
+ };
36
+ return safePromise(getFilteredEntities(requestFilters, requestOptions));
37
+ }, [safePromise]);
38
+ var getNotFoundEntity = function (entityUri) {
39
+ return getEntity(entityUri, { options: SELECT_OPTION })
40
+ .then(function (entity) { return ({
41
+ uri: entityUri,
42
+ label: entity.label,
43
+ type: entity.type
44
+ }); })
45
+ .catch(function () { return ({}); });
46
+ };
47
+ var addNotFoundEntities = useCallback(function (entitiesUris, entities) {
48
+ return safePromise(Promise.all((entitiesUris || []).map(getNotFoundEntity))).then(pipe(reject(isEmpty), concat(entities)));
49
+ }, [safePromise]);
50
+ useEffect(function () {
51
+ var uniqEntitiesUris = pipe(reduce(function (entitiesUris, comment) {
52
+ var type = comment.objectType, relatedObjectUris = comment.relatedObjectUris;
53
+ if (type === 'relation' || type === 'potentialMatch') {
54
+ (relatedObjectUris || []).forEach(function (uri) {
55
+ if (uri !== currentEntityUri && isEntityUri(uri) && !entitiesMap[uri]) {
56
+ entitiesUris.push(uri);
57
+ }
58
+ });
59
+ }
60
+ return entitiesUris;
61
+ }, []), uniq)(comments || []);
62
+ if (uniqEntitiesUris.length) {
63
+ getEntities(uniqEntitiesUris)
64
+ .then(function (results) {
65
+ var getNotFoundUris = pipe(map(prop('uri')), difference(uniqEntitiesUris));
66
+ var notFoundEntities = getNotFoundUris(results);
67
+ return addNotFoundEntities(notFoundEntities, results);
68
+ })
69
+ .then(function (results) {
70
+ setEntitiesMap(function (prevEntitiesMap) {
71
+ return results.reduce(function (entities, entity) {
72
+ entities[entity.uri] = entity;
73
+ return entities;
74
+ }, __assign({}, prevEntitiesMap));
75
+ });
76
+ })
77
+ .catch(function () { });
78
+ }
79
+ // eslint-disable-next-line react-hooks/exhaustive-deps
80
+ }, [getEntities, addNotFoundEntities, comments, currentEntityUri]);
81
+ return entitiesMap;
82
+ };
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1103",
3
+ "version": "1.4.1106",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
7
7
  "dependencies": {
8
8
  "@date-io/moment": "^1.3.5",
9
9
  "@react-google-maps/api": "2.7.0",
10
- "@reltio/mdm-module": "^1.4.1103",
11
- "@reltio/mdm-sdk": "^1.4.1103",
10
+ "@reltio/mdm-module": "^1.4.1106",
11
+ "@reltio/mdm-sdk": "^1.4.1106",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",