@reltio/components 1.4.2204 → 1.4.2206

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.
@@ -28,28 +28,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.ChangeItemEditor = void 0;
30
30
  var react_1 = __importStar(require("react"));
31
- var ramda_1 = require("ramda");
32
31
  var classnames_1 = __importDefault(require("classnames"));
32
+ var ramda_1 = require("ramda");
33
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
33
34
  var Replay_1 = __importDefault(require("@mui/icons-material/Replay"));
34
35
  var Button_1 = __importDefault(require("@mui/material/Button"));
35
- var ui_i18n_1 = __importDefault(require("ui-i18n"));
36
36
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
37
37
  var MdmModuleContext_1 = require("../../../../../contexts/MdmModuleContext");
38
38
  var DataTypeValue_1 = require("../../../../../DataTypeValue");
39
+ var SmallIconButton_1 = require("../../../../../SmallIconButton");
39
40
  var common_1 = require("../../../helpers/common");
41
+ var helpers_1 = require("../../helpers/helpers");
40
42
  var OperationChip_1 = require("../../../OperationChip");
41
43
  var RelationEntityLink_1 = require("../../../RelationEntityLink");
44
+ var useChangeRequestEditor_1 = require("../../hooks/useChangeRequestEditor");
42
45
  var ChangeItemLabel_1 = require("../ChangeItemLabel");
43
46
  var DCRValueEditor_1 = require("../DCRValueEditor");
44
47
  var StatusChips_1 = require("../StatusChips");
45
- var SmallIconButton_1 = require("../../../../../SmallIconButton");
46
- var useChangeRequestEditor_1 = require("../../hooks/useChangeRequestEditor");
47
48
  var ChangeItemEditor_module_css_1 = __importDefault(require("./ChangeItemEditor.module.css"));
