@hmcts/rpx-xui-common-lib 1.7.21 → 1.7.22-selected-cases-status-column-header

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 (33) hide show
  1. package/bundles/hmcts-rpx-xui-common-lib.umd.js +212 -44
  2. package/bundles/hmcts-rpx-xui-common-lib.umd.js.map +1 -1
  3. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js +1 -1
  4. package/bundles/hmcts-rpx-xui-common-lib.umd.min.js.map +1 -1
  5. package/esm2015/hmcts-rpx-xui-common-lib.js +2 -2
  6. package/esm2015/lib/components/search-service/search-service.component.js +2 -2
  7. package/esm2015/lib/components/selected-case/selected-case.component.js +3 -9
  8. package/esm2015/lib/components/share-case/share-case.component.js +166 -15
  9. package/esm2015/lib/models/case-share.model.js +7 -1
  10. package/esm2015/lib/models/index.js +2 -2
  11. package/esm2015/lib/models/person.model.js +3 -1
  12. package/esm2015/lib/services/case-sharing-state/case-sharing-state.service.js +39 -15
  13. package/esm2015/public-api.js +2 -2
  14. package/esm5/hmcts-rpx-xui-common-lib.js +2 -2
  15. package/esm5/lib/components/search-service/search-service.component.js +2 -2
  16. package/esm5/lib/components/selected-case/selected-case.component.js +3 -12
  17. package/esm5/lib/components/share-case/share-case.component.js +187 -15
  18. package/esm5/lib/models/case-share.model.js +7 -1
  19. package/esm5/lib/models/index.js +2 -2
  20. package/esm5/lib/models/person.model.js +3 -1
  21. package/esm5/lib/services/case-sharing-state/case-sharing-state.service.js +40 -16
  22. package/esm5/public-api.js +2 -2
  23. package/fesm2015/hmcts-rpx-xui-common-lib.js +192 -46
  24. package/fesm2015/hmcts-rpx-xui-common-lib.js.map +1 -1
  25. package/fesm5/hmcts-rpx-xui-common-lib.js +214 -50
  26. package/fesm5/hmcts-rpx-xui-common-lib.js.map +1 -1
  27. package/hmcts-rpx-xui-common-lib.metadata.json +1 -1
  28. package/lib/components/selected-case/selected-case.component.d.ts +0 -1
  29. package/lib/components/share-case/share-case.component.d.ts +30 -2
  30. package/lib/models/case-share.model.d.ts +4 -0
  31. package/lib/models/person.model.d.ts +2 -0
  32. package/lib/services/case-sharing-state/case-sharing-state.service.d.ts +1 -1
  33. package/package.json +1 -1
@@ -9,10 +9,10 @@ import { formatDate, DOCUMENT, CommonModule } from '@angular/common';
9
9
  import { Title } from '@angular/platform-browser';
10
10
  import { DocumentInterruptSource, Idle } from '@ng-idle/core';
11
11
  import { Keepalive } from '@ng-idle/keepalive';
12
- import { RouterModule, Router, NavigationEnd } from '@angular/router';
12
+ import { Router, RouterModule, NavigationEnd } from '@angular/router';
13
13
  import { Component, EventEmitter, Input, Output, ViewEncapsulation, Injectable, Directive, TemplateRef, ViewContainerRef, ElementRef, Inject, ViewChild, ChangeDetectorRef, InjectionToken, defineInjectable, inject, NgModule, ChangeDetectionStrategy } from '@angular/core';
14
14
  import { BehaviorSubject, of, zip, Subject, combineLatest } from 'rxjs';
15
- import { distinctUntilChanged, map, debounceTime, filter, mergeMap, tap, catchError, switchMap, delay } from 'rxjs/operators';
15
+ import { distinctUntilChanged, map, tap, debounceTime, filter, mergeMap, catchError, switchMap, delay } from 'rxjs/operators';
16
16
 
