@hmcts/ccd-case-ui-toolkit 7.1.30 → 7.1.31-event-spinner

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 (25) hide show
  1. package/esm2022/lib/shared/components/case-editor/services/cases.service.mjs +1 -1
  2. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +10 -5
  3. package/esm2022/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.mjs +10 -6
  4. package/esm2022/lib/shared/components/case-viewer/services/event-trigger.resolver.mjs +9 -5
  5. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +17 -17
  6. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +10 -10
  7. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +30 -13
  8. package/esm2022/lib/shared/services/http/http-error.service.mjs +11 -4
  9. package/esm2022/lib/shared/services/loading/loading.service.mjs +13 -1
  10. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +143 -98
  11. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  12. package/lib/shared/components/case-editor/services/cases.service.d.ts.map +1 -1
  13. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +3 -2
  14. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  15. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts +3 -2
  16. package/lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.d.ts.map +1 -1
  17. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts +3 -1
  18. package/lib/shared/components/case-viewer/services/event-trigger.resolver.d.ts.map +1 -1
  19. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
  20. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  21. package/lib/shared/services/http/http-error.service.d.ts +3 -1
  22. package/lib/shared/services/http/http-error.service.d.ts.map +1 -1
  23. package/lib/shared/services/loading/loading.service.d.ts +4 -0
  24. package/lib/shared/services/loading/loading.service.d.ts.map +1 -1
  25. package/package.json +1 -1
@@ -8,10 +8,10 @@ import * as i1$1 from '@angular/router';
8
8
  import { RouterModule, NavigationStart, NavigationEnd } from '@angular/router';
9
9
  import * as i4 from '@angular/forms';
10
10
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormArray, FormGroup, FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
11
- import { throwError, Subject, EMPTY, Observable, BehaviorSubject, of, timer, fromEvent, forkJoin, Subscription, combineLatest } from 'rxjs';
11
+ import { BehaviorSubject, throwError, Subject, EMPTY, Observable, of, timer, fromEvent, forkJoin, Subscription, combineLatest } from 'rxjs';
12
12
  import * as i1$2 from '@angular/common/http';
13
13
  import { HttpErrorResponse, HttpHeaders, HttpParams } from '@angular/common/http';
14
- import { catchError, map, publish, refCount, switchMap, debounceTime, delay, distinctUntilChanged, finalize, timeout, mergeMap, retryWhen, tap, delayWhen, publishReplay, take, first, takeUntil, filter } from 'rxjs/operators';
14
+ import { distinctUntilChanged, catchError, map, publish, refCount, switchMap, debounceTime, delay, finalize, timeout, mergeMap, retryWhen, tap, delayWhen, publishReplay, take, first, takeUntil, filter } from 'rxjs/operators';
15
15
  import { polling } from 'rx-polling-hmcts';
16
16
  import { Type, Expose, plainToClassFromExist, plainToClass } from 'class-transformer';
17
17
  import moment from 'moment';
@@ -1400,10 +1400,70 @@ class AuthService {
1400
1400
  args: [DOCUMENT]
1401
1401
  }] }], null); })();
1402
1402
 
1403
+ class LoadingService {
1404
+ registered = new Map();
1405
+ loading = new BehaviorSubject(false);
1406
+ sharedSpinners = [];
1407
+ get isLoading() {
1408
+ return this.loading.pipe(distinctUntilChanged());
1409
+ }
1410
+ register() {
1411
+ const token = this.generateToken();
1412
+ this.registered.set(token, token);
1413
+ this.loading.next(true);
1414
+ return token;
1415
+ }
1416
+ unregister(token) {
1417
+ this.registered.delete(token);
1418
+ this.loading.next(this.registered.size > 0);
1419
+ }
1420
+ addSharedSpinner(spinnerId) {
1421
+ this.sharedSpinners.push(spinnerId);
1422
+ }
1423
+ hasSharedSpinner() {
1424
+ return this.sharedSpinners.length > 0;
1425
+ }
1426
+ unregisterSharedSpinner() {
1427
+ this.registered.delete(this.sharedSpinners[0]);
1428
+ this.sharedSpinners.shift();
1429
+ this.loading.next(this.registered.size > 0);
1430
+ }
1431
+ generateToken() {
1432
+ const timestamp = window.performance.now();
1433
+ return `toolkit-loading-${timestamp}`; // format: [source-library]-[unique incrementing number]
1434
+ }
1435
+ static ɵfac = function LoadingService_Factory(t) { return new (t || LoadingService)(); };
1436
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LoadingService, factory: LoadingService.ɵfac });
1437
+ }
1438
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoadingService, [{
1439
+ type: Injectable
1440
+ }], null, null); })();
1441
+
1442
+ class LoadingModule {
1443
+ static ɵfac = function LoadingModule_Factory(t) { return new (t || LoadingModule)(); };
1444
+ static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: LoadingModule });
1445
+ static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
1446
+ LoadingService
1447
+ ] });
1448
+ }
1449
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoadingModule, [{
1450
+ type: NgModule,
1451
+ args: [{
1452
+ imports: [],
1453
+ declarations: [],
1454
+ exports: [],
1455
+ providers: [
1456
+ LoadingService
1457
+ ]
1458
+ }]
1459
+ }], null, null); })();
1460
+
1403
1461
  class HttpErrorService {
1404
1462
  authService;
1405
- constructor(authService) {
1463
+ loadingService;
1464
+ constructor(authService, loadingService) {
1406
1465
  this.authService = authService;
1466
+ this.loadingService = loadingService;
1407
1467
  }
1408
1468
  static CONTENT_TYPE = 'Content-Type';
1409
1469
  static JSON = 'json';
@@ -1447,18 +1507,21 @@ class HttpErrorService {
1447
1507
  handle(error, redirectIfNotAuthorised = true) {
1448
1508
  console.error('Handling error in http error service.');
1449
1509
  console.error(error);
1510
+ if (this.loadingService.hasSharedSpinner()) {
1511
+ this.loadingService.unregisterSharedSpinner();
1512
+ }
1450
1513
  const httpError = HttpErrorService.convertToHttpError(error);
1451
1514
  if (redirectIfNotAuthorised && httpError.status === 401) {
1452
1515
  this.authService.signIn();
1453
1516
  }
1454
1517
  return throwError(httpError);
1455
1518
  }
1456
- static ɵfac = function HttpErrorService_Factory(t) { return new (t || HttpErrorService)(i0.ɵɵinject(AuthService)); };
1519
+ static ɵfac = function HttpErrorService_Factory(t) { return new (t || HttpErrorService)(i0.ɵɵinject(AuthService), i0.ɵɵinject(LoadingService)); };
1457
1520
  static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: HttpErrorService, factory: HttpErrorService.ɵfac });
1458
1521
  }
