@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
@@ -69,8 +69,11 @@ var mdm_sdk_1 = require("@reltio/mdm-sdk");
69
69
  var MdmModuleContext_1 = require("../../../../../contexts/MdmModuleContext");
70
70
  var CommentDialogContext_1 = require("../../../../../contexts/CommentDialogContext");
71
71
  var DataChangeRequestTaskCard_1 = require("./DataChangeRequestTaskCard");
72
- jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { getDataChangeRequest: jest.fn(), getEntitiesByUris: jest.fn() })); });
72
+ var WorkflowTasksContext_1 = require("../../../../../contexts/WorkflowTasksContext");
73
+ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { getDataChangeRequest: jest.fn(), getEntitiesByUris: jest.fn(), runTaskAction: jest.fn() })); });
73
74
  jest.mock('../../../../../contexts/MdmModuleContext', function () { return (__assign(__assign({}, jest.requireActual('../../../../../contexts/MdmModuleContext')), { useMdmMetadata: jest.fn() })); });
75
+ var onActionSuccess = jest.fn();
76
+ var workflowTaskContextValue = { onActionSuccess: onActionSuccess };
74
77
  describe('DataChangeRequestTaskCard tests', function () {
75
78
  var _a, _b;
76
79
  var metadata = {
@@ -180,7 +183,7 @@ describe('DataChangeRequestTaskCard tests', function () {
180
183
  var dcrUri = "changeRequests/".concat(dcrId);
181
184
  var dueDate = 1731825314640;
182
185
  var newStartDate = (0, moment_1.default)('11/15/2024', 'MM/DD/YYYY').valueOf();
183
- var task = {
186
+ var defaultTask = {
184
187
  assignee: userName,
185
188
  processInstanceId: '60260030',
186
189
  processType: 'dataChangeRequestReview',
@@ -260,17 +263,32 @@ describe('DataChangeRequestTaskCard tests', function () {
260
263
  label: relationEntityLabel
261
264
  }
262
265
  ];
263
- var setUp = function () {
266
+ var tenant = { id: 't1', name: 't1' };
267
+ var workflowPath = 'workflowPath';
268
+ var workflowEnvironmentUrl = 'workflowEnvironmentUrl';
269
+ var mdmValues = {
270
+ user: {
271
+ username: userName
272
+ },
273
+ tenant: tenant,
274
+ workflowPath: workflowPath,
275
+ workflowEnvironmentUrl: workflowEnvironmentUrl
276
+ };
277
+ var setUp = function (_a) {
278
+ var _b = _a === void 0 ? {} : _a, _c = _b.task, task = _c === void 0 ? defaultTask : _c;
264
279
  var user = user_event_1.default.setup();
265
280
  var Providers = function (_a) {
266
281
  var children = _a.children;
267
- return (react_1.default.createElement(LocalizationProvider_1.LocalizationProvider, { dateAdapter: AdapterMoment_1.AdapterMoment },
268
- react_1.default.createElement(CommentDialogContext_1.CommentDialogProvider, null, children)));
282
+ return (react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues },
283
+ react_1.default.createElement(LocalizationProvider_1.LocalizationProvider, { dateAdapter: AdapterMoment_1.AdapterMoment },
284
+ react_1.default.createElement(WorkflowTasksContext_1.WorkflowTasksContext.Provider, { value: workflowTaskContextValue },
285
+ react_1.default.createElement(CommentDialogContext_1.CommentDialogProvider, null, children)))));
269
286
  };
270
287
  return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(DataChangeRequestTaskCard_1.DataChangeRequestTaskCard, { task: task }), { wrapper: Providers })), { user: user });
271
288
  };
272
289
  beforeAll(function () {
273
290
  mdm_sdk_1.getEntitiesByUris.mockResolvedValue(entities);
291
+ mdm_sdk_1.runTaskAction.mockResolvedValue(null);
274
292
  });
275
293
  beforeEach(function () {
276
294
  MdmModuleContext_1.useMdmMetadata.mockReturnValue(metadata);
@@ -517,4 +535,61 @@ describe('DataChangeRequestTaskCard tests', function () {
517
535
  }
518
536
  });
519
537
  }); });
538
+ describe('Required comments', function () {
539
+ it('should show comment dialog when user runs action and comment is required', function () { return __awaiter(void 0, void 0, void 0, function () {
540
+ var task, user, dialog, comment, commentInput;
541
+ return __generator(this, function (_a) {
542
+ switch (_a.label) {
543
+ case 0:
544
+ task = __assign(__assign({}, defaultTask), { possibleActions: [
545
+ {
546
+ action: 'Approve',
547
+ label: 'Approve',
548
+ commentRequired: true
549
+ },
550
+ {
551
+ action: 'Reject',
552
+ label: 'Reject',
553
+ commentRequired: false
554
+ }
555
+ ] });
556
+ mdm_sdk_1.getDataChangeRequest.mockResolvedValue(dcr);
557
+ user = setUp({ task: task }).user;
558
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('task-actions'))];
559
+ case 1:
560
+ _a.sent();
561
+ return [4 /*yield*/, user.click(react_2.screen.getByText(task.possibleActions[0].label))];
562
+ case 2:
563
+ _a.sent();
564
+ expect(mdm_sdk_1.runTaskAction).not.toHaveBeenCalled();
565
+ dialog = react_2.screen.getAllByRole('presentation')[1];
566
+ expect((0, react_2.within)(dialog).getByText('Please provide a comment for your action')).toBeInTheDocument();
567
+ expect((0, react_2.within)(dialog).getByText('Type a comment')).toBeInTheDocument();
568
+ expect((0, react_2.within)(dialog).getByText('Cancel')).toBeInTheDocument();
569
+ expect((0, react_2.within)(dialog).getByText('Done')).toBeInTheDocument();
570
+ comment = 'Some comment';
571
+ commentInput = react_2.screen.getAllByRole('textbox')[0];
572
+ return [4 /*yield*/, user.click(commentInput)];
573
+ case 3:
574
+ _a.sent();
575
+ return [4 /*yield*/, user.paste(comment)];
576
+ case 4:
577
+ _a.sent();
578
+ return [4 /*yield*/, user.click((0, react_2.within)(dialog).getByText('Done'))];
579
+ case 5:
580
+ _a.sent();
581
+ expect(react_2.screen.queryByText('Please provide a comment for your action')).not.toBeInTheDocument();
582
+ expect(mdm_sdk_1.runTaskAction).toHaveBeenCalledWith({
583
+ workflowPath: workflowPath,
584
+ environment: workflowEnvironmentUrl,
585
+ tenant: tenant.id,
586
+ taskId: task.taskId,
587
+ action: task.possibleActions[0].action,
588
+ processInstanceComment: comment
589
+ });
590
+ return [2 /*return*/];
591
+ }
592
+ });
593
+ }); });
594
+ });
520
595
  });
