@hmcts/ccd-case-ui-toolkit 7.0.65 → 7.0.66-exui-2146-rc1

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 (46) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +60 -22
  2. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +1 -1
  3. package/esm2022/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.mjs +40 -28
  4. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.mjs +18 -17
  5. package/esm2022/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.mjs +27 -37
  6. package/esm2022/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.mjs +1 -1
  7. package/esm2022/lib/shared/components/case-editor/domain/event-completion-task-states.model.mjs +6 -0
  8. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +11 -5
  9. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +1 -1
  10. package/esm2022/lib/shared/components/event-start/event-guard/event-start.guard.mjs +28 -5
  11. package/esm2022/lib/shared/components/event-start/services/event-start-state-machine.service.mjs +15 -1
  12. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +14 -13
  13. package/esm2022/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +12 -12
  14. package/esm2022/lib/shared/components/palette/palette.module.mjs +5 -1
  15. package/esm2022/lib/shared/domain/work-allocation/Task.mjs +1 -1
  16. package/esm2022/lib/shared/domain/work-allocation/task-response.model.mjs +1 -1
  17. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +255 -157
  18. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  19. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts +5 -2
  20. package/lib/shared/components/case-editor/case-edit/case-edit.component.d.ts.map +1 -1
  21. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  22. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts +5 -3
  23. package/lib/shared/components/case-editor/case-event-completion/case-event-completion.component.d.ts.map +1 -1
  24. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts +7 -5
  25. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.d.ts.map +1 -1
  26. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts +7 -11
  27. package/lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.d.ts.map +1 -1
  28. package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts +1 -1
  29. package/lib/shared/components/case-editor/domain/event-completion-state-machine-context.model.d.ts.map +1 -1
  30. package/lib/shared/components/case-editor/domain/event-completion-task-states.model.d.ts +5 -0
  31. package/lib/shared/components/case-editor/domain/event-completion-task-states.model.d.ts.map +1 -0
  32. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
  33. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +2 -2
  34. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  35. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts +1 -1
  36. package/lib/shared/components/event-start/event-guard/event-start.guard.d.ts.map +1 -1
  37. package/lib/shared/components/event-start/services/event-start-state-machine.service.d.ts.map +1 -1
  38. package/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.d.ts.map +1 -1
  39. package/lib/shared/domain/work-allocation/Task.d.ts +10 -1
  40. package/lib/shared/domain/work-allocation/Task.d.ts.map +1 -1
  41. package/lib/shared/domain/work-allocation/task-response.model.d.ts +1 -1
  42. package/lib/shared/domain/work-allocation/task-response.model.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/esm2022/lib/shared/components/case-editor/domain/event-completion-portal-types.model.mjs +0 -6
  45. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts +0 -5
  46. package/lib/shared/components/case-editor/domain/event-completion-portal-types.model.d.ts.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ViewChildren, ContentChildren, Injectable, Inject, ChangeDetectorRef, Directive, InjectionToken, Injector, ViewChild, HostListener, ViewContainerRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
2
+ import { Component, Input, EventEmitter, Output, NgModule, ViewEncapsulation, forwardRef, Pipe, ViewChildren, ContentChildren, Injectable, Inject, ChangeDetectorRef, Directive, InjectionToken, ViewChild, HostListener, Injector, ViewContainerRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3
3
  import * as i5 from '@angular/common';
4
4
  import { CommonModule, DOCUMENT, AsyncPipe, CurrencyPipe, formatDate } from '@angular/common';
5
5
  import * as i1 from 'rpx-xui-translation';
@@ -24,7 +24,6 @@ import { StateMachine } from '@edium/fsm';
24
24
  import * as i1$3 from '@angular/material/legacy-dialog';
25
25
  import { MAT_LEGACY_DIALOG_DATA, MatLegacyDialogModule } from '@angular/material/legacy-dialog';
26
26
  import { MatDialogConfig } from '@angular/material/dialog';
27
- import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
28
27
  import * as i2 from '@nicky-lenaers/ngx-scroll-to';
29
28
  import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to';
30
29
  import * as marked from 'marked';
@@ -40,7 +39,6 @@ import * as i2$2 from '@angular/cdk/overlay';
40
39
  import { OverlayModule } from '@angular/cdk/overlay';
41
40
  import * as i7 from '@angular/cdk/tree';
42
41
  import { NestedTreeControl, CdkTreeModule } from '@angular/cdk/tree';
43
- import moment$1 from 'moment/moment';
44
42
  import * as i4$1 from '@angular-material-components/datetime-picker';
45
43
  import { NGX_MAT_DATE_FORMATS, NgxMatDateAdapter, NgxMatDatetimePickerModule, NgxMatTimepickerModule, NgxMatNativeDateModule } from '@angular-material-components/datetime-picker';
46
44
  import { NgxMatMomentAdapter, NGX_MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular-material-components/moment-adapter';
@@ -52,6 +50,7 @@ import * as i15 from '@angular/material/legacy-input';
52
50
  import { MatLegacyInputModule } from '@angular/material/legacy-input';
53
51
  import * as i14 from '@hmcts/media-viewer';
54
52
  import { MediaViewerModule } from '@hmcts/media-viewer';
53
+ import { PortalModule } from '@angular/cdk/portal';
55
54
  import * as i2$3 from 'ngx-pagination';
56
55
  import { NgxPaginationModule, PaginatePipe } from 'ngx-pagination';
57
56
  import * as i10 from '@angular/material/legacy-tabs';
@@ -8710,11 +8709,11 @@ var TaskState;
8710
8709
  TaskState["PendingReConfiguration"] = "PENDING_RECONFIGURATION";
8711
8710
  })(TaskState || (TaskState = {}));
8712
8711
 
8713
- var EventCompletionPortalTypes;
8714
- (function (EventCompletionPortalTypes) {
8715
- EventCompletionPortalTypes[EventCompletionPortalTypes["TaskCancelled"] = 0] = "TaskCancelled";
8716
- EventCompletionPortalTypes[EventCompletionPortalTypes["TaskReassigned"] = 1] = "TaskReassigned";
8717
- })(EventCompletionPortalTypes || (EventCompletionPortalTypes = {}));
8712
+ var EventCompletionTaskStates;
8713
+ (function (EventCompletionTaskStates) {
8714
+ EventCompletionTaskStates[EventCompletionTaskStates["TaskCancelled"] = 0] = "TaskCancelled";
8715
+ EventCompletionTaskStates[EventCompletionTaskStates["TaskReassigned"] = 1] = "TaskReassigned";
8716
+ })(EventCompletionTaskStates || (EventCompletionTaskStates = {}));
8718
8717
 
8719
8718
  const EVENT_COMPLETION_STATE_MACHINE = 'EVENT COMPLETION STATE MACHINE';