1459
1522
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpErrorService, [{
1460
1523
  type: Injectable
1461
- }], () => [{ type: AuthService }], null); })();
1524
+ }], () => [{ type: AuthService }, { type: LoadingService }], null); })();
1462
1525
 
1463
1526
  class HttpService {
1464
1527
  httpclient;
@@ -7319,33 +7382,6 @@ class RequestOptionsBuilder {
7319
7382
  type: Injectable
7320
7383
  }], null, null); })();
7321
7384
 
7322
- class LoadingService {
7323
- registered = new Map();
7324
- loading = new BehaviorSubject(false);
7325
- get isLoading() {
7326
- return this.loading.pipe(distinctUntilChanged());
7327
- }
7328
- register() {
7329
- const token = this.generateToken();
7330
- this.registered.set(token, token);
7331
- this.loading.next(true);
7332
- return token;
7333
- }
7334
- unregister(token) {
7335
- this.registered.delete(token);
7336
- this.loading.next(this.registered.size > 0);
7337
- }
7338
- generateToken() {
7339
- const timestamp = window.performance.now();
7340
- return `toolkit-loading-${timestamp}`; // format: [source-library]-[unique incrementing number]
7341
- }
7342
- static ɵfac = function LoadingService_Factory(t) { return new (t || LoadingService)(); };
7343
- static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LoadingService, factory: LoadingService.ɵfac });
7344
- }
7345
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoadingService, [{
7346
- type: Injectable
7347
- }], null, null); })();
7348
-
7349
7385
  class SearchService {
7350
7386
  appConfig;
7351
7387
  httpService;
@@ -7798,25 +7834,6 @@ class BrowserService {
7798
7834
  type: Injectable
7799
7835
  }], null, null); })();
7800
7836
 
7801
- class LoadingModule {
7802
- static ɵfac = function LoadingModule_Factory(t) { return new (t || LoadingModule)(); };
7803
- static ɵmod = /*@__PURE__*/ i0.ɵɵdefineNgModule({ type: LoadingModule });
7804
- static ɵinj = /*@__PURE__*/ i0.ɵɵdefineInjector({ providers: [
7805
- LoadingService
7806
- ] });
7807
- }
7808
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LoadingModule, [{
7809
- type: NgModule,
7810
- args: [{
7811
- imports: [],
7812
- declarations: [],
7813
- exports: [],
7814
- providers: [
7815
- LoadingService
7816
- ]
7817
- }]
7818
- }], null, null); })();
7819
-
7820
7837
  class CaseAccessUtils {
7821
7838
  // User role mapping
7822
7839
  static JUDGE_ROLE = 'judge';
@@ -16679,8 +16696,8 @@ class LinkCasesComponent {
16679
16696
  })), this.validatorsUtils.formArraySelectedValidator());
16680
16697
  }
16681
16698
  toggleLinkCaseReasonOtherComments(event) {
16682
- this.linkCaseReasons.find(reason => reason.value_en === event.target.value).selected = event.target.checked;
16683
- this.showComments = this.linkCaseReasons.find(reason => reason.value_en === 'Other').selected;
16699
+ this.linkCaseReasons.find((reason) => reason.value_en === event.target.value).selected = event.target.checked;
16700
+ this.showComments = this.linkCaseReasons.find((reason) => reason.value_en === 'Other')?.selected;
16684
16701
  }