@@ -5,6 +5,7 @@ type Props = {
5
5
  children?: React.ReactNode;
6
6
  actions?: React.ReactNode;
7
7
  Icon?: React.ElementType;
8
+ customActionsSlot?: React.ReactNode;
8
9
  };
9
- export declare const GenericWorkflowTaskCard: ({ task, children, actions, Icon }: Props) => React.JSX.Element;
10
+ export declare const GenericWorkflowTaskCard: ({ task, children, actions, Icon, customActionsSlot }: Props) => React.JSX.Element;
10
11
  export {};
@@ -44,14 +44,13 @@ var useWorkflowCheckPermission_1 = require("../../../hooks/useWorkflowCheckPermi
44
44
  var CollaborationIcon_1 = __importDefault(require("../../../../../icons/CollaborationIcon"));
45
45
  var useWorkflowActions_1 = require("../../../hooks/useWorkflowActions");
46
46
  var common_1 = require("../../../helpers/common");
47
- var styles_1 = require("./styles");
47
+ var GenericWorkflowTaskCard_module_css_1 = __importDefault(require("./GenericWorkflowTaskCard.module.css"));
48
48
  var GenericWorkflowTaskCard = function (_a) {
49
49
  var _b;
50
- var task = _a.task, children = _a.children, actions = _a.actions, Icon = _a.Icon;
50
+ var task = _a.task, children = _a.children, actions = _a.actions, Icon = _a.Icon, customActionsSlot = _a.customActionsSlot;
51
51
  var taskId = task.taskId, dueDate = task.dueDate, priority = task.priority, assignee = task.assignee, createdBy = task.createdBy, createTime = task.createTime, step = task.displayName, processDefinitionDisplayName = task.processDefinitionDisplayName, objectURIs = task.objectURIs, processInstanceComments = task.processInstanceComments, possibleActions = task.possibleActions, isTaskOpen = task.isOpen, preferredAction = task.preferredAction;
52
52
  var dcrId = (0, common_1.getDCRId)(objectURIs);
53
53
  var color = (0, useWorkflowColor_1.useWorkflowColor)({ processDefinitionDisplayName: processDefinitionDisplayName });
54
- var styles = (0, styles_1.useStyles)({ color: color });
55
54
  var _c = (0, react_1.useState)(false), isExpanded = _c[0], setExpanded = _c[1];
56
55
  var checkWorkflowPermission = (0, useWorkflowCheckPermission_1.useWorkflowCheckPermission)();
57
56
  var canViewComments = checkWorkflowPermission('VIEW_PROCESS_INSTANCE_COMMENTS');
@@ -61,52 +60,54 @@ var GenericWorkflowTaskCard = function (_a) {
61
60
  assignee: assignee,
62
61
  isOpen: isTaskOpen
63
62
  }), workflowActions = _d.actions, actionRequestIsInProgress = _d.actionRequestIsInProgress;
64
- return (react_1.default.createElement("div", { className: styles.card },
65
- react_1.default.createElement("div", { className: (0, classnames_1.default)((_b = {}, _b[styles.withBackground] = isExpanded, _b)) },
66
- react_1.default.createElement("div", { className: styles.lineWrapper },
67
- react_1.default.createElement("div", { className: styles.line }),
68
- Icon && react_1.default.createElement(Icon, { className: styles.icon }),
63
+ return (react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.card },
64
+ react_1.default.createElement("div", { className: (0, classnames_1.default)((_b = {}, _b[GenericWorkflowTaskCard_module_css_1.default.withBackground] = isExpanded, _b)) },
65
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.lineWrapper, style: { '--workflow-color': color } },
66
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.line }),
67
+ Icon && react_1.default.createElement(Icon, { className: GenericWorkflowTaskCard_module_css_1.default.icon }),
69
68
  react_1.default.createElement(LineDecorator_1.LineDecorator, { plain: true, first: true, transparent: !isExpanded },
70
- react_1.default.createElement("div", { className: styles.mainInfo },
71
- react_1.default.createElement("div", { className: styles.title },
72
- react_1.default.createElement("div", { className: (0, classnames_1.default)(styles.caption, styles.flex) }, ui_i18n_1.default.text(processDefinitionDisplayName)),
73
- react_1.default.createElement(Flag_1.default, { className: styles.flag }),
69
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.mainInfo },
70
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.title },
71
+ react_1.default.createElement("div", { className: (0, classnames_1.default)(GenericWorkflowTaskCard_module_css_1.default.caption, GenericWorkflowTaskCard_module_css_1.default.flex) }, ui_i18n_1.default.text(processDefinitionDisplayName)),
72
+ react_1.default.createElement(Flag_1.default, { className: GenericWorkflowTaskCard_module_css_1.default.flag }),
74
73
  react_1.default.createElement(Tooltip_1.default, { title: ui_i18n_1.default.text('Due date') },
75
- react_1.default.createElement("span", { className: styles.date }, ui_i18n_1.default.date(dueDate, 'L'))),
74
+ react_1.default.createElement("span", { className: GenericWorkflowTaskCard_module_css_1.default.date }, ui_i18n_1.default.date(dueDate, 'L'))),
76
75
  react_1.default.createElement(CollapseButton_1.CollapseButton, { isOpen: isExpanded, size: "L", onClick: function () {
77
76
  setExpanded(!isExpanded);
78
77
  } })),
79
- react_1.default.createElement("div", { className: styles.infoBlock, "data-reltio-id": "info-block" },
80
- react_1.default.createElement("div", { className: styles.flex },
81
- dcrId && (react_1.default.createElement("div", { className: styles.info },
78
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.infoBlock, "data-reltio-id": "info-block" },
79
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.flex },
80
+ dcrId && (react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.info },
82
81
  ui_i18n_1.default.text('DCR ID'),
83
82
  ': ',
84
- react_1.default.createElement("span", { className: styles.infoValue }, dcrId))),
85
- react_1.default.createElement("div", { className: styles.info },
83
+ react_1.default.createElement("span", { className: GenericWorkflowTaskCard_module_css_1.default.infoValue }, dcrId))),
84
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.info },
86
85
  ui_i18n_1.default.text('Created by'),