8720
8719
  class EventCompletionStateMachineService {
@@ -8753,6 +8752,7 @@ class EventCompletionStateMachineService {
8753
8752
  this.addTransitionsForStateTaskUnassigned();
8754
8753
  }
8755
8754
  entryActionForStateCheckTasksCanBeCompleted(state, context) {
8755
+ const assignNeeded = context.sessionStorageService.getItem('assignNeeded');
8756
8756
  context.workAllocationService.getTask(context.task.id).subscribe(taskResponse => {
8757
8757
  if (taskResponse && taskResponse.task && taskResponse.task.task_state) {
8758
8758
  switch (taskResponse.task.task_state.toUpperCase()) {
@@ -8772,6 +8772,11 @@ class EventCompletionStateMachineService {
8772
8772
  // Task still assigned to current user, complete event and task
8773
8773
  state.trigger(EventCompletionStates.CompleteEventAndTask);
8774
8774
  }
8775
+ else if (assignNeeded === 'true - override') {
8776
+ // this will treat task as unassigned instead of reassigned to complete after user confirmation
8777
+ // assignNeeded will also be immediately overwritten to true
8778
+ state.trigger(EventCompletionStates.TaskUnassigned);
8779
+ }
8775
8780
  else {
8776
8781
  // Task has been reassigned to another user, display error message
8777
8782
  context.reassignedTask = taskResponse.task;
@@ -8793,7 +8798,7 @@ class EventCompletionStateMachineService {
8793
8798
  // Trigger final state to complete processing of state machine
8794
8799
  state.trigger(EventCompletionStates.Final);
8795
8800
  // Load case event completion task cancelled component
8796
- context.component.showPortal(EventCompletionPortalTypes.TaskCancelled);
8801
+ context.component.setTaskState(EventCompletionTaskStates.TaskCancelled);
8797
8802
  }
8798
8803
  entryActionForStateCompleteEventAndTask(state, context) {
8799
8804
  // Trigger final state to complete processing of state machine
@@ -8814,7 +8819,7 @@ class EventCompletionStateMachineService {
8814
8819
  // Trigger final state to complete processing of state machine
8815
8820
  state.trigger(EventCompletionStates.Final);
8816
8821
  // Load case event completion task reassigned component
8817
- context.component.showPortal(EventCompletionPortalTypes.TaskReassigned);
8822
+ context.component.setTaskState(EventCompletionTaskStates.TaskReassigned);
8818
8823
  }
8819
8824
  entryActionForStateTaskUnassigned(state, context) {
8820
8825
  // Trigger final state to complete processing of state machine
@@ -9379,15 +9384,22 @@ class CaseEditComponent {
9379
9384
  const clientContextStr = this.sessionStorageService.getItem('clientContext');
9380
9385
  const userTask = FieldsUtils.getUserTaskFromClientContext(clientContextStr);
9381
9386
  const taskInSessionStorage = userTask ? userTask.task_data : null;
9382
- let taskEventInSessionStorage;
9383
- const taskStr = this.sessionStorageService.getItem('taskToComplete');
9384
- const taskEventStr = this.sessionStorageService.getItem('taskEvent');
9385
- if (taskEventStr) {
9386
- taskEventInSessionStorage = JSON.parse(taskEventStr);
9387
+ let taskEventCompletionInfo;
9388
+ let userInfo;
9389
+ const taskEventCompletionStr = this.sessionStorageService.getItem('taskEventCompletionInfo');
9390
+ const userInfoStr = this.sessionStorageService.getItem('userDetails');
9391
+ const assignNeeded = this.sessionStorageService.getItem('assignNeeded');
9392
+ if (taskEventCompletionStr) {
9393
+ taskEventCompletionInfo = JSON.parse(taskEventCompletionStr);
9394
+ }
9395
+ if (userInfoStr) {
9396
+ userInfo = JSON.parse(userInfoStr);
9387
9397
  }
9388
9398
  const eventId = this.getEventId(form);
9389
9399
  const caseId = this.getCaseId(caseDetails);
9390
- if (this.taskExistsForThisEventAndCase(taskInSessionStorage, taskEventInSessionStorage, eventId, caseId)) {
9400
+ const userId = userInfo.id ? userInfo.id : userInfo.uid;
9401
+ const eventDetails = { eventId, caseId, userId, assignNeeded };
9402
+ if (this.taskExistsForThisEvent(taskInSessionStorage, taskEventCompletionInfo, eventDetails)) {
9391
9403
  this.abstractConfig.logMessage(`task exist for this event for caseId and eventId as ${caseId} ${eventId}`);
9392
9404
  // Show event completion component to perform event completion checks
9393
9405
  this.eventCompletionParams = ({
@@ -9395,9 +9407,16 @@ class CaseEditComponent {
9395
9407
  eventId,
9396
9408
  task: taskInSessionStorage
9397
9409
  });
9398
- // add taskEvent to link current event with task id
9399
- const taskEvent = { eventId, taskId: taskInSessionStorage.id };
9400
- this.sessionStorageService.setItem('taskEvent', JSON.stringify(taskEvent));
9410
+ // add taskEventCompletionInfo again to ensure link current event with task id
9411
+ // note: previous usage was created here so this is to ensure correct functionality continues
9412
+ const taskEventCompletionInfo = {
9413
+ caseId,
9414
+ eventId,
9415
+ userId,
9416
+ taskId: taskInSessionStorage.id,
9417
+ createdTimestamp: Date.now()
9418
+ };
9419
+ this.sessionStorageService.setItem('taskEventCompletionInfo', JSON.stringify(taskEventCompletionInfo));
9401
9420
  this.isEventCompletionChecksRequired = true;
9402
9421
  }
9403
9422
  else {
@@ -9562,9 +9581,9 @@ class CaseEditComponent {
9562
9581
  return this.postCompleteTaskIfRequired();
9563
9582
  }), finalize(() => {
9564
9583
  this.loadingService.unregister(loadingSpinnerToken);
9565
- // on event completion ensure the previous event taskToComplete/taskEvent removed
9566
- this.sessionStorageService.removeItem('taskToComplete');
9567
- this.sessionStorageService.removeItem('taskEvent');
9584
+ // on event completion ensure the previous event clientContext/taskEventCompletionInfo removed
9585
+ this.sessionStorageService.removeItem('clientContext');
9586
+ this.sessionStorageService.removeItem('taskEventCompletionInfo');
9568
9587
  this.isSubmitting = false;
9569
9588
  }))
9570
9589
  .subscribe(() => {
@@ -9625,22 +9644,32 @@ class CaseEditComponent {
9625
9644
  return null;
9626
9645
  }
9627
9646
  }
9628
- // checks whether current taskToComplete relevant for the event
9629
- taskExistsForThisEventAndCase(taskInSessionStorage, taskEvent, eventId, caseId) {
9630
- if (!taskInSessionStorage || taskInSessionStorage.case_id !== caseId) {
9647
+ // checks whether current clientContext relevant for the event
9648
+ taskExistsForThisEvent(taskInSessionStorage, taskEventCompletionInfo, eventDetails) {
9649
+ if (!taskInSessionStorage || taskInSessionStorage.case_id !== eventDetails.caseId) {
9631
9650
  return false;
9632
9651
  }
9633
- if (!taskEvent) {
9652
+ if (!taskEventCompletionInfo) {
9634
9653
  // if no task event present then there is no task to complete from previous event present
9635
9654
  return true;
9636
9655
  }
9637
9656
  else {
9638
- if (taskEvent.taskId === taskInSessionStorage.id && taskEvent.eventId !== eventId) {
9657
+ if (taskEventCompletionInfo.taskId !== taskInSessionStorage.id) {
9658
+ return true;
9659
+ }
9660
+ else if ((taskEventCompletionInfo.taskId === taskInSessionStorage.id &&
9661
+ this.eventDetailsDoNotMatch(taskEventCompletionInfo, eventDetails))
9662
+ || this.eventMoreThanDayAgo(taskEventCompletionInfo.createdTimestamp)) {
9639
9663
  // if the session storage not related to event, ignore it and remove
9640
- this.sessionStorageService.removeItem('taskToComplete');
9641
- this.sessionStorageService.removeItem('taskEvent');
9664
+ this.sessionStorageService.removeItem('clientContext');
9665
+ this.sessionStorageService.removeItem('taskEventCompletionInfo');
9642
9666
  return false;
9643
9667
  }
9668
+ if (eventDetails.assignNeeded === 'false' && eventDetails.userId !== taskInSessionStorage.assignee) {
9669
+ // if the user does not match task assignee, assign is now needed
9670
+ // data cannot be deleted and ignored as it matches understanding
9671
+ this.sessionStorageService.setItem('assignNeeded', 'true');
9672
+ }
9644
9673
  return true;
9645
9674
  }
9646
9675
  }
@@ -9661,6 +9690,20 @@ class CaseEditComponent {
9661
9690
  hasCallbackFailed(response) {
9662
9691
  return response['callback_response_status'] !== 'CALLBACK_COMPLETED';
9663
9692
  }
9693
+ eventMoreThanDayAgo(timestamp) {
9694
+ if ((new Date().getTime() - timestamp) > (24 * 60 * 60 * 1000)) {
9695
+ return true;
9696
+ }
9697
+ return false;
9698
+ }
9699
+ eventDetailsDoNotMatch(taskEventCompletionInfo, eventDetails) {
9700
+ if (taskEventCompletionInfo.eventId !== eventDetails.eventId
9701
+ || taskEventCompletionInfo.caseId !== eventDetails.caseId
9702
+ || taskEventCompletionInfo.userId !== eventDetails.userId) {
9703
+ return true;
9704
+ }
9705
+ return false;
9706
+ }
9664
9707
  static ɵfac = function CaseEditComponent_Factory(t) { return new (t || CaseEditComponent)(i0.ɵɵdirectiveInject(i4.FormBuilder), i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(FieldsUtils), i0.ɵɵdirectiveInject(FieldsPurger), i0.ɵɵdirectiveInject(ConditionalShowRegistrarService), i0.ɵɵdirectiveInject(WizardFactoryService), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(WindowService), i0.ɵɵdirectiveInject(FormValueService), i0.ɵɵdirectiveInject(FormErrorService), i0.ɵɵdirectiveInject(LoadingService), i0.ɵɵdirectiveInject(ValidPageListCaseFieldsService), i0.ɵɵdirectiveInject(WorkAllocationService), i0.ɵɵdirectiveInject(AlertService), i0.ɵɵdirectiveInject(AbstractAppConfig)); };
9665
9708
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditComponent, selectors: [["ccd-case-edit"]], inputs: { eventTrigger: "eventTrigger", submit: "submit", validate: "validate", saveDraft: "saveDraft", caseDetails: "caseDetails" }, outputs: { cancelled: "cancelled", submitted: "submitted" }, features: [i0.ɵɵProvidersFeature([GreyBarService])], decls: 1, vars: 0, template: function CaseEditComponent_Template(rf, ctx) { if (rf & 1) {
9666
9709
  i0.ɵɵelement(0, "router-outlet");
@@ -9684,7 +9727,7 @@ class CaseEditComponent {
9684
9727
  }], submitted: [{
9685
9728
  type: Output
9686
9729
  }] }); })();
9687
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditComponent, { className: "CaseEditComponent", filePath: "lib/shared/components/case-editor/case-edit/case-edit.component.ts", lineNumber: 34 }); })();
9730
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditComponent, { className: "CaseEditComponent", filePath: "lib/shared/components/case-editor/case-edit/case-edit.component.ts", lineNumber: 35 }); })();
9688
9731
 
9689
9732
  function CaseEditConfirmComponent_div_3_Template(rf, ctx) { if (rf & 1) {
9690
9733
  i0.ɵɵelement(0, "div");
@@ -11003,20 +11046,118 @@ class CallbackErrorsComponent {
11003
11046
  }] }); })();
11004
11047
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CallbackErrorsComponent, { className: "CallbackErrorsComponent", filePath: "lib/shared/components/error/callback-errors.component.ts", lineNumber: 10 }); })();
11005
11048
 
11049
+ function CaseEventCompletionComponent_app_case_event_completion_task_cancelled_0_Template(rf, ctx) { if (rf & 1) {
11050
+ const _r1 = i0.ɵɵgetCurrentView();
11051
+ i0.ɵɵelementStart(0, "app-case-event-completion-task-cancelled", 2);
11052
+ i0.ɵɵlistener("notifyEventCompletionCancelled", function CaseEventCompletionComponent_app_case_event_completion_task_cancelled_0_Template_app_case_event_completion_task_cancelled_notifyEventCompletionCancelled_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setEventCanBeCompleted($event)); });
11053
+ i0.ɵɵelementEnd();
11054
+ } if (rf & 2) {
11055
+ const ctx_r1 = i0.ɵɵnextContext();
11056
+ i0.ɵɵproperty("context", ctx_r1.context);
11057
+ } }
11058
+ function CaseEventCompletionComponent_app_case_event_completion_task_reassigned_1_Template(rf, ctx) { if (rf & 1) {
11059
+ const _r3 = i0.ɵɵgetCurrentView();
11060
+ i0.ɵɵelementStart(0, "app-case-event-completion-task-reassigned", 3);
11061
+ i0.ɵɵlistener("notifyEventCompletionReassigned", function CaseEventCompletionComponent_app_case_event_completion_task_reassigned_1_Template_app_case_event_completion_task_reassigned_notifyEventCompletionReassigned_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setEventCanBeCompleted($event)); });
11062
+ i0.ɵɵelementEnd();
11063
+ } if (rf & 2) {
11064
+ const ctx_r1 = i0.ɵɵnextContext();
11065
+ i0.ɵɵproperty("context", ctx_r1.context);
11066
+ } }
11067
+ const COMPONENT_PORTAL_INJECTION_TOKEN = new InjectionToken('');
11068
+ class CaseEventCompletionComponent {
11069
+ service;
11070
+ router;
11071
+ route;
11072
+ sessionStorageService;
11073
+ workAllocationService;
11074
+ alertService;
11075
+ eventCompletionParams;
11076
+ eventCanBeCompleted = new EventEmitter();
11077
+ eventCompletionTaskStates = EventCompletionTaskStates;
11078
+ stateMachine;
11079
+ context;
11080
+ taskState;
11081
+ constructor(service, router, route, sessionStorageService, workAllocationService, alertService) {
11082
+ this.service = service;
11083
+ this.router = router;
11084
+ this.route = route;
11085
+ this.sessionStorageService = sessionStorageService;
11086
+ this.workAllocationService = workAllocationService;
11087
+ this.alertService = alertService;
11088
+ }
11089
+ ngOnChanges(changes) {
11090
+ if (changes.eventCompletionParams?.currentValue) {
11091
+ // Setup the context
11092
+ this.context = {
11093
+ task: this.eventCompletionParams.task,
11094
+ caseId: this.eventCompletionParams.caseId,
11095
+ eventId: this.eventCompletionParams.eventId,
11096
+ reassignedTask: null,
11097
+ router: this.router,
11098
+ route: this.route,
11099
+ sessionStorageService: this.sessionStorageService,
11100
+ workAllocationService: this.workAllocationService,
11101
+ alertService: this.alertService,
11102
+ canBeCompleted: false,
11103
+ component: this
11104
+ };
11105
+ // Initialise state machine
11106
+ this.stateMachine = this.service.initialiseStateMachine(this.context);
11107
+ // Create states
11108
+ this.service.createStates(this.stateMachine);
11109
+ // Add transitions for the states
11110
+ this.service.addTransitions();
11111
+ // Start state machine
11112
+ this.service.startStateMachine(this.stateMachine);
11113
+ }
11114
+ }
11115
+ setTaskState(taskState) {
11116
+ this.taskState = taskState;
11117
+ }
11118
+ setEventCanBeCompleted(completable) {
11119
+ // note: event not completed from here as will then skip task completion
11120
+ if (!completable) {
11121
+ // if event cannot be completed ensure that this is communicated
11122
+ // otherwise this will be handled via onchanges
11123
+ this.eventCanBeCompleted.emit(completable);
11124
+ }
11125
+ }
11126
+ static ɵfac = function CaseEventCompletionComponent_Factory(t) { return new (t || CaseEventCompletionComponent)(i0.ɵɵdirectiveInject(EventCompletionStateMachineService), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(WorkAllocationService), i0.ɵɵdirectiveInject(AlertService)); };
11127
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventCompletionComponent, selectors: [["ccd-case-event-completion"]], inputs: { eventCompletionParams: "eventCompletionParams" }, outputs: { eventCanBeCompleted: "eventCanBeCompleted" }, features: [i0.ɵɵNgOnChangesFeature], decls: 2, vars: 2, consts: [[3, "context", "notifyEventCompletionCancelled", 4, "ngIf"], [3, "context", "notifyEventCompletionReassigned", 4, "ngIf"], [3, "notifyEventCompletionCancelled", "context"], [3, "notifyEventCompletionReassigned", "context"]], template: function CaseEventCompletionComponent_Template(rf, ctx) { if (rf & 1) {
11128
+ i0.ɵɵtemplate(0, CaseEventCompletionComponent_app_case_event_completion_task_cancelled_0_Template, 1, 1, "app-case-event-completion-task-cancelled", 0)(1, CaseEventCompletionComponent_app_case_event_completion_task_reassigned_1_Template, 1, 1, "app-case-event-completion-task-reassigned", 1);
11129
+ } if (rf & 2) {
11130
+ i0.ɵɵproperty("ngIf", ctx.taskState === ctx.eventCompletionTaskStates.TaskCancelled);
11131
+ i0.ɵɵadvance();
11132
+ i0.ɵɵproperty("ngIf", ctx.taskState === ctx.eventCompletionTaskStates.TaskReassigned);
11133
+ } }, encapsulation: 2 });
11134
+ }
11135
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEventCompletionComponent, [{
11136
+ type: Component,
11137
+ args: [{ selector: 'ccd-case-event-completion', template: "<app-case-event-completion-task-cancelled\n *ngIf=\"taskState === eventCompletionTaskStates.TaskCancelled\"\n [context]=\"context\"\n (notifyEventCompletionCancelled)=\"setEventCanBeCompleted($event)\">\n</app-case-event-completion-task-cancelled>\n<app-case-event-completion-task-reassigned\n *ngIf=\"taskState === eventCompletionTaskStates.TaskReassigned\"\n [context]=\"context\"\n (notifyEventCompletionReassigned)=\"setEventCanBeCompleted($event)\">\n</app-case-event-completion-task-reassigned>" }]
11138
+ }], () => [{ type: EventCompletionStateMachineService }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: SessionStorageService }, { type: WorkAllocationService }, { type: AlertService }], { eventCompletionParams: [{
11139
+ type: Input
11140
+ }], eventCanBeCompleted: [{
11141
+ type: Output
11142
+ }] }); })();
11143
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventCompletionComponent, { className: "CaseEventCompletionComponent", filePath: "lib/shared/components/case-editor/case-event-completion/case-event-completion.component.ts", lineNumber: 20 }); })();
11144
+
11006
11145
  const _c0$X = a0 => ["/", "cases", "case-details", a0, "tasks"];