48
49
  var ChangeItemEditor = function (_a) {
49
50
  var _b, _c, _d;
50
51
  var change = _a.change, _e = _a.editable, editable = _e === void 0 ? true : _e, classes = _a.classes;
51
52
  var metadata = (0, MdmModuleContext_1.useMdmMetadata)();
52
53
  var _f = (0, useChangeRequestEditor_1.useChangeRequestEditor)({ change: change }), handleChange = _f.handleChange, handleReject = _f.handleReject, handleRevert = _f.handleRevert, lineData = _f.lineData, isLineRejected = _f.isLineRejected, isParentLineRejected = _f.isParentLineRejected, isUpdated = _f.isUpdated, hasChangeId = _f.hasChangeId;
54
+ var entity = (0, MdmModuleContext_1.useMdmEntity)();
55
+ var entityType = (0, mdm_sdk_1.getEntityType)(metadata, entity === null || entity === void 0 ? void 0 : entity.type);
53
56
  var isUpdateOperation = change.operation === mdm_sdk_1.DCROperationTypes.EDITED;
54
57
  var isAddOperation = change.operation === mdm_sdk_1.DCROperationTypes.ADDED;
55
58
  var hasAnyValue = Boolean(change.oldValue || change.newValue);
@@ -60,17 +63,19 @@ var ChangeItemEditor = function (_a) {
60
63
  var dataTypeDefinition = (0, react_1.useMemo)(function () {
61
64
  return change.attributeType && (0, common_1.getDataTypeDefinition)(change.attributeType, newValue || oldValue);
62
65
  }, [change.attributeType, newValue, oldValue]);
63
- var shouldShowValueEditor = (isUpdateOperation || isAddOperation) && editable;
64
66
  var shouldShowOperationChip = hasAnyValue && change.operation;
65
67
  var isRolesOrTags = ((_b = change === null || change === void 0 ? void 0 : change.attributeType) === null || _b === void 0 ? void 0 : _b.uri) === mdm_sdk_1.EntityAttrTypes.roles.uri ||
66
68
  ((_c = change === null || change === void 0 ? void 0 : change.attributeType) === null || _c === void 0 ? void 0 : _c.uri) === mdm_sdk_1.EntityAttrTypes.tags.uri;
69
+ var canEdit = (0, helpers_1.checkCanInitiateChangeRequest)(metadata, entityType, change);
70
+ var shouldShowValueEditor = (isUpdateOperation || isAddOperation) && editable && canEdit;
67
71
  var preparedValue = (0, react_1.useMemo)(function () {
68
72
  return isRolesOrTags
69
73
  ? (0, common_1.prepareRolesOrTagsValue)(metadata, newValue, change.attributeType.uri)
70
74
  : newValue;
71
75
  }, [isRolesOrTags, metadata, newValue, (_d = change.attributeType) === null || _d === void 0 ? void 0 : _d.uri]);
72
76
  var showUndoButton = (isUpdated || isLineRejected) && !isParentLineRejected;
73
- var showRejectButton = !isLineRejected &&
77
+ var showRejectButton = canEdit &&
78
+ !isLineRejected &&
74
79
  !isUpdated &&
75
80
  !isParentLineRejected &&
76
81
  hasChangeId &&
@@ -1,5 +1,6 @@
1
- import { DCRChanges, GroupedObjectsInfo, EnrichedDCRChanges } from '@reltio/mdm-sdk';
1
+ import { DCRChanges, GroupedObjectsInfo, EnrichedDCRChanges, TEntityType, Metadata } from '@reltio/mdm-sdk';
2
2
  import { Diff, Title } from '../../types';
3
3
  export declare const isEditableChange: (change: Diff, entityInfo: GroupedObjectsInfo["entity"]) => boolean;
4
4
  export declare const addLineIdToValue: (data: DCRChanges) => EnrichedDCRChanges;
5
5
  export declare const isDiffChange: (change: Diff | Title) => change is Diff;
6
+ export declare const checkCanInitiateChangeRequest: (metadata: Metadata, entityType: TEntityType, change: Diff) => any;
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.isDiffChange = exports.addLineIdToValue = exports.isEditableChange = void 0;
14
+ exports.checkCanInitiateChangeRequest = exports.isDiffChange = exports.addLineIdToValue = exports.isEditableChange = void 0;
15
15
  var ramda_1 = require("ramda");
16
16
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
17
17
  var isEditableChange = function (change, entityInfo) {
@@ -107,3 +107,42 @@ var isDiffChange = function (change) {
107
107
  return (0, ramda_1.has)('level', change);
108
108
  };
109
109
  exports.isDiffChange = isDiffChange;
110
+ var checkCanInitiateChangeRequest = function (metadata, entityType, change) {
111
+ if (change.relationType) {
112
+ return checkCanInitChangeRequestForRelation(metadata, change.attributeValue, change.relationType);
113
+ }
114
+ if ((0, mdm_sdk_1.isRoleAttrType)(change.attributeType) || (0, mdm_sdk_1.isTagAttrType)(change.attributeType)) {
115
+ return checkCanInitChangeRequestForSpecialAttribute(entityType);
116
+ }
117
+ return checkCanInitChangeRequestForAttribute(metadata, change.attributeValue, change.attributeType);
118
+ };
119
+ exports.checkCanInitiateChangeRequest = checkCanInitiateChangeRequest;
120
+ var checkCanInitChangeRequestForSpecialAttribute = function (entityType) {
121
+ return (0, mdm_sdk_1.checkMetadataPermission)(mdm_sdk_1.MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType);
122
+ };
123
+ var checkCanInitChangeRequestForAttribute = function (metadata, attributeValue, attributeType) {
124
+ var _a;
125
+ var preparedAttributeValue = typeof (attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.value) === 'object' && 'newValue' in attributeValue.value
126
+ ? (_a = attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.value) === null || _a === void 0 ? void 0 : _a.newValue
127
+ : attributeValue;
128
+ return ((0, mdm_sdk_1.checkMetadataPermission)(mdm_sdk_1.MetadataPermissions.INITIATE_CHANGE_REQUEST, attributeType) &&
129
+ (0, mdm_sdk_1.checkSubAttributesPermissions)(mdm_sdk_1.MetadataPermissions.INITIATE_CHANGE_REQUEST, metadata, preparedAttributeValue, attributeType));
130
+ };
131
+ var checkCanInitChangeRequestForRelation = function (metadata, attributeValue, relationType) {
132
+ var preparedAttributeValue = Object.entries(attributeValue)
133
+ .filter(function (_a) {
134
+ var key = _a[0];
135
+ return relationType.attributes.some(function (attr) { return attr.name === key; });
136
+ })
137
+ .reduce(function (acc, _a) {
138
+ var key = _a[0], value = _a[1];
139
+ acc[key] = value;
140
+ return acc;
141
+ }, {});
142
+ return ((0, mdm_sdk_1.checkMetadataPermission)(mdm_sdk_1.MetadataPermissions.INITIATE_CHANGE_REQUEST, relationType) &&
143
+ Object.keys(preparedAttributeValue).every(function (attributeValueKey) {
144
+ var attributeType = relationType.attributes.find(function (attribute) { return attribute.name === attributeValueKey; });
145
+ return ((0, mdm_sdk_1.checkMetadataPermission)(mdm_sdk_1.MetadataPermissions.INITIATE_CHANGE_REQUEST, attributeType) &&
146
+ (0, mdm_sdk_1.checkSubAttributesPermissions)(mdm_sdk_1.MetadataPermissions.INITIATE_CHANGE_REQUEST, metadata, preparedAttributeValue[attributeValueKey], attributeType));
147
+ }));
148
+ };
@@ -1,26 +1,29 @@
1
1
  import React, { useMemo } from 'react';
2
- import { isNil } from 'ramda';
3
2
  import classnames from 'classnames';
3
+ import { isNil } from 'ramda';
4
+ import i18n from 'ui-i18n';
4
5
  import ReplayIcon from '@mui/icons-material/Replay';
5
6
  import Button from '@mui/material/Button';
6
- import i18n from 'ui-i18n';
7
- import { DCROperationTypes, EntityAttrTypes, getAttributeValue } from '@reltio/mdm-sdk';
8
- import { useMdmMetadata } from '../../../../../contexts/MdmModuleContext';
7
+ import { DCROperationTypes, EntityAttrTypes, getAttributeValue, getEntityType } from '@reltio/mdm-sdk';
8
+ import { useMdmEntity, useMdmMetadata } from '../../../../../contexts/MdmModuleContext';
9
9
  import { DataTypeValue } from '../../../../../DataTypeValue';
10
+ import { SmallIconButton } from '../../../../../SmallIconButton';
10
11
  import { getDataTypeDefinition, prepareRolesOrTagsValue } from '../../../helpers/common';
12
+ import { checkCanInitiateChangeRequest } from '../../helpers/helpers';
11
13
  import { OperationChip } from '../../../OperationChip';
12
14
  import { RelationEntityLink } from '../../../RelationEntityLink';
15
+ import { useChangeRequestEditor } from '../../hooks/useChangeRequestEditor';
13
16
  import { ChangeItemLabel } from '../ChangeItemLabel';
14
17
  import { DCRValueEditor } from '../DCRValueEditor';
15
18
  import { StatusChips } from '../StatusChips';
16
- import { SmallIconButton } from '../../../../../SmallIconButton';
17
- import { useChangeRequestEditor } from '../../hooks/useChangeRequestEditor';
18
19
  import styles from './ChangeItemEditor.module.css';
19
20
  export var ChangeItemEditor = function (_a) {
20
21
  var _b, _c, _d;
21
22
  var change = _a.change, _e = _a.editable, editable = _e === void 0 ? true : _e, classes = _a.classes;
22
23
  var metadata = useMdmMetadata();
23
24
  var _f = useChangeRequestEditor({ change: change }), handleChange = _f.handleChange, handleReject = _f.handleReject, handleRevert = _f.handleRevert, lineData = _f.lineData, isLineRejected = _f.isLineRejected, isParentLineRejected = _f.isParentLineRejected, isUpdated = _f.isUpdated, hasChangeId = _f.hasChangeId;
25
+ var entity = useMdmEntity();
26
+ var entityType = getEntityType(metadata, entity === null || entity === void 0 ? void 0 : entity.type);
24
27
  var isUpdateOperation = change.operation === DCROperationTypes.EDITED;
25
28
  var isAddOperation = change.operation === DCROperationTypes.ADDED;
26
29
  var hasAnyValue = Boolean(change.oldValue || change.newValue);
@@ -31,17 +34,19 @@ export var ChangeItemEditor = function (_a) {
31
34
  var dataTypeDefinition = useMemo(function () {
32
35
  return change.attributeType && getDataTypeDefinition(change.attributeType, newValue || oldValue);
33
36
  }, [change.attributeType, newValue, oldValue]);
34
- var shouldShowValueEditor = (isUpdateOperation || isAddOperation) && editable;
35
37
  var shouldShowOperationChip = hasAnyValue && change.operation;
36
38
  var isRolesOrTags = ((_b = change === null || change === void 0 ? void 0 : change.attributeType) === null || _b === void 0 ? void 0 : _b.uri) === EntityAttrTypes.roles.uri ||
37
39
  ((_c = change === null || change === void 0 ? void 0 : change.attributeType) === null || _c === void 0 ? void 0 : _c.uri) === EntityAttrTypes.tags.uri;
40
+ var canEdit = checkCanInitiateChangeRequest(metadata, entityType, change);
41
+ var shouldShowValueEditor = (isUpdateOperation || isAddOperation) && editable && canEdit;
38
42
  var preparedValue = useMemo(function () {
39
43
  return isRolesOrTags
40
44
  ? prepareRolesOrTagsValue(metadata, newValue, change.attributeType.uri)
41
45
  : newValue;
42
46
  }, [isRolesOrTags, metadata, newValue, (_d = change.attributeType) === null || _d === void 0 ? void 0 : _d.uri]);
43
47
  var showUndoButton = (isUpdated || isLineRejected) && !isParentLineRejected;
44
- var showRejectButton = !isLineRejected &&
48
+ var showRejectButton = canEdit &&
49
+ !isLineRejected &&
45
50
  !isUpdated &&
46
51
  !isParentLineRejected &&
47
52
  hasChangeId &&
@@ -1,5 +1,6 @@
1
- import { DCRChanges, GroupedObjectsInfo, EnrichedDCRChanges } from '@reltio/mdm-sdk';
1
+ import { DCRChanges, GroupedObjectsInfo, EnrichedDCRChanges, TEntityType, Metadata } from '@reltio/mdm-sdk';
2
2
  import { Diff, Title } from '../../types';
3
3
  export declare const isEditableChange: (change: Diff, entityInfo: GroupedObjectsInfo["entity"]) => boolean;
4
4
  export declare const addLineIdToValue: (data: DCRChanges) => EnrichedDCRChanges;
5
5
  export declare const isDiffChange: (change: Diff | Title) => change is Diff;
6
+ export declare const checkCanInitiateChangeRequest: (metadata: Metadata, entityType: TEntityType, change: Diff) => any;
@@ -10,7 +10,7 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { clone, has, isNil } from 'ramda';
13
- import { DCROperationTypes, DCRTypes, isRelationTypeUri } from '@reltio/mdm-sdk';
13
+ import { DCROperationTypes, DCRTypes, isRelationTypeUri, MetadataPermissions, checkMetadataPermission, isRoleAttrType, isTagAttrType, checkSubAttributesPermissions } from '@reltio/mdm-sdk';
14
14
  export var isEditableChange = function (change, entityInfo) {
15
15
  var _a;
16
16
  var currentAttributeTypeUri = (_a = change.attributeType) === null || _a === void 0 ? void 0 : _a.uri;
@@ -101,3 +101,41 @@ export var addLineIdToValue = function (data) {
101
101
  export var isDiffChange = function (change) {
102
102
  return has('level', change);
103
103
  };
104
+ export var checkCanInitiateChangeRequest = function (metadata, entityType, change) {
105
+ if (change.relationType) {
106
+ return checkCanInitChangeRequestForRelation(metadata, change.attributeValue, change.relationType);
107
+ }
108
+ if (isRoleAttrType(change.attributeType) || isTagAttrType(change.attributeType)) {
109
+ return checkCanInitChangeRequestForSpecialAttribute(entityType);
110
+ }
111
+ return checkCanInitChangeRequestForAttribute(metadata, change.attributeValue, change.attributeType);
112
+ };
113
+ var checkCanInitChangeRequestForSpecialAttribute = function (entityType) {
114
+ return checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, entityType);
115
+ };
116
+ var checkCanInitChangeRequestForAttribute = function (metadata, attributeValue, attributeType) {
117
+ var _a;
118
+ var preparedAttributeValue = typeof (attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.value) === 'object' && 'newValue' in attributeValue.value
119
+ ? (_a = attributeValue === null || attributeValue === void 0 ? void 0 : attributeValue.value) === null || _a === void 0 ? void 0 : _a.newValue
120
+ : attributeValue;
121
+ return (checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, attributeType) &&
122
+ checkSubAttributesPermissions(MetadataPermissions.INITIATE_CHANGE_REQUEST, metadata, preparedAttributeValue, attributeType));
123
+ };
124
+ var checkCanInitChangeRequestForRelation = function (metadata, attributeValue, relationType) {
125
+ var preparedAttributeValue = Object.entries(attributeValue)
126
+ .filter(function (_a) {
127
+ var key = _a[0];
128
+ return relationType.attributes.some(function (attr) { return attr.name === key; });
129
+ })
130
+ .reduce(function (acc, _a) {
131
+ var key = _a[0], value = _a[1];
132
+ acc[key] = value;
133
+ return acc;
134
+ }, {});
135
+ return (checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, relationType) &&
136
+ Object.keys(preparedAttributeValue).every(function (attributeValueKey) {
137
+ var attributeType = relationType.attributes.find(function (attribute) { return attribute.name === attributeValueKey; });
138
+ return (checkMetadataPermission(MetadataPermissions.INITIATE_CHANGE_REQUEST, attributeType) &&
139
+ checkSubAttributesPermissions(MetadataPermissions.INITIATE_CHANGE_REQUEST, metadata, preparedAttributeValue[attributeValueKey], attributeType));
140
+ }));
141
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.2204",
3
+ "version": "1.4.2206",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./index.js",
@@ -11,7 +11,7 @@
11
11
  "@fluentui/react-context-selector": "^9.1.26",
12
12
  "@googlemaps/markerclusterer": "^2.5.3",
13
13
  "@react-sigma/core": "3.4.0",
14
- "@reltio/mdm-sdk": "^1.4.2006",
14
+ "@reltio/mdm-sdk": "^1.4.2008",
15
15
  "@vis.gl/react-google-maps": "^1.3.0",
16
16
  "d3-cloud": "^1.2.5",
17
17
  "d3-geo": "^2.0.1",