16685
16702
  submitCaseInfo() {
16686
16703
  this.errorMessages = [];
@@ -16719,7 +16736,7 @@ class LinkCasesComponent {
16719
16736
  this.errorMessages.push({
16720
16737
  title: 'dummy-case-number',
16721
16738
  description: LinkedCasesErrorMessages.CaseNumberError,
16722
- fieldId: 'caseNumber',
16739
+ fieldId: 'caseNumber'
16723
16740
  });
16724
16741
  }
16725
16742
  if (this.linkCaseForm.controls.reasonType.invalid) {
@@ -16727,17 +16744,17 @@ class LinkCasesComponent {
16727
16744
  this.errorMessages.push({
16728
16745
  title: 'dummy-case-reason',
16729
16746
  description: LinkedCasesErrorMessages.ReasonSelectionError,
16730
- fieldId: 'caseReason',
16747
+ fieldId: 'caseReason'
16731
16748
  });
16732
16749
  }
16733
16750
  if (this.linkCaseForm.controls.reasonType.valid
16734
- && this.linkCaseReasons.find(reason => reason.value_en === 'Other').selected) {
16751
+ && this.linkCaseReasons.find((reason) => reason.value_en === 'Other').selected) {
16735
16752
  if (this.linkCaseForm.controls.otherDescription.value.trim().length === 0) {
16736
16753
  this.caseReasonCommentsError = LinkedCasesErrorMessages.otherDescriptionError;
16737
16754
  this.errorMessages.push({
16738
16755
  title: 'dummy-case-reason-comments',
16739
16756
  description: LinkedCasesErrorMessages.otherDescriptionError,
16740
- fieldId: 'otherDescription',
16757
+ fieldId: 'otherDescription'
16741
16758
  });
16742
16759
  }
16743
16760
  if (this.linkCaseForm.controls.otherDescription.value.trim().length > 100) {
@@ -16745,7 +16762,7 @@ class LinkCasesComponent {
16745
16762
  this.errorMessages.push({
16746
16763
  title: 'dummy-case-reason-comments',
16747
16764
  description: LinkedCasesErrorMessages.otherDescriptionMaxLengthError,
16748
- fieldId: 'otherDescription',
16765
+ fieldId: 'otherDescription'
16749
16766
  });
16750
16767
  }
16751
16768
  }
@@ -16754,7 +16771,7 @@ class LinkCasesComponent {
16754
16771
  this.errorMessages.push({
16755
16772
  title: 'dummy-case-number',
16756
16773
  description: LinkedCasesErrorMessages.CaseProposedError,
16757
- fieldId: 'caseNumber',
16774
+ fieldId: 'caseNumber'
16758
16775
  });
16759
16776
  }
16760
16777
  if (this.isCaseSelected(this.linkedCasesService.linkedCases)) {
@@ -16762,14 +16779,14 @@ class LinkCasesComponent {
16762
16779
  this.errorMessages.push({
16763
16780
  title: 'dummy-case-number',
16764
16781
  description: LinkedCasesErrorMessages.CasesLinkedError,
16765
- fieldId: 'caseNumber',
16782
+ fieldId: 'caseNumber'
16766
16783
  });
16767
16784
  }
16768
16785
  if (this.linkCaseForm.value.caseNumber.split('-').join('') === this.linkedCasesService.caseId.split('-').join('')) {
16769
16786
  this.errorMessages.push({
16770
16787
  title: 'dummy-case-number',
16771
16788
  description: LinkedCasesErrorMessages.ProposedCaseWithIn,
16772
- fieldId: 'caseNumber',
16789
+ fieldId: 'caseNumber'
16773
16790
  });
16774
16791
  }
16775
16792
  window.scrollTo(0, 0);
@@ -16790,7 +16807,7 @@ class LinkCasesComponent {
16790
16807
  caseState: caseView.state.name || '',
16791
16808
  caseStateDescription: caseView.state.description || '',
16792
16809
  caseService: caseView.case_type && caseView.case_type.jurisdiction && caseView.case_type.jurisdiction.description || '',
16793
- caseName: this.linkedCasesService.getCaseName(caseView),
16810
+ caseName: this.linkedCasesService.getCaseName(caseView)
16794
16811
  };
16795
16812
  const ccdApiCaseLinkData = {
16796
16813
  CaseReference: caseView.case_id,
@@ -16803,7 +16820,7 @@ class LinkCasesComponent {
16803
16820
  }
16804
16821
  this.linkedCasesService.caseFieldValue.push({ id: caseView.case_id.toString(), value: ccdApiCaseLinkData });
16805
16822
  this.selectedCases.push(caseLink);
16806
- this.linkCaseReasons.forEach(reason => reason.selected = false);
16823
+ this.linkCaseReasons.forEach((reason) => reason.selected = false);
16807
16824
  this.initForm();
16808
16825
  this.emitLinkedCasesState(false);
16809
16826
  }, (error) => {
@@ -16811,7 +16828,7 @@ class LinkCasesComponent {
16811
16828
  this.errorMessages.push({
16812
16829
  title: 'dummy-case-number',
16813
16830
  description: LinkedCasesErrorMessages.CaseCheckAgainError,
16814
- fieldId: 'caseNumber',
16831
+ fieldId: 'caseNumber'
16815
16832
  });
16816
16833
  this.emitLinkedCasesState(false);
16817
16834
  window.scrollTo(0, 0);
@@ -16823,7 +16840,7 @@ class LinkCasesComponent {
16823
16840
  this.linkedCasesStateEmitter.emit({
16824
16841
  currentLinkedCasesPage: LinkedCasesPages.LINK_CASE,
16825
16842
  errorMessages: this.errorMessages,
16826
- navigateToNextPage: isNavigateToNextPage,
16843
+ navigateToNextPage: isNavigateToNextPage
16827
16844
  });
16828
16845
  }
16829
16846
  getSelectedCaseReasons() {
@@ -16858,7 +16875,7 @@ class LinkCasesComponent {
16858
16875
  }
16859
16876
  onSelectedLinkedCaseRemove(pos, selectedCaseReference) {
16860
16877
  const caseFieldValue = this.linkedCasesService.caseFieldValue || [];
16861
- const updatedItems = caseFieldValue.filter(item => item.value && item.value.CaseReference !== selectedCaseReference);
16878
+ const updatedItems = caseFieldValue.filter((item) => item.value && item.value.CaseReference !== selectedCaseReference);
16862
16879
  if (updatedItems) {
16863
16880
  this.linkedCasesService.caseFieldValue = updatedItems;
16864
16881
  }
@@ -16879,7 +16896,7 @@ class LinkCasesComponent {
16879
16896
  this.errorMessages.push({
16880
16897
  title: 'dummy-case-selection',
16881
16898
  description: LinkedCasesErrorMessages.CaseSelectionError,
16882
- fieldId: 'caseReason',
16899
+ fieldId: 'caseReason'
16883
16900
  });
16884
16901
  navigateToNextPage = false;
16885
16902
  }
@@ -17614,7 +17631,7 @@ class UnLinkCasesComponent {
17614
17631
  }
17615
17632
  else {
17616
17633
  this.casesService.getCaseViewV2(this.caseId).subscribe((caseView) => {
17617
- const linkedCasesTab = caseView.tabs.find(tab => tab.id === UnLinkCasesComponent.LINKED_CASES_TAB_ID);
17634
+ const linkedCasesTab = caseView.tabs.find((tab) => tab.id === UnLinkCasesComponent.LINKED_CASES_TAB_ID);
17618
17635
  if (linkedCasesTab) {
17619
17636
  const linkedCases = linkedCasesTab.fields[0].value;
17620
17637
  this.linkedCases = linkedCases;
@@ -17626,22 +17643,22 @@ class UnLinkCasesComponent {
17626
17643
  }
17627
17644
  getAllLinkedCaseInformation() {
17628
17645
  const searchCasesResponse = [];
17629
- this.linkedCases.forEach(linkedCase => {
17646
+ this.linkedCases.forEach((linkedCase) => {
17630
17647
  searchCasesResponse.push(this.casesService.getCaseViewV2(linkedCase.caseReference));
17631
17648
  });
17632
17649
  if (searchCasesResponse.length) {
17633
17650
  this.searchCasesByCaseIds(searchCasesResponse).subscribe((searchCases) => {
17634
17651
  searchCases.forEach((response) => {
17635
- const linkedCaseFromList = this.linkedCases.find(linkedCase => linkedCase.caseReference === response.case_id);
17652
+ const linkedCaseFromList = this.linkedCases.find((linkedCase) => linkedCase.caseReference === response.case_id);
17636
17653
  if (linkedCaseFromList) {
17637
17654
  const caseName = this.linkedCasesService.getCaseName(response);
17638
- this.linkedCases.find(linkedCase => linkedCase.caseReference === response.case_id).caseName = caseName;
17655
+ this.linkedCases.find((linkedCase) => linkedCase.caseReference === response.case_id).caseName = caseName;
17639
17656
  }
17640
17657
  });
17641
17658
  this.initForm();
17642
17659
  this.linkedCasesService.linkedCases = this.linkedCases;
17643
17660
  this.isServerError = false;
17644
- }, err => {
17661
+ }, (err) => {
17645
17662
  this.isServerError = true;
17646
17663
  this.notifyAPIFailure.emit(true);
17647
17664
  });
@@ -17656,7 +17673,7 @@ class UnLinkCasesComponent {
17656
17673
  });
17657
17674
  }
17658
17675
  get getLinkedCasesFormArray() {
17659
- const formFieldArray = this.linkedCases.map(val => this.fb.group({
17676
+ const formFieldArray = this.linkedCases.map((val) => this.fb.group({
17660
17677
  caseReference: val.caseReference,
17661
17678
  reasons: val.reasons,
17662
17679
  createdDateTime: val.createdDateTime,
@@ -17670,7 +17687,7 @@ class UnLinkCasesComponent {
17670
17687
  }
17671
17688
  onChange(caseSelected) {
17672
17689
  this.resetErrorMessages();
17673
- const selectedCase = this.linkedCases.find(linkedCase => linkedCase.caseReference === caseSelected.value);
17690
+ const selectedCase = this.linkedCases.find((linkedCase) => linkedCase.caseReference === caseSelected.value);
17674
17691
  if (selectedCase) {
17675
17692
  selectedCase.unlink = caseSelected.checked ? true : false;
17676
17693
  }
@@ -17678,7 +17695,7 @@ class UnLinkCasesComponent {
17678
17695
  onNext() {
17679
17696
  this.resetErrorMessages();
17680
17697
  let navigateToNextPage = true;
17681
- const casesMarkedToUnlink = this.linkedCases.find(linkedCase => linkedCase.unlink && linkedCase.unlink === true);
17698
+ const casesMarkedToUnlink = this.linkedCases.find((linkedCase) => linkedCase.unlink && linkedCase.unlink === true);
17682
17699
  if (!casesMarkedToUnlink) {
17683
17700
  this.errorMessages.push({
17684
17701
  title: 'case-selection',
@@ -17696,7 +17713,7 @@ class UnLinkCasesComponent {
17696
17713
  this.linkedCasesStateEmitter.emit({
17697
17714
  currentLinkedCasesPage: LinkedCasesPages.UNLINK_CASE,
17698
17715
  errorMessages: this.errorMessages,
17699
- navigateToNextPage: isNavigateToNextPage,
17716
+ navigateToNextPage: isNavigateToNextPage
17700
17717
  });
17701
17718
  }
17702
17719
  resetErrorMessages() {
@@ -18039,14 +18056,16 @@ class WriteLinkedCasesFieldComponent extends AbstractFieldWriteComponent {
18039
18056
  // Get linked case reasons from ref data
18040
18057
  this.linkedCasesService.editMode = false;
18041
18058
  this.subscriptions.add(this.caseEditDataService.caseDetails$.subscribe({
18042
- next: caseDetails => { this.initialiseCaseDetails(caseDetails); }
18059
+ next: (caseDetails) => {
18060
+ this.initialiseCaseDetails(caseDetails);
18061
+ }
18043
18062
  }));
18044
18063
  this.getOrgService();
18045
18064
  this.subscriptions.add(this.caseEditDataService.caseEventTriggerName$.subscribe({
18046
- next: name => this.linkedCasesService.isLinkedCasesEventTrigger = (name === LinkedCasesEventTriggers.LINK_CASES)
18065
+ next: (name) => this.linkedCasesService.isLinkedCasesEventTrigger = (name === LinkedCasesEventTriggers.LINK_CASES)
18047
18066
  }));
18048
18067
  this.subscriptions.add(this.caseEditDataService.caseEditForm$.subscribe({
18049
- next: editForm => this.caseEditForm = editForm
18068
+ next: (editForm) => this.caseEditForm = editForm
18050
18069
  }));
18051
18070
  }
18052
18071
  initialiseCaseDetails(caseDetails) {
@@ -18122,13 +18141,28 @@ class WriteLinkedCasesFieldComponent extends AbstractFieldWriteComponent {
18122
18141
  }
18123
18142
  }
18124
18143
  submitLinkedCases() {
18144
+ let caseFieldValue = [...(this.linkedCasesService.caseFieldValue || [])];
18125
18145
  if (!this.linkedCasesService.isLinkedCasesEventTrigger) {
18126
- const unlinkedCaseRefereneIds = this.linkedCasesService.linkedCases.filter(item => item.unlink).map(item => item.caseReference);
18127
- const caseFieldValue = this.linkedCasesService.caseFieldValue;
18128
- this.linkedCasesService.caseFieldValue = caseFieldValue.filter(item => unlinkedCaseRefereneIds.indexOf(item.id) === -1);
18146
+ const unlinkedCaseReferenceIds = this.linkedCasesService.linkedCases
18147
+ .filter((item) => item.unlink)
18148
+ .map((item) => item.caseReference);
18149
+ caseFieldValue = caseFieldValue.filter((item) => !unlinkedCaseReferenceIds.includes(item.id));
18150
+ }
18151
+ // Replace the caseLinks value in this.formGroup
18152
+ this.formGroup.patchValue({
18153
+ caseLinks: caseFieldValue
18154
+ });
18155
+ // Replace the caseLinks control in caseEditForm.controls.data
18156
+ const dataFormGroup = this.caseEditForm.controls.data;
18157
+ if (dataFormGroup) {
18158
+ // Remove the existing caseLinks control (if it exists)
18159
+ if (dataFormGroup.contains('caseLinks')) {
18160
+ dataFormGroup.removeControl('caseLinks');
18161
+ }
18162
+ // Add the new control with the replacement value
18163
+ dataFormGroup.addControl('caseLinks', new FormControl(caseFieldValue || []));
18129
18164
  }
18130
- this.formGroup.value.caseLinks = this.linkedCasesService.caseFieldValue;
18131
- this.caseEditForm.controls['data'] = new FormGroup({ caseLinks: new FormControl(this.linkedCasesService.caseFieldValue || []) });
18165
+ // Set the updated form in the caseEditDataService
18132
18166
  this.caseEditDataService.setCaseEditForm(this.caseEditForm);
18133
18167
  }
18134
18168
  isAtFinalPage() {
@@ -18145,11 +18179,11 @@ class WriteLinkedCasesFieldComponent extends AbstractFieldWriteComponent {
18145
18179
  }
18146
18180
  getLinkedCases() {
18147
18181
  this.casesService.getCaseViewV2(this.linkedCasesService.caseId).subscribe((caseView) => {
18148
- const caseViewFiltered = caseView.tabs.filter(tab => {
18182
+ const caseViewFiltered = caseView.tabs.filter((tab) => {
18149
18183
  return tab.fields.some(({ field_type }) => field_type && field_type.collection_field_type && field_type.collection_field_type.id === 'CaseLink');
18150
18184
  });
18151
18185
  if (caseViewFiltered) {
18152
- const caseLinkFieldValue = caseViewFiltered.map(filtered => filtered.fields?.length > 0 && filtered.fields.filter(field => field.id === 'caseLinks')[0].value);
18186
+ const caseLinkFieldValue = caseViewFiltered.map((filtered) => filtered.fields?.length > 0 && filtered.fields.filter((field) => field.id === 'caseLinks')[0].value);
18153
18187
  this.linkedCasesService.caseFieldValue = caseLinkFieldValue.length ? caseLinkFieldValue[0] : [];
18154
18188
  this.linkedCasesService.getAllLinkedCaseInformation();
18155
18189
  }
@@ -18189,7 +18223,7 @@ class WriteLinkedCasesFieldComponent extends AbstractFieldWriteComponent {
18189
18223
  type: Component,
18190
18224
  args: [{ selector: 'ccd-write-linked-cases-field', template: "<div class=\"form-group govuk-!-margin-bottom-2\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"linkedCasesPage\">\n <ng-container *ngSwitchCase=\"linkedCasesPages.BEFORE_YOU_START\">\n <ccd-linked-cases-before-you-start\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-linked-cases-before-you-start>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.NO_LINKED_CASES\">\n <ccd-no-linked-cases\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-no-linked-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.LINK_CASE\">\n <ccd-link-cases\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-link-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.UNLINK_CASE\">\n <ccd-unlink-cases\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-unlink-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.CHECK_YOUR_ANSWERS\">\n <ccd-linked-cases-check-your-answers\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-linked-cases-check-your-answers>\n </ng-container>\n </div>\n</div>\n" }]
18191
18225
  }], () => [{ type: AbstractAppConfig }, { type: CommonDataService }, { type: CasesService }, { type: LinkedCasesService }, { type: CaseEditDataService }], null); })();
18192
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteLinkedCasesFieldComponent, { className: "WriteLinkedCasesFieldComponent", filePath: "lib/shared/components/palette/linked-cases/write-linked-cases-field.component.ts", lineNumber: 19 }); })();
18226
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteLinkedCasesFieldComponent, { className: "WriteLinkedCasesFieldComponent", filePath: "lib/shared/components/palette/linked-cases/write-linked-cases-field.component.ts", lineNumber: 18 }); })();
18193
18227
 
18194
18228
  function ReadMoneyGbpFieldComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
18195
18229
  i0.ɵɵelementContainerStart(0);
@@ -32262,13 +32296,14 @@ class EventTriggerResolver {
32262
32296
  router;
32263
32297
  appConfig;
32264
32298
  errorNotifier;
32299
+ loadingService;
32265
32300
  static PARAM_CASE_ID = 'cid';
32266
32301
  static PARAM_EVENT_ID = 'eid';
32267
32302
  static IGNORE_WARNING = 'ignoreWarning';
32268
32303
  static IGNORE_WARNING_VALUES = ['true', 'false'];
32269
32304
  cachedEventTrigger;
32270
32305
  cachedProfile;
32271
- constructor(casesService, alertService, profileService, profileNotifier, router, appConfig, errorNotifier) {
32306
+ constructor(casesService, alertService, profileService, profileNotifier, router, appConfig, errorNotifier, loadingService) {
32272
32307
  this.casesService = casesService;
32273
32308
  this.alertService = alertService;
32274
32309
  this.profileService = profileService;
@@ -32276,6 +32311,7 @@ class EventTriggerResolver {
32276
32311
  this.router = router;
32277
32312
  this.appConfig = appConfig;
32278
32313
  this.errorNotifier = errorNotifier;
32314
+ this.loadingService = loadingService;
32279
32315
  }
32280
32316
  resolve(route) {
32281
32317
  return this.isRootTriggerEventRoute(route) ? this.getAndCacheEventTrigger(route)
@@ -32306,7 +32342,7 @@ class EventTriggerResolver {
32306
32342
  }
32307
32343
  return this.casesService
32308
32344
  .getEventTrigger(caseTypeId, eventTriggerId, cid, ignoreWarning)
32309
- .pipe(map(eventTrigger => this.cachedEventTrigger = eventTrigger), catchError(error => {
32345
+ .pipe(map((eventTrigger) => this.cachedEventTrigger = eventTrigger), catchError((error) => {
32310
32346
  error.details = { eventId: eventTriggerId, ...error.details };
32311
32347
  this.alertService.setPreserveAlerts(true);
32312
32348
  this.alertService.error(error.message);
@@ -32315,12 +32351,12 @@ class EventTriggerResolver {
32315
32351
  return throwError(error);
32316
32352
  })).toPromise();
32317
32353
  }
32318
- static ɵfac = function EventTriggerResolver_Factory(t) { return new (t || EventTriggerResolver)(i0.ɵɵinject(CasesService), i0.ɵɵinject(AlertService), i0.ɵɵinject(ProfileService), i0.ɵɵinject(ProfileNotifier), i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(AbstractAppConfig), i0.ɵɵinject(ErrorNotifierService)); };
32354
+ static ɵfac = function EventTriggerResolver_Factory(t) { return new (t || EventTriggerResolver)(i0.ɵɵinject(CasesService), i0.ɵɵinject(AlertService), i0.ɵɵinject(ProfileService), i0.ɵɵinject(ProfileNotifier), i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(AbstractAppConfig), i0.ɵɵinject(ErrorNotifierService), i0.ɵɵinject(LoadingService)); };
32319
32355
  static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: EventTriggerResolver, factory: EventTriggerResolver.ɵfac });
32320
32356
  }
32321
32357
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EventTriggerResolver, [{
32322
32358
  type: Injectable
32323
- }], () => [{ type: CasesService }, { type: AlertService }, { type: ProfileService }, { type: ProfileNotifier }, { type: i1$1.Router }, { type: AbstractAppConfig }, { type: ErrorNotifierService }], null); })();
32359
+ }], () => [{ type: CasesService }, { type: AlertService }, { type: ProfileService }, { type: ProfileNotifier }, { type: i1$1.Router }, { type: AbstractAppConfig }, { type: ErrorNotifierService }, { type: LoadingService }], null); })();
32324
32360
 
32325
32361
  function CaseEventTriggerComponent_div_0_Template(rf, ctx) { if (rf & 1) {
32326
32362
  const _r1 = i0.ɵɵgetCurrentView();
@@ -32346,6 +32382,7 @@ class CaseEventTriggerComponent {
32346
32382
  caseReferencePipe;
32347
32383
  activityPollingService;
32348
32384
  sessionStorageService;
32385
+ loadingService;
32349
32386
  static EVENT_COMPLETION_MESSAGE = `Case #%CASEREFERENCE% has been updated with event: %NAME%`;
32350
32387
  static CALLBACK_FAILED_MESSAGE = ' but the callback service cannot be completed';
32351
32388
  BANNER = DisplayMode.BANNER;
@@ -32354,7 +32391,7 @@ class CaseEventTriggerComponent {
32354
32391
  activitySubscription;
32355
32392
  caseSubscription;
32356
32393
  parentUrl;
32357
- constructor(ngZone, casesService, caseNotifier, router, alertService, route, caseReferencePipe, activityPollingService, sessionStorageService) {
32394
+ constructor(ngZone, casesService, caseNotifier, router, alertService, route, caseReferencePipe, activityPollingService, sessionStorageService, loadingService) {
32358
32395
  this.ngZone = ngZone;
32359
32396
  this.casesService = casesService;
32360
32397
  this.caseNotifier = caseNotifier;
@@ -32364,8 +32401,12 @@ class CaseEventTriggerComponent {
32364
32401
  this.caseReferencePipe = caseReferencePipe;
32365
32402
  this.activityPollingService = activityPollingService;
32366
32403
  this.sessionStorageService = sessionStorageService;
32404
+ this.loadingService = loadingService;
32367
32405
  }
32368
32406
  ngOnInit() {
32407
+ if (this.loadingService.hasSharedSpinner()) {
32408
+ this.loadingService.unregisterSharedSpinner();
32409
+ }
32369
32410
  if (this.route.snapshot.data.case) {
32370
32411
  this.caseDetails = this.route.snapshot.data.case;
32371
32412
  }
@@ -32452,7 +32493,7 @@ class CaseEventTriggerComponent {
32452
32493
  isDataLoaded() {
32453
32494
  return !!(this.eventTrigger && this.caseDetails);
32454
32495
  }
32455
- static ɵfac = function CaseEventTriggerComponent_Factory(t) { return new (t || CaseEventTriggerComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(CasesService), i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(AlertService), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(CaseReferencePipe), i0.ɵɵdirectiveInject(ActivityPollingService), i0.ɵɵdirectiveInject(SessionStorageService)); };
32496
+ static ɵfac = function CaseEventTriggerComponent_Factory(t) { return new (t || CaseEventTriggerComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(CasesService), i0.ɵɵdirectiveInject(CaseNotifier), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(AlertService), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(CaseReferencePipe), i0.ɵɵdirectiveInject(ActivityPollingService), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(LoadingService)); };
32456
32497
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEventTriggerComponent, selectors: [["ccd-case-event-trigger"]], decls: 1, vars: 1, consts: [["class", "screen-990", 4, "ngIf"], [1, "screen-990"], [3, "caseId", "displayMode"], [3, "cancelled", "submitted", "caseDetails", "submit", "validate", "eventTrigger"]], template: function CaseEventTriggerComponent_Template(rf, ctx) { if (rf & 1) {
32457
32498
  i0.ɵɵtemplate(0, CaseEventTriggerComponent_div_0_Template, 3, 6, "div", 0);
32458
32499
  } if (rf & 2) {
@@ -32462,7 +32503,7 @@ class CaseEventTriggerComponent {
32462
32503
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEventTriggerComponent, [{
32463
32504
  type: Component,
32464
32505
  args: [{ selector: 'ccd-case-event-trigger', template: "<div *ngIf=\"isDataLoaded()\" class=\"screen-990\">\n <ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n <ccd-case-edit [caseDetails]=\"caseDetails\"\n [submit]=\"submit()\"\n [validate]=\"validate()\"\n [eventTrigger]=\"eventTrigger\"\n (cancelled)=\"cancel()\"\n (submitted)=\"submitted($event)\"></ccd-case-edit>\n</div>\n" }]
32465
- }], () => [{ type: i0.NgZone }, { type: CasesService }, { type: CaseNotifier }, { type: i1$1.Router }, { type: AlertService }, { type: i1$1.ActivatedRoute }, { type: CaseReferencePipe }, { type: ActivityPollingService }, { type: SessionStorageService }], null); })();
32506
+ }], () => [{ type: i0.NgZone }, { type: CasesService }, { type: CaseNotifier }, { type: i1$1.Router }, { type: AlertService }, { type: i1$1.ActivatedRoute }, { type: CaseReferencePipe }, { type: ActivityPollingService }, { type: SessionStorageService }, { type: LoadingService }], null); })();
32466
32507
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEventTriggerComponent, { className: "CaseEventTriggerComponent", filePath: "lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.ts", lineNumber: 14 }); })();
32467
32508
 
32468
32509
  function CaseViewComponent_div_0_Template(rf, ctx) { if (rf & 1) {
@@ -33126,6 +33167,7 @@ class CaseFullAccessViewComponent {
33126
33167
  crf;
33127
33168
  sessionStorageService;
33128
33169
  rpxTranslationPipe;
33170
+ loadingService;
33129
33171
  static ORIGIN_QUERY_PARAM = 'origin';
33130
33172
  static TRIGGER_TEXT_START = 'Go';
33131
33173
  static TRIGGER_TEXT_CONTINUE = 'Ignore Warning and Go';
@@ -33162,7 +33204,7 @@ class CaseFullAccessViewComponent {
33162
33204
  eventId;
33163
33205
  callbackErrorsSubject;
33164
33206
  tabGroup;
33165
- constructor(ngZone, route, router, navigationNotifierService, orderService, activityPollingService, dialog, alertService, draftService, errorNotifierService, convertHrefToRouterService, location, crf, sessionStorageService, rpxTranslationPipe) {
33207
+ constructor(ngZone, route, router, navigationNotifierService, orderService, activityPollingService, dialog, alertService, draftService, errorNotifierService, convertHrefToRouterService, location, crf, sessionStorageService, rpxTranslationPipe, loadingService) {
33166
33208
  this.ngZone = ngZone;
33167
33209
  this.route = route;
33168
33210
  this.router = router;
@@ -33178,6 +33220,7 @@ class CaseFullAccessViewComponent {
33178
33220
  this.crf = crf;
33179
33221
  this.sessionStorageService = sessionStorageService;
33180
33222
  this.rpxTranslationPipe = rpxTranslationPipe;
33223
+ this.loadingService = loadingService;
33181
33224
  }
33182
33225
  ngOnInit() {
33183
33226
  this.callbackErrorsSubject = this.errorNotifierService.errorSource.pipe(filter((x) => {
@@ -33259,6 +33302,8 @@ class CaseFullAccessViewComponent {
33259
33302
  this.triggerText = CaseFullAccessViewComponent.TRIGGER_TEXT_START;
33260
33303
  }
33261
33304
  async applyTrigger(trigger) {
33305
+ const spinner = this.loadingService.register();
33306
+ this.loadingService.addSharedSpinner(spinner);
33262
33307
  this.errorNotifierService.announceError(null);
33263
33308
  const theQueryParams = {};
33264
33309
  if (this.ignoreWarning) {
@@ -33509,7 +33554,7 @@ class CaseFullAccessViewComponent {
33509
33554
  this.errorNotifierService.announceError(null);
33510
33555
  this.alertService.clear();
33511
33556
  }
33512
- static ɵfac = function CaseFullAccessViewComponent_Factory(t) { return new (t || CaseFullAccessViewComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(NavigationNotifierService), i0.ɵɵdirectiveInject(OrderService), i0.ɵɵdirectiveInject(ActivityPollingService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(AlertService), i0.ɵɵdirectiveInject(DraftService), i0.ɵɵdirectiveInject(ErrorNotifierService), i0.ɵɵdirectiveInject(ConvertHrefToRouterService), i0.ɵɵdirectiveInject(i5.Location), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(i1.RpxTranslatePipe)); };
33557
+ static ɵfac = function CaseFullAccessViewComponent_Factory(t) { return new (t || CaseFullAccessViewComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(NavigationNotifierService), i0.ɵɵdirectiveInject(OrderService), i0.ɵɵdirectiveInject(ActivityPollingService), i0.ɵɵdirectiveInject(i1$3.MatLegacyDialog), i0.ɵɵdirectiveInject(AlertService), i0.ɵɵdirectiveInject(DraftService), i0.ɵɵdirectiveInject(ErrorNotifierService), i0.ɵɵdirectiveInject(ConvertHrefToRouterService), i0.ɵɵdirectiveInject(i5.Location), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(SessionStorageService), i0.ɵɵdirectiveInject(i1.RpxTranslatePipe), i0.ɵɵdirectiveInject(LoadingService)); };
33513
33558
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseFullAccessViewComponent, selectors: [["ccd-case-full-access-view"]], viewQuery: function CaseFullAccessViewComponent_Query(rf, ctx) { if (rf & 1) {
33514
33559
  i0.ɵɵviewQuery(_c0$b, 5);
33515
33560
  } if (rf & 2) {
@@ -33554,7 +33599,7 @@ class CaseFullAccessViewComponent {
33554
33599
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseFullAccessViewComponent, [{
33555
33600
  type: Component,
33556
33601
  args: [{ selector: 'ccd-case-full-access-view', template: "<!-- Generic error heading and error message to be displayed only if there are no specific callback errors or warnings, or no error details -->\n<div *ngIf=\"error && !(error.callbackErrors || error.callbackWarnings || error.details)\" class=\"error-summary\"\n role=\"group\" aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h1 class=\"heading-h1 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'Something went wrong' | rpxTranslate}}\n </h1>\n <div class=\"govuk-error-summary__body\" id=\"edit-case-event_error-summary-body\">\n <p>{{\"We're working to fix the problem. Try again shortly.\" | rpxTranslate}}</p>\n <p>\n <a href=\"get-help\" target=\"_blank\">\n {{\"Contact us\" | rpxTranslate}}</a> {{\"if you're still having problems.\" | rpxTranslate}}\n </p>\n </div>\n</div>\n<!-- Callback error heading and error message to be displayed if there are specific error details -->\n<div *ngIf=\"error && error.details\" class=\"error-summary\" role=\"group\"\n aria-labelledby=\"edit-case-event_error-summary-heading\" tabindex=\"-1\">\n <h2 class=\"heading-h2 error-summary-heading\" id=\"edit-case-event_error-summary-heading\">\n {{'The callback data failed validation' | rpxTranslate}}\n </h2>\n <p>{{error.message | rpxTranslate}}</p>\n <ul *ngIf=\"error.details?.field_errors\" class=\"error-summary-list\">\n <li *ngFor=\"let fieldError of error.details.field_errors\">\n {{fieldError.message | rpxTranslate}}\n </li>\n </ul>\n</div>\n<ccd-callback-errors\n [triggerTextContinue]=\"triggerTextStart\"\n [triggerTextIgnore]=\"triggerTextIgnoreWarnings\"\n [callbackErrorsSubject]=\"callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\">\n</ccd-callback-errors>\n<ccd-activity [caseId]=\"caseDetails.case_id\" [displayMode]=\"BANNER\"></ccd-activity>\n<div class=\"grid-row\">\n <div class=\"column-one-half\">\n <ccd-case-header [caseDetails]=\"caseDetails\"></ccd-case-header>\n <div class=\"case-viewer-controls\" *ngIf=\"hasPrint && !isDraft() && isPrintEnabled()\">\n <a id=\"case-viewer-control-print\" routerLink=\"print\" class=\"button button-secondary\">{{'Print' | rpxTranslate}}</a>\n </div>\n </div>\n <div *ngIf=\"hasEventSelector\" class=\"column-one-half\">\n <ccd-event-trigger [isDisabled]=\"isTriggerButtonDisabled()\" [triggers]=\"caseDetails.triggers\"\n [triggerText]=\"triggerText\"\n [eventId]=\"eventId\"\n (onTriggerChange)=\"clearErrorsAndWarnings()\"\n (onTriggerSubmit)=\"applyTrigger($event)\"></ccd-event-trigger>\n </div>\n</div>\n<div class=\"grid-row\" *ngIf=\"activeCaseFlags && !caseFlagsExternalUser\">\n <div class=\"column-full\">\n <ccd-notification-banner [notificationBannerConfig]=\"notificationBannerConfig\" (linkClicked)=\"onLinkClicked($event)\">\n </ccd-notification-banner>\n </div>\n</div>\n<div class=\"grid-row\">\n <div class=\"column-full\">\n <ng-container *ngIf=\"hasTabsPresent()\">\n <mat-tab-group #tabGroup animationDuration=\"0ms\" (selectedIndexChange)=\"tabChanged($event)\" [disableRipple]=\"true\"\n [selectedIndex]=\"selectedTabIndex\">\n <mat-tab *ngFor=\"let tab of prependedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n <mat-tab *ngFor=\"let tab of sortedTabs; let curIdx=index\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n <ng-template matTabContent>\n <table [class]=\"tab.id\" [attr.aria-label]=\"'case viewer table' | rpxTranslate\">\n <tbody>\n <ng-container *ngFor=\"let field of tab | ccdTabFields | ccdReadFieldsFilter:false :undefined :true : formGroup?.controls['data']\">\n <div ccdLabelSubstitutor [caseField]=\"field\" [contextFields]=\"caseFields\" [hidden]=\"field.hidden\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\">\n <th id=\"case-viewer-field-label\" *ngIf=\"!isFieldToHaveNoLabel(field)\">\n <div class=\"case-viewer-label text-16\">\n {{field.label | rpxTranslate}}</div>\n </th>\n <td [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup?.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\">\n <th [id]=\"'case-viewer-field-read--' + field.id\" scope=\"col\">\n <span class=\"text-16\">\n <ccd-field-read [topLevelFormGroup]=\"formGroup.controls['data']\"\n [caseField]=\"field\" [caseReference]=\"caseDetails.case_id\"\n [markdownUseHrefAsRouterLink]=\"markdownUseHrefAsRouterLink\">\n </ccd-field-read>\n </span>\n </th>\n </tr>\n </ng-container>\n </div>\n </ng-container>\n </tbody>\n </table>\n </ng-template>\n </mat-tab>\n <mat-tab *ngFor=\"let tab of appendedTabs\" [id]=\"tab.id\" [label]=\"tab.label | rpxTranslate\">\n </mat-tab>\n </mat-tab-group>\n <router-outlet *ngIf=\"(prependedTabs && prependedTabs.length) || (appendedTabs && appendedTabs.length)\"></router-outlet>\n </ng-container>\n </div>\n</div>\n", styles: ["th{width:1%;white-space:nowrap;vertical-align:top}.compound-field th{padding:0}.case-viewer-controls{margin-top:47px;margin-bottom:20px}ccd-case-header{float:left;margin-right:10px}ccd-event-trigger{float:right}.case-viewer-label{min-width:300px;white-space:normal}.markdown h3{margin-bottom:0}.hide-table-capion{position:absolute;visibility:hidden}\n"] }]
33557
- }], () => [{ type: i0.NgZone }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: NavigationNotifierService }, { type: OrderService }, { type: ActivityPollingService }, { type: i1$3.MatLegacyDialog }, { type: AlertService }, { type: DraftService }, { type: ErrorNotifierService }, { type: ConvertHrefToRouterService }, { type: i5.Location }, { type: i0.ChangeDetectorRef }, { type: SessionStorageService }, { type: i1.RpxTranslatePipe }], { hasPrint: [{
33602
+ }], () => [{ type: i0.NgZone }, { type: i1$1.ActivatedRoute }, { type: i1$1.Router }, { type: NavigationNotifierService }, { type: OrderService }, { type: ActivityPollingService }, { type: i1$3.MatLegacyDialog }, { type: AlertService }, { type: DraftService }, { type: ErrorNotifierService }, { type: ConvertHrefToRouterService }, { type: i5.Location }, { type: i0.ChangeDetectorRef }, { type: SessionStorageService }, { type: i1.RpxTranslatePipe }, { type: LoadingService }], { hasPrint: [{
33558
33603
  type: Input
33559
33604
  }], hasEventSelector: [{
33560
33605
  type: Input
@@ -33568,7 +33613,7 @@ class CaseFullAccessViewComponent {
33568
33613
  type: ViewChild,
33569
33614
  args: ['tabGroup', { static: false }]
33570
33615
  }] }); })();
33571
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFullAccessViewComponent, { className: "CaseFullAccessViewComponent", filePath: "lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.ts", lineNumber: 43 }); })();
33616
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseFullAccessViewComponent, { className: "CaseFullAccessViewComponent", filePath: "lib/shared/components/case-viewer/case-full-access-view/case-full-access-view.component.ts", lineNumber: 44 }); })();
33572
33617
 
33573
33618
  class PrintUrlPipe {
33574
33619
  appConfig;