11007
11146
  class CaseEventCompletionTaskCancelledComponent {
11008
- parentComponent;
11147
+ context;
11148
+ notifyEventCompletionCancelled = new EventEmitter();
11009
11149
  caseId;
11010
- constructor(parentComponent) {
11011
- this.parentComponent = parentComponent;
11012
- this.caseId = this.parentComponent.context.caseId;
11150
+ ngOnInit() {
11151
+ this.caseId = this.context.caseId;
11013
11152
  }
11014
11153
  onContinue() {
11015
- // Emit event can be completed event
11016
- this.parentComponent.eventCanBeCompleted.emit(true);
11154
+ // Removes task to complete so event completes without task
11155
+ this.context.sessionStorageService.removeItem('clientContext');
11156
+ // may be able to remove this call below since it is now unneccesary
11157
+ this.notifyEventCompletionCancelled.emit(true);
11017
11158
  }
11018
- static ɵfac = function CaseEventCompletionTaskCancelledComponent_Factory(t) { return new (t || CaseEventCompletionTaskCancelledComponent)(i0.ɵɵdirectiveInject(COMPONENT_PORTAL_INJECTION_TOKEN)); };
11019
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventCompletionTaskCancelledComponent, selectors: [["app-case-event-completion-task-cancelled"]], decls: 31, vars: 27, consts: [[1, "govuk-!-margin-9"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], ["href", "#"], [1, "govuk-form-group", "govuk-form-group--error"], [1, "govuk-heading-m"], [1, "form-group", "form-group-related"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-!-margin-right-2", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", 3, "routerLink"]], template: function CaseEventCompletionTaskCancelledComponent_Template(rf, ctx) { if (rf & 1) {
11159
+ static ɵfac = function CaseEventCompletionTaskCancelledComponent_Factory(t) { return new (t || CaseEventCompletionTaskCancelledComponent)(); };
11160
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventCompletionTaskCancelledComponent, selectors: [["app-case-event-completion-task-cancelled"]], inputs: { context: "context" }, outputs: { notifyEventCompletionCancelled: "notifyEventCompletionCancelled" }, decls: 31, vars: 27, consts: [[1, "govuk-!-margin-9"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], ["href", "#"], [1, "govuk-form-group", "govuk-form-group--error"], [1, "govuk-heading-m"], [1, "form-group", "form-group-related"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-!-margin-right-2", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", 3, "routerLink"]], template: function CaseEventCompletionTaskCancelledComponent_Template(rf, ctx) { if (rf & 1) {
11020
11161
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h2", 2);
11021
11162
  i0.ɵɵtext(3);
11022
11163
  i0.ɵɵpipe(4, "rpxTranslate");
@@ -11074,11 +11215,12 @@ class CaseEventCompletionTaskCancelledComponent {
11074
11215
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEventCompletionTaskCancelledComponent, [{
11075
11216
  type: Component,
11076
11217
  args: [{ selector: 'app-case-event-completion-task-cancelled', template: "<div class=\"govuk-!-margin-9\">\n <div class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\" data-module=\"error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a href=\"#\">{{'Task cancelled/marked as done' | rpxTranslate}}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"govuk-form-group govuk-form-group--error\">\n <h2 class=\"govuk-heading-m\">{{'Task cancelled/marked as done' | rpxTranslate}}</h2>\n <p>{{'This task has been cancelled or marked as done.' | rpxTranslate}}</p>\n <p>{{'Click Continue to complete the event and save your progress.' | rpxTranslate}}</p>\n\n <p>{{'Alternatively, click Cancel to return to the tasks tab without saving your progress.' | rpxTranslate}}</p>\n\n <div class=\"form-group form-group-related\">\n <button class=\"govuk-button govuk-!-margin-right-2\" data-module=\"govuk-button\" (click)=\"onContinue()\">\n {{'Continue' | rpxTranslate}}\n </button>\n <a [routerLink]=\"['/', 'cases', 'case-details', caseId, 'tasks']\"\n class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </div>\n </div>\n</div>\n" }]
11077
- }], () => [{ type: CaseEventCompletionComponent, decorators: [{
11078
- type: Inject,
11079
- args: [COMPONENT_PORTAL_INJECTION_TOKEN]
11080
- }] }], null); })();
11081
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventCompletionTaskCancelledComponent, { className: "CaseEventCompletionTaskCancelledComponent", filePath: "lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.ts", lineNumber: 8 }); })();
11218
+ }], null, { context: [{
11219
+ type: Input
11220
+ }], notifyEventCompletionCancelled: [{
11221
+ type: Output
11222
+ }] }); })();
11223
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventCompletionTaskCancelledComponent, { className: "CaseEventCompletionTaskCancelledComponent", filePath: "lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-cancelled/case-event-completion-task-cancelled.component.ts", lineNumber: 9 }); })();
11082
11224
 