87
86
  ': ',
88
- react_1.default.createElement("span", { className: styles.infoValue }, createdBy),
87
+ react_1.default.createElement("span", { className: GenericWorkflowTaskCard_module_css_1.default.infoValue }, createdBy),
89
88
  " ",
90
89
  ui_i18n_1.default.text('on'),
91
90
  ' ',
92
- react_1.default.createElement("span", { className: styles.infoValue }, ui_i18n_1.default.date(createTime, 'L'))),
93
- react_1.default.createElement("div", { className: styles.info },
91
+ react_1.default.createElement("span", { className: GenericWorkflowTaskCard_module_css_1.default.infoValue }, ui_i18n_1.default.date(createTime, 'L'))),
92
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.info },
94
93
  ui_i18n_1.default.text('Step'),
95
94
  ': ',
96
- react_1.default.createElement("span", { className: styles.infoValue }, step)),
97
- canViewComments && (processInstanceComments === null || processInstanceComments === void 0 ? void 0 : processInstanceComments.length) > 0 && (react_1.default.createElement("div", { className: styles.commentsInfo },
98
- react_1.default.createElement(CollaborationIcon_1.default, { className: styles.commentsIcon }),
99
- react_1.default.createElement("div", { className: styles.infoValue }, processInstanceComments.length)))),
95
+ react_1.default.createElement("span", { className: GenericWorkflowTaskCard_module_css_1.default.infoValue }, step)),
96
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.bottomInfo },
97
+ canViewComments && (processInstanceComments === null || processInstanceComments === void 0 ? void 0 : processInstanceComments.length) > 0 && (react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.commentsInfo },
98
+ react_1.default.createElement(CollaborationIcon_1.default, { className: GenericWorkflowTaskCard_module_css_1.default.commentsIcon }),
99
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.infoValue }, processInstanceComments.length))),
100
+ customActionsSlot && (react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.customActionsSlot }, customActionsSlot)))),
100
101
  actions || (react_1.default.createElement(TaskActions_1.TaskActions, { actions: workflowActions, isInProgress: actionRequestIsInProgress })))))),
101
102
  isExpanded && (react_1.default.createElement(LineDecorator_1.LineDecorator, { plain: true },
102
- react_1.default.createElement("div", { className: styles.controlsBox },
103
- react_1.default.createElement("div", { className: styles.controlsInRow },
103
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.controlsBox },
104
+ react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.controlsInRow },
104
105
  react_1.default.createElement(DueDateField_1.DueDateField, { taskId: taskId, dueDate: dueDate, isTaskOpen: isTaskOpen }),
105
- react_1.default.createElement(PrioritySelector_1.PrioritySelector, { taskId: taskId, priority: priority, className: styles.priority, isTaskOpen: isTaskOpen })),
106
+ react_1.default.createElement(PrioritySelector_1.PrioritySelector, { taskId: taskId, priority: priority, className: GenericWorkflowTaskCard_module_css_1.default.priority, isTaskOpen: isTaskOpen })),
106
107
  react_1.default.createElement(AssigneeSelector_1.AssigneeSelector, { taskId: taskId, assignee: assignee, isTaskOpen: isTaskOpen }))))),
107
108
  isExpanded && (react_1.default.createElement(react_1.default.Fragment, null,
108
109
  children,
109
- canViewComments && (react_1.default.createElement("div", { className: styles.comments },
110
+ canViewComments && (react_1.default.createElement("div", { className: GenericWorkflowTaskCard_module_css_1.default.comments },
110
111
  react_1.default.createElement(WorkflowComments_1.WorkflowComments, { workflowActions: workflowActions, actionRequestIsInProgress: actionRequestIsInProgress, preferredAction: preferredAction, taskId: taskId, processInstanceComments: processInstanceComments, isTaskOpen: isTaskOpen })))))));
111
112
  };
112
113
  exports.GenericWorkflowTaskCard = GenericWorkflowTaskCard;
