@reltio/components 1.4.2189 → 1.4.2191

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 (133) hide show
  1. package/ProfileBand/ProfileBand.d.ts +5 -4
  2. package/ProfileBand/ProfileBand.js +4 -5
  3. package/ProfileBand/ProfileBand.module.css.js +9 -0
  4. package/cjs/ProfileBand/ProfileBand.d.ts +5 -4
  5. package/cjs/ProfileBand/ProfileBand.js +14 -15
  6. package/cjs/ProfileBand/ProfileBand.module.css.js +9 -0
  7. package/cjs/contexts/MdmModuleContext/context.d.ts +2 -0
  8. package/cjs/contexts/MdmModuleContext/hooks.d.ts +1 -0
  9. package/cjs/contexts/MdmModuleContext/hooks.js +3 -1
  10. package/cjs/contexts/MdmModuleContext/index.d.ts +1 -1
  11. package/cjs/contexts/MdmModuleContext/index.js +2 -1
  12. package/cjs/features/history/HistoryRow/styles.d.ts +1 -1
  13. package/cjs/features/workflow/AddWorkflowDialog/AddWorkflowDialog.spec.js +67 -0
  14. package/cjs/features/workflow/ChangeRequestEditor/ChangeRequestEditor.d.ts +8 -0
  15. package/cjs/features/workflow/ChangeRequestEditor/ChangeRequestEditor.js +18 -0
  16. package/cjs/features/workflow/ChangeRequestEditor/ChangeRequestEditor.module.css.js +9 -0
  17. package/cjs/features/workflow/ChangeRequestEditor/index.d.ts +1 -0
  18. package/cjs/features/workflow/ChangeRequestEditor/index.js +5 -0
  19. package/cjs/features/workflow/ReviewDCRButton/ReviewDCRButton.d.ts +6 -0
  20. package/cjs/features/workflow/ReviewDCRButton/ReviewDCRButton.js +19 -0
  21. package/cjs/features/workflow/ReviewDCRButton/ReviewDCRButton.module.css.js +9 -0
  22. package/cjs/features/workflow/ReviewDCRButton/index.d.ts +1 -0
  23. package/cjs/features/workflow/ReviewDCRButton/index.js +5 -0
  24. package/cjs/features/workflow/ReviewDCRDialog/ReviewDCRDialog.d.ts +11 -0
  25. package/cjs/features/workflow/ReviewDCRDialog/ReviewDCRDialog.js +63 -0
  26. package/cjs/features/workflow/ReviewDCRDialog/ReviewDCRDialog.module.css.js +9 -0
  27. package/cjs/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/DCRChangesSummary.d.ts +8 -0
  28. package/cjs/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/DCRChangesSummary.js +73 -0
  29. package/cjs/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/DCRChangesSummary.module.css.js +9 -0
  30. package/cjs/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/index.d.ts +1 -0
  31. package/cjs/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/index.js +5 -0
  32. package/cjs/features/workflow/ReviewDCRDialog/components/DCRSummaryInfo/DCRSummaryInfo.d.ts +9 -0
  33. package/cjs/features/workflow/ReviewDCRDialog/components/DCRSummaryInfo/DCRSummaryInfo.js +40 -0
  34. package/cjs/features/workflow/ReviewDCRDialog/components/DCRSummaryInfo/DCRSummaryInfo.module.css.js +9 -0
  35. package/cjs/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.d.ts +3 -0
  36. package/cjs/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.js +19 -0
  37. package/cjs/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.test.d.ts +1 -0
  38. package/cjs/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.test.js +124 -0
  39. package/cjs/features/workflow/ReviewDCRDialog/helpers/index.d.ts +1 -0
  40. package/cjs/features/workflow/ReviewDCRDialog/helpers/index.js +5 -0
  41. package/cjs/features/workflow/ReviewDCRDialog/index.d.ts +1 -0
  42. package/cjs/features/workflow/ReviewDCRDialog/index.js +5 -0
  43. package/cjs/features/workflow/TaskActionButtons/TaskActionButtons.spec.js +1 -1
  44. package/cjs/features/workflow/WorkflowActionButtons/WorkflowActionButtons.d.ts +12 -0
  45. package/cjs/features/workflow/WorkflowActionButtons/WorkflowActionButtons.js +57 -0
  46. package/cjs/features/workflow/WorkflowActionButtons/index.d.ts +1 -0
  47. package/cjs/features/workflow/WorkflowActionButtons/index.js +5 -0
  48. package/cjs/features/workflow/WorkflowComments/WorkflowComments.d.ts +7 -1
  49. package/cjs/features/workflow/WorkflowComments/WorkflowComments.js +15 -31
  50. package/cjs/features/workflow/WorkflowComments/WorkflowComments.module.css.js +9 -0
  51. package/cjs/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.js +46 -6
  52. package/cjs/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +80 -5
  53. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.d.ts +2 -1
  54. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.js +30 -29
  55. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.module.css.js +9 -0
  56. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.spec.js +124 -2
  57. package/cjs/features/workflow/WorkflowTaskCard/components/PotentialMatchTaskCard/PotentialMatchTaskCard.spec.js +69 -3
  58. package/cjs/features/workflow/index.d.ts +2 -0
  59. package/cjs/features/workflow/index.js +5 -1
  60. package/cjs/icons/RequestSummary.d.ts +3 -0
  61. package/cjs/icons/RequestSummary.js +24 -0
  62. package/cjs/icons/ReviewDCR.d.ts +3 -0
  63. package/cjs/icons/ReviewDCR.js +22 -0
  64. package/contexts/MdmModuleContext/context.d.ts +2 -0
  65. package/contexts/MdmModuleContext/hooks.d.ts +1 -0
  66. package/contexts/MdmModuleContext/hooks.js +1 -0
  67. package/contexts/MdmModuleContext/index.d.ts +1 -1
  68. package/contexts/MdmModuleContext/index.js +1 -1
  69. package/features/history/HistoryRow/styles.d.ts +1 -1
  70. package/features/workflow/AddWorkflowDialog/AddWorkflowDialog.spec.js +67 -0
  71. package/features/workflow/ChangeRequestEditor/ChangeRequestEditor.d.ts +8 -0
  72. package/features/workflow/ChangeRequestEditor/ChangeRequestEditor.js +11 -0
  73. package/features/workflow/ChangeRequestEditor/ChangeRequestEditor.module.css.js +9 -0
  74. package/features/workflow/ChangeRequestEditor/index.d.ts +1 -0
  75. package/features/workflow/ChangeRequestEditor/index.js +1 -0
  76. package/features/workflow/ReviewDCRButton/ReviewDCRButton.d.ts +6 -0
  77. package/features/workflow/ReviewDCRButton/ReviewDCRButton.js +12 -0
  78. package/features/workflow/ReviewDCRButton/ReviewDCRButton.module.css.js +9 -0
  79. package/features/workflow/ReviewDCRButton/index.d.ts +1 -0
  80. package/features/workflow/ReviewDCRButton/index.js +1 -0
  81. package/features/workflow/ReviewDCRDialog/ReviewDCRDialog.d.ts +11 -0
  82. package/features/workflow/ReviewDCRDialog/ReviewDCRDialog.js +56 -0
  83. package/features/workflow/ReviewDCRDialog/ReviewDCRDialog.module.css.js +9 -0
  84. package/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/DCRChangesSummary.d.ts +8 -0
  85. package/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/DCRChangesSummary.js +43 -0
  86. package/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/DCRChangesSummary.module.css.js +9 -0
  87. package/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/index.d.ts +1 -0
  88. package/features/workflow/ReviewDCRDialog/components/DCRChangesSummary/index.js +1 -0
  89. package/features/workflow/ReviewDCRDialog/components/DCRSummaryInfo/DCRSummaryInfo.d.ts +9 -0
  90. package/features/workflow/ReviewDCRDialog/components/DCRSummaryInfo/DCRSummaryInfo.js +33 -0
  91. package/features/workflow/ReviewDCRDialog/components/DCRSummaryInfo/DCRSummaryInfo.module.css.js +9 -0
  92. package/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.d.ts +3 -0
  93. package/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.js +15 -0
  94. package/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.test.d.ts +1 -0
  95. package/features/workflow/ReviewDCRDialog/helpers/calculateDCRChanges.test.js +122 -0
  96. package/features/workflow/ReviewDCRDialog/helpers/index.d.ts +1 -0
  97. package/features/workflow/ReviewDCRDialog/helpers/index.js +1 -0
  98. package/features/workflow/ReviewDCRDialog/index.d.ts +1 -0
  99. package/features/workflow/ReviewDCRDialog/index.js +1 -0
  100. package/features/workflow/TaskActionButtons/TaskActionButtons.spec.js +1 -1
  101. package/features/workflow/WorkflowActionButtons/WorkflowActionButtons.d.ts +12 -0
  102. package/features/workflow/WorkflowActionButtons/WorkflowActionButtons.js +27 -0
  103. package/features/workflow/WorkflowActionButtons/index.d.ts +1 -0
  104. package/features/workflow/WorkflowActionButtons/index.js +1 -0
  105. package/features/workflow/WorkflowComments/WorkflowComments.d.ts +7 -1
  106. package/features/workflow/WorkflowComments/WorkflowComments.js +13 -29
  107. package/features/workflow/WorkflowComments/WorkflowComments.module.css.js +9 -0
  108. package/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.js +23 -6
  109. package/features/workflow/WorkflowTaskCard/components/DataChangeRequestTaskCard/DataChangeRequestTaskCard.spec.js +82 -7
  110. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.d.ts +2 -1
  111. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.js +8 -7
  112. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.module.css.js +9 -0
  113. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/GenericWorkflowTaskCard.spec.js +125 -3
  114. package/features/workflow/WorkflowTaskCard/components/PotentialMatchTaskCard/PotentialMatchTaskCard.spec.js +71 -5
  115. package/features/workflow/index.d.ts +2 -0
  116. package/features/workflow/index.js +2 -0
  117. package/icons/RequestSummary.d.ts +3 -0
  118. package/icons/RequestSummary.js +19 -0
  119. package/icons/ReviewDCR.d.ts +3 -0
  120. package/icons/ReviewDCR.js +17 -0
  121. package/package.json +2 -2
  122. package/ProfileBand/styles.d.ts +0 -1
  123. package/ProfileBand/styles.js +0 -87
  124. package/cjs/ProfileBand/styles.d.ts +0 -1
  125. package/cjs/ProfileBand/styles.js +0 -90
  126. package/cjs/features/workflow/WorkflowComments/styles.d.ts +0 -1
  127. package/cjs/features/workflow/WorkflowComments/styles.js +0 -42
  128. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/styles.d.ts +0 -3
  129. package/cjs/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/styles.js +0 -113
  130. package/features/workflow/WorkflowComments/styles.d.ts +0 -1
  131. package/features/workflow/WorkflowComments/styles.js +0 -39
  132. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/styles.d.ts +0 -3
  133. package/features/workflow/WorkflowTaskCard/components/GenericWorkflowTaskCard/styles.js +0 -110
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DCRChangesSummary = void 0;
4
+ var DCRChangesSummary_1 = require("./DCRChangesSummary");
5
+ Object.defineProperty(exports, "DCRChangesSummary", { enumerable: true, get: function () { return DCRChangesSummary_1.DCRChangesSummary; } });
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { ChangeRequest, GroupedObjectsInfo, WorkflowTaskData } from '@reltio/mdm-sdk';
3
+ type Props = {
4
+ dcr: ChangeRequest;
5
+ task: WorkflowTaskData;
6
+ groupedObjects: GroupedObjectsInfo[];
7
+ };
8
+ export declare const DCRSummaryInfo: ({ dcr, task, groupedObjects }: Props) => React.JSX.Element;
9
+ export {};
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DCRSummaryInfo = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var classnames_1 = __importDefault(require("classnames"));
9
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
10
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
11
+ var RequestSummary_1 = __importDefault(require("../../../../../icons/RequestSummary"));
12
+ var DCRChangesSummary_1 = require("../DCRChangesSummary");
13
+ var common_1 = require("../../../helpers/common");
14
+ var DCRSummaryInfo_module_css_1 = __importDefault(require("./DCRSummaryInfo.module.css"));
15
+ var DCRSummaryInfo = function (_a) {
16
+ var dcr = _a.dcr, task = _a.task, groupedObjects = _a.groupedObjects;
17
+ var dcrId = (0, common_1.getDCRId)(task.objectURIs);
18
+ return (react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.requestSummary },
19
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryLeft },
20
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryIcon },
21
+ react_1.default.createElement(RequestSummary_1.default, null)),
22
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryContent },
23
+ react_1.default.createElement(Typography_1.default, { variant: "h6", className: DCRSummaryInfo_module_css_1.default.summaryTitle }, ui_i18n_1.default.text('Request Summary')),
24
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryDetails },
25
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryItem },
26
+ react_1.default.createElement("span", { className: DCRSummaryInfo_module_css_1.default.summaryItemName }, "".concat(ui_i18n_1.default.text('DCR ID'), ": ")),
27
+ dcrId),
28
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryItem },
29
+ react_1.default.createElement("span", { className: DCRSummaryInfo_module_css_1.default.summaryItemName }, "".concat(ui_i18n_1.default.text('Created by'), ": ")),
30
+ task.createdBy),
31
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(DCRSummaryInfo_module_css_1.default.summaryItem, DCRSummaryInfo_module_css_1.default.summaryItemDate) },
32
+ react_1.default.createElement("span", { className: DCRSummaryInfo_module_css_1.default.summaryItemName }, "".concat(ui_i18n_1.default.text('on'), " ")),
33
+ ui_i18n_1.default.date(task.createTime, 'L')),
34
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryItem },
35
+ react_1.default.createElement("span", { className: DCRSummaryInfo_module_css_1.default.summaryItemName }, "".concat(ui_i18n_1.default.text('Step'), ": ")),
36
+ task.displayName)))),
37
+ react_1.default.createElement("div", { className: DCRSummaryInfo_module_css_1.default.summaryRight },
38
+ react_1.default.createElement(DCRChangesSummary_1.DCRChangesSummary, { changes: dcr === null || dcr === void 0 ? void 0 : dcr.changes, groupedObjects: groupedObjects }))));
39
+ };
40
+ exports.DCRSummaryInfo = DCRSummaryInfo;
@@ -0,0 +1,9 @@
1
+ const styles = {"requestSummary":"DCRSummaryInfo-requestSummary--FUaA0","summaryLeft":"DCRSummaryInfo-summaryLeft--Y79jA","summaryIcon":"DCRSummaryInfo-summaryIcon--VlZsg","summaryContent":"DCRSummaryInfo-summaryContent--BdPl7","summaryTitle":"DCRSummaryInfo-summaryTitle--77exU","summaryDetails":"DCRSummaryInfo-summaryDetails--u5ije","summaryItem":"DCRSummaryInfo-summaryItem--DbTdR","summaryItemName":"DCRSummaryInfo-summaryItemName--l7hYO","summaryItemDate":"DCRSummaryInfo-summaryItemDate--EQpJ0","summaryRight":"DCRSummaryInfo-summaryRight--9pEaH"};
2
+ if (typeof document !== 'undefined') {
3
+ const head = document.head || document.getElementsByTagName('head')[0]
4
+ const style = document.createElement('style');
5
+ style.type = 'text/css'
6
+ style.innerHTML = `.DCRSummaryInfo-requestSummary--FUaA0{align-items:flex-start;background-color:rgba(0,0,0,.03);border-radius:8px;display:flex;justify-content:space-between;padding:16px 8px 12px}.DCRSummaryInfo-summaryLeft--Y79jA{align-items:flex-start;display:flex;gap:16px}.DCRSummaryInfo-summaryIcon--VlZsg{padding-top:4px}.DCRSummaryInfo-summaryContent--BdPl7{display:flex;flex-direction:column;gap:3px}.DCRSummaryInfo-summaryTitle--77exU{font-size:16px;font-weight:500;margin:0}.DCRSummaryInfo-summaryDetails--u5ije{display:flex;flex-wrap:wrap;font-size:12px;gap:8px}.DCRSummaryInfo-summaryItem--DbTdR{color:var(--mui-palette-text-primary);font-size:13px;margin:0}.DCRSummaryInfo-summaryItemName--l7hYO{color:var(--mui-palette-text-secondary)}.DCRSummaryInfo-summaryItemDate--EQpJ0{margin-left:-4px}.DCRSummaryInfo-summaryRight--9pEaH{align-items:center;display:flex;padding:3px 9px}`;
7
+ head.appendChild(style);
8
+ }
9
+ module.exports = styles;
@@ -0,0 +1,3 @@
1
+ import { DCROperationTypes, DCRChanges, GroupedObjectsInfo, Metadata } from '@reltio/mdm-sdk';
2
+ export type DCRChangeCounts = Partial<Record<DCROperationTypes, number>>;
3
+ export declare const calculateDCRChanges: (metadata: Metadata, changes: DCRChanges, groupedObjects: GroupedObjectsInfo[]) => DCRChangeCounts;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateDCRChanges = void 0;
4
+ var merge_1 = require("../../AttributesChanges/helpers/merge");
5
+ var calculateDCRChanges = function (metadata, changes, groupedObjects) {
6
+ var mergedChanges = groupedObjects.reduce(function (mergedChanges, object) {
7
+ var _a = (0, merge_1.mergeChanges)(metadata, changes, object.entity, object.relations), mergedEntityChanges = _a[0], mergedRelationsChanges = _a[1];
8
+ return mergedChanges.concat(mergedEntityChanges).concat(mergedRelationsChanges);
9
+ }, []);
10
+ var changesCounts = mergedChanges.reduce(function (changesCounts, _a) {
11
+ var operation = _a.operation;
12
+ if (operation) {
13
+ changesCounts[operation] = (changesCounts[operation] || 0) + 1;
14
+ }
15
+ return changesCounts;
16
+ }, {});
17
+ return changesCounts;
18
+ };
19
+ exports.calculateDCRChanges = calculateDCRChanges;
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var calculateDCRChanges_1 = require("./calculateDCRChanges");
4
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
5
+ describe('calculateDCRChanges', function () {
6
+ var metadata = {
7
+ entityTypes: [
8
+ {
9
+ uri: 'configuration/entityTypes/HCP',
10
+ label: 'HCP',
11
+ attributes: [
12
+ {
13
+ label: 'Name',
14
+ name: 'Name',
15
+ type: 'String',
16
+ uri: 'configuration/entityTypes/HCP/attributes/Name'
17
+ },
18
+ {
19
+ label: 'City',
20
+ name: 'City',
21
+ type: 'String',
22
+ uri: 'configuration/entityTypes/HCP/attributes/City'
23
+ },
24
+ {
25
+ label: 'Tags',
26
+ name: 'Tags',
27
+ type: 'String',
28
+ uri: 'configuration/entityTypes/HCP/attributes/Tags'
29
+ }
30
+ ]
31
+ }
32
+ ]
33
+ };
34
+ var groupedObjects = [
35
+ {
36
+ entity: {
37
+ uri: 'entities/123',
38
+ label: 'Entity 123',
39
+ type: 'configuration/entityTypes/HCP',
40
+ isExist: true,
41
+ secondaryLabel: 'Test Secondary Label'
42
+ },
43
+ relations: []
44
+ }
45
+ ];
46
+ it('should count "added" changes correctly', function () {
47
+ var changes = {
48
+ 'entities/123': [
49
+ {
50
+ id: 'change1',
51
+ type: mdm_sdk_1.DCRTypes.UPDATE_TAGS,
52
+ oldValue: ['tag1', 'tag2'],
53
+ newValue: ['tag1', 'tag2', 'tag3']
54
+ },
55
+ {
56
+ id: 'change2',
57
+ type: mdm_sdk_1.DCRTypes.UPDATE_ROLES,
58
+ oldValue: ['role1'],
59
+ newValue: ['role1', 'role2']
60
+ },
61
+ {
62
+ id: 'change3',
63
+ attributePath: 'Name',
64
+ type: mdm_sdk_1.DCRTypes.INSERT_ATTRIBUTE,
65
+ objectType: 'configuration/entityTypes/HCP',
66
+ newValue: {
67
+ value: {
68
+ Name: [{ value: 'John' }]
69
+ }
70
+ }
71
+ }
72
+ ]
73
+ };
74
+ var result = (0, calculateDCRChanges_1.calculateDCRChanges)(metadata, changes, groupedObjects);
75
+ expect(result).toEqual({
76
+ added: 3
77
+ });
78
+ });
79
+ it('should count multiple change types correctly', function () {
80
+ var changes = {
81
+ 'entities/123': [
82
+ {
83
+ id: 'change1',
84
+ type: mdm_sdk_1.DCRTypes.UPDATE_TAGS,
85
+ oldValue: ['tag1'],
86
+ newValue: ['tag1', 'tag2', 'tag3']
87
+ },
88
+ {
89
+ id: 'change2',
90
+ type: mdm_sdk_1.DCRTypes.UPDATE_ROLES,
91
+ oldValue: ['role1', 'role2'],
92
+ newValue: ['role1']
93
+ },
94
+ {
95
+ id: 'change3',
96
+ attributePath: 'City',
97
+ type: mdm_sdk_1.DCRTypes.INSERT_ATTRIBUTE,
98
+ objectType: 'configuration/entityTypes/HCP',
99
+ newValue: { value: { City: [{ value: 'New York' }] } }
100
+ },
101
+ {
102
+ id: 'change4',
103
+ attributePath: 'Name/21vmKank',
104
+ attributeType: 'configuration/entityTypes/HCP/attributes/Name',
105
+ type: mdm_sdk_1.DCRTypes.UPDATE_ATTRIBUTE,
106
+ objectType: 'configuration/entityTypes/HCP',
107
+ oldValue: { value: 'John' },
108
+ newValue: { value: 'Mike' }
109
+ }
110
+ ]
111
+ };
112
+ var result = (0, calculateDCRChanges_1.calculateDCRChanges)(metadata, changes, groupedObjects);
113
+ expect(result).toEqual({
114
+ added: 2,
115
+ deleted: 1,
116
+ edited: 1
117
+ });
118
+ });
119
+ it('should handle empty changes', function () {
120
+ var changes = {};
121
+ var result = (0, calculateDCRChanges_1.calculateDCRChanges)(metadata, changes, groupedObjects);
122
+ expect(result).toEqual({});
123
+ });
124
+ });
@@ -0,0 +1 @@
1
+ export { calculateDCRChanges, type DCRChangeCounts } from './calculateDCRChanges';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateDCRChanges = void 0;
4
+ var calculateDCRChanges_1 = require("./calculateDCRChanges");
5
+ Object.defineProperty(exports, "calculateDCRChanges", { enumerable: true, get: function () { return calculateDCRChanges_1.calculateDCRChanges; } });
@@ -0,0 +1 @@
1
+ export { ReviewDCRDialog } from './ReviewDCRDialog';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReviewDCRDialog = void 0;
4
+ var ReviewDCRDialog_1 = require("./ReviewDCRDialog");
5
+ Object.defineProperty(exports, "ReviewDCRDialog", { enumerable: true, get: function () { return ReviewDCRDialog_1.ReviewDCRDialog; } });
@@ -139,7 +139,7 @@ describe('TaskActionButtons tests', function () {
139
139
  }
140
140
  });