11083
11225
  const _c0$W = a0 => ["/", "cases", "case-details", a0, "tasks"];
11084
11226
  function CaseEventCompletionTaskReassignedComponent_div_0_Template(rf, ctx) { if (rf & 1) {
@@ -11138,32 +11280,26 @@ function CaseEventCompletionTaskReassignedComponent_div_0_Template(rf, ctx) { if
11138
11280
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(30, 24, "Cancel"), " ");
11139
11281
  } }
11140
11282
  class CaseEventCompletionTaskReassignedComponent {
11141
- parentComponent;
11142
- route;
11143
- workAllocationService;
11144
11283
  sessionStorageService;
11145
11284
  judicialworkerService;
11146
11285
  caseworkerService;
11147
- alertService;
11286
+ context;
11287
+ notifyEventCompletionReassigned = new EventEmitter();
11148
11288
  caseId;
11149
11289
  assignedUserId;
11150
11290
  assignedUserName;
11151
11291
  subscription;
11152
11292
  caseworkerSubscription;
11153
11293
  judicialworkerSubscription;
11154
- constructor(parentComponent, route, workAllocationService, sessionStorageService, judicialworkerService, caseworkerService, alertService) {
11155
- this.parentComponent = parentComponent;
11156
- this.route = route;
11157
- this.workAllocationService = workAllocationService;
11294
+ constructor(sessionStorageService, judicialworkerService, caseworkerService) {
11158
11295
  this.sessionStorageService = sessionStorageService;
11159
11296
  this.judicialworkerService = judicialworkerService;
11160
11297
  this.caseworkerService = caseworkerService;
11161
- this.alertService = alertService;
11162
11298
  }
11163
11299
  ngOnInit() {
11164
11300
  // Get case id and task from the parent component
11165
- this.caseId = this.parentComponent.context.caseId;
11166
- const task = this.parentComponent.context.reassignedTask;
11301
+ this.caseId = this.context.caseId;
11302
+ const task = this.context.reassignedTask;
11167
11303
  // Current user is a caseworker?
11168
11304
  this.caseworkerSubscription = this.caseworkerService.getCaseworkers(task.jurisdiction).subscribe(result => {
11169
11305
  if (result && result[0].service === task.jurisdiction && result[0].caseworkers) {
@@ -11208,17 +11344,17 @@ class CaseEventCompletionTaskReassignedComponent {
11208
11344
  // not complete_task not utilised here as related to event completion
11209
11345
  // service wanting task associated with event to not be completed not directly relevant
11210
11346
  if (task) {
11211
- this.sessionStorageService.setItem('assignNeeded', 'true');
11212
- // set event can be completed to true
11213
- this.parentComponent.eventCanBeCompleted.emit(true);
11347
+ // Set session to override reassignment settings so code flow does not return to this component
11348
+ this.sessionStorageService.setItem('assignNeeded', 'true - override');
11349
+ this.notifyEventCompletionReassigned.emit(true);
11214
11350
  }
11215
11351
  else {
11216
11352
  // Emit event cannot be completed event
11217
- this.parentComponent.eventCanBeCompleted.emit(false);
11353
+ this.notifyEventCompletionReassigned.emit(false);
11218
11354
  }
11219
11355
  }
11220
- static ɵfac = function CaseEventCompletionTaskReassignedComponent_Factory(t) { return new (t || CaseEventCompletionTaskReassignedComponent)(i0.ɵɵdirectiveInject(COMPONENT_PORTAL_INJECTION_TOKEN), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(WorkAllocationService), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(JudicialworkerService), i0.ɵɵdirectiveInject(CaseworkerService), i0.ɵɵdirectiveInject(AlertService)); };
11221
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventCompletionTaskReassignedComponent, selectors: [["app-case-event-completion-task-reassigned"]], decls: 1, vars: 1, consts: [["class", "govuk-!-margin-9", 4, "ngIf"], [1, "govuk-!-margin-9"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], ["href", "#"], [1, "govuk-form-group", "govuk-form-group--error"], [1, "govuk-heading-m"], [1, "form-group", "form-group-related"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-!-margin-right-2", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", 3, "routerLink"]], template: function CaseEventCompletionTaskReassignedComponent_Template(rf, ctx) { if (rf & 1) {
11356
+ static ɵfac = function CaseEventCompletionTaskReassignedComponent_Factory(t) { return new (t || CaseEventCompletionTaskReassignedComponent)(i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(JudicialworkerService), i0.ɵɵdirectiveInject(CaseworkerService)); };
11357
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventCompletionTaskReassignedComponent, selectors: [["app-case-event-completion-task-reassigned"]], inputs: { context: "context" }, outputs: { notifyEventCompletionReassigned: "notifyEventCompletionReassigned" }, decls: 1, vars: 1, consts: [["class", "govuk-!-margin-9", 4, "ngIf"], [1, "govuk-!-margin-9"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], ["href", "#"], [1, "govuk-form-group", "govuk-form-group--error"], [1, "govuk-heading-m"], [1, "form-group", "form-group-related"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-!-margin-right-2", 3, "click"], ["data-module", "govuk-button", 1, "govuk-button", "govuk-button--secondary", 3, "routerLink"]], template: function CaseEventCompletionTaskReassignedComponent_Template(rf, ctx) { if (rf & 1) {
11222
11358
  i0.ɵɵtemplate(0, CaseEventCompletionTaskReassignedComponent_div_0_Template, 31, 28, "div", 0);
11223
11359
  } if (rf & 2) {
11224
11360
  i0.ɵɵproperty("ngIf", ctx.assignedUserName);
@@ -11227,92 +11363,12 @@ class CaseEventCompletionTaskReassignedComponent {
11227
11363
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEventCompletionTaskReassignedComponent, [{
11228
11364
  type: Component,
11229
11365
  args: [{ selector: 'app-case-event-completion-task-reassigned', template: "<div class=\"govuk-!-margin-9\" *ngIf=\"assignedUserName\">\n <div class=\"govuk-error-summary\" aria-labelledby=\"error-summary-title\" role=\"alert\" tabindex=\"-1\"\n data-module=\"error-summary\">\n <h2 class=\"govuk-error-summary__title\" id=\"error-summary-title\">\n {{'There is a problem' | rpxTranslate}}\n </h2>\n <div class=\"govuk-error-summary__body\">\n <ul class=\"govuk-list govuk-error-summary__list\">\n <li>\n <a href=\"#\">{{'Task reassigned' | rpxTranslate}}</a>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"govuk-form-group govuk-form-group--error\">\n <h2 class=\"govuk-heading-m\">{{'Task reassigned' | rpxTranslate}}</h2>\n <p>{{'This task has been reassigned to' | rpxTranslate}} {{assignedUserName}}.</p>\n <p>{{'Click Continue to reassign the task to you and save your progress.' | rpxTranslate}}</p>\n <p>{{'Alternatively, click Cancel to return to the tasks tab without saving your progress.' | rpxTranslate}}</p>\n <div class=\"form-group form-group-related\">\n <button class=\"govuk-button govuk-!-margin-right-2\" data-module=\"govuk-button\" (click)=\"onContinue()\">\n {{'Continue' | rpxTranslate}}\n </button>\n <a [routerLink]=\"['/', 'cases', 'case-details', caseId, 'tasks']\"\n class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\">\n {{'Cancel' | rpxTranslate}}\n </a>\n </div>\n </div>\n</div>\n" }]
11230
- }], () => [{ type: CaseEventCompletionComponent, decorators: [{
11231
- type: Inject,
11232
- args: [COMPONENT_PORTAL_INJECTION_TOKEN]
11233
- }] }, { type: i1$1.ActivatedRoute }, { type: WorkAllocationService }, { type: SessionStorageService }, { type: JudicialworkerService }, { type: CaseworkerService }, { type: AlertService }], null); })();
11234
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventCompletionTaskReassignedComponent, { className: "CaseEventCompletionTaskReassignedComponent", filePath: "lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.ts", lineNumber: 19 }); })();
11235
-
11236
- function CaseEventCompletionComponent_ng_template_0_Template(rf, ctx) { }
11237
- const COMPONENT_PORTAL_INJECTION_TOKEN = new InjectionToken('');
11238
- class CaseEventCompletionComponent {
11239
- service;
11240
- router;
11241
- route;
11242
- sessionStorageService;
11243
- workAllocationService;
11244
- alertService;
11245
- eventCompletionParams;
11246
- eventCanBeCompleted = new EventEmitter();
11247
- stateMachine;
11248
- context;
11249
- selectedComponentPortal;
11250
- constructor(service, router, route, sessionStorageService, workAllocationService, alertService) {
11251
- this.service = service;
11252
- this.router = router;
11253
- this.route = route;
11254
- this.sessionStorageService = sessionStorageService;
11255
- this.workAllocationService = workAllocationService;
11256
- this.alertService = alertService;
11257
- }
11258
- ngOnChanges(changes) {
11259
- if (changes.eventCompletionParams && changes.eventCompletionParams.currentValue) {
11260
- // Setup the context
11261
- this.context = {
11262
- task: this.eventCompletionParams.task,
11263
- caseId: this.eventCompletionParams.caseId,
11264
- eventId: this.eventCompletionParams.eventId,
11265
- reassignedTask: null,
11266
- router: this.router,
11267
- route: this.route,
11268
- sessionStorageService: this.sessionStorageService,
11269
- workAllocationService: this.workAllocationService,
11270
- alertService: this.alertService,
11271
- canBeCompleted: false,
11272
- component: this
11273
- };
11274
- // Initialise state machine
11275
- this.stateMachine = this.service.initialiseStateMachine(this.context);
11276
- // Create states
11277
- this.service.createStates(this.stateMachine);
11278
- // Add transitions for the states
11279
- this.service.addTransitions();
11280
- // Start state machine
11281
- this.service.startStateMachine(this.stateMachine);
11282
- }
11283
- }
11284
- showPortal(portalType) {
11285
- const injector = Injector.create({
11286
- providers: [
11287
- { provide: COMPONENT_PORTAL_INJECTION_TOKEN, useValue: this }
11288
- ]
11289
- });
11290
- // tslint:disable-next-line:switch-default
11291
- switch (portalType) {
11292
- case EventCompletionPortalTypes.TaskCancelled:
11293
- this.selectedComponentPortal = new ComponentPortal(CaseEventCompletionTaskCancelledComponent, null, injector);
11294
- break;
11295
- case EventCompletionPortalTypes.TaskReassigned:
11296
- this.selectedComponentPortal = new ComponentPortal(CaseEventCompletionTaskReassignedComponent, null, injector);
11297
- break;
11298
- }
11299
- }
11300
- static ɵfac = function CaseEventCompletionComponent_Factory(t) { return new (t || CaseEventCompletionComponent)(i0.ɵɵdirectiveInject(EventCompletionStateMachineService), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(WorkAllocationService), i0.ɵɵdirectiveInject(AlertService)); };
11301
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventCompletionComponent, selectors: [["ccd-case-event-completion"]], inputs: { eventCompletionParams: "eventCompletionParams" }, outputs: { eventCanBeCompleted: "eventCanBeCompleted" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "cdkPortalOutlet"]], template: function CaseEventCompletionComponent_Template(rf, ctx) { if (rf & 1) {
11302
- i0.ɵɵtemplate(0, CaseEventCompletionComponent_ng_template_0_Template, 0, 0, "ng-template", 0);
11303
- } if (rf & 2) {
11304
- i0.ɵɵproperty("cdkPortalOutlet", ctx.selectedComponentPortal);
11305
- } }, encapsulation: 2 });
11306
- }
11307
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEventCompletionComponent, [{
11308
- type: Component,
11309
- args: [{ selector: 'ccd-case-event-completion', template: "<ng-template [cdkPortalOutlet]=\"selectedComponentPortal\"></ng-template>\n" }]
11310
- }], () => [{ type: EventCompletionStateMachineService }, { type: i1$1.Router }, { type: i1$1.ActivatedRoute }, { type: SessionStorageService }, { type: WorkAllocationService }, { type: AlertService }], { eventCompletionParams: [{
11366
+ }], () => [{ type: SessionStorageService }, { type: JudicialworkerService }, { type: CaseworkerService }], { context: [{
11311
11367
  type: Input
11312
- }], eventCanBeCompleted: [{
11368
+ }], notifyEventCompletionReassigned: [{
11313
11369
  type: Output
11314
11370
  }] }); })();