@@ -0,0 +1,9 @@
1
+ const styles = {"card":"GenericWorkflowTaskCard-card--EMo-i","withBackground":"GenericWorkflowTaskCard-withBackground--Y--db","lineWrapper":"GenericWorkflowTaskCard-lineWrapper--15MN6","icon":"GenericWorkflowTaskCard-icon--eoHOp","line":"GenericWorkflowTaskCard-line--Z1Emv","info":"GenericWorkflowTaskCard-info--2OyKu","bottomInfo":"GenericWorkflowTaskCard-bottomInfo--4bsc4","commentsInfo":"GenericWorkflowTaskCard-commentsInfo--Q6M07","commentsIcon":"GenericWorkflowTaskCard-commentsIcon--crUiN","infoValue":"GenericWorkflowTaskCard-infoValue---gkaX","infoBlock":"GenericWorkflowTaskCard-infoBlock--VyI2O","header":"GenericWorkflowTaskCard-header--bN0nh","flex":"GenericWorkflowTaskCard-flex--5oWde","caption":"GenericWorkflowTaskCard-caption--vxnNJ","title":"GenericWorkflowTaskCard-title--zyCft","flag":"GenericWorkflowTaskCard-flag--dfydb","date":"GenericWorkflowTaskCard-date--MHd-G","mainInfo":"GenericWorkflowTaskCard-mainInfo--l5b9R","controlsBox":"GenericWorkflowTaskCard-controlsBox--ZHDhQ","controlsInRow":"GenericWorkflowTaskCard-controlsInRow--c48Nv","priority":"GenericWorkflowTaskCard-priority--xnnl9","comments":"GenericWorkflowTaskCard-comments--OG-db","customActionsSlot":"GenericWorkflowTaskCard-customActionsSlot--J-mXk"};
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 = `.GenericWorkflowTaskCard-card--EMo-i{border-bottom:1px solid rgba(0,0,0,.06)}.GenericWorkflowTaskCard-withBackground--Y--db{background-color:rgba(0,0,0,.03)}.GenericWorkflowTaskCard-lineWrapper--15MN6{position:relative}.GenericWorkflowTaskCard-icon--eoHOp{height:32px;left:16px;position:absolute;top:8px;width:32px;z-index:1}.GenericWorkflowTaskCard-line--Z1Emv{border-left:3px solid var(--workflow-color);bottom:0;left:0;position:absolute;top:0}.GenericWorkflowTaskCard-info--2OyKu{color:rgba(0,0,0,.54);font-size:13px;word-wrap:break-word;line-height:15px}.GenericWorkflowTaskCard-bottomInfo--4bsc4{align-items:flex-start;display:flex}.GenericWorkflowTaskCard-commentsInfo--Q6M07{align-items:center;display:flex;margin-bottom:-4px;margin-top:7px}.GenericWorkflowTaskCard-commentsIcon--crUiN{height:11px;margin-left:2px;margin-right:6px;margin-top:-2px;width:11px}.GenericWorkflowTaskCard-infoValue---gkaX{color:rgba(0,0,0,.87)}.GenericWorkflowTaskCard-infoBlock--VyI2O{display:flex;flex-direction:row;margin-bottom:5px}.GenericWorkflowTaskCard-header--bN0nh{display:flex;flex-direction:row;padding-bottom:12px}.GenericWorkflowTaskCard-flex--5oWde{flex:1}.GenericWorkflowTaskCard-caption--vxnNJ{color:rgba(0,0,0,.87);font-size:16px}.GenericWorkflowTaskCard-title--zyCft{align-items:center;display:flex;flex-direction:row;margin-bottom:-4px}.GenericWorkflowTaskCard-flag--dfydb{height:13px;width:13px;stroke:#000;fill:none;margin:2px 5px 0}.GenericWorkflowTaskCard-date--MHd-G{color:rgba(0,0,0,.87);font-size:13px}.GenericWorkflowTaskCard-mainInfo--l5b9R{display:flex;flex:1;flex-direction:column}.GenericWorkflowTaskCard-controlsBox--ZHDhQ{margin-bottom:12px;margin-right:16px;margin-top:13px}.GenericWorkflowTaskCard-controlsInRow--c48Nv{align-items:center;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:20px}.GenericWorkflowTaskCard-priority--xnnl9{width:162px}.GenericWorkflowTaskCard-comments--OG-db{margin-left:11px}.GenericWorkflowTaskCard-customActionsSlot--J-mXk{display:flex;flex-grow:1;justify-content:flex-end;margin-right:-30px}`;
7
+ head.appendChild(style);
8
+ }
9
+ module.exports = styles;
@@ -76,6 +76,7 @@ var CommentDialogContext_1 = require("../../../../../contexts/CommentDialogConte
76
76
  var ErrorPopup_1 = require("../../../../../ErrorPopup");
77
77
  var task_test_data_1 = require("./task.test-data");
78
78
  var GenericWorkflowTaskCard_1 = require("./GenericWorkflowTaskCard");
79
+ var ReviewDCRButton_1 = require("../../../ReviewDCRButton");
79
80
  jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { runTaskAction: jest.fn().mockReturnValue(Promise.resolve()), getAssigneeForTask: jest.fn().mockResolvedValue({ data: ['assignee1', 'assignee2'] }), addCommentForTask: jest.fn().mockResolvedValue({ status: 'success' }), getTaskById: jest.fn() })); });
80
81
  var onActionSuccess = jest.fn();
81
82
  var workflowTaskContextValue = { onActionSuccess: onActionSuccess };
