@reltio/components 1.4.1329 → 1.4.1331
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.
- package/cjs/components/ActionButton/ActionButton.js +1 -1
- package/cjs/components/EntityTypeBadge/styles.js +4 -2
- package/cjs/components/ProfileCard/ProfileCard.js +6 -2
- package/cjs/components/ProfileCard/styles.js +11 -1
- package/cjs/components/activityLog/utils/filters.js +3 -2
- package/cjs/hooks/index.d.ts +1 -0
- package/cjs/hooks/index.js +3 -1
- package/cjs/hooks/useIsMountedRef.d.ts +2 -0
- package/cjs/hooks/useIsMountedRef.js +15 -0
- package/cjs/hooks/useMarkAsNotMatchRequest.js +4 -2
- package/cjs/hooks/useMergeAllRequest.js +3 -1
- package/cjs/hooks/useRelationsLoader.d.ts +2 -6
- package/cjs/hooks/useRelationsLoader.js +14 -1
- package/esm/components/ActionButton/ActionButton.js +1 -1
- package/esm/components/EntityTypeBadge/styles.js +4 -2
- package/esm/components/ProfileCard/ProfileCard.js +7 -3
- package/esm/components/ProfileCard/styles.js +11 -1
- package/esm/components/activityLog/utils/filters.js +4 -3
- package/esm/hooks/index.d.ts +1 -0
- package/esm/hooks/index.js +1 -0
- package/esm/hooks/useIsMountedRef.d.ts +2 -0
- package/esm/hooks/useIsMountedRef.js +11 -0
- package/esm/hooks/useMarkAsNotMatchRequest.js +4 -2
- package/esm/hooks/useMergeAllRequest.js +3 -1
- package/esm/hooks/useRelationsLoader.d.ts +2 -6
- package/esm/hooks/useRelationsLoader.js +16 -3
- package/package.json +3 -3
|
@@ -70,7 +70,7 @@ exports.ActionButton = (0, react_1.forwardRef)(function (_a, ref) {
|
|
|
70
70
|
var getButtonView = function () {
|
|
71
71
|
switch (mode) {
|
|
72
72
|
case 'iconButton': {
|
|
73
|
-
return (react_1.default.createElement(SmallIconButton_1.SmallIconButtonWithTooltip, __assign({ disabled: disabled, className: (0, classnames_1.default)(styles.iconButton, className), size: "S", tooltipTitle: label, onClick: onClick, icon: Icon }, otherProps)));
|
|
73
|
+
return (react_1.default.createElement(SmallIconButton_1.SmallIconButtonWithTooltip, __assign({ disabled: disabled, className: (0, classnames_1.default)(styles.iconButton, className), size: "S", tooltipTitle: label, onClick: onClick, icon: Icon, showForDisabled: true }, otherProps)));
|
|
74
74
|
}
|
|
75
75
|
case 'button': {
|
|
76
76
|
return (react_1.default.createElement(Button_1.default, __assign({ className: (0, classnames_1.default)(styles.button, className), disabled: disabled, startIcon: react_1.default.createElement(Icon, null), onClick: onClick, color: "primary", classes: { startIcon: styles.startIcon, label: styles.label } }, otherProps),
|
|
@@ -12,7 +12,8 @@ var useStyles = (0, styles_1.makeStyles)({
|
|
|
12
12
|
fontSize: '10px',
|
|
13
13
|
lineHeight: 'normal',
|
|
14
14
|
marginRight: '12px',
|
|
15
|
-
borderRadius: '2px'
|
|
15
|
+
borderRadius: '2px',
|
|
16
|
+
flexShrink: 0
|
|
16
17
|
},
|
|
17
18
|
'entityType-medium': {
|
|
18
19
|
padding: '2px 8px 3px',
|
|
@@ -20,7 +21,8 @@ var useStyles = (0, styles_1.makeStyles)({
|
|
|
20
21
|
fontSize: '13px',
|
|
21
22
|
fontWeight: 500,
|
|
22
23
|
lineHeight: '15px',
|
|
23
|
-
marginRight: '16px'
|
|
24
|
+
marginRight: '16px',
|
|
25
|
+
flexShrink: 0
|
|
24
26
|
}
|
|
25
27
|
});
|
|
26
28
|
exports.default = useStyles;
|
|
@@ -63,6 +63,9 @@ var ProfileCard = function (_a) {
|
|
|
63
63
|
var secondaryLabelClass = classes.secondaryLabel, labelClass = classes.label, containerClass = classes.container;
|
|
64
64
|
var label = (0, mdm_sdk_1.getLabel)(entity.label);
|
|
65
65
|
var secondaryLabel = entity.secondaryLabel;
|
|
66
|
+
var handleCopyEntityIdToClipboard = (0, react_1.useCallback)(function () {
|
|
67
|
+
navigator.clipboard.writeText((0, mdm_sdk_1.getEntityId)(entity));
|
|
68
|
+
}, [entity]);
|
|
66
69
|
return (react_1.default.createElement("div", __assign({ className: (0, classnames_1.default)(styles.container, containerClass) }, otherProps),
|
|
67
70
|
react_1.default.createElement(EntityAvatar_1.default, { entity: entity, imageClassName: styles.image }),
|
|
68
71
|
react_1.default.createElement("div", { className: styles.info },
|
|
@@ -73,8 +76,9 @@ var ProfileCard = function (_a) {
|
|
|
73
76
|
react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.secondaryLabel, secondaryLabelClass) }, secondaryLabel))),
|
|
74
77
|
react_1.default.createElement("div", { className: styles.thirdRow },
|
|
75
78
|
react_1.default.createElement(EntityTypeBadge_1.default, { entity: entity, size: "medium" }),
|
|
76
|
-
react_1.default.createElement("div", { className: styles.entityId },
|
|
79
|
+
react_1.default.createElement("div", { className: styles.entityId, onClick: handleCopyEntityIdToClipboard },
|
|
77
80
|
react_1.default.createElement("div", { className: styles.entityIdLabel }, ui_i18n_1.default.text('ID:')),
|
|
78
|
-
react_1.default.createElement(
|
|
81
|
+
react_1.default.createElement(ExpandedValueTooltip_1.default, { value: "Copy to clipboard ".concat((0, mdm_sdk_1.getEntityId)(entity)), placement: "top" },
|
|
82
|
+
react_1.default.createElement("div", { className: styles.entityIdValue }, (0, mdm_sdk_1.getEntityId)(entity))))))));
|
|
79
83
|
};
|
|
80
84
|
exports.default = (0, react_1.memo)(ProfileCard);
|
|
@@ -41,12 +41,14 @@ var useStyles = (0, styles_1.makeStyles)(function (theme) { return ({
|
|
|
41
41
|
},
|
|
42
42
|
thirdRow: {
|
|
43
43
|
display: 'flex',
|
|
44
|
+
overflow: 'hidden',
|
|
44
45
|
alignItems: 'center',
|
|
45
46
|
marginTop: 'auto',
|
|
46
47
|
paddingTop: '4px'
|
|
47
48
|
},
|
|
48
49
|
entityId: {
|
|
49
50
|
display: 'flex',
|
|
51
|
+
overflow: 'hidden',
|
|
50
52
|
alignItems: 'baseline',
|
|
51
53
|
whiteSpace: 'nowrap',
|
|
52
54
|
fontWeight: 400,
|
|
@@ -58,7 +60,15 @@ var useStyles = (0, styles_1.makeStyles)(function (theme) { return ({
|
|
|
58
60
|
},
|
|
59
61
|
entityIdValue: {
|
|
60
62
|
marginLeft: '8px',
|
|
61
|
-
color: theme.palette.text.primary
|
|
63
|
+
color: theme.palette.text.primary,
|
|
64
|
+
overflow: 'hidden',
|
|
65
|
+
textOverflow: 'ellipsis',
|
|
66
|
+
'&[aria-describedby]': {
|
|
67
|
+
cursor: 'pointer',
|
|
68
|
+
'&:hover': {
|
|
69
|
+
textDecoration: 'underline'
|
|
70
|
+
}
|
|
71
|
+
}
|
|
62
72
|
}
|
|
63
73
|
}); });
|
|
64
74
|
exports.default = useStyles;
|
|
@@ -78,9 +78,10 @@ var getFilterClauseBuilder = (0, ramda_1.cond)([
|
|
|
78
78
|
[(0, ramda_1.equals)('attributes'), function () { return multiValueFilter(buildAttributeFilterClause); }],
|
|
79
79
|
[(0, ramda_1.equals)('entityTypes'), function () { return multiValueFilter(buildEntityTypeFilterClause); }],
|
|
80
80
|
[(0, ramda_1.equals)('dateRange'), function () { return buildDateRangeFilterClause; }],
|
|
81
|
-
[(0, ramda_1.equals)('entityUri'), function () { return buildEntityUriFilterClause; }]
|
|
81
|
+
[(0, ramda_1.equals)('entityUri'), function () { return buildEntityUriFilterClause; }],
|
|
82
|
+
[(0, ramda_1.equals)('rawFilter'), function () { return ramda_1.identity; }]
|
|
82
83
|
]);
|
|
83
|
-
exports.buildActivitiesFilterString = (0, ramda_1.pipe)((0, ramda_1.defaultTo)({}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), ramda_1.toPairs, (0, ramda_1.map)(function (_a) {
|
|
84
|
+
exports.buildActivitiesFilterString = (0, ramda_1.pipe)((0, ramda_1.defaultTo)({}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), ramda_1.toPairs, (0, ramda_1.append)(['rawFilter', "not equals(user, 'collaboration-service')"]), (0, ramda_1.map)(function (_a) {
|
|
84
85
|
var key = _a[0], value = _a[1];
|
|
85
86
|
return getFilterClauseBuilder(key)(value);
|
|
86
87
|
}), (0, ramda_1.reject)(mdm_sdk_1.isEmptyValue), (0, ramda_1.map)(wrapInBrackets), (0, ramda_1.join)(' and '));
|
package/cjs/hooks/index.d.ts
CHANGED
|
@@ -22,3 +22,4 @@ export { useEditableConnection } from './useEditableConnection';
|
|
|
22
22
|
export { useReadableSearchState } from './useReadableSearchState';
|
|
23
23
|
export { useSavedStateForEntityType } from './useSavedStateForEntityType';
|
|
24
24
|
export { useSnackbar } from './useSnackbar';
|
|
25
|
+
export { useIsMountedRef } from './useIsMountedRef';
|
package/cjs/hooks/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useSnackbar = exports.useSavedStateForEntityType = 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.useAPI = exports.useActions = void 0;
|
|
3
|
+
exports.useIsMountedRef = exports.useSnackbar = exports.useSavedStateForEntityType = 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.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");
|
|
@@ -49,3 +49,5 @@ var useSavedStateForEntityType_1 = require("./useSavedStateForEntityType");
|
|
|
49
49
|
Object.defineProperty(exports, "useSavedStateForEntityType", { enumerable: true, get: function () { return useSavedStateForEntityType_1.useSavedStateForEntityType; } });
|
|
50
50
|
var useSnackbar_1 = require("./useSnackbar");
|
|
51
51
|
Object.defineProperty(exports, "useSnackbar", { enumerable: true, get: function () { return useSnackbar_1.useSnackbar; } });
|
|
52
|
+
var useIsMountedRef_1 = require("./useIsMountedRef");
|
|
53
|
+
Object.defineProperty(exports, "useIsMountedRef", { enumerable: true, get: function () { return useIsMountedRef_1.useIsMountedRef; } });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useIsMountedRef = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
var useIsMountedRef = function () {
|
|
6
|
+
var isMountedRef = (0, react_1.useRef)(false);
|
|
7
|
+
(0, react_1.useEffect)(function () {
|
|
8
|
+
isMountedRef.current = true;
|
|
9
|
+
return function () {
|
|
10
|
+
isMountedRef.current = false;
|
|
11
|
+
};
|
|
12
|
+
});
|
|
13
|
+
return isMountedRef;
|
|
14
|
+
};
|
|
15
|
+
exports.useIsMountedRef = useIsMountedRef;
|
|
@@ -8,8 +8,10 @@ var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
|
8
8
|
var react_redux_1 = require("react-redux");
|
|
9
9
|
var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
|
|
10
10
|
var react_1 = require("react");
|
|
11
|
+
var useIsMountedRef_1 = require("./useIsMountedRef");
|
|
11
12
|
var useMarkAsNotMatchRequest = function (_a) {
|
|
12
13
|
var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess;
|
|
14
|
+
var isMountedRef = (0, useIsMountedRef_1.useIsMountedRef)();
|
|
13
15
|
var tenant = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getTenant);
|
|
14
16
|
var dtssPath = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getDtssPath);
|
|
15
17
|
var _b = (0, react_1.useState)(false), isPending = _b[0], setIsPending = _b[1];
|
|
@@ -23,9 +25,9 @@ var useMarkAsNotMatchRequest = function (_a) {
|
|
|
23
25
|
})
|
|
24
26
|
.finally(function () {
|
|
25
27
|
onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
|
|
26
|
-
setIsPending(false);
|
|
28
|
+
isMountedRef.current && setIsPending(false);
|
|
27
29
|
});
|
|
28
|
-
}, [dtssPath, entities, entity, onFinishRequest, onStartRequest, onSuccess, tenant]);
|
|
30
|
+
}, [dtssPath, entities, entity, isMountedRef, onFinishRequest, onStartRequest, onSuccess, tenant]);
|
|
29
31
|
return { isPending: isPending, sendMarkAsNotMatchRequest: sendMarkAsNotMatchRequest };
|
|
30
32
|
};
|
|
31
33
|
exports.useMarkAsNotMatchRequest = useMarkAsNotMatchRequest;
|
|
@@ -9,8 +9,10 @@ var react_redux_1 = require("react-redux");
|
|
|
9
9
|
var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
|
|
10
10
|
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
11
11
|
var core_1 = require("../core");
|
|
12
|
+
var useIsMountedRef_1 = require("./useIsMountedRef");
|
|
12
13
|
var useMergeAllRequest = function (_a) {
|
|
13
14
|
var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess, _b = _a.onError, onError = _b === void 0 ? core_1.noop : _b;
|
|
15
|
+
var isMountedRef = (0, useIsMountedRef_1.useIsMountedRef)();
|
|
14
16
|
var tenant = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getTenant);
|
|
15
17
|
var dtssPath = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getDtssPath);
|
|
16
18
|
var _c = (0, react_1.useState)(false), isPending = _c[0], setIsPending = _c[1];
|
|
@@ -27,7 +29,7 @@ var useMergeAllRequest = function (_a) {
|
|
|
27
29
|
.catch(onError)
|
|
28
30
|
.finally(function () {
|
|
29
31
|
onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
|
|
30
|
-
setIsPending(false);
|
|
32
|
+
isMountedRef.current && setIsPending(false);
|
|
31
33
|
});
|
|
32
34
|
}, [dtssPath, entities, entity, onError, onFinishRequest, onStartRequest, onSuccess, tenant]);
|
|
33
35
|
return { isPending: isPending, sendMergeAllRequest: sendMergeAllRequest };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ActivityFilter, Entity, Mode } from '@reltio/mdm-sdk';
|
|
1
|
+
import { ActivityFilter, Entity, Mode, RelationsViewConfig } from '@reltio/mdm-sdk';
|
|
2
2
|
declare type Props = {
|
|
3
3
|
sorting?: {
|
|
4
4
|
field: string;
|
|
@@ -7,11 +7,7 @@ declare type Props = {
|
|
|
7
7
|
filter?: string;
|
|
8
8
|
page: number;
|
|
9
9
|
rowsPerPage: number;
|
|
10
|
-
config:
|
|
11
|
-
id: string;
|
|
12
|
-
content: Record<string, unknown>;
|
|
13
|
-
suggested?: Record<string, unknown>[] | Record<string, unknown>;
|
|
14
|
-
};
|
|
10
|
+
config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;
|
|
15
11
|
entity: Entity;
|
|
16
12
|
relationActivityFilter?: ActivityFilter;
|
|
17
13
|
mode: Mode;
|
|
@@ -48,16 +48,28 @@ var useRelationsLoader = function (_a) {
|
|
|
48
48
|
var _c = (0, react_1.useState)(false), isLoading = _c[0], setIsLoading = _c[1];
|
|
49
49
|
var dispatch = (0, react_redux_1.useDispatch)();
|
|
50
50
|
var tenant = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getTenant);
|
|
51
|
+
var metadata = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getMetadata);
|
|
51
52
|
var dtssPath = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getDtssPath);
|
|
52
53
|
var _d = (0, react_redux_1.useSelector)(mdm_module_1.default.selectors.getGlobalSearchRequestOptions) || {}, activityFilter = _d.activityFilter, globalFilter = _d.globalFilter;
|
|
53
54
|
var safePromise = (0, useSafePromise_1.useSafePromise)();
|
|
55
|
+
var processContent = function (content) {
|
|
56
|
+
var getUri = (0, ramda_1.when)(mdm_sdk_1.isObject, (0, ramda_1.prop)('uri'));
|
|
57
|
+
var filterRelation = (0, ramda_1.pipe)(getUri, (0, mdm_sdk_1.isAvailableRelationTypeUri)(metadata));
|
|
58
|
+
return (0, ramda_1.evolve)({
|
|
59
|
+
entityTypes: (0, ramda_1.filter)((0, mdm_sdk_1.isAvailableEntityTypeUri)(metadata)),
|
|
60
|
+
inRelations: (0, ramda_1.filter)(filterRelation),
|
|
61
|
+
outRelations: (0, ramda_1.filter)(filterRelation),
|
|
62
|
+
nextEntry: processContent
|
|
63
|
+
})(content);
|
|
64
|
+
};
|
|
54
65
|
var suggested = config.suggested;
|
|
55
66
|
var options = (0, react_1.useMemo)(function () { return ({
|
|
56
67
|
searchByOv: searchByOv
|
|
57
68
|
}); }, [searchByOv]);
|
|
58
69
|
var loadRelations = (0, react_1.useCallback)(function () {
|
|
59
70
|
if (entity === null || entity === void 0 ? void 0 : entity.uri) {
|
|
60
|
-
var
|
|
71
|
+
var processedConfig = processContent(config.content);
|
|
72
|
+
var requestConfig_1 = __assign(__assign({}, processedConfig), { sortBy: sorting === null || sorting === void 0 ? void 0 : sorting.field, order: sorting === null || sorting === void 0 ? void 0 : sorting.order, returnDates: true, returnObjects: true, activeness: {
|
|
61
73
|
relation: relationActivityFilter || mdm_sdk_1.ActivityFilter.ALL,
|
|
62
74
|
entity: activityFilter
|
|
63
75
|
}, max: rowsPerPage, offset: page * rowsPerPage, filter: (0, mdm_sdk_1.addGlobalFilterToQuery)(globalFilter, filter) || undefined, suggested: buildSuggestedIds(suggested) });
|
|
@@ -94,6 +106,7 @@ var useRelationsLoader = function (_a) {
|
|
|
94
106
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
95
107
|
}, [
|
|
96
108
|
activityFilter,
|
|
109
|
+
metadata,
|
|
97
110
|
config,
|
|
98
111
|
dispatch,
|
|
99
112
|
dtssPath,
|
|
@@ -41,7 +41,7 @@ export var ActionButton = forwardRef(function (_a, ref) {
|
|
|
41
41
|
var getButtonView = function () {
|
|
42
42
|
switch (mode) {
|
|
43
43
|
case 'iconButton': {
|
|
44
|
-
return (React.createElement(SmallIconButtonWithTooltip, __assign({ disabled: disabled, className: classnames(styles.iconButton, className), size: "S", tooltipTitle: label, onClick: onClick, icon: Icon }, otherProps)));
|
|
44
|
+
return (React.createElement(SmallIconButtonWithTooltip, __assign({ disabled: disabled, className: classnames(styles.iconButton, className), size: "S", tooltipTitle: label, onClick: onClick, icon: Icon, showForDisabled: true }, otherProps)));
|
|
45
45
|
}
|
|
46
46
|
case 'button': {
|
|
47
47
|
return (React.createElement(Button, __assign({ className: classnames(styles.button, className), disabled: disabled, startIcon: React.createElement(Icon, null), onClick: onClick, color: "primary", classes: { startIcon: styles.startIcon, label: styles.label } }, otherProps),
|
|
@@ -10,7 +10,8 @@ var useStyles = makeStyles({
|
|
|
10
10
|
fontSize: '10px',
|
|
11
11
|
lineHeight: 'normal',
|
|
12
12
|
marginRight: '12px',
|
|
13
|
-
borderRadius: '2px'
|
|
13
|
+
borderRadius: '2px',
|
|
14
|
+
flexShrink: 0
|
|
14
15
|
},
|
|
15
16
|
'entityType-medium': {
|
|
16
17
|
padding: '2px 8px 3px',
|
|
@@ -18,7 +19,8 @@ var useStyles = makeStyles({
|
|
|
18
19
|
fontSize: '13px',
|
|
19
20
|
fontWeight: 500,
|
|
20
21
|
lineHeight: '15px',
|
|
21
|
-
marginRight: '16px'
|
|
22
|
+
marginRight: '16px',
|
|
23
|
+
flexShrink: 0
|
|
22
24
|
}
|
|
23
25
|
});
|
|
24
26
|
export default useStyles;
|
|
@@ -20,7 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
}
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
|
-
import React, { memo } from 'react';
|
|
23
|
+
import React, { memo, useCallback } from 'react';
|
|
24
24
|
import i18n from 'ui-i18n';
|
|
25
25
|
import classnames from 'classnames';
|
|
26
26
|
import { getEntityId, getEntityUriForLink, getLabel } from '@reltio/mdm-sdk';
|
|
@@ -35,6 +35,9 @@ var ProfileCard = function (_a) {
|
|
|
35
35
|
var secondaryLabelClass = classes.secondaryLabel, labelClass = classes.label, containerClass = classes.container;
|
|
36
36
|
var label = getLabel(entity.label);
|
|
37
37
|
var secondaryLabel = entity.secondaryLabel;
|
|
38
|
+
var handleCopyEntityIdToClipboard = useCallback(function () {
|
|
39
|
+
navigator.clipboard.writeText(getEntityId(entity));
|
|
40
|
+
}, [entity]);
|
|
38
41
|
return (React.createElement("div", __assign({ className: classnames(styles.container, containerClass) }, otherProps),
|
|
39
42
|
React.createElement(EntityAvatar, { entity: entity, imageClassName: styles.image }),
|
|
40
43
|
React.createElement("div", { className: styles.info },
|
|
@@ -45,8 +48,9 @@ var ProfileCard = function (_a) {
|
|
|
45
48
|
React.createElement("div", { className: classnames(styles.secondaryLabel, secondaryLabelClass) }, secondaryLabel))),
|
|
46
49
|
React.createElement("div", { className: styles.thirdRow },
|
|
47
50
|
React.createElement(EntityTypeBadge, { entity: entity, size: "medium" }),
|
|
48
|
-
React.createElement("div", { className: styles.entityId },
|
|
51
|
+
React.createElement("div", { className: styles.entityId, onClick: handleCopyEntityIdToClipboard },
|
|
49
52
|
React.createElement("div", { className: styles.entityIdLabel }, i18n.text('ID:')),
|
|
50
|
-
React.createElement(
|
|
53
|
+
React.createElement(ExpandedValueTooltip, { value: "Copy to clipboard ".concat(getEntityId(entity)), placement: "top" },
|
|
54
|
+
React.createElement("div", { className: styles.entityIdValue }, getEntityId(entity))))))));
|
|
51
55
|
};
|
|
52
56
|
export default memo(ProfileCard);
|
|
@@ -39,12 +39,14 @@ var useStyles = makeStyles(function (theme) { return ({
|
|
|
39
39
|
},
|
|
40
40
|
thirdRow: {
|
|
41
41
|
display: 'flex',
|
|
42
|
+
overflow: 'hidden',
|
|
42
43
|
alignItems: 'center',
|
|
43
44
|
marginTop: 'auto',
|
|
44
45
|
paddingTop: '4px'
|
|
45
46
|
},
|
|
46
47
|
entityId: {
|
|
47
48
|
display: 'flex',
|
|
49
|
+
overflow: 'hidden',
|
|
48
50
|
alignItems: 'baseline',
|
|
49
51
|
whiteSpace: 'nowrap',
|
|
50
52
|
fontWeight: 400,
|
|
@@ -56,7 +58,15 @@ var useStyles = makeStyles(function (theme) { return ({
|
|
|
56
58
|
},
|
|
57
59
|
entityIdValue: {
|
|
58
60
|
marginLeft: '8px',
|
|
59
|
-
color: theme.palette.text.primary
|
|
61
|
+
color: theme.palette.text.primary,
|
|
62
|
+
overflow: 'hidden',
|
|
63
|
+
textOverflow: 'ellipsis',
|
|
64
|
+
'&[aria-describedby]': {
|
|
65
|
+
cursor: 'pointer',
|
|
66
|
+
'&:hover': {
|
|
67
|
+
textDecoration: 'underline'
|
|
68
|
+
}
|
|
69
|
+
}
|
|
60
70
|
}
|
|
61
71
|
}); });
|
|
62
72
|
export default useStyles;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cond, defaultTo, equals, join, map, pipe, reject, toPairs, type } from 'ramda';
|
|
1
|
+
import { append, cond, defaultTo, equals, identity, join, map, pipe, reject, toPairs, type } from 'ramda';
|
|
2
2
|
import moment from 'moment';
|
|
3
3
|
import { DateRangeTypes } from '../../../types';
|
|
4
4
|
import { escapeQueryValue, isEmptyValue } from '@reltio/mdm-sdk';
|
|
@@ -71,9 +71,10 @@ var getFilterClauseBuilder = cond([
|
|
|
71
71
|
[equals('attributes'), function () { return multiValueFilter(buildAttributeFilterClause); }],
|
|
72
72
|
[equals('entityTypes'), function () { return multiValueFilter(buildEntityTypeFilterClause); }],
|
|
73
73
|
[equals('dateRange'), function () { return buildDateRangeFilterClause; }],
|
|
74
|
-
[equals('entityUri'), function () { return buildEntityUriFilterClause; }]
|
|
74
|
+
[equals('entityUri'), function () { return buildEntityUriFilterClause; }],
|
|
75
|
+
[equals('rawFilter'), function () { return identity; }]
|
|
75
76
|
]);
|
|
76
|
-
export var buildActivitiesFilterString = pipe(defaultTo({}), reject(isEmptyValue), toPairs, map(function (_a) {
|
|
77
|
+
export var buildActivitiesFilterString = pipe(defaultTo({}), reject(isEmptyValue), toPairs, append(['rawFilter', "not equals(user, 'collaboration-service')"]), map(function (_a) {
|
|
77
78
|
var key = _a[0], value = _a[1];
|
|
78
79
|
return getFilterClauseBuilder(key)(value);
|
|
79
80
|
}), reject(isEmptyValue), map(wrapInBrackets), join(' and '));
|
package/esm/hooks/index.d.ts
CHANGED
|
@@ -22,3 +22,4 @@ export { useEditableConnection } from './useEditableConnection';
|
|
|
22
22
|
export { useReadableSearchState } from './useReadableSearchState';
|
|
23
23
|
export { useSavedStateForEntityType } from './useSavedStateForEntityType';
|
|
24
24
|
export { useSnackbar } from './useSnackbar';
|
|
25
|
+
export { useIsMountedRef } from './useIsMountedRef';
|
package/esm/hooks/index.js
CHANGED
|
@@ -22,3 +22,4 @@ export { useEditableConnection } from './useEditableConnection';
|
|
|
22
22
|
export { useReadableSearchState } from './useReadableSearchState';
|
|
23
23
|
export { useSavedStateForEntityType } from './useSavedStateForEntityType';
|
|
24
24
|
export { useSnackbar } from './useSnackbar';
|
|
25
|
+
export { useIsMountedRef } from './useIsMountedRef';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react';
|
|
2
|
+
export var useIsMountedRef = function () {
|
|
3
|
+
var isMountedRef = useRef(false);
|
|
4
|
+
useEffect(function () {
|
|
5
|
+
isMountedRef.current = true;
|
|
6
|
+
return function () {
|
|
7
|
+
isMountedRef.current = false;
|
|
8
|
+
};
|
|
9
|
+
});
|
|
10
|
+
return isMountedRef;
|
|
11
|
+
};
|
|
@@ -2,8 +2,10 @@ import { isDataTenantEntity, markDataTenantEntityAsNotMatch, markMixedEntitiesAs
|
|
|
2
2
|
import { useSelector } from 'react-redux';
|
|
3
3
|
import mdmModule from '@reltio/mdm-module';
|
|
4
4
|
import { useCallback, useState } from 'react';
|
|
5
|
+
import { useIsMountedRef } from './useIsMountedRef';
|
|
5
6
|
export var useMarkAsNotMatchRequest = function (_a) {
|
|
6
7
|
var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess;
|
|
8
|
+
var isMountedRef = useIsMountedRef();
|
|
7
9
|
var tenant = useSelector(mdmModule.selectors.getTenant);
|
|
8
10
|
var dtssPath = useSelector(mdmModule.selectors.getDtssPath);
|
|
9
11
|
var _b = useState(false), isPending = _b[0], setIsPending = _b[1];
|
|
@@ -17,8 +19,8 @@ export var useMarkAsNotMatchRequest = function (_a) {
|
|
|
17
19
|
})
|
|
18
20
|
.finally(function () {
|
|
19
21
|
onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
|
|
20
|
-
setIsPending(false);
|
|
22
|
+
isMountedRef.current && setIsPending(false);
|
|
21
23
|
});
|
|
22
|
-
}, [dtssPath, entities, entity, onFinishRequest, onStartRequest, onSuccess, tenant]);
|
|
24
|
+
}, [dtssPath, entities, entity, isMountedRef, onFinishRequest, onStartRequest, onSuccess, tenant]);
|
|
23
25
|
return { isPending: isPending, sendMarkAsNotMatchRequest: sendMarkAsNotMatchRequest };
|
|
24
26
|
};
|
|
@@ -3,8 +3,10 @@ import { useSelector } from 'react-redux';
|
|
|
3
3
|
import mdmModule from '@reltio/mdm-module';
|
|
4
4
|
import { isDataTenantEntity, mergeCustomerTenantEntityWithMixedEntities, mergeDataTenantEntity } from '@reltio/mdm-sdk';
|
|
5
5
|
import { noop } from '../core';
|
|
6
|
+
import { useIsMountedRef } from './useIsMountedRef';
|
|
6
7
|
export var useMergeAllRequest = function (_a) {
|
|
7
8
|
var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess, _b = _a.onError, onError = _b === void 0 ? noop : _b;
|
|
9
|
+
var isMountedRef = useIsMountedRef();
|
|
8
10
|
var tenant = useSelector(mdmModule.selectors.getTenant);
|
|
9
11
|
var dtssPath = useSelector(mdmModule.selectors.getDtssPath);
|
|
10
12
|
var _c = useState(false), isPending = _c[0], setIsPending = _c[1];
|
|
@@ -21,7 +23,7 @@ export var useMergeAllRequest = function (_a) {
|
|
|
21
23
|
.catch(onError)
|
|
22
24
|
.finally(function () {
|
|
23
25
|
onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
|
|
24
|
-
setIsPending(false);
|
|
26
|
+
isMountedRef.current && setIsPending(false);
|
|
25
27
|
});
|
|
26
28
|
}, [dtssPath, entities, entity, onError, onFinishRequest, onStartRequest, onSuccess, tenant]);
|
|
27
29
|
return { isPending: isPending, sendMergeAllRequest: sendMergeAllRequest };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ActivityFilter, Entity, Mode } from '@reltio/mdm-sdk';
|
|
1
|
+
import { ActivityFilter, Entity, Mode, RelationsViewConfig } from '@reltio/mdm-sdk';
|
|
2
2
|
declare type Props = {
|
|
3
3
|
sorting?: {
|
|
4
4
|
field: string;
|
|
@@ -7,11 +7,7 @@ declare type Props = {
|
|
|
7
7
|
filter?: string;
|
|
8
8
|
page: number;
|
|
9
9
|
rowsPerPage: number;
|
|
10
|
-
config:
|
|
11
|
-
id: string;
|
|
12
|
-
content: Record<string, unknown>;
|
|
13
|
-
suggested?: Record<string, unknown>[] | Record<string, unknown>;
|
|
14
|
-
};
|
|
10
|
+
config: Pick<RelationsViewConfig, 'suggested' | 'content' | 'id'>;
|
|
15
11
|
entity: Entity;
|
|
16
12
|
relationActivityFilter?: ActivityFilter;
|
|
17
13
|
mode: Mode;
|
|
@@ -11,9 +11,9 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
};
|
|
12
12
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
13
13
|
import { useDispatch, useSelector } from 'react-redux';
|
|
14
|
-
import { cond, pipe, prop, T, when, identity, times, length, ifElse, always } from 'ramda';
|
|
14
|
+
import { cond, pipe, prop, T, evolve, filter as filterFn, when, identity, times, length, ifElse, always } from 'ramda';
|
|
15
15
|
import mdm, { profile } from '@reltio/mdm-module';
|
|
16
|
-
import { ActivityFilter, addGlobalFilterToQuery, getRelationsForDataTenantEntity, getRelationsForEntity, isDataTenantEntity, isTempUri, Mode, wrapInArrayIfNeeded } from '@reltio/mdm-sdk';
|
|
16
|
+
import { ActivityFilter, addGlobalFilterToQuery, getRelationsForDataTenantEntity, getRelationsForEntity, isAvailableEntityTypeUri, isAvailableRelationTypeUri, isDataTenantEntity, isObject, isTempUri, Mode, wrapInArrayIfNeeded } from '@reltio/mdm-sdk';
|
|
17
17
|
import { useSafePromise } from './useSafePromise';
|
|
18
18
|
import { usePrevious } from './usePrevious';
|
|
19
19
|
var buildSuggestedIds = when(identity, pipe(wrapInArrayIfNeeded, length, times(function (n) { return n + 1; })));
|
|
@@ -22,16 +22,28 @@ export var useRelationsLoader = function (_a) {
|
|
|
22
22
|
var _c = useState(false), isLoading = _c[0], setIsLoading = _c[1];
|
|
23
23
|
var dispatch = useDispatch();
|
|
24
24
|
var tenant = useSelector(mdm.selectors.getTenant);
|
|
25
|
+
var metadata = useSelector(mdm.selectors.getMetadata);
|
|
25
26
|
var dtssPath = useSelector(mdm.selectors.getDtssPath);
|
|
26
27
|
var _d = useSelector(mdm.selectors.getGlobalSearchRequestOptions) || {}, activityFilter = _d.activityFilter, globalFilter = _d.globalFilter;
|
|
27
28
|
var safePromise = useSafePromise();
|
|
29
|
+
var processContent = function (content) {
|
|
30
|
+
var getUri = when(isObject, prop('uri'));
|
|
31
|
+
var filterRelation = pipe(getUri, isAvailableRelationTypeUri(metadata));
|
|
32
|
+
return evolve({
|
|
33
|
+
entityTypes: filterFn(isAvailableEntityTypeUri(metadata)),
|
|
34
|
+
inRelations: filterFn(filterRelation),
|
|
35
|
+
outRelations: filterFn(filterRelation),
|
|
36
|
+
nextEntry: processContent
|
|
37
|
+
})(content);
|
|
38
|
+
};
|
|
28
39
|
var suggested = config.suggested;
|
|
29
40
|
var options = useMemo(function () { return ({
|
|
30
41
|
searchByOv: searchByOv
|
|
31
42
|
}); }, [searchByOv]);
|
|
32
43
|
var loadRelations = useCallback(function () {
|
|
33
44
|
if (entity === null || entity === void 0 ? void 0 : entity.uri) {
|
|
34
|
-
var
|
|
45
|
+
var processedConfig = processContent(config.content);
|
|
46
|
+
var requestConfig_1 = __assign(__assign({}, processedConfig), { sortBy: sorting === null || sorting === void 0 ? void 0 : sorting.field, order: sorting === null || sorting === void 0 ? void 0 : sorting.order, returnDates: true, returnObjects: true, activeness: {
|
|
35
47
|
relation: relationActivityFilter || ActivityFilter.ALL,
|
|
36
48
|
entity: activityFilter
|
|
37
49
|
}, max: rowsPerPage, offset: page * rowsPerPage, filter: addGlobalFilterToQuery(globalFilter, filter) || undefined, suggested: buildSuggestedIds(suggested) });
|
|
@@ -68,6 +80,7 @@ export var useRelationsLoader = function (_a) {
|
|
|
68
80
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
69
81
|
}, [
|
|
70
82
|
activityFilter,
|
|
83
|
+
metadata,
|
|
71
84
|
config,
|
|
72
85
|
dispatch,
|
|
73
86
|
dtssPath,
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1331",
|
|
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.
|
|
11
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
10
|
+
"@reltio/mdm-module": "^1.4.1331",
|
|
11
|
+
"@reltio/mdm-sdk": "^1.4.1331",
|
|
12
12
|
"classnames": "^2.2.5",
|
|
13
13
|
"d3-cloud": "^1.2.5",
|
|
14
14
|
"d3-geo": "^2.0.1",
|