11315
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventCompletionComponent, { className: "CaseEventCompletionComponent", filePath: "lib/shared/components/case-editor/case-event-completion/case-event-completion.component.ts", lineNumber: 21 }); })();
11371
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventCompletionTaskReassignedComponent, { className: "CaseEventCompletionTaskReassignedComponent", filePath: "lib/shared/components/case-editor/case-event-completion/components/case-event-completion-task-reassigned/case-event-completion-task-reassigned.component.ts", lineNumber: 15 }); })();
11316
11372
 
11317
11373
  class AddressOption {
11318
11374
  description;
@@ -22437,10 +22493,11 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
22437
22493
  i0.ɵɵelement(6, "br");
22438
22494
  i0.ɵɵelementStart(7, "span", 17);
22439
22495
  i0.ɵɵtext(8);
22440
- i0.ɵɵpipe(9, "date");
22496
+ i0.ɵɵpipe(9, "ccdDate");
22497
+ i0.ɵɵpipe(10, "date");
22441
22498
  i0.ɵɵelementEnd()();
22442
- i0.ɵɵelementStart(10, "div", 18)(11, "ccd-case-file-view-folder-document-actions", 19);
22443
- i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("changeFolder", node_r2)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("openInANewTab", node_r2)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("download", node_r2)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_11_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("print", node_r2)); });
22499
+ i0.ɵɵelementStart(11, "div", 18)(12, "ccd-case-file-view-folder-document-actions", 19);
22500
+ i0.ɵɵlistener("changeFolderAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_changeFolderAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("changeFolder", node_r2)); })("openInANewTabAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_openInANewTabAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("openInANewTab", node_r2)); })("downloadAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_downloadAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("download", node_r2)); })("printAction", function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template_ccd_case_file_view_folder_document_actions_printAction_12_listener() { const node_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.triggerDocumentAction("print", node_r2)); });
22444
22501
  i0.ɵɵelementEnd()()()();
22445
22502
  } if (rf & 2) {
22446
22503
  const node_r2 = ctx.$implicit;
@@ -22450,8 +22507,8 @@ function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template(rf, c
22450
22507
  i0.ɵɵadvance(4);
22451
22508
  i0.ɵɵtextInterpolate1(" ", node_r2.name, " ");
22452
22509
  i0.ɵɵadvance(3);
22453
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(9, 5, node_r2.upload_timestamp, "dd MMM YYYY HH:mm"));
22454
- i0.ɵɵadvance(3);
22510
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(10, 8, i0.ɵɵpipeBind2(9, 5, node_r2.upload_timestamp, "local"), "dd MMM YYYY HH:mm"));
22511
+ i0.ɵɵadvance(4);
22455
22512
  i0.ɵɵproperty("allowMoving", ctx_r2.allowMoving);