@@ -107,14 +108,14 @@ var defaultMdmValues = {
107
108
  var errorSet = jest.fn();
108
109
  var defaultTask = (0, task_test_data_1.getDefaultTask)();
109
110
  var setUp = function (_a) {
110
- var _b = _a === void 0 ? {} : _a, _c = _b.mdmValues, mdmValues = _c === void 0 ? defaultMdmValues : _c, _d = _b.task, task = _d === void 0 ? defaultTask : _d;
111
+ var _b = _a === void 0 ? {} : _a, _c = _b.mdmValues, mdmValues = _c === void 0 ? defaultMdmValues : _c, _d = _b.task, task = _d === void 0 ? defaultTask : _d, customActionsSlot = _b.customActionsSlot;
111
112
  var user = user_event_1.default.setup();
112
113
  return __assign(__assign({}, (0, react_2.render)(react_1.default.createElement(MdmModuleContext_1.MdmModuleProvider, { values: mdmValues, actions: { errorSet: errorSet } },
113
114
  react_1.default.createElement(styles_2.ThemeProvider, { theme: (0, styles_1.createTheme)(constants_1.theme) },
114
115
  react_1.default.createElement(LocalizationProvider_1.LocalizationProvider, { dateAdapter: AdapterMoment_1.AdapterMoment },
115
116
  react_1.default.createElement(CommentDialogContext_1.CommentDialogProvider, null,
116
117
  react_1.default.createElement(WorkflowTasksContext_1.WorkflowTasksContext.Provider, { value: workflowTaskContextValue },
117
- react_1.default.createElement(GenericWorkflowTaskCard_1.GenericWorkflowTaskCard, { task: task },
118
+ react_1.default.createElement(GenericWorkflowTaskCard_1.GenericWorkflowTaskCard, { task: task, customActionsSlot: customActionsSlot },
118
119
  react_1.default.createElement("div", { className: "someChildren" }, "some children")),
119
120
  react_1.default.createElement(ErrorPopup_1.ErrorPopup, { showErrorFromStore: true })))))))), { user: user });
120
121
  };
@@ -456,4 +457,125 @@ describe('GenericWorkflowTaskCard tests', function () {
456
457
  }
457
458
  });
458
459
  }); });
460
+ it('should render custom actions slot if it is provided', function () { return __awaiter(void 0, void 0, void 0, function () {
461
+ var openReviewDialog, user, reviewDCRButton;
462
+ return __generator(this, function (_a) {
463
+ switch (_a.label) {
464
+ case 0:
465
+ openReviewDialog = jest.fn();
466
+ user = setUp({ customActionsSlot: react_1.default.createElement(ReviewDCRButton_1.ReviewDCRButton, { onClick: openReviewDialog }) }).user;
467
+ reviewDCRButton = react_2.screen.getByRole('button', { name: 'Review DCR' });
468
+ expect(reviewDCRButton).toBeInTheDocument();
469
+ return [4 /*yield*/, user.click(reviewDCRButton)];
470
+ case 1:
471
+ _a.sent();
472
+ expect(openReviewDialog).toHaveBeenCalled();
473
+ return [2 /*return*/];
474
+ }
475
+ });
476
+ }); });
477
+ describe('Required comments', function () {
478
+ it('should show comment dialog when user runs action and comment is required', function () { return __awaiter(void 0, void 0, void 0, function () {
479
+ var task, user, dialog, comment, commentInput;
480
+ return __generator(this, function (_a) {
481
+ switch (_a.label) {
482
+ case 0:
483
+ task = __assign(__assign({}, defaultTask), { possibleActions: [
484
+ {
485
+ action: 'Delete',
486
+ label: 'Delete',
487
+ commentRequired: true
488
+ },
489
+ {
490
+ action: 'Cancel',
491
+ label: 'Cancel',
492
+ commentRequired: false
493
+ }
494
+ ] });
495
+ user = setUp({ task: task }).user;
496
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('task-actions'))];
497
+ case 1:
498
+ _a.sent();
499
+ return [4 /*yield*/, user.click(react_2.screen.getByText(task.possibleActions[0].label))];
500
+ case 2:
501
+ _a.sent();
502
+ expect(mdm_sdk_1.runTaskAction).not.toHaveBeenCalled();
503
+ dialog = react_2.screen.getAllByRole('presentation')[1];
504
+ expect((0, react_2.within)(dialog).getByText('Please provide a comment for your action')).toBeInTheDocument();
505
+ expect((0, react_2.within)(dialog).getByText('Type a comment')).toBeInTheDocument();
506
+ expect((0, react_2.within)(dialog).getByText('Cancel')).toBeInTheDocument();
507
+ expect((0, react_2.within)(dialog).getByText('Done')).toBeInTheDocument();
508
+ comment = 'comment';
509
+ commentInput = react_2.screen.getAllByRole('textbox')[0];
510
+ return [4 /*yield*/, user.click(commentInput)];
511
+ case 3:
512
+ _a.sent();
513
+ return [4 /*yield*/, user.paste(comment)];
514
+ case 4:
515
+ _a.sent();
516
+ return [4 /*yield*/, user.click((0, react_2.within)(react_2.screen.getAllByRole('presentation')[1]).getByText('Done'))];
517
+ case 5:
518
+ _a.sent();
519
+ expect(mdm_sdk_1.runTaskAction).toHaveBeenCalledWith({
520
+ workflowPath: workflowPath,
521
+ environment: workflowEnvironmentUrl,
522
+ tenant: tenant.id,
523
+ taskId: defaultTask.taskId,
524
+ action: defaultTask.possibleActions[0].action,
525
+ processInstanceComment: comment
526
+ });
527
+ return [2 /*return*/];
528
+ }
529
+ });
530
+ }); });
531
+ it('should not show comment dialog when user types comment and run action', function () { return __awaiter(void 0, void 0, void 0, function () {
532
+ var task, user, comment, commentInput;
533
+ var _a;
534
+ return __generator(this, function (_b) {
535
+ switch (_b.label) {
536
+ case 0:
537
+ task = __assign(__assign({}, defaultTask), { possibleActions: [
538
+ {
539
+ action: 'Delete',
540
+ label: 'Delete',
541
+ commentRequired: true
542
+ },
543
+ {
544
+ action: 'Cancel',
545
+ label: 'Cancel',
546
+ commentRequired: false
547
+ }
548
+ ] });
549
+ user = setUp({ task: task }).user;
550
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('collapse-button'))];
551
+ case 1:
552
+ _b.sent();
553
+ comment = 'comment';
554
+ commentInput = react_2.screen.getByPlaceholderText('Write a comment');
555
+ return [4 /*yield*/, user.click(commentInput)];
556
+ case 2:
557
+ _b.sent();
558
+ return [4 /*yield*/, user.paste(comment)];
559
+ case 3:
560
+ _b.sent();
561
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('button', { name: (_a = task.preferredAction) === null || _a === void 0 ? void 0 : _a.label }))];
562
+ case 4:
563
+ _b.sent();
564
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId("reltio-profile-select-mode-".concat(task.possibleActions[0].label)))];
565
+ case 5:
566
+ _b.sent();
567
+ expect(react_2.screen.queryByText('Please provide a comment for your action')).not.toBeInTheDocument();
568
+ expect(mdm_sdk_1.runTaskAction).toHaveBeenCalledWith({
569
+ workflowPath: workflowPath,
570
+ environment: workflowEnvironmentUrl,
571
+ tenant: tenant.id,
572
+ taskId: defaultTask.taskId,
573
+ action: defaultTask.possibleActions[0].action,
574
+ processInstanceComment: comment
575
+ });
576
+ return [2 /*return*/];
577
+ }
578
+ });
579
+ }); });
580
+ });
459
581
  });