17
17
  /**
18
18
  * @fileoverview added by tsickle
@@ -1860,29 +1860,52 @@ var CaseSharingStateService = /** @class */ (function () {
1860
1860
  return newSharedCases;
1861
1861
  };
1862
1862
  /**
1863
- * @param {?} caseId
1864
1863
  * @param {?} user
1864
+ * @param {?=} caseId
1865
1865
  * @return {?}
1866
1866
  */
1867
1867
  CaseSharingStateService.prototype.requestUnshare = /**
1868
- * @param {?} caseId
1869
1868
  * @param {?} user
1869
+ * @param {?=} caseId
1870
1870
  * @return {?}
1871
1871
  */
1872
- function (caseId, user) {
1872
+ function (user, caseId) {
1873
1873
  var e_2, _a;
1874
1874
  /** @type {?} */
1875
1875
  var newSharedCases = [];
1876
1876
  try {
1877
1877
  for (var _b = __values(this.caseState), _c = _b.next(); !_c.done; _c = _b.next()) {
1878
1878
  var sharedCase = _c.value;
1879
- if (sharedCase.caseId === caseId) {
1879
+ // If no caseId, then request unshare from all shared cases
1880
+ if (caseId === undefined || sharedCase.caseId === caseId) {
1880
1881
  if (!sharedCase.pendingUnshares) {
1881
1882
  sharedCase.pendingUnshares = [];
1882
1883
  }
1883
1884
  /** @type {?} */
1884
1885
  var newPendingUnshares = sharedCase.pendingUnshares.slice();
1885
- if (newPendingUnshares) {
1886
+ // If the user is pending shared access, just remove them from pendingShares
1887
+ /** @type {?} */
1888
+ var newPendingShares = void 0;
1889
+ /** @type {?} */
1890
+ var indexOfPreviouslyAddedUser = -1;
1891
+ if (sharedCase.pendingShares) {
1892
+ indexOfPreviouslyAddedUser = sharedCase.pendingShares.findIndex((/**
1893
+ * @param {?} u
1894
+ * @return {?}
1895
+ */
1896
+ function (u) { return u.idamId === user.idamId; }));
1897
+ if (indexOfPreviouslyAddedUser > -1) {
1898
+ newPendingShares = sharedCase.pendingShares.slice();
1899
+ newPendingShares.splice(indexOfPreviouslyAddedUser, 1);
1900
+ }
1901
+ }
1902
+ // If the user does not exist in pendingShares, and already has shared access (i.e. exists in sharedWith),
1903
+ // request removal of shared access
1904
+ if (indexOfPreviouslyAddedUser === -1 && sharedCase.sharedWith && sharedCase.sharedWith.findIndex((/**
1905
+ * @param {?} u
1906
+ * @return {?}
1907
+ */
1908
+ function (u) { return u.idamId === user.idamId; })) > -1) {
1886
1909
  if (!newPendingUnshares.some((/**
1887
1910
  * @param {?} u
1888
1911
  * @return {?}
@@ -1891,11 +1914,10 @@ var CaseSharingStateService = /** @class */ (function () {
1891
1914
  newPendingUnshares.push(user);
1892
1915
  }
1893
1916
  }
1894
- else {
1895
- newPendingUnshares.push(user);
1896
- }
1897
1917
  /** @type {?} */
1898
- var newSharedCase = __assign({}, sharedCase, { pendingUnshares: newPendingUnshares });
1918
+ var newSharedCase = __assign({}, sharedCase, { pendingUnshares: newPendingUnshares }, (newPendingShares && {
1919
+ pendingShares: newPendingShares
1920
+ }));
1899
1921
  newSharedCases.push(newSharedCase);
1900
1922
  }
1901
1923
  else {
@@ -1911,7 +1933,7 @@ var CaseSharingStateService = /** @class */ (function () {
1911
1933
  finally { if (e_2) throw e_2.error; }
1912
1934
  }
1913
1935
  this.subject.next(newSharedCases);
1914
- return;
1936
+ return newSharedCases;
1915
1937
  };
1916
1938
  /**
1917
1939
  * @param {?} caseId
@@ -1981,11 +2003,13 @@ var CaseSharingStateService = /** @class */ (function () {
1981
2003
  * @return {?}
1982
2004
  */
1983
2005
  function (caseId) {
1984
- for (var i = 0, l = this.caseState.length; i < l; i++) {
1985
- if (this.caseState[i].caseId === caseId) {
1986
- this.caseState.splice(i, 1);
1987
- this.subject.next(this.caseState);
1988
- return;
2006
+ if (this.caseState.length > 1) {
2007
+ for (var i = 0, l = this.caseState.length; i < l; i++) {
2008
+ if (this.caseState[i].caseId === caseId) {
2009
+ this.caseState.splice(i, 1);
2010
+ this.subject.next(this.caseState);
2011
+ return;
2012
+ }
1989
2013
  }
1990
2014
  }
1991
2015
  };
@@ -2215,15 +2239,6 @@ var SelectedCaseComponent = /** @class */ (function () {
2215
2239
  this.combinedSortedShares = this.combineAndSortShares(sharedWith, pendingShares);
2216
2240
  }
2217
2241
  };
2218
- /**
2219
- * @return {?}
2220
- */
2221
- SelectedCaseComponent.prototype.onUnselect = /**
2222
- * @return {?}
2223
- */
2224
- function () {
2225
- this.unselect.emit(this.sharedCase);
2226
- };
2227
2242
  /**
2228
2243
  * @param {?} c
2229
2244
  * @return {?}
@@ -2432,7 +2447,7 @@ var SelectedCaseComponent = /** @class */ (function () {
2432
2447
  * @return {?}
2433
2448
  */
2434
2449
  function (user, sharedCase) {
2435
- this.stateService.requestUnshare(sharedCase.caseId, user);
2450
+ this.stateService.requestUnshare(user, sharedCase.caseId);
2436
2451
  this.synchronizeStore.emit(this.shareCases);
2437
2452
  };
2438
2453
  /**
@@ -2552,7 +2567,7 @@ var SelectedCaseComponent = /** @class */ (function () {
2552
2567
  SelectedCaseComponent.decorators = [
2553
2568
  { type: Component, args: [{
2554
2569
  selector: 'xuilib-selected-case',
2555
- template: "<div id=\"{{buildElementId('govuk-accordion__section')}}\" class=\"govuk-accordion__section\">\n <div class=\"govuk-grid-row govuk-case-header\">\n <div class=\"govuk-grid-column-three-quarters\">\n <h3 id=\"{{buildElementId('case-title')}}\" class=\"govuk-case-title\">{{ sharedCase.caseTitle }}</h3>\n <h1 id=\"{{buildElementId('case-id')}}\" class=\"govuk-case-sub-title\">{{ sharedCase.caseId }}</h1>\n </div>\n <div class=\"govuk-grid-column-twenty-percent\">\n <button id=\"{{buildElementId('btn-deselect-case')}}\" class=\"govuk-button hmcts-button--secondary\" (click)=\"onDeselect(sharedCase)\" title=\"Deselect case\">Deselect case</button>\n </div>\n <div class=\"govuk-accordion__section-header govuk-grid-column-five-percent\">\n <div class=\"govuk-accordion__section-heading\">\n <button type=\"button\" id=\"{{buildElementId('accordion-with-summary-sections-heading')}}\"\n aria-controls=\"accordion-with-summary-sections-content-1\" class=\"govuk-accordion__section-button\"\n aria-describedby=\"accordion-with-summary-sections-summary-1\" aria-expanded=\"false\" title=\"Expand or Collapse\">\n <span class=\"govuk-accordion__icon\" aria-hidden=\"true\"></span></button>\n </div>\n </div>\n </div>\n <div id=\"{{buildElementId('accordion-with-summary-sections-content')}}\" class=\"govuk-accordion__section-content\"\n aria-labelledby=\"buildElementId('accordion-with-summary-sections-heading')\" >\n <div class=\"govuk-grid-row\" *ngIf=\"showNoUsersAccessInfo()\">\n <span id=\"{{buildElementId('access-info-no-user')}}\" class=\"govuk-div-align-left\">No users from your organisation currently have access to this case.</span>\n </div>\n <div class=\"govuk-grid-row\" *ngIf=\"showUserHasAccessInfo()\">\n <span id=\"{{buildElementId('access-info-has-users')}}\" class=\"govuk-div-align-left\">Users from your organisation with access to this case.</span>\n </div>\n <table class=\"govuk-table\" *ngIf=\"showUserAccessTable()\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th id=\"{{buildElementId('name-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Name</th>\n <th id=\"{{buildElementId('email-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Email address</th>\n <th id=\"{{buildElementId('action-heading')}}\" class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">Actions</th>\n <th id=\"{{buildElementId('label-heading')}}\" class=\"govuk-table__header govuk-table-column-label\" scope=\"col\">&nbsp;&nbsp;</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let user of combinedSortedShares; index as idx; trackBy: trackByUserId\">\n <td id=\"user-full-name-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td id=\"user-email-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <a *ngIf=\"canRemove(sharedCase.caseId, user) | async\" (click)=\"onRemove(user, sharedCase)\" href=\"javascript:void(0);\">Remove <span class=\"govuk-visually-hidden\">{{ user.firstName + ' ' + user.lastName }} from case</span></a>\n <a *ngIf=\"canCancel(sharedCase.caseId, user) | async\" (click)=\"onCancel(user, sharedCase)\" href=\"javascript:void(0);\">Cancel <span class=\"govuk-visually-hidden\">adding {{ user.firstName + ' ' + user.lastName }} to case</span></a>\n </td>\n <td class=\"govuk-table__cell\">\n <span *ngIf=\"isToBeRemoved(sharedCase.caseId, user) | async\" class=\"hmcts-badge hmcts-badge--red\">To be removed</span>\n <span *ngIf=\"isToBeAdded(sharedCase.caseId, user) | async\" class=\"hmcts-badge\">To be added</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n",
2570
+ template: "<div id=\"{{buildElementId('govuk-accordion__section')}}\" class=\"govuk-accordion__section\">\n <div class=\"govuk-grid-row govuk-case-header\">\n <div class=\"govuk-grid-column-three-quarters\">\n <h3 id=\"{{buildElementId('case-title')}}\" class=\"govuk-case-title\">{{ sharedCase.caseTitle }}</h3>\n <h1 id=\"{{buildElementId('case-id')}}\" class=\"govuk-case-sub-title\">{{ sharedCase.caseId }}</h1>\n </div>\n <div class=\"govuk-grid-column-twenty-percent\">\n <button id=\"{{buildElementId('btn-deselect-case')}}\" class=\"govuk-button hmcts-button--secondary\" (click)=\"onDeselect(sharedCase)\" title=\"Deselect case\">Deselect case</button>\n </div>\n <div class=\"govuk-accordion__section-header govuk-grid-column-five-percent\">\n <div class=\"govuk-accordion__section-heading\">\n <button type=\"button\" id=\"{{buildElementId('accordion-with-summary-sections-heading')}}\"\n aria-controls=\"accordion-with-summary-sections-content-1\" class=\"govuk-accordion__section-button\"\n aria-describedby=\"accordion-with-summary-sections-summary-1\" aria-expanded=\"false\" title=\"Expand or Collapse\">\n <span class=\"govuk-accordion__icon\" aria-hidden=\"true\"></span></button>\n </div>\n </div>\n </div>\n <div id=\"{{buildElementId('accordion-with-summary-sections-content')}}\" class=\"govuk-accordion__section-content\"\n aria-labelledby=\"buildElementId('accordion-with-summary-sections-heading')\" >\n <div class=\"govuk-grid-row\" *ngIf=\"showNoUsersAccessInfo()\">\n <span id=\"{{buildElementId('access-info-no-user')}}\" class=\"govuk-div-align-left\">No users from your organisation currently have access to this case.</span>\n </div>\n <div class=\"govuk-grid-row\" *ngIf=\"showUserHasAccessInfo()\">\n <span id=\"{{buildElementId('access-info-has-users')}}\" class=\"govuk-div-align-left\">Users from your organisation with access to this case.</span>\n </div>\n <table class=\"govuk-table\" *ngIf=\"showUserAccessTable()\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th id=\"{{buildElementId('name-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Name</th>\n <th id=\"{{buildElementId('email-heading')}}\" class=\"govuk-table__header govuk-table-column-header\" scope=\"col\">Email address</th>\n <th id=\"{{buildElementId('action-heading')}}\" class=\"govuk-table__header govuk-table-column-actions\" scope=\"col\">Actions</th>\n <th id=\"{{buildElementId('label-heading')}}\" class=\"govuk-table__header govuk-table-column-label\" scope=\"col\">Status</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\">\n <tr class=\"govuk-table__row\" *ngFor=\"let user of combinedSortedShares; index as idx; trackBy: trackByUserId\">\n <td id=\"user-full-name-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.firstName + ' ' + user.lastName }}</td>\n <td id=\"user-email-{{ userIdSetter(canCancel(sharedCase.caseId, user) | async, idx) }}\" class=\"govuk-table__cell\">{{ user.email }}</td>\n <td class=\"govuk-table__cell\">\n <a *ngIf=\"canRemove(sharedCase.caseId, user) | async\" (click)=\"onRemove(user, sharedCase)\" href=\"javascript:void(0);\">Remove <span class=\"govuk-visually-hidden\">{{ user.firstName + ' ' + user.lastName }} from case</span></a>\n <a *ngIf=\"canCancel(sharedCase.caseId, user) | async\" (click)=\"onCancel(user, sharedCase)\" href=\"javascript:void(0);\">Cancel <span class=\"govuk-visually-hidden\">adding {{ user.firstName + ' ' + user.lastName }} to case</span></a>\n </td>\n <td class=\"govuk-table__cell\">\n <span *ngIf=\"isToBeRemoved(sharedCase.caseId, user) | async\" class=\"hmcts-badge hmcts-badge--red\">To be removed</span>\n <span *ngIf=\"isToBeAdded(sharedCase.caseId, user) | async\" class=\"hmcts-badge\">To be added</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>\n",
2556
2571
  styles: [".govuk-case-header{border-top:1px solid #bfc1c3}.govuk-case-title{font-family:nta,Arial,sans-serif;font-size:24px;color:#005ea5;font-weight:700;padding-left:0}.govuk-case-sub-title{font-family:nta,Arial,sans-serif;font-size:1rem!important;color:#6f777b;font-weight:400;padding-left:0}.govuk-grid-row{margin-left:0;margin-right:0}.govuk-grid-column-three-quarters{padding-top:5px;padding-left:0}.govuk-grid-column-twenty-percent{box-sizing:border-box;padding-top:10px;width:20%;float:left}.govuk-grid-column-five-percent{box-sizing:border-box;padding-top:15px;width:5%;float:left}.govuk-table-column-header{width:40%}.govuk-table-column-actions,.govuk-table-column-label{width:10%}.govuk-div-align-left{font-family:nta,Arial,sans-serif;font-size:1.1875rem!important;line-height:1.31579!important;text-align:left;margin-bottom:20px;padding-left:0;color:#0b0c0c}.govuk-accordion__section-header{border-top:0}.govuk-accordion__section-content{padding-top:0}"]
2557
2572
  }] }
2558
2573
  ];
@@ -2841,6 +2856,17 @@ var ShareCaseConfirmComponent = /** @class */ (function () {
2841
2856
  return ShareCaseConfirmComponent;
2842
2857
  }());
2843
2858
 
2859
+ /**
2860
+ * @fileoverview added by tsickle
2861
+ * Generated from: lib/models/case-share.model.ts
2862
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2863
+ */
2864
+ /** @enum {string} */
2865
+ var SharedCaseErrorMessages = {
2866
+ OneCaseMustBeSelected: "At least one case must be selected",
2867
+ NoChangesRequested: "You have not requested any changes to case sharing",
2868
+ };
2869
+
2844
2870
  /**
2845
2871
  * @fileoverview added by tsickle
2846
2872
  * Generated from: lib/components/user-select/user-select.component.ts
@@ -2964,16 +2990,23 @@ var UserSelectComponent = /** @class */ (function () {
2964
2990
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2965
2991
  */
2966
2992
  var ShareCaseComponent = /** @class */ (function () {
2967
- function ShareCaseComponent(stateService) {
2993
+ function ShareCaseComponent(stateService, router) {
2968
2994
  this.stateService = stateService;
2995
+ this.router = router;
2969
2996
  this.shareCases = []; // cases selected for sharing
2970
- // cases selected for sharing
2997
+ this.continueAllowed = false;
2998
+ this.selectedUserToRemove = null;
2971
2999
  this.removeUserFromCaseToggleOn = false;
2972
3000
  this.users = []; // users of this organisation the cases can be shared with
2973
3001
  // users of this organisation the cases can be shared with
2974
3002
  this.confirmLink = '';
3003
+ this.cancelLink = '';
3004
+ this.showRemoveUsers = false;
3005
+ this.fnTitle = '';
3006
+ this.title = '';
2975
3007
  this.unselect = new EventEmitter();
2976
3008
  this.synchronizeStore = new EventEmitter();
3009
+ this.validationErrors = [];
2977
3010
  }
2978
3011
  /**
2979
3012
  * @return {?}
@@ -2983,15 +3016,36 @@ var ShareCaseComponent = /** @class */ (function () {
2983
3016
  */
2984
3017
  function () {
2985
3018
  var _this = this;
2986
- this.shareCases$.subscribe((/**
3019
+ this.shareCases$
3020
+ .pipe(tap((/**
3021
+ * @param {?} sharedCases
3022
+ * @return {?}
3023
+ */
3024
+ function (sharedCases) {
3025
+ // Update the list of users assigned to at least one case
3026
+ _this.getAssignedUsers(sharedCases.filter((/**
3027
+ * @param {?} sharedCase
3028
+ * @return {?}
3029
+ */
3030
+ function (sharedCase) { return sharedCase.sharedWith && sharedCase.sharedWith.length > 0; })));
3031
+ })))
3032
+ .subscribe((/**
2987
3033
  * @param {?} shareCases
2988
3034
  * @return {?}
2989
3035
  */
2990
3036
  function (shareCases) {
2991
3037
  _this.shareCases = shareCases;
2992
3038
  _this.stateService.setCases(shareCases);
3039
+ // Set the config to be used by the xuilib-gov-uk-error-message component, in particular the element ID to
3040
+ // which the error message is associated
3041
+ if (shareCases) {
3042
+ _this.selectedCasesErrorMessageConfig = {
3043
+ id: shareCases.length > 0 ? 'cases' : 'noCaseDisplay'
3044
+ };
3045
+ }
2993
3046
  }));
2994
3047
  this.shareCases$ = this.stateService.state;
3048
+ this.shareCaseErrorMessage = { isInvalid: false, messages: [] };
2995
3049
  };
2996
3050
  /**
2997
3051
  * @param {?} c
@@ -3002,8 +3056,16 @@ var ShareCaseComponent = /** @class */ (function () {
3002
3056
  * @return {?}
3003
3057
  */
3004
3058
  function (c) {
3005
- this.unselect.emit(c);
3006
- this.stateService.removeCase(c.caseId);
3059
+ this.validationErrors = [];
3060
+ if (this.stateService.getCases().length === 1) {
3061
+ this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.OneCaseMustBeSelected });
3062
+ this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.OneCaseMustBeSelected] };
3063
+ window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
3064
+ }
3065
+ else {
3066
+ this.unselect.emit(c);
3067
+ this.stateService.removeCase(c.caseId);
3068
+ }
3007
3069
  };
3008
3070
  /**
3009
3071
  * @param {?} event
@@ -3041,6 +3103,21 @@ var ShareCaseComponent = /** @class */ (function () {
3041
3103
  this.userSelect.clear();
3042
3104
  }
3043
3105
  this.synchronizeStore.emit(newSharedCases);
3106
+ // Update the list of assigned users (which includes pending users)
3107
+ this.getAssignedUsers(newSharedCases);
3108
+ };
3109
+ /**
3110
+ * @return {?}
3111
+ */
3112
+ ShareCaseComponent.prototype.removeUser = /**
3113
+ * @return {?}
3114
+ */
3115
+ function () {
3116
+ if (this.selectedUserToRemove) {
3117
+ /** @type {?} */
3118
+ var newSharedCases = this.stateService.requestUnshare(this.selectedUserToRemove);
3119
+ this.synchronizeStore.emit(newSharedCases);
3120
+ }
3044
3121
  };
3045
3122
  /**
3046
3123
  * @return {?}
@@ -3052,14 +3129,25 @@ var ShareCaseComponent = /** @class */ (function () {
3052
3129
  return this.selectedUser === null || this.shareCases.length === 0;
3053
3130
  };
3054
3131
  /**
3132
+ * Function originally used to set disabled state of "Continue" button, now called by the button click handler to
3133
+ * control whether navigation to the confirmation page is allowed. It is prevented if no changes have been made
3134
+ */
3135
+ /**
3136
+ * Function originally used to set disabled state of "Continue" button, now called by the button click handler to
3137
+ * control whether navigation to the confirmation page is allowed. It is prevented if no changes have been made
3055
3138
  * @return {?}
3056
3139
  */
3057
- ShareCaseComponent.prototype.isDisabledContinue = /**
3140
+ ShareCaseComponent.prototype.setContinueAllowed = /**
3141
+ * Function originally used to set disabled state of "Continue" button, now called by the button click handler to
3142
+ * control whether navigation to the confirmation page is allowed. It is prevented if no changes have been made
3058
3143
  * @return {?}
3059
3144
  */
3060
3145
  function () {
3061
- /** @type {?} */
3062
- var isDisabled = true;
3146
+ var _this = this;
3147
+ // Always start with continueAllowed = false. This covers the scenario where a user might add someone for sharing
3148
+ // a case (so, continueAllowed = true), then removes the same user before trying to continue. This would
3149
+ // erroneously leave continueAllowed as true
3150
+ this.continueAllowed = false;
3063
3151
  this.shareCases$.subscribe((/**
3064
3152
  * @param {?} shareCases
3065
3153
  * @return {?}
@@ -3070,11 +3158,11 @@ var ShareCaseComponent = /** @class */ (function () {
3070
3158
  for (var shareCases_1 = __values(shareCases), shareCases_1_1 = shareCases_1.next(); !shareCases_1_1.done; shareCases_1_1 = shareCases_1.next()) {
3071
3159
  var caseState = shareCases_1_1.value;
3072
3160
  if (caseState.pendingShares && caseState.pendingShares.length > 0) {
3073
- isDisabled = false;
3161
+ _this.continueAllowed = true;
3074
3162
  break;
3075
3163
  }
3076
3164
  if (caseState.pendingUnshares && caseState.pendingUnshares.length > 0) {
3077
- isDisabled = false;
3165
+ _this.continueAllowed = true;
3078
3166
  break;
3079
3167
  }
3080
3168
  }
@@ -3087,7 +3175,6 @@ var ShareCaseComponent = /** @class */ (function () {
3087
3175
  finally { if (e_1) throw e_1.error; }
3088
3176
  }
3089
3177
  }));
3090
- return isDisabled;
3091
3178
  };
3092
3179
  /**
3093
3180
  * @param {?} sharedCase
@@ -3121,22 +3208,103 @@ var ShareCaseComponent = /** @class */ (function () {
3121
3208
  }
3122
3209
  this.stateService.setCases(this.shareCases);
3123
3210
  };
3211
+ /**
3212
+ * @return {?}
3213
+ */
3214
+ ShareCaseComponent.prototype.onContinue = /**
3215
+ * @return {?}
3216
+ */
3217
+ function () {
3218
+ this.setContinueAllowed();
3219
+ // If continuation is not allowed, set an error message
3220
+ if (!this.continueAllowed) {
3221
+ this.validationErrors = [];
3222
+ this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.NoChangesRequested });
3223
+ this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.NoChangesRequested] };
3224
+ window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
3225
+ }
3226
+ // Navigate to confirmation page only if allowed to continue
3227
+ if (this.continueAllowed) {
3228
+ this.router.navigate([this.confirmLink]);
3229
+ }
3230
+ };
3231
+ /**
3232
+ * Gets a unique list of all users that have been assigned, or are pending assigment to, at least one case
3233
+ * @param sharedCases The list of shared cases from which to get users these are shared with, or are to be shared with
3234
+ */
3235
+ /**
3236
+ * Gets a unique list of all users that have been assigned, or are pending assigment to, at least one case
3237
+ * @param {?} sharedCases The list of shared cases from which to get users these are shared with, or are to be shared with
3238
+ * @return {?}
3239
+ */
3240
+ ShareCaseComponent.prototype.getAssignedUsers = /**
3241
+ * Gets a unique list of all users that have been assigned, or are pending assigment to, at least one case
3242
+ * @param {?} sharedCases The list of shared cases from which to get users these are shared with, or are to be shared with
3243
+ * @return {?}
3244
+ */
3245
+ function (sharedCases) {
3246
+ /** @type {?} */
3247
+ var users = [];
3248
+ sharedCases.forEach((/**
3249
+ * @param {?} sharedCase
3250
+ * @return {?}
3251
+ */
3252
+ function (sharedCase) {
3253
+ if (sharedCase.sharedWith) {
3254
+ sharedCase.sharedWith.forEach((/**
3255
+ * @param {?} user
3256
+ * @return {?}
3257
+ */
3258
+ function (user) {
3259
+ if (!users.some((/**
3260
+ * @param {?} existingUser
3261
+ * @return {?}
3262
+ */
3263
+ function (existingUser) { return user.idamId === existingUser.idamId; }))) {
3264
+ users.push(user);
3265
+ }
3266
+ }));
3267
+ }
3268
+ if (sharedCase.pendingShares) {
3269
+ sharedCase.pendingShares.forEach((/**
3270
+ * @param {?} user
3271
+ * @return {?}
3272
+ */
3273
+ function (user) {
3274
+ if (!users.some((/**
3275
+ * @param {?} existingUser
3276
+ * @return {?}
3277
+ */
3278
+ function (existingUser) { return user.idamId === existingUser.idamId; }))) {
3279
+ users.push(user);
3280
+ }
3281
+ }));
3282
+ }
3283
+ }));
3284
+ this.assignedUsers = users;
3285
+ };
3124
3286
  ShareCaseComponent.decorators = [
3125
3287
  { type: Component, args: [{
3126
3288
  selector: 'xuilib-share-case',
3127
- template: "<div id=\"add-user\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">Enter email address</label>\n <span id=\"add-user-hint\" class=\"govuk-hint\">\n Search by name or email address. You can only add people from your organisation individually - but you can add as many as you like.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-user-select\n id=\"add-user-input\"\n aria-describedby=\"add-user-hint\"\n [users]=\"users\"\n (selected)=\"onSelectedUser($event)\">\n </xuilib-user-select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-add-user\" (click)=\"addUser()\" class=\"govuk-button\" [disabled]=\"isDisabledAdd()\" title=\"Add user to the case\">Add</button>\n </div>\n </div>\n <details id=\"add-user-help\" class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span id=\"content-why-can-not-find-email\" class=\"govuk-details__summary-text\">\n Can\u2019t find an email address?\n </span>\n </summary>\n <div id=\"content-reason-can-not-find-email\" class=\"govuk-details__text\">\n If you can\u2019t find your colleague\u2019s email address, they will need to complete their registration. Contact your\n administrator for help.\n </div>\n </details>\n</div>\n\n<div id=\"cases\">\n <h3 id=\"title-selected-cases\" class=\"govuk-heading-m\">Selected cases</h3>\n <div *ngIf=\"shareCases && shareCases.length > 0\" class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-with-summary-sections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\">\n <button class=\"govuk-button\" [disabled]=\"isDisabledContinue()\" title=\"Continue\" [routerLink]=\"confirmLink\">Continue</button>\n</div>\n",
3128
- styles: [""]
3289
+ template: "<xuilib-hmcts-error-summary\n [errorMessages]=\"validationErrors\"\n [header]=\"'There is a problem'\"\n></xuilib-hmcts-error-summary>\n<h1 *ngIf=\"title\" class=\"govuk-heading-xl govuk-!-margin-top-2\">\n <span *ngIf=\"fnTitle\" class=\"govuk-caption-xl\">{{fnTitle}}</span>\n {{title}}\n</h1>\n<div id=\"add-user\">\n <div class=\"govuk-form-group\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"add-user-input\">{{addUserLabel}}</label>\n <span id=\"add-user-hint\" class=\"govuk-hint\">\n Search by name or email address. You can share access with as many people as you need.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <xuilib-user-select\n id=\"add-user-input\"\n aria-describedby=\"add-user-hint\"\n [users]=\"users\"\n (selected)=\"onSelectedUser($event)\">\n </xuilib-user-select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-add-user\" (click)=\"addUser()\" class=\"govuk-button govuk-button--secondary\" [disabled]=\"isDisabledAdd()\" title=\"Add user to selected cases\">Add</button>\n </div>\n </div>\n <details id=\"add-user-help\" class=\"govuk-details\" data-module=\"govuk-details\">\n <summary class=\"govuk-details__summary\">\n <span id=\"content-why-can-not-find-email\" class=\"govuk-details__summary-text\">\n Can't find an email address?\n </span>\n </summary>\n <div id=\"content-reason-can-not-find-email\" class=\"govuk-details__text\">\n If you can't find your colleague's email address, they will need to complete their registration. Contact your\n administrator for help.\n </div>\n </details>\n </div>\n <div class=\"govuk-form-group\" *ngIf=\"showRemoveUsers\">\n <label class=\"govuk-label govuk-!-font-weight-bold\" for=\"remove-user-input\">Remove a person from all cases</label>\n <span id=\"remove-user-hint\" class=\"govuk-hint\">\n Select a person to remove them from all selected cases.\n </span>\n <div class=\"govuk-grid-row\">\n <div class=\"govuk-grid-column-two-thirds\">\n <select [(ngModel)]=\"selectedUserToRemove\" class=\"govuk-select\" id=\"remove-user-input\" aria-describedby=\"remove-user-hint\">\n <option [ngValue]=\"null\" selected>Select a person</option>\n <option *ngFor=\"let user of assignedUsers\" [ngValue]=\"user\">{{user.firstName}} {{user.lastName}} - {{user.email}}</option>\n </select>\n </div>\n <div class=\"govuk-grid-column-one-thirds\">\n <button id=\"btn-remove-user\" (click)=\"removeUser()\" class=\"govuk-button govuk-button--secondary\" title=\"Remove user from selected cases\">Remove</button>\n </div>\n </div>\n </div>\n</div>\n\n<div id=\"cases\" [ngClass]=\"{'govuk-form-group--error': shareCaseErrorMessage.messages && shareCaseErrorMessage.messages.length > 0}\">\n <h3 id=\"title-selected-cases\" class=\"govuk-heading-m\">Selected cases</h3>\n <xuilib-gov-uk-error-message [config]=\"selectedCasesErrorMessageConfig\" [errorMessage]=\"shareCaseErrorMessage\"></xuilib-gov-uk-error-message>\n <div *ngIf=\"shareCases && shareCases.length > 0\" class=\"govuk-accordion\" data-module=\"govuk-accordion\" id=\"accordion-with-summary-sections\">\n <xuilib-selected-case-list\n [shareCases$]=\"shareCases$\"\n [removeUserFromCaseToggleOn]=\"removeUserFromCaseToggleOn\"\n (unselect)=\"onUnselect($event)\"\n (synchronizeStore)=\"onSynchronizeStore($event)\"\n >\n </xuilib-selected-case-list>\n </div>\n\n <div id=\"noCaseDisplay\" *ngIf=\"shareCases && shareCases.length === 0\" class=\"govuk-hint\"\n [ngClass]=\"{'govuk-form-group--error': shareCaseErrorMessage.messages && shareCaseErrorMessage.messages.length > 0}\">\n No cases to display.\n </div>\n\n</div>\n\n<div id=\"share-case-nav\" class=\"govuk-button-group\">\n <button id=\"btn-continue\" class=\"govuk-button\" data-module=\"govuk-button\" (click)=\"onContinue()\" title=\"Continue\">Continue</button>\n <button id=\"btn-cancel\" class=\"govuk-button govuk-button--secondary\" data-module=\"govuk-button\" title=\"Cancel\" [routerLink]=\"cancelLink\">Cancel</button>\n</div>\n",
3290
+ styles: ["select{width:100%}"]
3129
3291
  }] }
3130
3292
  ];
3131
3293
  /** @nocollapse */
3132
3294
  ShareCaseComponent.ctorParameters = function () { return [
3133
- { type: CaseSharingStateService }
3295
+ { type: CaseSharingStateService },
3296
+ { type: Router }
3134
3297
  ]; };
3135
3298
  ShareCaseComponent.propDecorators = {
3136
3299
  removeUserFromCaseToggleOn: [{ type: Input }],
3137
3300
  shareCases$: [{ type: Input }],
3138
3301
  users: [{ type: Input }],
3139
3302
  confirmLink: [{ type: Input }],
3303
+ cancelLink: [{ type: Input }],
3304
+ addUserLabel: [{ type: Input }],
3305
+ showRemoveUsers: [{ type: Input }],
3306
+ fnTitle: [{ type: Input }],
3307
+ title: [{ type: Input }],
3140
3308
  unselect: [{ type: Output }],
3141
3309
  synchronizeStore: [{ type: Output }],
3142
3310
  userSelect: [{ type: ViewChild, args: [UserSelectComponent,] }]
@@ -3670,12 +3838,6 @@ var CookieBannerComponent = /** @class */ (function () {
3670
3838
  return CookieBannerComponent;
3671
3839
  }());
3672
3840
 
3673
- /**
3674
- * @fileoverview added by tsickle
3675
- * Generated from: lib/models/case-share.model.ts
3676
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
3677
- */
3678
-
3679
3841
  /**
3680
3842
  * @fileoverview added by tsickle
3681
3843
  * Generated from: lib/models/contact-details.model.ts
@@ -3738,6 +3900,7 @@ var PersonRole = {
3738
3900
  JUDICIAL: "Judicial",
3739
3901
  CASEWORKER: "Legal Ops",
3740
3902
  ADMIN: "Admin",
3903
+ CTSC: "CTSC User",
3741
3904
  ALL: "All",
3742
3905
  };
3743
3906
  /** @enum {string} */
@@ -3745,6 +3908,7 @@ var RoleCategory = {
3745
3908
  JUDICIAL: "JUDICIAL",
3746
3909
  CASEWORKER: "LEGAL_OPERATIONS",
3747
3910
  ADMIN: "ADMIN",
3911
+ CTSC: "CTSC",
3748
3912
  ALL: "ALL",
3749
3913
  };
3750
3914
 
@@ -5491,7 +5655,7 @@ var SearchServiceComponent = /** @class */ (function () {
5491
5655
  SearchServiceComponent.decorators = [
5492
5656
  { type: Component, args: [{
5493
5657
  selector: 'exui-search-service',
5494
- template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputServiceSearch\"\n (input)=\"onInput()\"\n [formControl]=\"form.controls.searchTerm\"\n [matAutocomplete]=\"autoSearchService\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchService=\"matAutocomplete\">\n <mat-option *ngFor=\"let service of services\" (onSelectionChange)=\"onSelectionChange()\">\n {{ service.name }}\n </mat-option>\n <mat-option *ngIf=\"!services.length && showAutocomplete && term && term.length >= this.minSearchCharacters\">No results found</mat-option>\n </mat-autocomplete>\n</div>\n",
5658
+ template: "<div class=\"auto-complete-container\">\n <input\n id=\"inputServiceSearch\"\n (input)=\"onInput()\"\n [formControl]=\"form?.controls.searchTerm\"\n [matAutocomplete]=\"autoSearchService\"\n class=\"govuk-input\"\n [attr.disabled]=\"disabled\">\n <mat-autocomplete class=\"mat-autocomplete-panel-extend\" autoActiveFirstOption #autoSearchService=\"matAutocomplete\">\n <mat-option *ngFor=\"let service of services\" (onSelectionChange)=\"onSelectionChange()\">\n {{ service.name }}\n </mat-option>\n <mat-option *ngIf=\"!services?.length && showAutocomplete && term && term.length >= this.minSearchCharacters\">No results found</mat-option>\n </mat-autocomplete>\n</div>\n",
5495
5659
  styles: [".autocomplete__input--show-all-values{padding:5px 34px 5px 5px;cursor:pointer}.autocomplete__dropdown-arrow-down{z-index:-1;display:inline-block;position:absolute;right:8px;width:24px;height:24px;top:10px}.autocomplete__menu{background-color:#fff;border:2px solid #0b0c0c;border-top:0;color:#0b0c0c;margin:0;max-height:342px;overflow-x:hidden;padding:0;width:100%;width:calc(100% - 4px)}.autocomplete__menu--visible{display:block}.autocomplete__menu--hidden{display:none}.autocomplete__menu--overlay{box-shadow:rgba(0,0,0,.256863) 0 2px 6px;left:0;position:absolute;top:100%;z-index:100}.autocomplete__menu--inline{position:relative}.autocomplete__option{border-bottom:solid #b1b4b6;border-width:1px 0;cursor:pointer;display:block;position:relative}.autocomplete__option>*{pointer-events:none}.autocomplete__option:first-of-type{border-top-width:0}.autocomplete__option:last-of-type{border-bottom-width:0}.autocomplete__option--odd{background-color:#fafafa}.autocomplete__option--focused,.autocomplete__option:hover{background-color:#1d70b8;border-color:#1d70b8;color:#fff;outline:0}.autocomplete__option--no-results{background-color:#fafafa;color:#646b6f;cursor:not-allowed}.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.25}.autocomplete__hint,.autocomplete__option{padding:5px}@media (min-width:641px){.autocomplete__hint,.autocomplete__input,.autocomplete__option{font-size:13px;line-height:1.31579}}.div-action{display:inline-block}.add-location{display:inline}.remove-location-button{margin:5px}.hide-autocomplete{display:none}.auto-complete-container{min-width:250px;display:inline-block;margin-right:4px}.autocomplete__input{line-height:24px;font-size:19px}"]
5496
5660
  }] }
5497
5661
  ];
@@ -7895,6 +8059,6 @@ var LoadingService = /** @class */ (function () {
7895
8059
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
7896
8060
  */
7897
8061
 
7898
- export { AccessibilityComponent, CheckboxListComponent, ContactDetailsComponent, DueDateComponent, GenericFilterComponent, HmctsSessionDialogComponent, InviteUserFormComponent, InviteUserPermissionComponent, LoadingSpinnerComponent, SelectedCaseConfirmComponent, SelectedCaseListComponent, SelectedCaseComponent, ServiceMessageComponent, ServiceMessagesComponent, ShareCaseConfirmComponent, ShareCaseComponent, TabComponent, TcConfirmComponent, TcDisplayHtmlComponent, TcDisplayPlainComponent, TermsAndConditionsComponent, UserDetailsComponent, UserListComponent, CookieBannerComponent, FindLocationComponent, SearchLocationComponent, PaginationComponent, FeatureToggleDirective, LetContext, LetDirective, COMMON_COMPONENTS, GOV_UI_COMPONENTS, ExuiCommonLibModule, GovUiService, checkboxesBeCheckedValidator, dateValidator, radioGroupValidator, HmctsSubNavigationComponent, BadgeColour, DateBadgeColour, SECONDS_IN_A_DAY, AnonymousFeatureUser, LoggedInFeatureUser, BookingCheckType, PersonRole, RoleCategory, RadioFilterFieldConfig, FeatureToggleGuard, FeatureToggleService, LaunchDarklyService, GoogleAnalyticsService, GoogleTagManagerService, ManageSessionServices, TimeoutNotificationsService, RoleMatching, RoleGuard, RoleService, CookieService, HasLoadingState, LoadingService, FilterService, windowProvider, windowToken, AccessibilityComponent as ɵx, CheckboxListComponent as ɵz, ContactDetailsComponent as ɵf, CookieBannerComponent as ɵbf, DueDateComponent as ɵy, ExuiPageWrapperComponent as ɵa, FindLocationComponent as ɵbl, FindPersonComponent as ɵbh, FindServiceComponent as ɵbo, GenericFilterComponent as ɵbd, HmctsSessionDialogComponent as ɵk, InviteUserFormComponent as ɵo, InviteUserPermissionComponent as ɵn, LoadingSpinnerComponent as ɵbc, PaginationComponent as ɵbr, SearchJudicialsComponent as ɵbk, SearchLocationComponent as ɵbm, SearchServiceComponent as ɵbp, SearchVenueComponent as ɵbq, SelectedCaseConfirmComponent as ɵv, SelectedCaseListComponent as ɵt, SelectedCaseComponent as ɵu, ServiceMessageComponent as ɵba, ServiceMessagesComponent as ɵbb, ShareCaseConfirmComponent as ɵs, ShareCaseComponent as ɵp, TabComponent as ɵw, TcConfirmComponent as ɵe, TcDisplayHtmlComponent as ɵc, TcDisplayPlainComponent as ɵd, TermsAndConditionsComponent as ɵb, UserDetailsComponent as ɵm, UserListComponent as ɵl, UserSelectComponent as ɵq, FeatureToggleDirective as ɵg, LetContext as ɵi, LetDirective as ɵj, GovUkCheckboxComponent as ɵcb, GovUkCheckboxesComponent as ɵch, GovUkDateComponent as ɵcg, GovUkErrorMessageComponent as ɵce, GovUkFieldsetComponent as ɵcf, GovUkFileUploadComponent as ɵcm, GovUkFormGroupWrapperComponent as ɵcc, GovUkInputComponent as ɵca, GovUkLabelComponent as ɵcd, GovUkRadioComponent as ɵci, GovUkRadiosComponent as ɵcj, GovUkSelectComponent as ɵck, GovukTableComponent as ɵbz, GovUkTextareaComponent as ɵcl, HmctsBannerComponent as ɵby, HmctsErrorSummaryComponent as ɵbw, HmctsIdentityBarComponent as ɵbs, HmctsMainWrapperComponent as ɵbx, HmctsPaginationComponent as ɵbt, HmctsPrimaryNavigationComponent as ɵbv, HmctsSubNavigationComponent as ɵbu, RemoveHostDirective as ɵcn, CaseSharingStateService as ɵr, CookieService as ɵbg, FeatureToggleService as ɵh, FilterService as ɵbe, FindAPersonService as ɵbi, LocationService as ɵbn, SessionStorageService as ɵbj };
8062
+ export { AccessibilityComponent, CheckboxListComponent, ContactDetailsComponent, DueDateComponent, GenericFilterComponent, HmctsSessionDialogComponent, InviteUserFormComponent, InviteUserPermissionComponent, LoadingSpinnerComponent, SelectedCaseConfirmComponent, SelectedCaseListComponent, SelectedCaseComponent, ServiceMessageComponent, ServiceMessagesComponent, ShareCaseConfirmComponent, ShareCaseComponent, TabComponent, TcConfirmComponent, TcDisplayHtmlComponent, TcDisplayPlainComponent, TermsAndConditionsComponent, UserDetailsComponent, UserListComponent, CookieBannerComponent, FindLocationComponent, SearchLocationComponent, PaginationComponent, FeatureToggleDirective, LetContext, LetDirective, COMMON_COMPONENTS, GOV_UI_COMPONENTS, ExuiCommonLibModule, GovUiService, checkboxesBeCheckedValidator, dateValidator, radioGroupValidator, HmctsSubNavigationComponent, SharedCaseErrorMessages, BadgeColour, DateBadgeColour, SECONDS_IN_A_DAY, AnonymousFeatureUser, LoggedInFeatureUser, BookingCheckType, PersonRole, RoleCategory, RadioFilterFieldConfig, FeatureToggleGuard, FeatureToggleService, LaunchDarklyService, GoogleAnalyticsService, GoogleTagManagerService, ManageSessionServices, TimeoutNotificationsService, RoleMatching, RoleGuard, RoleService, CookieService, HasLoadingState, LoadingService, FilterService, windowProvider, windowToken, AccessibilityComponent as ɵx, CheckboxListComponent as ɵz, ContactDetailsComponent as ɵf, CookieBannerComponent as ɵbf, DueDateComponent as ɵy, ExuiPageWrapperComponent as ɵa, FindLocationComponent as ɵbl, FindPersonComponent as ɵbh, FindServiceComponent as ɵbo, GenericFilterComponent as ɵbd, HmctsSessionDialogComponent as ɵk, InviteUserFormComponent as ɵo, InviteUserPermissionComponent as ɵn, LoadingSpinnerComponent as ɵbc, PaginationComponent as ɵbr, SearchJudicialsComponent as ɵbk, SearchLocationComponent as ɵbm, SearchServiceComponent as ɵbp, SearchVenueComponent as ɵbq, SelectedCaseConfirmComponent as ɵv, SelectedCaseListComponent as ɵt, SelectedCaseComponent as ɵu, ServiceMessageComponent as ɵba, ServiceMessagesComponent as ɵbb, ShareCaseConfirmComponent as ɵs, ShareCaseComponent as ɵp, TabComponent as ɵw, TcConfirmComponent as ɵe, TcDisplayHtmlComponent as ɵc, TcDisplayPlainComponent as ɵd, TermsAndConditionsComponent as ɵb, UserDetailsComponent as ɵm, UserListComponent as ɵl, UserSelectComponent as ɵq, FeatureToggleDirective as ɵg, LetContext as ɵi, LetDirective as ɵj, GovUkCheckboxComponent as ɵcb, GovUkCheckboxesComponent as ɵch, GovUkDateComponent as ɵcg, GovUkErrorMessageComponent as ɵce, GovUkFieldsetComponent as ɵcf, GovUkFileUploadComponent as ɵcm, GovUkFormGroupWrapperComponent as ɵcc, GovUkInputComponent as ɵca, GovUkLabelComponent as ɵcd, GovUkRadioComponent as ɵci, GovUkRadiosComponent as ɵcj, GovUkSelectComponent as ɵck, GovukTableComponent as ɵbz, GovUkTextareaComponent as ɵcl, HmctsBannerComponent as ɵby, HmctsErrorSummaryComponent as ɵbw, HmctsIdentityBarComponent as ɵbs, HmctsMainWrapperComponent as ɵbx, HmctsPaginationComponent as ɵbt, HmctsPrimaryNavigationComponent as ɵbv, HmctsSubNavigationComponent as ɵbu, RemoveHostDirective as ɵcn, CaseSharingStateService as ɵr, CookieService as ɵbg, FeatureToggleService as ɵh, FilterService as ɵbe, FindAPersonService as ɵbi, LocationService as ɵbn, SessionStorageService as ɵbj };
7899
8063
 
7900
8064
  //# sourceMappingURL=hmcts-rpx-xui-common-lib.js.map