@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
@@ -10,7 +10,7 @@ export { AccessibilityComponent, CheckboxListComponent, ContactDetailsComponent,
10
10
  export { FeatureToggleDirective, LetContext, LetDirective } from './lib/directives';
11
11
  export { COMMON_COMPONENTS, GOV_UI_COMPONENTS, ExuiCommonLibModule } from './lib/exui-common-lib.module';
12
12
  export { GovUiService, checkboxesBeCheckedValidator, dateValidator, radioGroupValidator, HmctsSubNavigationComponent } from './lib/gov-ui';
13
- export { BadgeColour, DateBadgeColour, SECONDS_IN_A_DAY, AnonymousFeatureUser, LoggedInFeatureUser, BookingCheckType, PersonRole, RoleCategory, RadioFilterFieldConfig } from './lib/models';
13
+ export { SharedCaseErrorMessages, BadgeColour, DateBadgeColour, SECONDS_IN_A_DAY, AnonymousFeatureUser, LoggedInFeatureUser, BookingCheckType, PersonRole, RoleCategory, RadioFilterFieldConfig } from './lib/models';
14
14
  export { FeatureToggleGuard, FeatureToggleService, LaunchDarklyService, GoogleAnalyticsService, GoogleTagManagerService, ManageSessionServices, TimeoutNotificationsService, RoleMatching, RoleGuard, RoleService, CookieService, HasLoadingState, LoadingService, FilterService } from './lib/services';
15
15
  export { windowProvider, windowToken } from './lib/window';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9ycHgteHVpLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsc3BCQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGlFQUFjLGtCQUFrQixDQUFDO0FBQ2pDLDBFQUFjLDhCQUE4QixDQUFDO0FBQzdDLDRIQUFjLGNBQWMsQ0FBQztBQUM3Qiw4S0FBYyxjQUFjLENBQUM7QUFDN0Isd1JBQWMsZ0JBQWdCLENBQUM7QUFDL0IsNENBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBleHVpLWNvbW1vbi1saWJcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXh1aS1jb21tb24tbGliLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nb3YtdWknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpbmRvdyc7XG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BobWN0cy9ycHgteHVpLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJwdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBSUEsc3BCQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGlFQUFjLGtCQUFrQixDQUFDO0FBQ2pDLDBFQUFjLDhCQUE4QixDQUFDO0FBQzdDLDRIQUFjLGNBQWMsQ0FBQztBQUM3Qix1TUFBYyxjQUFjLENBQUM7QUFDN0Isd1JBQWMsZ0JBQWdCLENBQUM7QUFDL0IsNENBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBleHVpLWNvbW1vbi1saWJcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZXh1aS1jb21tb24tbGliLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9nb3YtdWknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3dpbmRvdyc7XG4iXX0=
@@ -8,10 +8,10 @@ import { formatDate, DOCUMENT, CommonModule } from '@angular/common';
8
8
  import { Title } from '@angular/platform-browser';
9
9
  import { DocumentInterruptSource, Idle } from '@ng-idle/core';
10
10
  import { Keepalive } from '@ng-idle/keepalive';
11
- import { RouterModule, Router, NavigationEnd } from '@angular/router';
11
+ import { Router, RouterModule, NavigationEnd } from '@angular/router';
12
12
  import { Component, EventEmitter, Input, Output, ViewEncapsulation, Injectable, Directive, TemplateRef, ViewContainerRef, ElementRef, Inject, ViewChild, ChangeDetectorRef, InjectionToken, ChangeDetectionStrategy, defineInjectable, inject, NgModule } from '@angular/core';
13
13
  import { BehaviorSubject, of, zip, Subject, combineLatest } from 'rxjs';
14
- import { distinctUntilChanged, map, debounceTime, filter, mergeMap, tap, catchError, switchMap, delay } from 'rxjs/operators';
14
+ import { distinctUntilChanged, map, tap, debounceTime, filter, mergeMap, catchError, switchMap, delay } from 'rxjs/operators';
15
15
 
16
16
  /**
17
17
  * @fileoverview added by tsickle
@@ -1424,21 +1424,44 @@ class CaseSharingStateService {
1424
1424
  return newSharedCases;
1425
1425
  }
1426
1426
  /**
1427
- * @param {?} caseId
1428
1427
  * @param {?} user
1428
+ * @param {?=} caseId
1429
1429
  * @return {?}
1430
1430
  */
1431
- requestUnshare(caseId, user) {
1431
+ requestUnshare(user, caseId) {
1432
1432
  /** @type {?} */
1433
1433
  const newSharedCases = [];
1434
1434
  for (const sharedCase of this.caseState) {
1435
- if (sharedCase.caseId === caseId) {
1435
+ // If no caseId, then request unshare from all shared cases
1436
+ if (caseId === undefined || sharedCase.caseId === caseId) {
1436
1437
  if (!sharedCase.pendingUnshares) {
1437
1438
  sharedCase.pendingUnshares = [];
1438
1439
  }
1439
1440
  /** @type {?} */
1440
1441
  const newPendingUnshares = sharedCase.pendingUnshares.slice();
1441
- if (newPendingUnshares) {
1442
+ // If the user is pending shared access, just remove them from pendingShares
1443
+ /** @type {?} */
1444
+ let newPendingShares;
1445
+ /** @type {?} */
1446
+ let indexOfPreviouslyAddedUser = -1;
1447
+ if (sharedCase.pendingShares) {
1448
+ indexOfPreviouslyAddedUser = sharedCase.pendingShares.findIndex((/**
1449
+ * @param {?} u
1450
+ * @return {?}
1451
+ */
1452
+ u => u.idamId === user.idamId));
1453
+ if (indexOfPreviouslyAddedUser > -1) {
1454
+ newPendingShares = sharedCase.pendingShares.slice();
1455
+ newPendingShares.splice(indexOfPreviouslyAddedUser, 1);
1456
+ }
1457
+ }
1458
+ // If the user does not exist in pendingShares, and already has shared access (i.e. exists in sharedWith),
1459
+ // request removal of shared access
1460
+ if (indexOfPreviouslyAddedUser === -1 && sharedCase.sharedWith && sharedCase.sharedWith.findIndex((/**
1461
+ * @param {?} u
1462
+ * @return {?}
1463
+ */
1464
+ u => u.idamId === user.idamId)) > -1) {
1442
1465
  if (!newPendingUnshares.some((/**
1443
1466
  * @param {?} u
1444
1467
  * @return {?}
@@ -1447,11 +1470,10 @@ class CaseSharingStateService {
1447
1470
  newPendingUnshares.push(user);
1448
1471
  }
1449
1472
  }
1450
- else {
1451
- newPendingUnshares.push(user);
1452
- }
1453
1473
  /** @type {?} */
1454
- const newSharedCase = Object.assign({}, sharedCase, { pendingUnshares: newPendingUnshares });
1474
+ const newSharedCase = Object.assign({}, sharedCase, { pendingUnshares: newPendingUnshares }, (newPendingShares && {
1475
+ pendingShares: newPendingShares
1476
+ }));
1455
1477
  newSharedCases.push(newSharedCase);
1456
1478
  }
1457
1479
  else {
@@ -1459,7 +1481,7 @@ class CaseSharingStateService {
1459
1481
  }
1460
1482
  }
1461
1483
  this.subject.next(newSharedCases);
1462
- return;
1484
+ return newSharedCases;
1463
1485
  }
1464
1486
  /**
1465
1487
  * @param {?} caseId
@@ -1509,11 +1531,13 @@ class CaseSharingStateService {
1509
1531
  * @return {?}
1510
1532
  */
1511
1533
  removeCase(caseId) {
1512
- for (let i = 0, l = this.caseState.length; i < l; i++) {
1513
- if (this.caseState[i].caseId === caseId) {
1514
- this.caseState.splice(i, 1);
1515
- this.subject.next(this.caseState);
1516
- return;
1534
+ if (this.caseState.length > 1) {
1535
+ for (let i = 0, l = this.caseState.length; i < l; i++) {
1536
+ if (this.caseState[i].caseId === caseId) {
1537
+ this.caseState.splice(i, 1);
1538
+ this.subject.next(this.caseState);
1539
+ return;
1540
+ }
1517
1541
  }
1518
1542
  }
1519
1543
  }
@@ -1709,12 +1733,6 @@ class SelectedCaseComponent {
1709
1733
  this.combinedSortedShares = this.combineAndSortShares(sharedWith, pendingShares);
1710
1734
  }
1711
1735
  }
1712
- /**
1713
- * @return {?}
1714
- */
1715
- onUnselect() {
1716
- this.unselect.emit(this.sharedCase);
1717
- }
1718
1736
  /**
1719
1737
  * @param {?} c
1720
1738
  * @return {?}
@@ -1845,7 +1863,7 @@ class SelectedCaseComponent {
1845
1863
  * @return {?}
1846
1864
  */
1847
1865
  onRemove(user, sharedCase) {
1848
- this.stateService.requestUnshare(sharedCase.caseId, user);
1866
+ this.stateService.requestUnshare(user, sharedCase.caseId);
1849
1867
  this.synchronizeStore.emit(this.shareCases);
1850
1868
  }
1851
1869
  /**
@@ -1941,7 +1959,7 @@ class SelectedCaseComponent {
1941
1959
  SelectedCaseComponent.decorators = [
1942
1960
  { type: Component, args: [{
1943
1961
  selector: 'xuilib-selected-case',
1944
- 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",
1962
+ 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",
1945
1963
  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}"]
1946
1964
  }] }
1947
1965
  ];
@@ -2170,6 +2188,17 @@ ShareCaseConfirmComponent.propDecorators = {
2170
2188
  completeLink: [{ type: Input }]
2171
2189
  };
2172
2190
 
2191
+ /**
2192
+ * @fileoverview added by tsickle
2193
+ * Generated from: lib/models/case-share.model.ts
2194
+ * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2195
+ */
2196
+ /** @enum {string} */
2197
+ const SharedCaseErrorMessages = {
2198
+ OneCaseMustBeSelected: "At least one case must be selected",
2199
+ NoChangesRequested: "You have not requested any changes to case sharing",
2200
+ };
2201
+
2173
2202
  /**
2174
2203
  * @fileoverview added by tsickle
2175
2204
  * Generated from: lib/components/user-select/user-select.component.ts
@@ -2270,39 +2299,76 @@ UserSelectComponent.propDecorators = {
2270
2299
  class ShareCaseComponent {
2271
2300
  /**
2272
2301
  * @param {?} stateService
2302
+ * @param {?} router
2273
2303
  */
2274
- constructor(stateService) {
2304
+ constructor(stateService, router) {
2275
2305
  this.stateService = stateService;
2306
+ this.router = router;
2276
2307
  this.shareCases = []; // cases selected for sharing
2277
- // cases selected for sharing
2308
+ this.continueAllowed = false;
2309
+ this.selectedUserToRemove = null;
2278
2310
  this.removeUserFromCaseToggleOn = false;
2279
2311
  this.users = []; // users of this organisation the cases can be shared with
2280
2312
  // users of this organisation the cases can be shared with
2281
2313
  this.confirmLink = '';
2314
+ this.cancelLink = '';
2315
+ this.showRemoveUsers = false;
2316
+ this.fnTitle = '';
2317
+ this.title = '';
2282
2318
  this.unselect = new EventEmitter();
2283
2319
  this.synchronizeStore = new EventEmitter();
2320
+ this.validationErrors = [];
2284
2321
  }
2285
2322
  /**
2286
2323
  * @return {?}
2287
2324
  */
2288
2325
  ngOnInit() {
2289
- this.shareCases$.subscribe((/**
2326
+ this.shareCases$
2327
+ .pipe(tap((/**
2328
+ * @param {?} sharedCases
2329
+ * @return {?}
2330
+ */
2331
+ sharedCases => {
2332
+ // Update the list of users assigned to at least one case
2333
+ this.getAssignedUsers(sharedCases.filter((/**
2334
+ * @param {?} sharedCase
2335
+ * @return {?}
2336
+ */
2337
+ sharedCase => sharedCase.sharedWith && sharedCase.sharedWith.length > 0)));
2338
+ })))
2339
+ .subscribe((/**
2290
2340
  * @param {?} shareCases
2291
2341
  * @return {?}
2292
2342
  */
2293
2343
  shareCases => {
2294
2344
  this.shareCases = shareCases;
2295
2345
  this.stateService.setCases(shareCases);
2346
+ // Set the config to be used by the xuilib-gov-uk-error-message component, in particular the element ID to
2347
+ // which the error message is associated
2348
+ if (shareCases) {
2349
+ this.selectedCasesErrorMessageConfig = {
2350
+ id: shareCases.length > 0 ? 'cases' : 'noCaseDisplay'
2351
+ };
2352
+ }
2296
2353
  }));
2297
2354
  this.shareCases$ = this.stateService.state;
2355
+ this.shareCaseErrorMessage = { isInvalid: false, messages: [] };
2298
2356
  }
2299
2357
  /**
2300
2358
  * @param {?} c
2301
2359
  * @return {?}
2302
2360
  */
2303
2361
  onUnselect(c) {
2304
- this.unselect.emit(c);
2305
- this.stateService.removeCase(c.caseId);
2362
+ this.validationErrors = [];
2363
+ if (this.stateService.getCases().length === 1) {
2364
+ this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.OneCaseMustBeSelected });
2365
+ this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.OneCaseMustBeSelected] };
2366
+ window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
2367
+ }
2368
+ else {
2369
+ this.unselect.emit(c);
2370
+ this.stateService.removeCase(c.caseId);
2371
+ }
2306
2372
  }
2307
2373
  /**
2308
2374
  * @param {?} event
@@ -2329,6 +2395,18 @@ class ShareCaseComponent {
2329
2395
  this.userSelect.clear();
2330
2396
  }
2331
2397
  this.synchronizeStore.emit(newSharedCases);
2398
+ // Update the list of assigned users (which includes pending users)
2399
+ this.getAssignedUsers(newSharedCases);
2400
+ }
2401
+ /**
2402
+ * @return {?}
2403
+ */
2404
+ removeUser() {
2405
+ if (this.selectedUserToRemove) {
2406
+ /** @type {?} */
2407
+ const newSharedCases = this.stateService.requestUnshare(this.selectedUserToRemove);
2408
+ this.synchronizeStore.emit(newSharedCases);
2409
+ }
2332
2410
  }
2333
2411
  /**
2334
2412
  * @return {?}
@@ -2337,11 +2415,15 @@ class ShareCaseComponent {
2337
2415
  return this.selectedUser === null || this.shareCases.length === 0;
2338
2416
  }
2339
2417
  /**
2418
+ * Function originally used to set disabled state of "Continue" button, now called by the button click handler to
2419
+ * control whether navigation to the confirmation page is allowed. It is prevented if no changes have been made
2340
2420
  * @return {?}
2341
2421
  */
2342
- isDisabledContinue() {
2343
- /** @type {?} */
2344
- let isDisabled = true;
2422
+ setContinueAllowed() {
2423
+ // Always start with continueAllowed = false. This covers the scenario where a user might add someone for sharing
2424
+ // a case (so, continueAllowed = true), then removes the same user before trying to continue. This would
2425
+ // erroneously leave continueAllowed as true
2426
+ this.continueAllowed = false;
2345
2427
  this.shareCases$.subscribe((/**
2346
2428
  * @param {?} shareCases
2347
2429
  * @return {?}
@@ -2349,16 +2431,15 @@ class ShareCaseComponent {
2349
2431
  shareCases => {
2350
2432
  for (const caseState of shareCases) {
2351
2433
  if (caseState.pendingShares && caseState.pendingShares.length > 0) {
2352
- isDisabled = false;
2434
+ this.continueAllowed = true;
2353
2435
  break;
2354
2436
  }
2355
2437
  if (caseState.pendingUnshares && caseState.pendingUnshares.length > 0) {
2356
- isDisabled = false;
2438
+ this.continueAllowed = true;
2357
2439
  break;
2358
2440
  }
2359
2441
  }
2360
2442
  }));
2361
- return isDisabled;
2362
2443
  }
2363
2444
  /**
2364
2445
  * @param {?} sharedCase
@@ -2377,23 +2458,92 @@ class ShareCaseComponent {
2377
2458
  }
2378
2459
  this.stateService.setCases(this.shareCases);
2379
2460
  }
2461
+ /**
2462
+ * @return {?}
2463
+ */
2464
+ onContinue() {
2465
+ this.setContinueAllowed();
2466
+ // If continuation is not allowed, set an error message
2467
+ if (!this.continueAllowed) {
2468
+ this.validationErrors = [];
2469
+ this.validationErrors.push({ id: 'cases', message: SharedCaseErrorMessages.NoChangesRequested });
2470
+ this.shareCaseErrorMessage = { isInvalid: true, messages: [SharedCaseErrorMessages.NoChangesRequested] };
2471
+ window.scrollTo({ top: 0, left: 0, behavior: 'smooth' });
2472
+ }
2473
+ // Navigate to confirmation page only if allowed to continue
2474
+ if (this.continueAllowed) {
2475
+ this.router.navigate([this.confirmLink]);
2476
+ }
2477
+ }
2478
+ /**
2479
+ * Gets a unique list of all users that have been assigned, or are pending assigment to, at least one case
2480
+ * @param {?} sharedCases The list of shared cases from which to get users these are shared with, or are to be shared with
2481
+ * @return {?}
2482
+ */
2483
+ getAssignedUsers(sharedCases) {
2484
+ /** @type {?} */
2485
+ const users = [];
2486
+ sharedCases.forEach((/**
2487
+ * @param {?} sharedCase
2488
+ * @return {?}
2489
+ */
2490
+ sharedCase => {
2491
+ if (sharedCase.sharedWith) {
2492
+ sharedCase.sharedWith.forEach((/**
2493
+ * @param {?} user
2494
+ * @return {?}
2495
+ */
2496
+ user => {
2497
+ if (!users.some((/**
2498
+ * @param {?} existingUser
2499
+ * @return {?}
2500
+ */
2501
+ existingUser => user.idamId === existingUser.idamId))) {
2502
+ users.push(user);
2503
+ }
2504
+ }));
2505
+ }
2506
+ if (sharedCase.pendingShares) {
2507
+ sharedCase.pendingShares.forEach((/**
2508
+ * @param {?} user
2509
+ * @return {?}
2510
+ */
2511
+ user => {
2512
+ if (!users.some((/**
2513
+ * @param {?} existingUser
2514
+ * @return {?}
2515
+ */
2516
+ existingUser => user.idamId === existingUser.idamId))) {
2517
+ users.push(user);
2518
+ }
2519
+ }));
2520
+ }
2521
+ }));
2522
+ this.assignedUsers = users;
2523
+ }
2380
2524
  }
2381
2525
  ShareCaseComponent.decorators = [
2382
2526
  { type: Component, args: [{
2383
2527
  selector: 'xuilib-share-case',
2384
- 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",
2385
- styles: [""]
2528
+ 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",
2529
+ styles: ["select{width:100%}"]
2386
2530
  }] }
2387
2531
  ];
2388
2532
  /** @nocollapse */
2389
2533
  ShareCaseComponent.ctorParameters = () => [
2390
- { type: CaseSharingStateService }
2534
+ { type: CaseSharingStateService },
2535
+ { type: Router }
2391
2536
  ];
2392
2537
  ShareCaseComponent.propDecorators = {
2393
2538
  removeUserFromCaseToggleOn: [{ type: Input }],
2394
2539
  shareCases$: [{ type: Input }],
2395
2540
  users: [{ type: Input }],
2396
2541
  confirmLink: [{ type: Input }],
2542
+ cancelLink: [{ type: Input }],
2543
+ addUserLabel: [{ type: Input }],
2544
+ showRemoveUsers: [{ type: Input }],
2545
+ fnTitle: [{ type: Input }],
2546
+ title: [{ type: Input }],
2397
2547
  unselect: [{ type: Output }],
2398
2548
  synchronizeStore: [{ type: Output }],
2399
2549
  userSelect: [{ type: ViewChild, args: [UserSelectComponent,] }]
@@ -2836,12 +2986,6 @@ CookieBannerComponent.propDecorators = {
2836
2986
  acceptanceNotifier: [{ type: Output }]
2837
2987
  };
2838
2988
 
2839
- /**
2840
- * @fileoverview added by tsickle
2841
- * Generated from: lib/models/case-share.model.ts
2842
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
2843
- */
2844
-
2845
2989
  /**
2846
2990
  * @fileoverview added by tsickle
2847
2991
  * Generated from: lib/models/contact-details.model.ts
@@ -2898,6 +3042,7 @@ const PersonRole = {
2898
3042
  JUDICIAL: "Judicial",
2899
3043
  CASEWORKER: "Legal Ops",
2900
3044
  ADMIN: "Admin",
3045
+ CTSC: "CTSC User",
2901
3046
  ALL: "All",
2902
3047
  };
2903
3048
  /** @enum {string} */
@@ -2905,6 +3050,7 @@ const RoleCategory = {
2905
3050
  JUDICIAL: "JUDICIAL",
2906
3051
  CASEWORKER: "LEGAL_OPERATIONS",
2907
3052
  ADMIN: "ADMIN",
3053
+ CTSC: "CTSC",
2908
3054
  ALL: "ALL",
2909
3055
  };
2910
3056
 
@@ -4373,7 +4519,7 @@ class SearchServiceComponent {
4373
4519
  SearchServiceComponent.decorators = [
4374
4520
  { type: Component, args: [{
4375
4521
  selector: 'exui-search-service',
4376
- 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",
4522
+ 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",
4377
4523
  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}"]
4378
4524
  }] }
4379
4525
  ];
@@ -6435,6 +6581,6 @@ LoadingService.decorators = [
6435
6581
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
6436
6582
  */
6437
6583
 
6438
- 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 };
6584
+ 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 };
6439
6585
 
6440
6586
  //# sourceMappingURL=hmcts-rpx-xui-common-lib.js.map