@@ -59,17 +59,24 @@ var AdapterMoment_1 = require("@mui/x-date-pickers/AdapterMoment");
59
59
  var MdmModuleContext_1 = require("../../../../../contexts/MdmModuleContext");
60
60
  var CommentDialogContext_1 = require("../../../../../contexts/CommentDialogContext");
61
61
  var PotentialMatchTaskCard_1 = require("./PotentialMatchTaskCard");
62
+ jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { runTaskAction: jest.fn() })); });
62
63
  describe('PotentialMatchTaskCard tests', function () {
64
+ var tenant = { id: 't1', name: 't1' };
65
+ var workflowPath = 'workflowPath';
66
+ var workflowEnvironmentUrl = 'workflowEnvironmentUrl';
63
67
  var mdmValues = {
64
68
  metadata: { entityTypes: [], relationTypes: [] },
65
69
  entity: { uri: 'entities/uri1', type: 'configuration/entityTypes/HCO' },
66
- tenant: { id: 't1', name: 't1' },
70
+ tenant: tenant,
71
+ workflowPath: workflowPath,
72
+ workflowEnvironmentUrl: workflowEnvironmentUrl,
73
+ user: { username: 'egorshkov' },
67
74
  dtssPath: 'path',
68
75
  dataTenants: [],
69
76
  activityFilter: mdm_sdk_1.ActivityFilter.ACTIVE_ONLY
70
77
  };
71
78
  var relatedEntityUri = 'entities/6hj8baQ';
72
- var task = {
79
+ var defaultTask = {
73
80
  assignee: 'egorshkov',
74
81
  objectURIs: [relatedEntityUri, 'entities/1RdgehCi'],
75
82
  createdBy: 'egorshkov',
@@ -103,7 +110,7 @@ describe('PotentialMatchTaskCard tests', function () {
103
110
  uri: 'entities/6hj8baQ'
104
111
  }
105
112
  };
106
- var defaultProps = { task: task, match: match, entitiesMap: entitiesMap };
113
+ var defaultProps = { task: defaultTask, match: match, entitiesMap: entitiesMap };
107
114
  var setUp = function (props) {
108
115
  if (props === void 0) { props = {}; }
109
116
  var user = user_event_1.default.setup();
@@ -115,6 +122,9 @@ describe('PotentialMatchTaskCard tests', function () {
115
122
  };
116
123
  return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(PotentialMatchTaskCard_1.PotentialMatchTaskCard, __assign({}, defaultProps, props)), { wrapper: Providers }));
117
124
  };
125
+ beforeAll(function () {
126
+ mdm_sdk_1.runTaskAction.mockResolvedValue(null);
127
+ });
118
128
  afterEach(function () {
119
129
  jest.clearAllMocks();
120
130
  });
@@ -163,4 +173,60 @@ describe('PotentialMatchTaskCard tests', function () {
163
173
  }
164
174
  });
165
175
  }); });
