@reltio/components 1.4.2206 → 1.4.2208

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 (49) hide show
  1. package/cjs/contexts/WorkflowTasksContext/index.d.ts +1 -0
  2. package/cjs/features/workflow/ChangeRequestEditor/ChangeRequestEditor.js +1 -2
  3. package/cjs/features/workflow/ChangeRequestEditor/components/ChangeItemEditor/ChangeItemEditor.js +3 -4
  4. package/cjs/features/workflow/ChangeRequestEditor/components/ChangeItemRow/ChangeItemRow.js +4 -4
  5. package/cjs/features/workflow/ChangeRequestEditor/components/DCRValueEditor/DCRValueEditor.d.ts +1 -1
  6. package/cjs/features/workflow/ChangeRequestEditor/components/DCRValueEditorFactory/DCRValueEditorFactory.d.ts +1 -1
  7. package/cjs/features/workflow/ChangeRequestEditor/hooks/useChangeRequestEditor.d.ts +2 -1
  8. package/cjs/features/workflow/ChangeRequestEditor/hooks/useChangeRequestEditor.js +14 -8
  9. package/cjs/features/workflow/ReviewDCRDialog/ReviewDCRDialog.js +10 -7
  10. package/cjs/features/workflow/TaskActionButtons/TaskActionButtons.js +6 -4
  11. package/cjs/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.js +12 -3
  12. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.js +6 -4
  13. package/cjs/features/workflow/{ChangeRequestEditor/context → contexts/ChangeRequestEditorContext}/index.d.ts +1 -0
  14. package/cjs/features/workflow/{ChangeRequestEditor/context → contexts/ChangeRequestEditorContext}/index.js +12 -0
  15. package/cjs/features/workflow/helpers/attributes.js +2 -2
  16. package/cjs/features/workflow/helpers/attributes.test.js +9 -6
  17. package/cjs/features/workflow/helpers/dcr.d.ts +8 -1
  18. package/cjs/features/workflow/helpers/dcr.js +186 -1
  19. package/cjs/features/workflow/helpers/merge.js +2 -1
  20. package/cjs/features/workflow/hooks/useApplyDcrChanges.d.ts +3 -0
  21. package/cjs/features/workflow/hooks/useApplyDcrChanges.js +145 -0
  22. package/cjs/features/workflow/hooks/useWorkflowActions.d.ts +7 -2
  23. package/cjs/features/workflow/hooks/useWorkflowActions.js +31 -8
  24. package/cjs/features/workflow/types.d.ts +4 -0
  25. package/contexts/WorkflowTasksContext/index.d.ts +1 -0
  26. package/features/workflow/ChangeRequestEditor/ChangeRequestEditor.js +1 -2
  27. package/features/workflow/ChangeRequestEditor/components/ChangeItemEditor/ChangeItemEditor.js +3 -4
  28. package/features/workflow/ChangeRequestEditor/components/ChangeItemRow/ChangeItemRow.js +1 -1
  29. package/features/workflow/ChangeRequestEditor/components/DCRValueEditor/DCRValueEditor.d.ts +1 -1
  30. package/features/workflow/ChangeRequestEditor/components/DCRValueEditorFactory/DCRValueEditorFactory.d.ts +1 -1
  31. package/features/workflow/ChangeRequestEditor/hooks/useChangeRequestEditor.d.ts +2 -1
  32. package/features/workflow/ChangeRequestEditor/hooks/useChangeRequestEditor.js +8 -2
  33. package/features/workflow/ReviewDCRDialog/ReviewDCRDialog.js +10 -7
  34. package/features/workflow/TaskActionButtons/TaskActionButtons.js +6 -4
  35. package/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.js +14 -5
  36. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.js +6 -4
  37. package/features/workflow/{ChangeRequestEditor/context → contexts/ChangeRequestEditorContext}/index.d.ts +1 -0
  38. package/features/workflow/{ChangeRequestEditor/context → contexts/ChangeRequestEditorContext}/index.js +13 -1
  39. package/features/workflow/helpers/attributes.js +2 -2
  40. package/features/workflow/helpers/attributes.test.js +9 -6
  41. package/features/workflow/helpers/dcr.d.ts +8 -1
  42. package/features/workflow/helpers/dcr.js +186 -2
  43. package/features/workflow/helpers/merge.js +2 -1
  44. package/features/workflow/hooks/useApplyDcrChanges.d.ts +3 -0
  45. package/features/workflow/hooks/useApplyDcrChanges.js +141 -0
  46. package/features/workflow/hooks/useWorkflowActions.d.ts +7 -2
  47. package/features/workflow/hooks/useWorkflowActions.js +31 -8
  48. package/features/workflow/types.d.ts +4 -0
  49. package/package.json +2 -2
@@ -7,4 +7,5 @@ export declare const WorkflowTasksContext: React.Context<{
7
7
  updateTaskState: (taskId: WorkflowTaskData["taskId"], payload: Partial<WorkflowTaskData>) => void;
8
8
  loadTasks: () => void;
9
9
  onActionSuccess?: (action: string) => void;
10
+ reviewDCR?: boolean;
10
11
  }>;