22456
22513
  } }
22457
22514
  function CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template(rf, ctx) { if (rf & 1) {
@@ -22484,7 +22541,7 @@ function CaseFileViewFolderComponent_div_8_Template(rf, ctx) { if (rf & 1) {
22484
22541
  i0.ɵɵelementStart(0, "div", 7);
22485
22542
  i0.ɵɵtemplate(1, CaseFileViewFolderComponent_div_8_div_1_Template, 2, 0, "div", 8);
22486
22543
  i0.ɵɵelementStart(2, "div")(3, "cdk-tree", 9);
22487
- i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 12, 8, "cdk-nested-tree-node", 10)(5, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template, 10, 6, "cdk-nested-tree-node", 11);
22544
+ i0.ɵɵtemplate(4, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_4_Template, 13, 11, "cdk-nested-tree-node", 10)(5, CaseFileViewFolderComponent_div_8_cdk_nested_tree_node_5_Template, 10, 6, "cdk-nested-tree-node", 11);
22488
22545
  i0.ɵɵelementEnd()()();
22489
22546
  } if (rf & 2) {
22490
22547
  const ctx_r2 = i0.ɵɵnextContext();
@@ -22591,7 +22648,7 @@ class CaseFileViewFolderComponent {
22591
22648
  documentTreeNode.document_binary_url = document.document_binary_url;
22592
22649
  documentTreeNode.attribute_path = document.attribute_path;
22593
22650
  documentTreeNode.upload_timestamp = this.appConfig.getEnableCaseFileViewVersion1_1()
22594
- && document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY HH:mm:ss') : '';
22651
+ && document.upload_timestamp ? document.upload_timestamp.toString() : '';
22595
22652
  documentsToReturn.push(documentTreeNode);
22596
22653
  });
22597
22654
  return documentsToReturn;
@@ -22606,7 +22663,7 @@ class CaseFileViewFolderComponent {
22606
22663
  documentTreeNode.document_binary_url = document.document_binary_url;
22607
22664
  documentTreeNode.attribute_path = document.attribute_path;
22608
22665
  documentTreeNode.upload_timestamp = this.appConfig.getEnableCaseFileViewVersion1_1()
22609
- && document.upload_timestamp ? moment$1(document.upload_timestamp).format('DD MMM YYYY HH:mm:ss') : '';
22666
+ && document.upload_timestamp ? document.upload_timestamp.toString() : '';
22610
22667
  documents.push(documentTreeNode);
22611
22668
  });
22612
22669
  const uncategorisedNode = new DocumentTreeNode();
@@ -22740,11 +22797,11 @@ class CaseFileViewFolderComponent {
22740
22797
  i0.ɵɵtextInterpolate1("Documents (", ctx.documentCount, ")");
22741
22798
  i0.ɵɵadvance(3);
22742
22799
  i0.ɵɵproperty("ngIf", ctx.documentTreeData);
22743
- } }, dependencies: [i5.NgIf, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.FormGroupDirective, i4.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, CaseFileViewFolderSortComponent, CaseFileViewFolderDocumentActionsComponent, i5.DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
22800
+ } }, dependencies: [i5.NgIf, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgControlStatusGroup, i4.FormGroupDirective, i4.FormControlName, i7.CdkNestedTreeNode, i7.CdkTreeNodeDef, i7.CdkTreeNodeToggle, i7.CdkTree, i7.CdkTreeNodeOutlet, CaseFileViewFolderSortComponent, CaseFileViewFolderDocumentActionsComponent, i5.DatePipe, DatePipe], styles: ["[_nghost-%COMP%]{display:flex;height:100%;flex-direction:column}[_nghost-%COMP%] .document-tree-container[_ngcontent-%COMP%]{flex:1 0}.document-filter-container[_ngcontent-%COMP%]{border-bottom:2px solid #C9C9C9}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%]{padding:10px}.document-filter-container[_ngcontent-%COMP%] .document-filter[_ngcontent-%COMP%] .document-search[_ngcontent-%COMP%]{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container[_ngcontent-%COMP%] .documents-title[_ngcontent-%COMP%]{height:30%;margin-left:8px;font-weight:700}.document-tree-container[_ngcontent-%COMP%]{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node[_ngcontent-%COMP%]{display:block}.document-tree-container__node[_ngcontent-%COMP%] .document-tree-container__node[_ngcontent-%COMP%]{padding-left:40px}.document-tree-container[_ngcontent-%COMP%] .document-tree-invisible[_ngcontent-%COMP%]{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar{width:7px}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-button{display:none}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title[_ngcontent-%COMP%]{font-weight:700}.node[_ngcontent-%COMP%]{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected[_ngcontent-%COMP%]{background:#fff2cc}.node__icon[_ngcontent-%COMP%]{position:relative;display:inline-block}.node__count[_ngcontent-%COMP%]{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg[_ngcontent-%COMP%]{display:block;height:30px;width:30px}.node__name[_ngcontent-%COMP%]{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options[_ngcontent-%COMP%]{margin-left:auto;margin-right:0}.node__document-upload-timestamp[_ngcontent-%COMP%]{font-size:.8rem;float:left;padding-left:10px}"] });
22744
22801
  }