176
+ describe('Required comments', function () {
177
+ it('should show comment dialog when user runs action and comment is required', function () { return __awaiter(void 0, void 0, void 0, function () {
178
+ var task, user, dialog, comment, commentInput;
179
+ return __generator(this, function (_a) {
180
+ switch (_a.label) {
181
+ case 0:
182
+ task = __assign(__assign({}, defaultTask), { isOpen: true, possibleActions: [
183
+ {
184
+ action: 'Approve',
185
+ label: 'Approve',
186
+ commentRequired: true
187
+ },
188
+ {
189
+ action: 'Reject',
190
+ label: 'Reject',
191
+ commentRequired: false
192
+ }
193
+ ] });
194
+ user = setUp({ task: task }).user;
195
+ return [4 /*yield*/, user.click(react_2.screen.getByTestId('task-actions'))];
196
+ case 1:
197
+ _a.sent();
198
+ return [4 /*yield*/, user.click(react_2.screen.getByText(task.possibleActions[0].label))];
199
+ case 2:
200
+ _a.sent();
201
+ expect(mdm_sdk_1.runTaskAction).not.toHaveBeenCalled();
202
+ dialog = react_2.screen.getAllByRole('presentation')[1];
203
+ expect((0, react_2.within)(dialog).getByText('Please provide a comment for your action')).toBeInTheDocument();
204
+ expect((0, react_2.within)(dialog).getByText('Type a comment')).toBeInTheDocument();
205
+ expect((0, react_2.within)(dialog).getByText('Cancel')).toBeInTheDocument();
206
+ expect((0, react_2.within)(dialog).getByText('Done')).toBeInTheDocument();
207
+ comment = 'Some comment';
208
+ commentInput = react_2.screen.getAllByRole('textbox')[0];
209
+ return [4 /*yield*/, user.click(commentInput)];
210
+ case 3:
211
+ _a.sent();
212
+ return [4 /*yield*/, user.paste(comment)];
213
+ case 4:
214
+ _a.sent();
215
+ return [4 /*yield*/, user.click((0, react_2.within)(dialog).getByText('Done'))];
216
+ case 5:
217
+ _a.sent();
218
+ expect(react_2.screen.queryByText('Please provide a comment for your action')).not.toBeInTheDocument();
219
+ expect(mdm_sdk_1.runTaskAction).toHaveBeenCalledWith({
220
+ workflowPath: workflowPath,
221
+ environment: workflowEnvironmentUrl,
222
+ tenant: tenant.id,
223
+ taskId: task.taskId,
224
+ action: task.possibleActions[0].action,
225
+ processInstanceComment: comment
226
+ });
227
+ return [2 /*return*/];
228
+ }
229
+ });
230
+ }); });
231
+ });
166
232
  });
@@ -5,6 +5,8 @@ export { AssigneeSelector } from './AssigneeSelector';
5
5
  export { ReassignButton } from './ReassignButton';
6
6
  export { WorkflowComments } from './WorkflowComments';
7
7
  export { TaskActionButtons } from './TaskActionButtons';
8
+ export { ReviewDCRButton } from './ReviewDCRButton';
9
+ export { ReviewDCRDialog } from './ReviewDCRDialog';
8
10
  export { useWorkflowAssignee } from './hooks/useWorkflowAssignee';
9
11
  export { useWorkflowComments } from './hooks/useWorkflowComments';
10
12
  export { useWorkflowActions } from './hooks/useWorkflowActions';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findWorkflowDefinitionByType = exports.useWorkflowDefaultActionSuccessHandler = exports.useWorkflowTasks = exports.useWorkflowCheckPermission = exports.useWorkflowActions = exports.useWorkflowComments = exports.useWorkflowAssignee = exports.TaskActionButtons = exports.WorkflowComments = exports.ReassignButton = exports.AssigneeSelector = exports.TaskActions = exports.AddWorkflowButton = exports.WorkflowTaskCard = void 0;
3
+ exports.findWorkflowDefinitionByType = exports.useWorkflowDefaultActionSuccessHandler = exports.useWorkflowTasks = exports.useWorkflowCheckPermission = exports.useWorkflowActions = exports.useWorkflowComments = exports.useWorkflowAssignee = exports.ReviewDCRDialog = exports.ReviewDCRButton = exports.TaskActionButtons = exports.WorkflowComments = exports.ReassignButton = exports.AssigneeSelector = exports.TaskActions = exports.AddWorkflowButton = exports.WorkflowTaskCard = void 0;
4
4
  // components
5
5
  var WorkflowTaskCard_1 = require("./WorkflowTaskCard");
6
6
  Object.defineProperty(exports, "WorkflowTaskCard", { enumerable: true, get: function () { return WorkflowTaskCard_1.WorkflowTaskCard; } });
@@ -16,6 +16,10 @@ var WorkflowComments_1 = require("./WorkflowComments");
16
16
  Object.defineProperty(exports, "WorkflowComments", { enumerable: true, get: function () { return WorkflowComments_1.WorkflowComments; } });
17
17
  var TaskActionButtons_1 = require("./TaskActionButtons");
18
18
  Object.defineProperty(exports, "TaskActionButtons", { enumerable: true, get: function () { return TaskActionButtons_1.TaskActionButtons; } });
19
+ var ReviewDCRButton_1 = require("./ReviewDCRButton");
20
+ Object.defineProperty(exports, "ReviewDCRButton", { enumerable: true, get: function () { return ReviewDCRButton_1.ReviewDCRButton; } });
21
+ var ReviewDCRDialog_1 = require("./ReviewDCRDialog");
22
+ Object.defineProperty(exports, "ReviewDCRDialog", { enumerable: true, get: function () { return ReviewDCRDialog_1.ReviewDCRDialog; } });
19
23
  // hooks
20
24
  var useWorkflowAssignee_1 = require("./hooks/useWorkflowAssignee");