@@ -34,7 +34,6 @@ var Typography_1 = __importDefault(require("@mui/material/Typography"));
34
34
  var helpers_1 = require("./helpers/helpers");
35
35
  var SuggestedChanges_1 = __importDefault(require("../../../icons/SuggestedChanges"));
36
36
  var EntityChangesGroup_1 = require("./components/EntityChangesGroup");
37
- var context_1 = require("./context");
38
37
  var ChangeRequestEditor_module_css_1 = __importDefault(require("./ChangeRequestEditor.module.css"));
39
38
  var ChangeRequestEditor = function (_a) {
40
39
  var dcr = _a.dcr, task = _a.task, groupedObjects = _a.groupedObjects;
@@ -52,6 +51,6 @@ var ChangeRequestEditor = function (_a) {
52
51
  react_1.default.createElement("div", { className: ChangeRequestEditor_module_css_1.default.suggestedChangesIcon },
53
52
  react_1.default.createElement(SuggestedChanges_1.default, null)),
54
53
  react_1.default.createElement(Typography_1.default, { variant: "h6", className: ChangeRequestEditor_module_css_1.default.suggestedChangesTitle }, ui_i18n_1.default.text('Suggested changes'))),
55
- dcrLoaded ? (react_1.default.createElement(context_1.ChangeRequestEditorProvider, null, groupedObjects.map(function (object, index) { return (react_1.default.createElement(EntityChangesGroup_1.EntityChangesGroup, { key: "entity-".concat(index), entityInfo: object.entity, relationsInfo: object.relations, task: task, dcr: enrichedDCR })); }))) : (react_1.default.createElement(EntityChangesGroup_1.SkeletonEntityChangesGroupLoader, null))));
54
+ dcrLoaded ? (groupedObjects.map(function (object, index) { return (react_1.default.createElement(EntityChangesGroup_1.EntityChangesGroup, { key: "entity-".concat(index), entityInfo: object.entity, relationsInfo: object.relations, task: task, dcr: enrichedDCR })); })) : (react_1.default.createElement(EntityChangesGroup_1.SkeletonEntityChangesGroupLoader, null))));
56
55
  };
57
56
  exports.ChangeRequestEditor = ChangeRequestEditor;