22745
22802
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFileViewFolderComponent, [{
22746
22803
  type: Component,
22747
- args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | date:\"dd MMM YYYY HH:mm\"}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
22804
+ args: [{ selector: 'ccd-case-file-view-folder', template: "<div class=\"document-filter-container\">\n <div class=\"form-group document-filter\" [formGroup]=\"documentFilterFormGroup\">\n <input class=\"form-control document-search\"\n type=\"search\"\n id=\"document-search\"\n name=\"documentSearchFormControl\"\n formControlName=\"documentSearchFormControl\"\n placeholder=\"Search by document name\"\n aria-label=\"Search by document name\">\n </div>\n</div>\n\n<div class=\"document-folders-header\">\n <div class=\"document-folders-header__title\">Documents ({{ documentCount }})</div>\n <div>\n <ccd-case-file-view-folder-sort\n (sortAscending)=\"sortDataSourceAscending($event)\"\n (sortDescending)=\"sortDataSourceDescending($event)\"\n ></ccd-case-file-view-folder-sort>\n </div>\n</div>\n\n<div class=\"document-tree-container\" *ngIf=\"documentTreeData\">\n <div *ngIf=\"!nestedDataSource || nestedDataSource.length === 0\">\n No results found\n </div>\n <div>\n <cdk-tree [dataSource]=\"nestedDataSource\" [treeControl]=\"nestedTreeControl\">\n <!-- document -->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__node--document\" *cdkTreeNodeDef=\"let node\">\n <button class=\"node\" (click)=\"selectedNodeItem = node; clickedDocument.emit(node)\"\n [class.node--selected]=\"selectedNodeItem?.name === node.name\">\n <div class=\"node__icon\" disabled>\n <img src=\"/assets/img/case-file-view/case-file-view-document.svg\" class=\"node__iconImg\" alt=\"Document icon\">\n </div>\n <span class=\"node__name node-name-document\">\n {{node.name}}\n <br>\n <span class=\"node__document-upload-timestamp\">{{node.upload_timestamp | ccdDate : 'local' | date:\"dd MMM YYYY HH:mm\"}}</span>\n </span>\n <div class=\"node__document-options\">\n <ccd-case-file-view-folder-document-actions\n (changeFolderAction)=\"triggerDocumentAction('changeFolder', node)\"\n (openInANewTabAction)=\"triggerDocumentAction('openInANewTab', node)\"\n (downloadAction)=\"triggerDocumentAction('download', node)\"\n (printAction)=\"triggerDocumentAction('print', node)\"\n [allowMoving]=\"allowMoving\"\n >\n </ccd-case-file-view-folder-document-actions>\n </div>\n </button>\n </cdk-nested-tree-node>\n <!-- folder-->\n <cdk-nested-tree-node class=\"document-tree-container__node document-tree-container__folder\" *cdkTreeNodeDef=\"let node; when: nestedChildren\">\n <button class=\"node\" cdkTreeNodeToggle>\n <div class=\"node__icon\" [attr.aria-label]=\"'toggle ' + node.name\" >\n <img class=\"node__iconImg\"\n [src]=\"nestedTreeControl.isExpanded(node) ? '/assets/images/folder-open.png' : '/assets/images/folder.png'\" alt=\"Folder icon\">\n <span class=\"node__count\">{{node.childDocumentCount}}</span>\n </div>\n <span class=\"node__name node__name--folder\">{{node.name}}</span>\n </button>\n\n <div [class.document-tree-invisible]=\"!nestedTreeControl.isExpanded(node)\">\n <ng-container cdkTreeNodeOutlet></ng-container>\n </div>\n </cdk-nested-tree-node>\n </cdk-tree>\n </div>\n</div>\n", styles: [":host{display:flex;height:100%;flex-direction:column}:host .document-tree-container{flex:1 0}.document-filter-container{border-bottom:2px solid #C9C9C9}.document-filter-container .document-filter{padding:10px}.document-filter-container .document-filter .document-search{background:url(/assets/images/icon-search-black.svg) no-repeat right #fff;background-position-x:calc(100% - 4px);padding-right:30px;width:100%}.document-filter-container .documents-title{height:30%;margin-left:8px;font-weight:700}.document-tree-container{padding:4px;overflow-x:hidden;overflow-y:scroll}.document-tree-container__node{display:block}.document-tree-container__node .document-tree-container__node{padding-left:40px}.document-tree-container .document-tree-invisible{display:none}.document-tree-container::-webkit-scrollbar{width:7px}.document-tree-container::-webkit-scrollbar-thumb{border:4px solid rgba(0,0,0,0);background-clip:padding-box;border-radius:9999px;background-color:#aaa}.document-tree-container::-webkit-scrollbar-button{display:none}.document-tree-container::-webkit-scrollbar-track-piece{background:#eee}.document-tree-container::-webkit-scrollbar-thumb{background:#ccc}.document-folders-header{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid #C9C9C9;padding:10px}.document-folders-header__title{font-weight:700}.node{display:flex;align-items:center;width:100%;padding:10px;background:none;border:0;cursor:pointer;white-space:nowrap}.node--selected{background:#fff2cc}.node__icon{position:relative;display:inline-block}.node__count{color:#fff;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.875rem;padding-top:4px}.node__iconImg{display:block;height:30px;width:30px}.node__name{margin-left:6px;font-size:1rem;overflow:hidden;text-overflow:ellipsis}.node__document-options{margin-left:auto;margin-right:0}.node__document-upload-timestamp{font-size:.8rem;float:left;padding-left:10px}\n"] }]
22748
22805
  }], () => [{ type: WindowService }, { type: i1$1.Router }, { type: DocumentManagementService }, { type: i1$3.MatLegacyDialog }, { type: AbstractAppConfig }], { categoriesAndDocuments: [{
22749
22806
  type: Input
22750
22807
  }], allowMoving: [{
@@ -22754,7 +22811,7 @@ class CaseFileViewFolderComponent {
22754
22811
  }], moveDocument: [{
22755
22812
  type: Output
22756
22813
  }] }); })();