21
25
  Object.defineProperty(exports, "useWorkflowAssignee", { enumerable: true, get: function () { return useWorkflowAssignee_1.useWorkflowAssignee; } });
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const SvgRequestSummary: React.FC<React.SVGProps<SVGSVGElement>>;
3
+ export default SvgRequestSummary;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var react_1 = __importDefault(require("react"));
18
+ var SvgRequestSummary = function (props) {
19
+ return (react_1.default.createElement("svg", __assign({ width: "32", height: "32", viewBox: "0 0 32 32", fill: "none", xmlns: "http://www.w3.org/2000/svg", "data-reltio-id": "SvgRequestSummary" }, props),
20
+ react_1.default.createElement("ellipse", { cx: "15.972", cy: "16", rx: "15.972", ry: "16", fill: "#1D4E99" }),
21
+ react_1.default.createElement("path", { opacity: "0.54", d: "M24.4771 14.7002C23.972 14.3772 23.4183 14.1244 22.8286 13.9561V8.42871H8.50342V19.415H14.8589C14.8411 19.6077 14.8316 19.8027 14.8315 20C14.8315 20.3358 14.8581 20.6657 14.9087 20.9873H6.84521V6.85742H24.4771V14.7002ZM11.8091 17.8428H10.1519V16.2803H11.8091V17.8428ZM16.0483 16.2803C15.7 16.7547 15.4168 17.2799 15.2114 17.8428H13.4575V16.2803H16.0483ZM11.8091 14.708H10.1519V13.1357H11.8091V14.708ZM21.1714 13.7158C21.1496 13.7156 21.1278 13.7148 21.106 13.7148C19.8597 13.7148 18.6995 14.0804 17.7231 14.708H13.4575V13.1357H21.1714V13.7158ZM11.8091 11.5645H10.1519V10.001H11.8091V11.5645ZM21.1714 11.5645H13.4575V10.001H21.1714V11.5645Z", fill: "white" }),
22
+ react_1.default.createElement("path", { opacity: "0.87", d: "M21.106 14.8574C22.2479 14.8575 23.3031 15.2315 24.1558 15.8633L23.2349 16.7861C22.6252 16.3801 21.8929 16.1426 21.106 16.1426C18.9797 16.1428 17.2565 17.87 17.2563 20C17.2563 22.1301 18.9796 23.8572 21.106 23.8574C23.0435 23.8572 24.6461 22.4229 24.9155 20.5566L26.189 19.2822C26.2217 19.5168 26.2407 19.7564 26.2407 20C26.2407 22.8402 23.9412 25.1424 21.106 25.1426C18.2708 25.1423 15.9722 22.8402 15.9722 20C15.9723 17.16 18.2709 14.8577 21.106 14.8574ZM26.7075 17.208L21.2622 22.6631L20.354 21.7539V21.7529L18.5396 19.9355L19.4468 19.0264L21.2612 20.8438L25.7993 16.2988L26.7075 17.208Z", fill: "white" })));
23
+ };
24
+ exports.default = SvgRequestSummary;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const SvgReviewDCR: React.FC<React.SVGProps<SVGSVGElement>>;
3
+ export default SvgReviewDCR;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var react_1 = __importDefault(require("react"));
18
+ var SvgReviewDCR = function (props) {
19
+ return (react_1.default.createElement("svg", __assign({ width: "16", height: "15", viewBox: "0 0 16 15", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, props),
20
+ react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M2.5 9H5.51415C5.53356 8.74392 5.57268 8.49341 5.63 8.25H2.5V6.75H6.26449C6.43659 6.48075 6.63444 6.2296 6.85458 6H2.5V4.5H10V4.51415C10.1238 4.50477 10.2488 4.5 10.375 4.5C11.0397 4.5 11.673 4.63248 12.25 4.87252V1.5C12.25 0.675 11.575 0 10.75 0H1.75C0.925 0 0.25 0.675 0.25 1.5V11.25C0.25 12.075 0.925 12.75 1.75 12.75H6.85373C6.26293 12.1331 5.8327 11.3608 5.63001 10.5H2.5V9ZM10 3.75H2.5V2.25H10V3.75ZM13.225 11.1675L15.565 13.5L14.5 14.565L12.16 12.225C11.6425 12.555 11.0275 12.75 10.3675 12.75C8.5075 12.75 7 11.2425 7 9.375C7 7.5075 8.5075 6 10.375 6C12.2425 6 13.75 7.5075 13.75 9.375C13.75 10.035 13.555 10.6425 13.225 11.1675ZM10.375 11.25C11.41 11.25 12.25 10.41 12.25 9.375C12.25 8.34 11.41 7.5 10.375 7.5C9.34 7.5 8.5 8.34 8.5 9.375C8.5 10.41 9.34 11.25 10.375 11.25Z", fill: "#0072CE" })));
21
+ };
22
+ exports.default = SvgReviewDCR;
@@ -56,6 +56,7 @@ export type MdmModuleValuesContextProps = Partial<{
56
56
  uiConfigLayout: Layout;
57
57
  uiConfigProfile: Profile;
58
58
  showMasking: boolean;
59
+ reviewDCREnabled: boolean;
59
60
  }>;
60
61
  export type MdmModuleActionsContextProps = Partial<{
61
62
  openSearch: (payload: SearchState) => void;
@@ -260,6 +261,7 @@ export declare const MdmModuleValuesContext: import("@fluentui/react-context-sel
260
261
  uiConfigLayout: Layout;
261
262
  uiConfigProfile: Profile;
262
263
  showMasking: boolean;
264
+ reviewDCREnabled: boolean;
263
265
  }>>;
264
266
  export declare const MdmModuleListenersContext: import("@fluentui/react-context-selector").Context<Partial<{
265
267
  expandInvalidRelatonsListener: (callback: () => void) => (action: any) => void;
@@ -151,3 +151,4 @@ export declare const useMdmListener: <T extends keyof MdmModuleListenersContextP
151
151
  export declare const useMdmHiddenAttributes: () => Record<string, string[]>;
152
152
  export declare const useMdmControlAttributes: () => string[];
153
153
  export declare const useMdmShowMasking: () => boolean;
154
+ export declare const useMdmReviewDCREnabled: () => boolean;