@@ -50,12 +50,11 @@ var ChangeItemEditor = function (_a) {
50
50
  var _b, _c, _d;
51
51
  var change = _a.change, _e = _a.editable, editable = _e === void 0 ? true : _e, classes = _a.classes;
52
52
  var metadata = (0, MdmModuleContext_1.useMdmMetadata)();
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;
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, isSubAttributeOfDeletedAttribute = _f.isSubAttributeOfDeletedAttribute;
54
54
  var entity = (0, MdmModuleContext_1.useMdmEntity)();
55
55
  var entityType = (0, mdm_sdk_1.getEntityType)(metadata, entity === null || entity === void 0 ? void 0 : entity.type);
56
56
  var isUpdateOperation = change.operation === mdm_sdk_1.DCROperationTypes.EDITED;
57
57
  var isAddOperation = change.operation === mdm_sdk_1.DCROperationTypes.ADDED;
58
- var hasAnyValue = Boolean(change.oldValue || change.newValue);
59
58
  var oldValue = (0, mdm_sdk_1.getAttributeValue)(change.oldValue);
60
59
  var currentNewValue = !(0, ramda_1.isNil)(lineData === null || lineData === void 0 ? void 0 : lineData.value) && !isParentLineRejected ? lineData.value : change.newValue;
61
60
  var newValue = (0, mdm_sdk_1.getAttributeValue)(currentNewValue);
@@ -63,7 +62,6 @@ var ChangeItemEditor = function (_a) {
63
62
  var dataTypeDefinition = (0, react_1.useMemo)(function () {
64
63
  return change.attributeType && (0, common_1.getDataTypeDefinition)(change.attributeType, newValue || oldValue);
65
64
  }, [change.attributeType, newValue, oldValue]);
66
- var shouldShowOperationChip = hasAnyValue && change.operation;
67
65
  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 ||
68
66
  ((_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
67
  var canEdit = (0, helpers_1.checkCanInitiateChangeRequest)(metadata, entityType, change);
@@ -79,6 +77,7 @@ var ChangeItemEditor = function (_a) {
79
77
  !isUpdated &&
80
78
  !isParentLineRejected &&
81
79
  hasChangeId &&
80
+ !isSubAttributeOfDeletedAttribute &&
82
81
  !(change.isReferenceSubAttribute && !editable);
83
82
  var showStatusChips = !isParentLineRejected;
84
83
  var isRejected = isLineRejected || isParentLineRejected;
@@ -89,7 +88,7 @@ var ChangeItemEditor = function (_a) {
89
88
  shouldShowValueEditor ? (react_1.default.createElement(DCRValueEditor_1.DCRValueEditor, { attributeType: change.attributeType, value: currentNewValue, onChange: handleChange, disabled: !editable || isRejected })) : (hasNewValue && (react_1.default.createElement("div", { className: ChangeItemEditor_module_css_1.default.value },
90
89
  react_1.default.createElement(DataTypeValue_1.DataTypeValue, { value: preparedValue, dataTypeDefinition: dataTypeDefinition }))))),
91
90
  react_1.default.createElement("div", { className: ChangeItemEditor_module_css_1.default.revertColumn }, showUndoButton && (react_1.default.createElement(SmallIconButton_1.SmallIconButton, { icon: Replay_1.default, onClick: handleRevert, className: ChangeItemEditor_module_css_1.default.revertButton, title: ui_i18n_1.default.text('Undo'), size: "S" }))),
92
- react_1.default.createElement("div", { className: ChangeItemEditor_module_css_1.default.operationColumn }, shouldShowOperationChip && (react_1.default.createElement(OperationChip_1.OperationChip, { operation: change.operation, size: "small", variant: "outlined" }))),
91
+ react_1.default.createElement("div", { className: ChangeItemEditor_module_css_1.default.operationColumn }, change.operation && react_1.default.createElement(OperationChip_1.OperationChip, { operation: change.operation, size: "small", variant: "outlined" })),
93
92
  react_1.default.createElement("div", { className: ChangeItemEditor_module_css_1.default.statusColumn }, showStatusChips && react_1.default.createElement(StatusChips_1.StatusChips, { showUpdatedChip: isUpdated, showRejectedChip: isLineRejected })),
94
93
  react_1.default.createElement("div", { className: ChangeItemEditor_module_css_1.default.rejectColumn }, showRejectButton && (react_1.default.createElement(Button_1.default, { onClick: handleReject, className: (0, classnames_1.default)(ChangeItemEditor_module_css_1.default.rejectButton, classes === null || classes === void 0 ? void 0 : classes.rejectButton), title: ui_i18n_1.default.text('Reject'), size: "medium" }, ui_i18n_1.default.text('Reject'))))));
95
94
  };
@@ -9,7 +9,7 @@ var react_1 = __importDefault(require("react"));
9
9
  var react_context_selector_1 = require("@fluentui/react-context-selector");
10
10
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
11
11
  var helpers_1 = require("../../helpers/helpers");
12
- var context_1 = require("../../context");
12
+ var ChangeRequestEditorContext_1 = require("../../../contexts/ChangeRequestEditorContext");
13
13
  var ChangeItemEditor_1 = require("../ChangeItemEditor");
14
14
  var merge_1 = require("../../../helpers/merge");
15
15
  var ChangeItemRow_module_css_1 = __importDefault(require("./ChangeItemRow.module.css"));
@@ -17,13 +17,13 @@ var ChangeItemRow = function (_a) {
17
17
  var _b;
18
18
  var change = _a.change, entityInfo = _a.entityInfo;
19
19
  var lineIds = change.lineIds || (0, merge_1.extractLineIds)(change === null || change === void 0 ? void 0 : change.newValue);
20
- var isParentLineRejected = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) {
20
+ var isParentLineRejected = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) {
21
21
  return context.getIsParentLineRejected(lineIds === null || lineIds === void 0 ? void 0 : lineIds[0]);
22
22
  });
23
- var isLineRejected = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) {
23
+ var isLineRejected = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) {
24
24
  return context.getIsLineRejected(lineIds === null || lineIds === void 0 ? void 0 : lineIds[0]);
25
25
  });
26
- var isUpdated = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) {
26
+ var isUpdated = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) {
27
27
  return context.getIsLineUpdated(lineIds === null || lineIds === void 0 ? void 0 : lineIds[0]);
28
28
  });
29
29
  var isEditedOperation = change.operation === mdm_sdk_1.DCROperationTypes.EDITED;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { AttributeType, ChangeValue, PrimitiveValue, SimpleAttributeValue } from '@reltio/mdm-sdk';