22757
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewFolderComponent, { className: "CaseFileViewFolderComponent", filePath: "lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.ts", lineNumber: 28 }); })();
22814
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFileViewFolderComponent, { className: "CaseFileViewFolderComponent", filePath: "lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.ts", lineNumber: 27 }); })();
22758
22815
 
22759
22816
  const _c0$s = a0 => ({ "form-group-error": a0 });
22760
22817
  function AddCommentsComponent_span_7_Template(rf, ctx) { if (rf & 1) {
@@ -28540,6 +28597,10 @@ i0.ɵɵsetComponentScope(QueryAttachmentsReadComponent, function () { return [i5
28540
28597
  i0.ɵɵsetComponentScope(QueryEventCompletionComponent, function () { return [
28541
28598
  // Case event completion
28542
28599
  CaseEventCompletionComponent]; }, []);
28600
+ i0.ɵɵsetComponentScope(
28601
+ // Case event completion
28602
+ CaseEventCompletionComponent, function () { return [i5.NgIf, CaseEventCompletionTaskCancelledComponent,
28603
+ CaseEventCompletionTaskReassignedComponent]; }, []);
28543
28604
 
28544
28605
  var CaseEditSubmitTitles;
28545
28606
  (function (CaseEditSubmitTitles) {
@@ -33614,12 +33675,18 @@ class EventStartGuard {
33614
33675
  const caseId = route.params['cid'];
33615
33676
  const eventId = route.params['eid'];
33616
33677
  const taskId = route.queryParams['tid'];
33678
+ let userId;
33679
+ const userInfoStr = this.sessionStorageService.getItem('userDetails');
33680
+ if (userInfoStr) {
33681
+ const userInfo = JSON.parse(userInfoStr);
33682
+ userId = userInfo.id ? userInfo.id : userInfo.uid;
33683
+ }
33617
33684
  const caseInfoStr = this.sessionStorageService.getItem('caseInfo');
33618
33685
  if (caseInfoStr) {
33619
33686
  const caseInfo = JSON.parse(caseInfoStr);
33620
33687
  if (caseInfo && caseInfo.cid === caseId) {
33621
33688
  return this.workAllocationService.getTasksByCaseIdAndEventId(eventId, caseId, caseInfo.caseType, caseInfo.jurisdiction)
33622
- .pipe(switchMap((payload) => this.checkForTasks(payload, caseId, eventId, taskId)));
33689
+ .pipe(switchMap((payload) => this.checkForTasks(payload, caseId, eventId, taskId, userId)));
33623
33690
  }
33624
33691
  else {
33625
33692
  this.abstractConfig.logMessage(`EventStartGuard: caseId ${caseInfo.cid} in caseInfo not matched with the route parameter caseId ${caseId}`);
@@ -33676,11 +33743,28 @@ class EventStartGuard {
33676
33743
  removeTaskFromSessionStorage() {
33677
33744
  this.sessionStorageService.removeItem(EventStartGuard.CLIENT_CONTEXT);
33678
33745
  }
33679
- checkForTasks(payload, caseId, eventId, taskId) {
33746
+ checkForTasks(payload, caseId, eventId, taskId, userId) {
33680
33747
  if (taskId && payload?.tasks?.length > 0) {
33681
33748
  const task = payload.tasks.find((t) => t.id == taskId);
33682
33749
  if (task) {
33683
- this.sessionStorageService.setItem(EventStartGuard.CLIENT_CONTEXT, JSON.stringify(task));
33750
+ // Store task to session
33751
+ const taskEventCompletionInfo = {
33752
+ caseId: caseId,
33753
+ eventId: eventId,
33754
+ userId: userId,
33755
+ taskId: task.id,
33756
+ createdTimestamp: Date.now()
33757
+ };
33758
+ const storeClientContext = {
33759
+ client_context: {
33760
+ user_task: {
33761
+ task_data: task,
33762
+ complete_task: true
33763
+ }
33764
+ }
33765
+ };
33766
+ this.sessionStorageService.setItem('taskEventCompletionInfo', JSON.stringify(taskEventCompletionInfo));
33767
+ this.sessionStorageService.setItem(EventStartGuard.CLIENT_CONTEXT, JSON.stringify(storeClientContext));
33684
33768
  }
33685
33769
  else {
33686
33770
  this.removeTaskFromSessionStorage();
@@ -33859,6 +33943,20 @@ class EventStartStateMachineService {
33859
33943
  }
33860
33944
  };
33861
33945
  context.sessionStorageService.setItem('clientContext', JSON.stringify(clientContext));
33946
+ let userInfo;
33947
+ const userInfoStr = context.sessionStorageService.getItem('userDetails');
33948
+ if (userInfoStr) {
33949
+ userInfo = JSON.parse(userInfoStr);
33950
+ }
33951
+ // Store task to session
33952
+ const taskEventCompletionInfo = {
33953
+ caseId: context.caseId,
33954
+ eventId: context.eventId,
33955
+ userId: userInfo.id ? userInfo.id : userInfo.uid,
33956
+ taskId: task.id,
33957
+ createdTimestamp: Date.now()
33958
+ };
33959
+ context.sessionStorageService.setItem('taskEventCompletionInfo', JSON.stringify(taskEventCompletionInfo));
33862
33960
  // Allow user to perform the event
33863
33961
  context.router.navigate([`/cases/case-details/${context.caseId}/trigger/${context.eventId}`], { relativeTo: context.route });
33864
33962
  }