141
141
  }); });
142
- describe('required comments', function () {
142
+ describe('Required comments', function () {
143
143
  it('should show comment dialog if commentRequired is true', function () { return __awaiter(void 0, void 0, void 0, function () {
144
144
  var task, user, dialog, textfield;
145
145
  return __generator(this, function (_a) {
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { TaskAction } from '../types';
3
+ type Props = {
4
+ workflowActions: TaskAction[];
5
+ actionRequestIsInProgress?: boolean;
6
+ preferredAction?: {
7
+ label: string;
8
+ };
9
+ comment?: string;
10
+ };
11
+ export declare const WorkflowActionButtons: ({ workflowActions: actions, actionRequestIsInProgress, preferredAction, comment }: Props) => React.JSX.Element;
12
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.WorkflowActionButtons = void 0;
30
+ var react_1 = __importStar(require("react"));
31
+ var Button_1 = __importDefault(require("@mui/material/Button"));
32
+ var ModeSwitcherSelect_1 = require("../../../ModeSwitcherSelect");
33
+ var WorkflowActionButtons = function (_a) {
34
+ var actions = _a.workflowActions, actionRequestIsInProgress = _a.actionRequestIsInProgress, preferredAction = _a.preferredAction, _b = _a.comment, comment = _b === void 0 ? '' : _b;
35
+ var _c = (0, react_1.useState)(function () { var _a; return (preferredAction === null || preferredAction === void 0 ? void 0 : preferredAction.label) || ((_a = actions[0]) === null || _a === void 0 ? void 0 : _a.text); }), currentAction = _c[0], setCurrentAction = _c[1];
36
+ var buttonsGroup = (0, react_1.useMemo)(function () {
37
+ return actions.map(function (_a) {
38
+ var text = _a.text, onClick = _a.onClick;
39
+ return ({
40
+ label: text,
41
+ onClick: function () {
42
+ setCurrentAction(text);
43
+ onClick(comment);
44
+ },
45
+ value: text
46
+ });
47
+ });
48
+ }, [actions, comment]);
49
+ if (buttonsGroup.length === 0) {
50
+ return null;
51
+ }
52
+ if (buttonsGroup.length === 1) {
53
+ return (react_1.default.createElement(Button_1.default, { variant: "outlined", onClick: buttonsGroup[0].onClick, disabled: actionRequestIsInProgress, size: "small" }, buttonsGroup[0].label));
54
+ }
55
+ return (react_1.default.createElement(ModeSwitcherSelect_1.ModeSwitcherSelect, { buttonsGroup: buttonsGroup, value: currentAction, loading: actionRequestIsInProgress, disabled: actionRequestIsInProgress }));
56
+ };
57
+ exports.WorkflowActionButtons = WorkflowActionButtons;
@@ -0,0 +1 @@
1
+ export { WorkflowActionButtons } from './WorkflowActionButtons';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WorkflowActionButtons = void 0;
4
+ var WorkflowActionButtons_1 = require("./WorkflowActionButtons");
5
+ Object.defineProperty(exports, "WorkflowActionButtons", { enumerable: true, get: function () { return WorkflowActionButtons_1.WorkflowActionButtons; } });
@@ -8,6 +8,12 @@ type Props = {
8
8
  taskId: string;
9
9
  isTaskOpen: boolean;
10
10
  preferredAction?: WorkflowAction;
11
+ showActionButtons?: boolean;
12
+ alwaysExpanded?: boolean;
13
+ classes?: {
14
+ container?: string;
15
+ commentsContainer?: string;
16
+ };
11
17
  };
12
- export declare const WorkflowComments: ({ workflowActions: actions, actionRequestIsInProgress, processInstanceComments, taskId, isTaskOpen, preferredAction }: Props) => React.JSX.Element;
18
+ export declare const WorkflowComments: ({ workflowActions: actions, actionRequestIsInProgress, processInstanceComments, taskId, isTaskOpen, preferredAction, showActionButtons, alwaysExpanded, classes }: Props) => React.JSX.Element;
13
19
  export {};
@@ -28,28 +28,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.WorkflowComments = void 0;
30
30
  var react_1 = __importStar(require("react"));
31
+ var classnames_1 = __importDefault(require("classnames"));
31
32
  var ui_i18n_1 = __importDefault(require("ui-i18n"));
32
33
  var Input_1 = __importDefault(require("@mui/material/Input"));
33
34
  var InputAdornment_1 = __importDefault(require("@mui/material/InputAdornment"));
34
35
  var Send_1 = __importDefault(require("@mui/icons-material/Send"));
35
- var Button_1 = __importDefault(require("@mui/material/Button"));
36
36
  var CollapsedComments_1 = require("./components/CollapsedComments");
37
37
  var ExpandedComments_1 = require("./components/ExpandedComments");
38
38
  var useWorkflowComments_1 = require("../hooks/useWorkflowComments");
39
39
  var SmallIconButton_1 = require("../../../SmallIconButton");
40
- var ModeSwitcherSelect_1 = require("../../../ModeSwitcherSelect");
41
- var styles_1 = require("./styles");
40
+ var WorkflowActionButtons_1 = require("../WorkflowActionButtons");
41
+ var WorkflowComments_module_css_1 = __importDefault(require("./WorkflowComments.module.css"));
42
42
  var WorkflowComments = function (_a) {
43
- var actions = _a.workflowActions, actionRequestIsInProgress = _a.actionRequestIsInProgress, processInstanceComments = _a.processInstanceComments, taskId = _a.taskId, isTaskOpen = _a.isTaskOpen, preferredAction = _a.preferredAction;
44
- var styles = (0, styles_1.useStyles)();
45
- var _b = (0, react_1.useState)(false), expanded = _b[0], setExpanded = _b[1];
46
- var _c = (0, react_1.useState)(''), comment = _c[0], setComment = _c[1];
47
- var _d = (0, react_1.useState)(function () { var _a; return (preferredAction === null || preferredAction === void 0 ? void 0 : preferredAction.label) || ((_a = actions[0]) === null || _a === void 0 ? void 0 : _a.text); }), currentAction = _d[0], setCurrentAction = _d[1];
48
- var _e = (0, useWorkflowComments_1.useWorkflowComments)({
43
+ var actions = _a.workflowActions, actionRequestIsInProgress = _a.actionRequestIsInProgress, processInstanceComments = _a.processInstanceComments, taskId = _a.taskId, isTaskOpen = _a.isTaskOpen, preferredAction = _a.preferredAction, _b = _a.showActionButtons, showActionButtons = _b === void 0 ? true : _b, _c = _a.alwaysExpanded, alwaysExpanded = _c === void 0 ? false : _c, classes = _a.classes;
44
+ var _d = (0, react_1.useState)(false), expanded = _d[0], setExpanded = _d[1];
45
+ var _e = (0, react_1.useState)(''), comment = _e[0], setComment = _e[1];
46
+ var _f = (0, useWorkflowComments_1.useWorkflowComments)({
49
47
  processInstanceComments: processInstanceComments,
50
48
  taskId: taskId,
51
49
  isOpen: isTaskOpen
52
- }), comments = _e.comments, writeComment = _e.writeComment, readOnly = _e.readOnly;
50
+ }), comments = _f.comments, writeComment = _f.writeComment, readOnly = _f.readOnly;
53
51
  var sendComment = (0, react_1.useCallback)(function () {
54
52
  writeComment(comment);
55
53
  setComment('');
@@ -69,29 +67,15 @@ var WorkflowComments = function (_a) {
69
67
  e.preventDefault();
70
68
  }
71
69
  }, [comment, sendComment]);
72
- var buttonsGroup = (0, react_1.useMemo)(function () {
73
- return actions.map(function (_a) {
74
- var text = _a.text, onClick = _a.onClick;
75
- return ({
76
- label: text,
77
- onClick: function () {
78
- setCurrentAction(text);
79
- onClick(comment);
80
- },
81
- value: text
82
- });
83
- });
84
- }, [actions, comment]);
85
- return (react_1.default.createElement("div", { className: styles.container },
86
- react_1.default.createElement("div", { className: styles.title },
70
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)(WorkflowComments_module_css_1.default.container, classes === null || classes === void 0 ? void 0 : classes.container) },
71
+ react_1.default.createElement("div", { className: WorkflowComments_module_css_1.default.title },
87
72
  " ",
88
73
  ui_i18n_1.default.text('Comments'),
89
74
  " "),
90
- react_1.default.createElement("div", { className: styles.commentsContainer }, expanded || comments.length < 3 ? (react_1.default.createElement(ExpandedComments_1.ExpandedComments, { comments: comments })) : (react_1.default.createElement(CollapsedComments_1.CollapsedComments, { onClick: function () { return setExpanded(true); }, comments: comments }))),
91
- !readOnly && (react_1.default.createElement(Input_1.default, { endAdornment: react_1.default.createElement(InputAdornment_1.default, { position: "end", className: styles.sendButton },
92
- react_1.default.createElement(SmallIconButton_1.SmallIconButton, { icon: Send_1.default, disabled: comment.length === 0, onClick: sendComment, "data-reltio-id": "send-button" })), classes: { root: styles.filledInputRoot }, placeholder: ui_i18n_1.default.text('Write a comment'), value: comment, onKeyPress: handleKeyPress, onChange: handleChange, disableUnderline: true, multiline: true })),
93
- react_1.default.createElement("div", { className: styles.modeSwitcherWrapper },
94
- buttonsGroup.length === 1 && (react_1.default.createElement(Button_1.default, { variant: "outlined", onClick: buttonsGroup[0].onClick, disabled: actionRequestIsInProgress }, buttonsGroup[0].label)),
95
- buttonsGroup.length > 1 && (react_1.default.createElement(ModeSwitcherSelect_1.ModeSwitcherSelect, { buttonsGroup: buttonsGroup, value: currentAction, loading: actionRequestIsInProgress, disabled: actionRequestIsInProgress })))));
75
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(WorkflowComments_module_css_1.default.commentsContainer, classes === null || classes === void 0 ? void 0 : classes.commentsContainer) }, expanded || alwaysExpanded || comments.length < 3 ? (react_1.default.createElement(ExpandedComments_1.ExpandedComments, { comments: comments })) : (react_1.default.createElement(CollapsedComments_1.CollapsedComments, { onClick: function () { return setExpanded(true); }, comments: comments }))),
76
+ !readOnly && (react_1.default.createElement(Input_1.default, { endAdornment: react_1.default.createElement(InputAdornment_1.default, { position: "end", className: WorkflowComments_module_css_1.default.sendButton },
77
+ react_1.default.createElement(SmallIconButton_1.SmallIconButton, { icon: Send_1.default, disabled: comment.length === 0, onClick: sendComment, "data-reltio-id": "send-button" })), classes: { root: WorkflowComments_module_css_1.default.filledInputRoot }, placeholder: ui_i18n_1.default.text('Write a comment'), value: comment, onKeyPress: handleKeyPress, onChange: handleChange, disableUnderline: true, multiline: true })),
78
+ showActionButtons && (react_1.default.createElement("div", { className: WorkflowComments_module_css_1.default.modeSwitcherWrapper },
79
+ react_1.default.createElement(WorkflowActionButtons_1.WorkflowActionButtons, { workflowActions: actions, actionRequestIsInProgress: actionRequestIsInProgress, preferredAction: preferredAction, comment: comment })))));
96
80
  };
97
81
  exports.WorkflowComments = WorkflowComments;
@@ -0,0 +1,9 @@
1
+ const styles = {"container":"WorkflowComments-container--zu4Un","commentsContainer":"WorkflowComments-commentsContainer--CHV0q","title":"WorkflowComments-title--a0FTZ","filledInputRoot":"WorkflowComments-filledInputRoot--q5WAu","focused":"WorkflowComments-focused--s-NQa","modeSwitcherWrapper":"WorkflowComments-modeSwitcherWrapper--b585U","sendButton":"WorkflowComments-sendButton--NjNcl"};
2
+ if (typeof document !== 'undefined') {
3
+ const head = document.head || document.getElementsByTagName('head')[0]
4
+ const style = document.createElement('style');
5
+ style.type = 'text/css'
6
+ style.innerHTML = `.WorkflowComments-container--zu4Un{display:flex;flex-direction:column;padding:5px 0}.WorkflowComments-commentsContainer--CHV0q{max-height:300px;overflow-y:auto}.WorkflowComments-title--a0FTZ{color:rgba(0,0,0,.87);font-size:14px;margin:0 0 8px 5px}.WorkflowComments-filledInputRoot--q5WAu{background-color:rgba(0,0,0,.03);font-size:14px;margin:10px 17px 0 6px;min-height:40px;padding:10px 6px}.WorkflowComments-filledInputRoot--q5WAu.WorkflowComments-focused--s-NQa,.WorkflowComments-filledInputRoot--q5WAu:hover{background-color:rgba(0,0,0,.03)}.WorkflowComments-modeSwitcherWrapper--b585U{margin-left:auto;margin-right:16px;margin-top:8px}.WorkflowComments-sendButton--NjNcl{align-self:end;margin-bottom:10px}`;
7
+ head.appendChild(style);
8
+ }
9
+ module.exports = styles;
@@ -1,23 +1,63 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
27
  };
5
28
  Object.defineProperty(exports, "__esModule", { value: true });
6
29
  exports.DataChangeRequestTaskCard = void 0;
7
- var react_1 = __importDefault(require("react"));
30
+ var react_1 = __importStar(require("react"));
8
31
  var DcrTaskIcon_1 = __importDefault(require("../../../../../icons/DcrTaskIcon"));
32
+ var MdmModuleContext_1 = require("../../../../../contexts/MdmModuleContext");
9
33
  var GenericWorkflowTaskCard_1 = require("../GenericWorkflowTaskCard");
10
34
  var AttributesChanges_1 = require("../../../AttributesChanges");
11
35
  var LineDecorator_1 = require("../../../LineDecorator");
12
36
  var useChangeRequest_1 = require("../../../hooks/useChangeRequest");
13
37
  var common_1 = require("../../../helpers/common");
38
+ var ReviewDCRDialog_1 = require("../../../ReviewDCRDialog");
39
+ var ReviewDCRButton_1 = require("../../../ReviewDCRButton");
14
40
  var DataChangeRequestTaskCard = function (_a) {
15
41
  var task = _a.task;
16
- var objectURIs = task.objectURIs;
42
+ var reviewDCREnabled = (0, MdmModuleContext_1.useMdmReviewDCREnabled)();
43
+ var username = (0, MdmModuleContext_1.useMdmUsername)();
44
+ var _b = (0, react_1.useState)(false), isReviewDCRDialogOpen = _b[0], setIsReviewDCRDialogOpen = _b[1];
45
+ var objectURIs = task.objectURIs, assignee = task.assignee;
17
46
  var dcrUri = (0, common_1.getDCRUri)(objectURIs);
18
- var _b = (0, useChangeRequest_1.useChangeRequest)(dcrUri), dcr = _b.dcr, groupedObjects = _b.groupedObjects;
19
- return (react_1.default.createElement(GenericWorkflowTaskCard_1.GenericWorkflowTaskCard, { task: task, Icon: DcrTaskIcon_1.default }, dcr &&
20
- groupedObjects.map(function (object, index) { return (react_1.default.createElement(LineDecorator_1.LineDecorator, { key: index, last: index === groupedObjects.length - 1, divider: true },
21
- react_1.default.createElement(AttributesChanges_1.AttributesChanges, { entityInfo: object.entity, relationsInfo: object.relations, changes: dcr.changes, objectsInfo: dcr.objectsInfo, dcrUri: dcrUri }))); })));
47
+ var _c = (0, useChangeRequest_1.useChangeRequest)(dcrUri), dcr = _c.dcr, groupedObjects = _c.groupedObjects;
48
+ var handleReviewDCR = (0, react_1.useCallback)(function () {
49
+ setIsReviewDCRDialogOpen(true);
50
+ }, []);
51
+ var handleCloseReviewDCRDialog = (0, react_1.useCallback)(function () {
52
+ setIsReviewDCRDialogOpen(false);
53
+ }, []);
54
+ var showReviewDCRButton = reviewDCREnabled && assignee == username;
55
+ var showReviewDialog = isReviewDCRDialogOpen && (showReviewDCRButton || reviewDCREnabled);
56
+ var customActionsSlot = (0, react_1.useMemo)(function () { return showReviewDCRButton && react_1.default.createElement(ReviewDCRButton_1.ReviewDCRButton, { onClick: handleReviewDCR }); }, [showReviewDCRButton, handleReviewDCR]);
57
+ return (react_1.default.createElement(react_1.default.Fragment, null,
58
+ react_1.default.createElement(GenericWorkflowTaskCard_1.GenericWorkflowTaskCard, { task: task, Icon: DcrTaskIcon_1.default, customActionsSlot: customActionsSlot }, dcr &&
59
+ groupedObjects.map(function (object, index) { return (react_1.default.createElement(LineDecorator_1.LineDecorator, { key: index, last: index === groupedObjects.length - 1, divider: true },
60
+ 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 }))));
22
62
  };
23
63
  exports.DataChangeRequestTaskCard = DataChangeRequestTaskCard;