3
- import { LineDataValue } from '../../context';
3
+ import { LineDataValue } from '../../../contexts/ChangeRequestEditorContext';
4
4
  type Props = {
5
5
  attributeType: AttributeType;
6
6
  value: LineDataValue | ChangeValue;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { AttributeType, ChangeValue, DataTypeDefinition, PrimitiveValue, SimpleAttributeValue } from '@reltio/mdm-sdk';
3
- import { LineDataValue } from '../../context';
3
+ import { LineDataValue } from '../../../contexts/ChangeRequestEditorContext';
4
4
  type Props = {
5
5
  attributeType: AttributeType;
6
6
  value: LineDataValue | ChangeValue;
@@ -7,10 +7,11 @@ export declare const useChangeRequestEditor: ({ change }: Props) => {
7
7
  handleChange: (newValue: SimpleAttributeValue | string[] | PrimitiveValue) => void;
8
8
  handleReject: () => void;
9
9
  handleRevert: () => void;
10
- lineData: import("../context").LineData;
10
+ lineData: import("../../contexts/ChangeRequestEditorContext").LineData;
11
11
  isLineRejected: boolean;
12
12
  isParentLineRejected: boolean;
13
13
  isUpdated: boolean;
14
14
  hasChangeId: boolean;
15
+ isSubAttributeOfDeletedAttribute: any;
15
16
  };
16
17
  export {};
@@ -3,22 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useChangeRequestEditor = void 0;
4
4
  var react_1 = require("react");
5
5
  var react_context_selector_1 = require("@fluentui/react-context-selector");
6
- var context_1 = require("../context");
6
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
7
+ var ChangeRequestEditorContext_1 = require("../../contexts/ChangeRequestEditorContext");
7
8
  var merge_1 = require("../../helpers/merge");
8
9
  var emptyLineIds = [];
9
10
  var useChangeRequestEditor = function (_a) {
10
11
  var change = _a.change;
11
12
  var lineIds = change.lineIds || (0, merge_1.extractLineIds)(change === null || change === void 0 ? void 0 : change.newValue) || emptyLineIds;
12
- var lineData = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) { return context.getLineData(lineIds[0]); });
13
- var updateChange = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) { return context.updateChange; });
14
- var rejectChange = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) { return context.rejectChange; });
15
- var revertChangeUpdateOrReject = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) { return context.revertChangeUpdateOrReject; });
16
- var isParentLineRejected = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) {
13
+ var lineData = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) { return context.getLineData(lineIds[0]); });
14
+ var updateChange = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) { return context.updateChange; });
15
+ var rejectChange = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) { return context.rejectChange; });
16
+ var revertChangeUpdateOrReject = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) { return context.revertChangeUpdateOrReject; });
17
+ var isParentLineRejected = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) {
17
18
  return context.getIsParentLineRejected(lineIds[0]);
18
19
  });
19
- var isUpdated = (0, react_context_selector_1.useContextSelector)(context_1.ChangeRequestEditorContext, function (context) { return context.getIsLineUpdated(lineIds[0]); });
20
+ var isUpdated = (0, react_context_selector_1.useContextSelector)(ChangeRequestEditorContext_1.ChangeRequestEditorContext, function (context) { return context.getIsLineUpdated(lineIds[0]); });
20
21
  var isLineRejected = lineData === null || lineData === void 0 ? void 0 : lineData.isRejected;
21
22
  var hasChangeId = lineIds.length > 0;
23
+ var isSubAttributeOfDeletedAttribute = change.operation === mdm_sdk_1.DCROperationTypes.DELETED &&
24
+ change.level > 0 &&
25
+ lineIds.length > 0 &&
26
+ lineIds[0].includes('/value/');
22
27
  var handleChange = (0, react_1.useCallback)(function (newValue) {
23
28
  updateChange(lineIds, typeof newValue === 'object' && 'value' in newValue ? newValue : { value: newValue });
24
29
  }, [lineIds, updateChange]);
@@ -36,7 +41,8 @@ var useChangeRequestEditor = function (_a) {
36
41
  isLineRejected: isLineRejected,
37
42
  isParentLineRejected: isParentLineRejected,
38
43
  isUpdated: isUpdated,
39
- hasChangeId: hasChangeId
44
+ hasChangeId: hasChangeId,
45
+ isSubAttributeOfDeletedAttribute: isSubAttributeOfDeletedAttribute
40
46
  };
41
47
  };
42
48
  exports.useChangeRequestEditor = useChangeRequestEditor;
@@ -15,7 +15,6 @@ var ui_i18n_1 = __importDefault(require("ui-i18n"));
15
15
  var useWorkflowCheckPermission_1 = require("../hooks/useWorkflowCheckPermission");
16
16
  var useWorkflowActions_1 = require("../hooks/useWorkflowActions");
17
17
  var MdmModuleContext_1 = require("../../../contexts/MdmModuleContext");
18
- var context_1 = require("../ChangeRequestEditor/context");
19
18
  var ProfileBand_1 = require("../../../ProfileBand");
20
19
  var DueDateField_1 = require("../DueDateField");
21
20
  var PrioritySelector_1 = require("../PrioritySelector");
@@ -24,17 +23,22 @@ var WorkflowComments_1 = require("../WorkflowComments");
24
23
  var WorkflowActionButtons_1 = require("../WorkflowActionButtons");
25
24
  var DCRSummaryInfo_1 = require("./components/DCRSummaryInfo/DCRSummaryInfo");
26
25
  var ChangeRequestEditor_1 = require("../ChangeRequestEditor");
26
+ var useApplyDcrChanges_1 = require("../hooks/useApplyDcrChanges");
27
27
  var ReviewDCRDialog_module_css_1 = __importDefault(require("./ReviewDCRDialog.module.css"));
28
28
  var ReviewDCRDialog = function (_a) {
29
29
  var open = _a.open, onClose = _a.onClose, dcr = _a.dcr, task = _a.task, groupedObjects = _a.groupedObjects;
30
30
  var entity = (0, MdmModuleContext_1.useMdmEntity)();
31
31
  var checkWorkflowPermission = (0, useWorkflowCheckPermission_1.useWorkflowCheckPermission)();
32
32
  var canViewComments = checkWorkflowPermission('VIEW_PROCESS_INSTANCE_COMMENTS');
33
+ var applyDcrChanges = (0, useApplyDcrChanges_1.useApplyDcrChanges)(dcr);
33
34
  var _b = (0, useWorkflowActions_1.useWorkflowActions)({
34
- taskId: task.taskId,
35
- possibleActions: task.possibleActions,
36
- assignee: task.assignee,
37
- isOpen: task.isOpen
35
+ task: {
36
+ taskId: task.taskId,
37
+ possibleActions: task.possibleActions,
38
+ assignee: task.assignee,
39
+ isOpen: task.isOpen
40
+ },
41
+ beforeAction: applyDcrChanges
38
42
  }), workflowActions = _b.actions, actionRequestIsInProgress = _b.actionRequestIsInProgress;
39
43
  return (react_1.default.createElement(Dialog_1.default, { open: open, onClose: onClose, fullScreen: true },
40
44
  react_1.default.createElement(DialogTitle_1.default, { className: ReviewDCRDialog_module_css_1.default.dialogTitle },
@@ -55,8 +59,7 @@ var ReviewDCRDialog = function (_a) {
55
59
  react_1.default.createElement("div", { className: ReviewDCRDialog_module_css_1.default.editableItem },
56
60
  react_1.default.createElement(AssigneeSelector_1.AssigneeSelector, { taskId: task.taskId, assignee: task.assignee, isTaskOpen: task.isOpen })))),
57
61
  react_1.default.createElement("div", { className: ReviewDCRDialog_module_css_1.default.changesSection },
58
- react_1.default.createElement(context_1.ChangeRequestEditorProvider, null,
59
- react_1.default.createElement(ChangeRequestEditor_1.ChangeRequestEditor, { dcr: dcr, task: task, groupedObjects: groupedObjects })))),
62
+ react_1.default.createElement(ChangeRequestEditor_1.ChangeRequestEditor, { dcr: dcr, task: task, groupedObjects: groupedObjects }))),
60
63
  canViewComments && (react_1.default.createElement(WorkflowComments_1.WorkflowComments, { workflowActions: workflowActions, actionRequestIsInProgress: actionRequestIsInProgress, preferredAction: task.preferredAction, taskId: task.taskId, processInstanceComments: task.processInstanceComments, isTaskOpen: task.isOpen, showActionButtons: false, alwaysExpanded: true, classes: {
61
64
  container: ReviewDCRDialog_module_css_1.default.commentsRootContainer,
62
65
  commentsContainer: ReviewDCRDialog_module_css_1.default.commentsContainer
@@ -12,10 +12,12 @@ var TaskActionButtons = function (_a) {
12
12
  var task = _a.task;
13
13
  var taskId = task.taskId, possibleActions = task.possibleActions, assignee = task.assignee, isOpen = task.isOpen, preferredAction = task.preferredAction;
14
14
  var _b = (0, useWorkflowActions_1.useWorkflowActions)({
15
- taskId: taskId,
16
- possibleActions: possibleActions,
17
- assignee: assignee,
18
- isOpen: isOpen
15
+ task: {
16
+ taskId: taskId,
17
+ possibleActions: possibleActions,
18
+ assignee: assignee,
19
+ isOpen: isOpen
20
+ }
19
21
  }), actions = _b.actions, disabled = _b.actionRequestIsInProgress;
20
22
  var _c = (0, ramda_1.partition)((0, ramda_1.propEq)('text', preferredAction === null || preferredAction === void 0 ? void 0 : preferredAction.label), actions), preferredActions = _c[0], otherActions = _c[1];
21
23
  return (react_1.default.createElement(react_1.default.Fragment, null,
@@ -28,6 +28,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.DataChangeRequestTaskCard = void 0;
30
30
  var react_1 = __importStar(require("react"));
31
+ var ramda_1 = require("ramda");
32
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
31
33
  var DcrTaskIcon_1 = __importDefault(require("../../../../../icons/DcrTaskIcon"));
32
34
  var MdmModuleContext_1 = require("../../../../../contexts/MdmModuleContext");
33
35
  var GenericWorkflowTaskCard_1 = require("../GenericWorkflowTaskCard");
@@ -37,9 +39,15 @@ var useChangeRequest_1 = require("../../../hooks/useChangeRequest");
37
39
  var common_1 = require("../../../helpers/common");
38
40
  var ReviewDCRDialog_1 = require("../../../ReviewDCRDialog");
39
41
  var ReviewDCRButton_1 = require("../../../ReviewDCRButton");
42
+ var ChangeRequestEditorContext_1 = require("../../../contexts/ChangeRequestEditorContext");
43
+ var WorkflowTasksContext_1 = require("../../../../../contexts/WorkflowTasksContext");
40
44
  var DataChangeRequestTaskCard = function (_a) {
41
45
  var task = _a.task;
46
+ var reviewDCREnabledByEntityType = ((0, react_1.useContext)(WorkflowTasksContext_1.WorkflowTasksContext) || {}).reviewDCR;
42
47
  var reviewDCREnabled = (0, MdmModuleContext_1.useMdmReviewDCREnabled)();
48
+ var entity = (0, MdmModuleContext_1.useMdmEntity)();
49
+ var isDCREntity = (0, mdm_sdk_1.isDCRUri)(entity === null || entity === void 0 ? void 0 : entity.uri);
50
+ var isReviewDCREnabled = (0, ramda_1.isNil)(reviewDCREnabledByEntityType) ? reviewDCREnabled : reviewDCREnabledByEntityType;
43
51
  var username = (0, MdmModuleContext_1.useMdmUsername)();
44
52
  var _b = (0, react_1.useState)(false), isReviewDCRDialogOpen = _b[0], setIsReviewDCRDialogOpen = _b[1];
45
53
  var objectURIs = task.objectURIs, assignee = task.assignee;
@@ -51,13 +59,14 @@ var DataChangeRequestTaskCard = function (_a) {
51
59
  var handleCloseReviewDCRDialog = (0, react_1.useCallback)(function () {
52
60
  setIsReviewDCRDialogOpen(false);
53
61
  }, []);
54
- var showReviewDCRButton = reviewDCREnabled && assignee == username;
55
- var showReviewDialog = isReviewDCRDialogOpen && (showReviewDCRButton || reviewDCREnabled);
62
+ var showReviewDCRButton = !isDCREntity && isReviewDCREnabled && assignee == username;
63
+ var showReviewDialog = !isDCREntity && isReviewDCRDialogOpen && (showReviewDCRButton || isReviewDCREnabled);
56
64
  var customActionsSlot = (0, react_1.useMemo)(function () { return showReviewDCRButton && react_1.default.createElement(ReviewDCRButton_1.ReviewDCRButton, { onClick: handleReviewDCR }); }, [showReviewDCRButton, handleReviewDCR]);
57
65
  return (react_1.default.createElement(react_1.default.Fragment, null,
58
66
  react_1.default.createElement(GenericWorkflowTaskCard_1.GenericWorkflowTaskCard, { task: task, Icon: DcrTaskIcon_1.default, customActionsSlot: customActionsSlot }, dcr &&
59
67
  groupedObjects.map(function (object, index) { return (react_1.default.createElement(LineDecorator_1.LineDecorator, { key: index, last: index === groupedObjects.length - 1, divider: true },
60
68
  react_1.default.createElement(AttributesChanges_1.AttributesChanges, { entityInfo: object.entity, relationsInfo: object.relations, changes: dcr.changes, objectsInfo: dcr.objectsInfo, dcrUri: dcrUri }))); })),
61
- showReviewDialog && (react_1.default.createElement(ReviewDCRDialog_1.ReviewDCRDialog, { open: isReviewDCRDialogOpen, onClose: handleCloseReviewDCRDialog, dcr: dcr, groupedObjects: groupedObjects, task: task }))));
69
+ showReviewDialog && (react_1.default.createElement(ChangeRequestEditorContext_1.ChangeRequestEditorProvider, null,
70
+ react_1.default.createElement(ReviewDCRDialog_1.ReviewDCRDialog, { open: isReviewDCRDialogOpen, onClose: handleCloseReviewDCRDialog, dcr: dcr, groupedObjects: groupedObjects, task: task })))));
62
71
  };
63
72
  exports.DataChangeRequestTaskCard = DataChangeRequestTaskCard;
@@ -55,10 +55,12 @@ var GenericWorkflowTaskCard = function (_a) {
55
55
  var checkWorkflowPermission = (0, useWorkflowCheckPermission_1.useWorkflowCheckPermission)();
56
56
  var canViewComments = checkWorkflowPermission('VIEW_PROCESS_INSTANCE_COMMENTS');
57
57
  var _d = (0, useWorkflowActions_1.useWorkflowActions)({
58
- taskId: taskId,
59
- possibleActions: possibleActions,
60
- assignee: assignee,
61
- isOpen: isTaskOpen
58
+ task: {
59
+ taskId: taskId,
60
+ possibleActions: possibleActions,
61
+ assignee: assignee,
62
+ isOpen: isTaskOpen
63
+ }
62
64
  }), workflowActions = _d.actions, actionRequestIsInProgress = _d.actionRequestIsInProgress;
63
65
  return (react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.card },
64
66
  react_1.default.createElement("div", { className: (0, classnames_1.default)((_b = {}, _b[GenericWorkflowTaskCard_module_css_1.default.withBackground] = isExpanded, _b)) },
@@ -10,6 +10,7 @@ export type LineData = {
10
10
  type ChangeRequestEditorContextType = {
11
11
  updateChange: (lineIds: string[], data: LineDataValue) => void;
12
12
  getLineData: (lineId: string) => LineData | undefined;
13
+ getLinesByChangeId: (changeId: string) => Array<[string, LineData]>;
13
14
  rejectChange: (lineIds: string[]) => void;
14
15
  revertChangeUpdateOrReject: (lineIds: string[]) => void;
15
16
  getIsParentLineRejected: (lineId: string) => boolean;
@@ -30,6 +30,7 @@ var react_context_selector_1 = require("@fluentui/react-context-selector");
30
30
  exports.ChangeRequestEditorContext = (0, react_context_selector_1.createContext)({
31
31
  updateChange: undefined,
32
32
  getLineData: undefined,
33
+ getLinesByChangeId: undefined,
33
34
  rejectChange: undefined,
34
35
  revertChangeUpdateOrReject: undefined,
35
36
  getIsParentLineRejected: undefined,
@@ -39,6 +40,7 @@ exports.ChangeRequestEditorContext = (0, react_context_selector_1.createContext)
39
40
  var ChangeRequestEditorProvider = function (_a) {
40
41
  var children = _a.children;
41
42
  var _b = (0, react_1.useState)(new Map()), lineDataMap = _b[0], setLineDataMap = _b[1];
43
+ var lineDataMapRef = (0, react_1.useRef)(lineDataMap);
42
44
  var updateChange = (0, react_1.useCallback)(function (lineIds, data) {
43
45
  setLineDataMap(function (prevMap) {
44
46
  var newMap = new Map(prevMap);
@@ -88,9 +90,19 @@ var ChangeRequestEditorProvider = function (_a) {
88
90
  var _a;
89
91
  return !(0, ramda_1.isNil)((_a = lineDataMap.get(lineId)) === null || _a === void 0 ? void 0 : _a.value);
90
92
  }, [lineDataMap]);
93
+ var getLinesByChangeId = (0, react_1.useCallback)(function (changeId) {
94
+ return Array.from(lineDataMapRef.current).filter(function (_a) {
95
+ var key = _a[0], _value = _a[1];
96
+ return key.split('/')[1] === changeId;
97
+ });
98
+ }, []);
99
+ (0, react_1.useEffect)(function () {
100
+ lineDataMapRef.current = lineDataMap;
101
+ }, [lineDataMap]);
91
102
  var contextValue = {
92
103
  updateChange: updateChange,
93
104
  getLineData: getLineData,
105
+ getLinesByChangeId: getLinesByChangeId,
94
106
  rejectChange: rejectChange,
95
107
  revertChangeUpdateOrReject: revertChangeUpdateOrReject,
96
108
  getIsParentLineRejected: getIsParentLineRejected,
@@ -116,7 +116,7 @@ exports.getEntityChanges = (0, ramda_1.curry)(function (metadata, entityInfo, ch
116
116
  var attrTypes = (0, attributesView_1.getFilteredAttrTypes)(metadata, entityInfo.type, [], []);
117
117
  return getAttributesList(metadata, attrTypes, changes);
118
118
  });
119
- exports.getRelationChanges = (0, ramda_1.curry)(function (metadata, relationInfo, changes, changeType) {
119
+ exports.getRelationChanges = (0, ramda_1.curry)(function (metadata, relationInfo, changes, changeType, relationChangeLineIds) {
120
120
  var addRelationOperationIfNeeded = function (changes, changeType) {
121
121
  if (changeType === mdm_sdk_1.DCRTypes.CREATE_RELATIONSHIP || (0, mdm_sdk_1.isEmptyValue)(changes)) {
122
122
  var operation = (0, common_1.getOperationType)(changeType);
@@ -127,7 +127,7 @@ exports.getRelationChanges = (0, ramda_1.curry)(function (metadata, relationInfo
127
127
  var relationType = (0, mdm_sdk_1.getRelationType)(metadata, relationInfo.type);
128
128
  var attrTypes = (0, mdm_sdk_1.getRelationAttributesList)(metadata, relationInfo.type);
129
129
  return (0, ramda_1.flatten)([
130
- __assign({ level: 1, label: (0, ramda_1.propOr)('', 'label', relationType), attributeType: null, relationType: relationType, attributeValue: __assign(__assign({}, relationInfo), changes), lineIds: changes === null || changes === void 0 ? void 0 : changes.lineIds }, addRelationOperationIfNeeded(changes, changeType)),
130
+ __assign({ level: 1, label: (0, ramda_1.propOr)('', 'label', relationType), attributeType: null, relationType: relationType, attributeValue: __assign(__assign({}, relationInfo), changes), lineIds: (changes === null || changes === void 0 ? void 0 : changes.lineIds) || relationChangeLineIds }, addRelationOperationIfNeeded(changes, changeType)),
131
131
  getAttributesList(metadata, attrTypes, changes, 2)
132
132
  ]);
133
133
  });
@@ -141,13 +141,14 @@ describe('attributes helpers tests', function () {
141
141
  ]
142
142
  };
143
143
  it('should not show operation for relation title', function () {
144
- expect((0, attributes_1.getRelationChanges)(metadata_test_data_1.metadata, relationInfo, changes, mdm_sdk_1.DCRTypes.INSERT_ATTRIBUTE)).toEqual([
144
+ expect((0, attributes_1.getRelationChanges)(metadata_test_data_1.metadata, relationInfo, changes, mdm_sdk_1.DCRTypes.INSERT_ATTRIBUTE, ['lineIds'])).toEqual([
145
145
  {
146
146
  attributeType: null,
147
147
  relationType: metadata_test_data_1.metadata.relationTypes[1],
148
148
  attributeValue: __assign(__assign({}, relationInfo), changes),
149
149
  label: metadata_test_data_1.metadata.relationTypes[1].label,
150
- level: 1
150
+ level: 1,
151
+ lineIds: ['lineIds']
151
152
  },
152
153
  {
153
154
  attributeType: mdm_sdk_1.EntityAttrTypes.startDate,
@@ -168,14 +169,15 @@ describe('attributes helpers tests', function () {
168
169
  ]);
169
170
  });
170
171
  it('should show operation for relation title if it is new', function () {
171
- expect((0, attributes_1.getRelationChanges)(metadata_test_data_1.metadata, relationInfo, changes, mdm_sdk_1.DCRTypes.CREATE_RELATIONSHIP)).toEqual([
172
+ expect((0, attributes_1.getRelationChanges)(metadata_test_data_1.metadata, relationInfo, changes, mdm_sdk_1.DCRTypes.CREATE_RELATIONSHIP, ['lineIds'])).toEqual([
172
173
  {
173
174
  attributeType: null,
174
175
  relationType: metadata_test_data_1.metadata.relationTypes[1],
175
176
  attributeValue: __assign(__assign({}, relationInfo), changes),
176
177
  label: metadata_test_data_1.metadata.relationTypes[1].label,
177
178
  level: 1,
178
- operation: mdm_sdk_1.DCROperationTypes.ADDED
179
+ operation: mdm_sdk_1.DCROperationTypes.ADDED,
180
+ lineIds: ['lineIds']
179
181
  },
180
182
  {
181
183
  attributeType: mdm_sdk_1.EntityAttrTypes.startDate,
@@ -196,14 +198,15 @@ describe('attributes helpers tests', function () {
196
198
  ]);
197
199
  });
198
200
  it('should show operation for relation title if it was deleted and changes are empty', function () {
199
- expect((0, attributes_1.getRelationChanges)(metadata_test_data_1.metadata, relationInfo, {}, mdm_sdk_1.DCRTypes.DELETE_RELATIONSHIP)).toEqual([
201
+ expect((0, attributes_1.getRelationChanges)(metadata_test_data_1.metadata, relationInfo, {}, mdm_sdk_1.DCRTypes.DELETE_RELATIONSHIP, ['lineIds'])).toEqual([
200
202
  {
201
203
  attributeType: null,
202
204
  relationType: metadata_test_data_1.metadata.relationTypes[1],
203
205
  attributeValue: relationInfo,
204
206
  label: metadata_test_data_1.metadata.relationTypes[1].label,
205
207
  level: 1,
206
- operation: mdm_sdk_1.DCROperationTypes.DELETED
208
+ operation: mdm_sdk_1.DCROperationTypes.DELETED,
209
+ lineIds: ['lineIds']
207
210
  }
208
211
  ]);
209
212
  });
@@ -1,4 +1,5 @@
1
- import { ChangeRequest, DCRChanges, DCRObjectInfo, DCRObjectsInfo, GroupedObjectsInfo } from '@reltio/mdm-sdk';
1
+ import { AttributeDelete, ChangeRequest, DCRChange, DCRChanges, DCRObjectInfo, DCRObjectsInfo, GroupedObjectsInfo, Metadata } from '@reltio/mdm-sdk';
2
+ import { LineData } from '../contexts/ChangeRequestEditorContext';
2
3
  export declare const getEntitiesObjects: any;
3
4
  export declare const getRelationsObjects: any;
4
5
  export declare const extractObjectsFromChangeRequest: (changes: DCRChanges, objectsInfo: DCRObjectsInfo) => DCRObjectInfo[];
@@ -7,3 +8,9 @@ export declare const createEntityRelationsObjectByRelation: any;
7
8
  export declare const concatEntityRelationsObjects: (acc: Record<string, GroupedObjectsInfo>, object: GroupedObjectsInfo) => Record<string, GroupedObjectsInfo>;
8
9
  export declare const getEntityUriForChangeRequest: (dcrUri: string, entityUri: string) => string;
9
10
  export declare const isCreateEntityOperation: (dcr: ChangeRequest) => boolean;
11
+ export declare const buildDCRSavePlan: (changes: DCRChanges, getLinesByChangeId: (changeId: string) => Array<[string, LineData]>, metadata: Metadata) => {
12
+ rejectedChangeIds: string[];
13
+ updatedChanges: Record<string, DCRChange[]>;
14
+ deleteEntityAttributes: Record<string, AttributeDelete[]>;
15
+ deleteRelationAttributes: Record<string, AttributeDelete[]>;
16
+ };