@the-liberators/ngx-scrumteamsurvey-tools 2.2.86 → 2.2.89

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 (161) hide show
  1. package/esm2022/lib/actions/actions.module.mjs +4 -4
  2. package/esm2022/lib/actions/components/action-list/action-list.component.mjs +3 -3
  3. package/esm2022/lib/actions/components/action-manage/action-manage.component.mjs +11 -5
  4. package/esm2022/lib/actions/components/action-tile/action-tile.component.mjs +3 -3
  5. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.component.mjs +3 -3
  6. package/esm2022/lib/actions/dialogs/dialog-export-actions/dialog-export-actions.directive.mjs +3 -3
  7. package/esm2022/lib/actions/dialogs/dialog-filters/dialog-filters.component.mjs +6 -6
  8. package/esm2022/lib/actions/dialogs/dialog-manageaction/dialog-manageaction.component.mjs +9 -9
  9. package/esm2022/lib/actions/interfaces/IActionState.mjs +1 -1
  10. package/esm2022/lib/actions/pipes/interventionOwnerToString.pipe.mjs +3 -3
  11. package/esm2022/lib/actions/pipes/interventionStateToString.pipe.mjs +3 -3
  12. package/esm2022/lib/actions/pipes/interventionTypeToString.pipe.mjs +3 -3
  13. package/esm2022/lib/actions/services/actionClientConfig.mjs +3 -3
  14. package/esm2022/lib/actions/services/actionService.mjs +3 -3
  15. package/esm2022/lib/add-calendar/ng-add-to-calendar.module.mjs +4 -4
  16. package/esm2022/lib/add-calendar/service/ng-add-to-calendar.service.mjs +3 -3
  17. package/esm2022/lib/alerts/alerts.module.mjs +4 -4
  18. package/esm2022/lib/alerts/components/alerts-list/alerts.component.mjs +3 -3
  19. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.component.mjs +3 -3
  20. package/esm2022/lib/alerts/components/dialog-alerts/dialog-alerts.directive.mjs +3 -3
  21. package/esm2022/lib/alerts/services/alertClientConfig.mjs +3 -3
  22. package/esm2022/lib/alerts/services/alerts.service.mjs +3 -3
  23. package/esm2022/lib/apiUrlToken.mjs +3 -3
  24. package/esm2022/lib/branding/brandBackground.directive.mjs +3 -3
  25. package/esm2022/lib/branding/brandConditionalBackgroundColor.directive.mjs +3 -3
  26. package/esm2022/lib/branding/brandConditionalColor.directive.mjs +3 -3
  27. package/esm2022/lib/branding/brandHoverColor.directive.mjs +3 -3
  28. package/esm2022/lib/branding/branding.module.mjs +4 -4
  29. package/esm2022/lib/branding/brandingProvider.service.mjs +3 -3
  30. package/esm2022/lib/branding/components/site-default-footer/site-default-footer.component.mjs +3 -3
  31. package/esm2022/lib/branding/components/site-default-header/site-default-header.component.mjs +3 -3
  32. package/esm2022/lib/branding/components/site-micro-footer/site-micro-footer.component.mjs +3 -3
  33. package/esm2022/lib/community/community.module.mjs +4 -4
  34. package/esm2022/lib/community/components/gethelp-form/gethelp-form.component.mjs +3 -3
  35. package/esm2022/lib/community/components/meetups/meetups.component.mjs +3 -3
  36. package/esm2022/lib/community/components/recentcontent/recentcontent.component.mjs +3 -3
  37. package/esm2022/lib/community/services/communityClientConfig.mjs +3 -3
  38. package/esm2022/lib/componentBase.mjs +3 -3
  39. package/esm2022/lib/componentWithViewStateBase.mjs +3 -3
  40. package/esm2022/lib/components/checkbox/checkbox.component.mjs +3 -3
  41. package/esm2022/lib/components/checkbox/checkbox.module.mjs +4 -4
  42. package/esm2022/lib/components/expand/expand.component.mjs +3 -3
  43. package/esm2022/lib/components/expand/expand.module.mjs +4 -4
  44. package/esm2022/lib/components/loading/loading.component.mjs +3 -3
  45. package/esm2022/lib/components/loading/loading.module.mjs +4 -4
  46. package/esm2022/lib/components/mat-tags/mat-tags.component.mjs +3 -3
  47. package/esm2022/lib/components/mat-tags/mat-tags.module.mjs +4 -4
  48. package/esm2022/lib/components/paginator/paginator.component.mjs +3 -3
  49. package/esm2022/lib/components/paginator/paginator.module.mjs +4 -4
  50. package/esm2022/lib/components/scale-selector/scale-selector.component.mjs +3 -3
  51. package/esm2022/lib/components/scale-selector/scale-selector.module.mjs +4 -4
  52. package/esm2022/lib/dialogs/dialog-account/account.service.mjs +3 -3
  53. package/esm2022/lib/dialogs/dialog-account/dialog-account.component.mjs +6 -6
  54. package/esm2022/lib/dialogs/dialog-account/dialog-account.module.mjs +4 -4
  55. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.component.mjs +6 -6
  56. package/esm2022/lib/dialogs/dialog-factorinformation/dialog-factorinformation.module.mjs +4 -4
  57. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.component.mjs +6 -6
  58. package/esm2022/lib/dialogs/dialog-resourcedownload/dialog-resourcedownload.module.mjs +4 -4
  59. package/esm2022/lib/dialogs/dialog-resourcedownload/resourceDownload.service.mjs +3 -3
  60. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.component.mjs +3 -3
  61. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.directive.mjs +3 -3
  62. package/esm2022/lib/dialogs/dialog-subscribe/dialog-subscribe.module.mjs +4 -4
  63. package/esm2022/lib/dialogs/dialog-support/contactService.service.mjs +3 -3
  64. package/esm2022/lib/dialogs/dialog-support/dialog-support.component.mjs +3 -3
  65. package/esm2022/lib/dialogs/dialog-support/dialog-support.directive.mjs +15 -15
  66. package/esm2022/lib/dialogs/dialog-support/dialog-support.module.mjs +4 -4
  67. package/esm2022/lib/directives/backbutton/backbutton.directive.mjs +3 -3
  68. package/esm2022/lib/directives/backbutton/backbutton.module.mjs +4 -4
  69. package/esm2022/lib/directives/guards/guards.module.mjs +4 -4
  70. package/esm2022/lib/directives/guards/validChangeTokenGuard.mjs +3 -3
  71. package/esm2022/lib/directives/guards/validKeyGuard.mjs +3 -3
  72. package/esm2022/lib/directives/guards/validSnapshotKeyGuard.mjs +3 -3
  73. package/esm2022/lib/directives/guards/validTeamKeyGuard.mjs +3 -3
  74. package/esm2022/lib/errorhandling/errorHandler.mjs +3 -3
  75. package/esm2022/lib/errorhandling/errorService.module.mjs +4 -4
  76. package/esm2022/lib/errorhandling/errorServiceConfig.mjs +3 -3
  77. package/esm2022/lib/guides/components/imageslider/imageslider.component.mjs +3 -3
  78. package/esm2022/lib/guides/components/resumeguidehover/resumeguidehover.component.mjs +3 -3
  79. package/esm2022/lib/guides/dialogs/dialog-guide/dialog-guide.component.mjs +6 -6
  80. package/esm2022/lib/guides/dialogs/dialog-guides/dialog-guides.component.mjs +6 -6
  81. package/esm2022/lib/guides/directives/startguide/startguide.directive.mjs +3 -3
  82. package/esm2022/lib/guides/guides.module.mjs +4 -4
  83. package/esm2022/lib/guides/services/guidePopup.service.mjs +3 -3
  84. package/esm2022/lib/guides/services/guideStateInBackEnd.service.mjs +3 -3
  85. package/esm2022/lib/guides/services/guideStateInBrowser.service.mjs +3 -3
  86. package/esm2022/lib/guides/services/guidesClientConfig.mjs +3 -3
  87. package/esm2022/lib/pipes/callback/callback.module.mjs +4 -4
  88. package/esm2022/lib/pipes/callback/callback.pipe.mjs +3 -3
  89. package/esm2022/lib/pipes/dateRange/ngx-dateRange.module.mjs +4 -4
  90. package/esm2022/lib/pipes/dateRange/ngx-dateRange.pipe.mjs +3 -3
  91. package/esm2022/lib/pipes/segmentName/segmentName.module.mjs +4 -4
  92. package/esm2022/lib/pipes/segmentName/segmentName.pipe.mjs +3 -3
  93. package/esm2022/lib/pipes/slugify/ngx-slugify.module.mjs +4 -4
  94. package/esm2022/lib/pipes/slugify/ngx-slugify.pipe.mjs +3 -3
  95. package/esm2022/lib/results/components/age-indicator/age-indicator.component.mjs +3 -3
  96. package/esm2022/lib/results/components/arrow/arrow.component.mjs +3 -3
  97. package/esm2022/lib/results/components/badge/badge.component.mjs +3 -3
  98. package/esm2022/lib/results/components/badge-progression/badge-progression.component.mjs +3 -3
  99. package/esm2022/lib/results/components/badge-streak/badge-streak.component.mjs +3 -3
  100. package/esm2022/lib/results/components/badges/badges.component.mjs +3 -3
  101. package/esm2022/lib/results/components/benchmark-indicator/benchmark-indicator.component.mjs +3 -3
  102. package/esm2022/lib/results/components/coachingcenter-teaser/coachingcenter-teaser.component.mjs +3 -3
  103. package/esm2022/lib/results/components/delta-arrow/delta-arrow.component.mjs +3 -3
  104. package/esm2022/lib/results/components/doityourself/doityourself.component.mjs +3 -3
  105. package/esm2022/lib/results/components/doityourselfworkshops/doityourselfworkshops.component.mjs +3 -3
  106. package/esm2022/lib/results/components/factor-axis/factor-axis.component.mjs +3 -3
  107. package/esm2022/lib/results/components/factors/factors.component.mjs +3 -3
  108. package/esm2022/lib/results/components/filter-tags/filter-tags.component.mjs +3 -3
  109. package/esm2022/lib/results/components/focusareas/focusareas.component.mjs +3 -3
  110. package/esm2022/lib/results/components/footer/footer.component.mjs +3 -3
  111. package/esm2022/lib/results/components/impact-indicator/impact-indicator.component.mjs +3 -3
  112. package/esm2022/lib/results/components/liberatorkits/liberatorkits.component.mjs +3 -3
  113. package/esm2022/lib/results/components/limitationsapply/limitationsapply.component.mjs +3 -3
  114. package/esm2022/lib/results/components/model/model.component.mjs +3 -3
  115. package/esm2022/lib/results/components/model-factor/model-factor.component.mjs +3 -3
  116. package/esm2022/lib/results/components/model-factor-breakdown/model-factor-breakdown.component.mjs +3 -3
  117. package/esm2022/lib/results/components/model-switcher/model-switcher.component.mjs +3 -3
  118. package/esm2022/lib/results/components/nav-button/nav-button.component.mjs +3 -3
  119. package/esm2022/lib/results/components/participants/participants.component.mjs +3 -3
  120. package/esm2022/lib/results/components/quicktips/quicktips.component.mjs +3 -3
  121. package/esm2022/lib/results/components/recommendation/recommendation.component.mjs +3 -3
  122. package/esm2022/lib/results/components/recommendations/recommendations.component.mjs +3 -3
  123. package/esm2022/lib/results/components/research/research.component.mjs +3 -3
  124. package/esm2022/lib/results/components/roadmap/roadmap.component.mjs +3 -3
  125. package/esm2022/lib/results/components/teamdashboard-teaser/teamdashboard-teaser.component.mjs +3 -3
  126. package/esm2022/lib/results/components/teameffectiveness/teameffectiveness.component.mjs +3 -3
  127. package/esm2022/lib/results/components/termsupdated/termsupdated.component.mjs +3 -3
  128. package/esm2022/lib/results/components/tip-badge/tip-badge.component.mjs +3 -3
  129. package/esm2022/lib/results/components/trends/trends.component.mjs +3 -3
  130. package/esm2022/lib/results/components/update-in-progress/update-in-progress.component.mjs +3 -3
  131. package/esm2022/lib/results/components/userprofile/userprofile.component.mjs +3 -3
  132. package/esm2022/lib/results/components/video/video.component.mjs +3 -3
  133. package/esm2022/lib/results/components/widget-factorscore/widget-factorscore.component.mjs +3 -3
  134. package/esm2022/lib/results/components/widget-participationrate/widget-participationrate.component.mjs +3 -3
  135. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.component.mjs +3 -3
  136. package/esm2022/lib/results/dialogs/dialog-export-factorscores/dialog-export-factorscores.directive.mjs +3 -3
  137. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.component.mjs +3 -3
  138. package/esm2022/lib/results/dialogs/dialog-export-teamlist/dialog-export-teamlist.directive.mjs +3 -3
  139. package/esm2022/lib/results/dialogs/dialog-modelfilter/dialog-modelfilter.component.mjs +6 -6
  140. package/esm2022/lib/results/dialogs/dialog-notes/dialog-notes.component.mjs +6 -6
  141. package/esm2022/lib/results/dialogs/dialog-settings/dialog-settings.component.mjs +6 -6
  142. package/esm2022/lib/results/results.module.mjs +4 -4
  143. package/esm2022/lib/results/services/account.service.mjs +3 -3
  144. package/esm2022/lib/results/services/dimissPopupService.mjs +3 -3
  145. package/esm2022/lib/results/services/exportService.mjs +3 -3
  146. package/esm2022/lib/results/services/factorService.mjs +3 -3
  147. package/esm2022/lib/results/services/resultsClientConfig.mjs +3 -3
  148. package/esm2022/lib/results/services/terms.service.mjs +3 -3
  149. package/esm2022/lib/results/services/trend.service.mjs +3 -3
  150. package/esm2022/lib/results/services/userProfile.service.mjs +3 -3
  151. package/esm2022/lib/viewModel/reloadStrategies/noReloadStrategy.mjs +3 -3
  152. package/esm2022/lib/viewModel/reloadStrategies/reloadOnPushStrategy.mjs +3 -3
  153. package/esm2022/lib/viewModel/services/sessionIdInterceptor.service.mjs +3 -3
  154. package/esm2022/lib/viewModel/services/sessionIdProvider.service.mjs +3 -3
  155. package/esm2022/lib/viewModel/userSettings.service.mjs +3 -3
  156. package/esm2022/lib/viewModel/viewModelState.module.mjs +4 -4
  157. package/esm2022/lib/viewModel/viewModelStateConfig.mjs +3 -3
  158. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs +546 -540
  159. package/fesm2022/the-liberators-ngx-scrumteamsurvey-tools.mjs.map +1 -1
  160. package/lib/actions/interfaces/IActionState.d.ts +2 -0
  161. package/package.json +1 -1
@@ -23,8 +23,8 @@ import { InterventionStateToStringPipe } from './pipes/interventionStateToString
23
23
  import { InterventionTypeToStringPipe } from './pipes/interventionTypeToString.pipe';
24
24
  import * as i0 from "@angular/core";
25
25
  export class ActionsModule {
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.4", ngImport: i0, type: ActionsModule, declarations: [ActionListComponent,
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
27
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ActionsModule, declarations: [ActionListComponent,
28
28
  ActionManageComponent,
29
29
  ActionTileComponent,
30
30
  DialogActionManageComponent,
@@ -61,7 +61,7 @@ export class ActionsModule {
61
61
  OpenEditActionDialogDirective,
62
62
  OpenActionFiltersDialogDirective,
63
63
  OpenExportActionsDialogDirective] }); }
64
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionsModule, imports: [MatDialogModule,
64
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionsModule, imports: [MatDialogModule,
65
65
  MatTooltipModule,
66
66
  MatNativeDateModule,
67
67
  MatMenuModule,
@@ -75,7 +75,7 @@ export class ActionsModule {
75
75
  MatInputModule,
76
76
  MatDatepickerModule] }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionsModule, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionsModule, decorators: [{
79
79
  type: NgModule,
80
80
  args: [{
81
81
  imports: [
@@ -95,10 +95,10 @@ export class ActionListComponent extends ComponentWithViewStateBase {
95
95
  inline: "nearest"
96
96
  });
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionListComponent, deps: [{ token: i1.MatSnackBar }, { token: VIEWSTATE_USERSETTINGS_STRATEGY }, { token: i2.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: ActionListComponent, selector: "action-list", inputs: { prefill: "prefill", overrideFilter: "overrideFilter" }, viewQueries: [{ propertyName: "actionManageComponent", first: true, predicate: ActionManageComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"primarycolumn\">\n <h2>Actions</h2>\n <div class=\"listtoolbar\" id=\"actionstoolbar\">\n <div class=\"listtoolbar-item settings\">\n <div class=\"button borderless filters\" id=\"actions-filters\" actionFiltersDialog><span class=\"ph-faders-horizontal-bold icon\"></span> Filters <span class=\"filtercount\" *ngIf=\"filterCount > 0\">{{filterCount}}</span></div>\n <div class=\"button borderless sort\" id=\"actions-sort\" [matMenuTriggerFor]=\"matSortingMenu\"><span class=\"ph-funnel-simple-bold icon\"></span> {{userSettings.settings.user.interventionFilter.sort || \"Sort\"}}</div>\n <mat-menu #matSortingMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let sortOption of sortOptionsList\" (click)=\"setSort(sortOption.key)\">\n {{sortOption.label}}\n </button>\n </mat-menu>\n <div class=\"button borderless\" id=\"export-actions\" exportActionsDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n\n <mat-form-field class=\"listtoolbar-item findbykeyword\" appearance=\"fill\">\n <mat-label>search</mat-label>\n <input matInput name=\"keyword\" id=\"actions-filter-keyword\" type=\"text\" maxlength=\"50\" [formControl]=\"keywordControl\" />\n </mat-form-field>\n \n <div class=\"listtoolbar-item quickactions\">\n <!--<div class=\"viewmodes\">\n <div class=\"viewmode active\"><span class=\"ph-grid-four icon\"></span></div>\n <div class=\"viewmode\"><span class=\"ph-list icon\"></span></div>\n </div>-->\n <a class=\"button primary newaction\" id=\"action-addnew\" addActionDialog [prefill]=\"prefill\"><span class=\"icon ph-plus\"></span> New action</a>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"!actions.items\">\n <div class=\"loading-icon dark\"></div>\n </div>\n\n <div class=\"wirebox calltoaction\" *ngIf=\"actions.items && actions.items.length == 0\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>How will you improve?</h2>\n <p>Identifying the areas where you want to improve is only the first step. How do you and your team(s) aim to improve? Add the actions you intend to take and where you expect improvements when successful.</p>\n </div>\n </div>\n </div>\n\n <div class=\"actions\" *ngIf=\"actions && actions.items\">\n <action-tile *ngFor=\"let action of actions.items\" [action]=\"action\" [multipleTeams]=\"multipleTeams\" [actionManageComponent]=\"actionManageComponent\"></action-tile>\n </div>\n\n <paginator [items]=\"actions\" (page)=\"setPaging($event)\" *ngIf=\"actions && actions.items && actions.totalItems > 0\"></paginator>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.primarycolumn .introduction{font-size:19px;line-height:140%;margin-bottom:30px}.primarycolumn .actions{margin-top:30px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:50px;grid-auto-rows:1fr}@media only screen and (max-width: 1536px){.primarycolumn .actions{grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width: 992px){.primarycolumn .actions{grid-template-columns:repeat(1,1fr)}}.primarycolumn .calltoaction{margin-top:30px}.addintervention h3,.filter h3{margin-top:30px;margin-bottom:30px}\n"], dependencies: [{ kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.PaginatorComponent, selector: "paginator", inputs: ["items"], outputs: ["page"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.ActionTileComponent, selector: "action-tile", inputs: ["action", "multipleTeams", "actionManageComponent"] }, { kind: "directive", type: i11.OpenAddActionDialogDirective, selector: "[addActionDialog]", inputs: ["prefill"] }, { kind: "directive", type: i12.OpenActionFiltersDialogDirective, selector: "[actionFiltersDialog]" }, { kind: "directive", type: i13.OpenExportActionsDialogDirective, selector: "[exportActionsDialog]" }] }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionListComponent, deps: [{ token: i1.MatSnackBar }, { token: VIEWSTATE_USERSETTINGS_STRATEGY }, { token: i2.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: ActionListComponent, selector: "action-list", inputs: { prefill: "prefill", overrideFilter: "overrideFilter" }, viewQueries: [{ propertyName: "actionManageComponent", first: true, predicate: ActionManageComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"primarycolumn\">\n <h2>Actions</h2>\n <div class=\"listtoolbar\" id=\"actionstoolbar\">\n <div class=\"listtoolbar-item settings\">\n <div class=\"button borderless filters\" id=\"actions-filters\" actionFiltersDialog><span class=\"ph-faders-horizontal-bold icon\"></span> Filters <span class=\"filtercount\" *ngIf=\"filterCount > 0\">{{filterCount}}</span></div>\n <div class=\"button borderless sort\" id=\"actions-sort\" [matMenuTriggerFor]=\"matSortingMenu\"><span class=\"ph-funnel-simple-bold icon\"></span> {{userSettings.settings.user.interventionFilter.sort || \"Sort\"}}</div>\n <mat-menu #matSortingMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let sortOption of sortOptionsList\" (click)=\"setSort(sortOption.key)\">\n {{sortOption.label}}\n </button>\n </mat-menu>\n <div class=\"button borderless\" id=\"export-actions\" exportActionsDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n\n <mat-form-field class=\"listtoolbar-item findbykeyword\" appearance=\"fill\">\n <mat-label>search</mat-label>\n <input matInput name=\"keyword\" id=\"actions-filter-keyword\" type=\"text\" maxlength=\"50\" [formControl]=\"keywordControl\" />\n </mat-form-field>\n \n <div class=\"listtoolbar-item quickactions\">\n <!--<div class=\"viewmodes\">\n <div class=\"viewmode active\"><span class=\"ph-grid-four icon\"></span></div>\n <div class=\"viewmode\"><span class=\"ph-list icon\"></span></div>\n </div>-->\n <a class=\"button primary newaction\" id=\"action-addnew\" addActionDialog [prefill]=\"prefill\"><span class=\"icon ph-plus\"></span> New action</a>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"!actions.items\">\n <div class=\"loading-icon dark\"></div>\n </div>\n\n <div class=\"wirebox calltoaction\" *ngIf=\"actions.items && actions.items.length == 0\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>How will you improve?</h2>\n <p>Identifying the areas where you want to improve is only the first step. How do you and your team(s) aim to improve? Add the actions you intend to take and where you expect improvements when successful.</p>\n </div>\n </div>\n </div>\n\n <div class=\"actions\" *ngIf=\"actions && actions.items\">\n <action-tile *ngFor=\"let action of actions.items\" [action]=\"action\" [multipleTeams]=\"multipleTeams\" [actionManageComponent]=\"actionManageComponent\"></action-tile>\n </div>\n\n <paginator [items]=\"actions\" (page)=\"setPaging($event)\" *ngIf=\"actions && actions.items && actions.totalItems > 0\"></paginator>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.primarycolumn .introduction{font-size:19px;line-height:140%;margin-bottom:30px}.primarycolumn .actions{margin-top:30px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:50px;grid-auto-rows:1fr}@media only screen and (max-width: 1536px){.primarycolumn .actions{grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width: 992px){.primarycolumn .actions{grid-template-columns:repeat(1,1fr)}}.primarycolumn .calltoaction{margin-top:30px}.addintervention h3,.filter h3{margin-top:30px;margin-bottom:30px}\n"], dependencies: [{ kind: "component", type: i4.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.PaginatorComponent, selector: "paginator", inputs: ["items"], outputs: ["page"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.ActionTileComponent, selector: "action-tile", inputs: ["action", "multipleTeams", "actionManageComponent"] }, { kind: "directive", type: i11.OpenAddActionDialogDirective, selector: "[addActionDialog]", inputs: ["prefill"] }, { kind: "directive", type: i12.OpenActionFiltersDialogDirective, selector: "[actionFiltersDialog]" }, { kind: "directive", type: i13.OpenExportActionsDialogDirective, selector: "[exportActionsDialog]" }] }); }
100
100
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionListComponent, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionListComponent, decorators: [{
102
102
  type: Component,
103
103
  args: [{ selector: 'action-list', template: "<div class=\"primarycolumn\">\n <h2>Actions</h2>\n <div class=\"listtoolbar\" id=\"actionstoolbar\">\n <div class=\"listtoolbar-item settings\">\n <div class=\"button borderless filters\" id=\"actions-filters\" actionFiltersDialog><span class=\"ph-faders-horizontal-bold icon\"></span> Filters <span class=\"filtercount\" *ngIf=\"filterCount > 0\">{{filterCount}}</span></div>\n <div class=\"button borderless sort\" id=\"actions-sort\" [matMenuTriggerFor]=\"matSortingMenu\"><span class=\"ph-funnel-simple-bold icon\"></span> {{userSettings.settings.user.interventionFilter.sort || \"Sort\"}}</div>\n <mat-menu #matSortingMenu=\"matMenu\">\n <button mat-menu-item *ngFor=\"let sortOption of sortOptionsList\" (click)=\"setSort(sortOption.key)\">\n {{sortOption.label}}\n </button>\n </mat-menu>\n <div class=\"button borderless\" id=\"export-actions\" exportActionsDialog *ngIf=\"isLoggedIn\"><span class=\"ph-download-simple icon\"></span> Export</div>\n </div>\n\n <mat-form-field class=\"listtoolbar-item findbykeyword\" appearance=\"fill\">\n <mat-label>search</mat-label>\n <input matInput name=\"keyword\" id=\"actions-filter-keyword\" type=\"text\" maxlength=\"50\" [formControl]=\"keywordControl\" />\n </mat-form-field>\n \n <div class=\"listtoolbar-item quickactions\">\n <!--<div class=\"viewmodes\">\n <div class=\"viewmode active\"><span class=\"ph-grid-four icon\"></span></div>\n <div class=\"viewmode\"><span class=\"ph-list icon\"></span></div>\n </div>-->\n <a class=\"button primary newaction\" id=\"action-addnew\" addActionDialog [prefill]=\"prefill\"><span class=\"icon ph-plus\"></span> New action</a>\n </div>\n </div>\n\n <div class=\"loading\" *ngIf=\"!actions.items\">\n <div class=\"loading-icon dark\"></div>\n </div>\n\n <div class=\"wirebox calltoaction\" *ngIf=\"actions.items && actions.items.length == 0\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>How will you improve?</h2>\n <p>Identifying the areas where you want to improve is only the first step. How do you and your team(s) aim to improve? Add the actions you intend to take and where you expect improvements when successful.</p>\n </div>\n </div>\n </div>\n\n <div class=\"actions\" *ngIf=\"actions && actions.items\">\n <action-tile *ngFor=\"let action of actions.items\" [action]=\"action\" [multipleTeams]=\"multipleTeams\" [actionManageComponent]=\"actionManageComponent\"></action-tile>\n </div>\n\n <paginator [items]=\"actions\" (page)=\"setPaging($event)\" *ngIf=\"actions && actions.items && actions.totalItems > 0\"></paginator>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.primarycolumn .introduction{font-size:19px;line-height:140%;margin-bottom:30px}.primarycolumn .actions{margin-top:30px;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:50px;grid-auto-rows:1fr}@media only screen and (max-width: 1536px){.primarycolumn .actions{grid-template-columns:repeat(2,1fr)}}@media only screen and (max-width: 992px){.primarycolumn .actions{grid-template-columns:repeat(1,1fr)}}.primarycolumn .calltoaction{margin-top:30px}.addintervention h3,.filter h3{margin-top:30px;margin-bottom:30px}\n"] }]
104
104
  }], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: undefined, decorators: [{
@@ -26,6 +26,7 @@ export class ActionManageComponent extends ComponentBase {
26
26
  this.actionService = actionService;
27
27
  this.viewModelState = viewModelState;
28
28
  this.snackBar = snackBar;
29
+ this.teams = [];
29
30
  this.showTeamSelector = true;
30
31
  }
31
32
  ngOnInit() {
@@ -37,7 +38,12 @@ export class ActionManageComponent extends ComponentBase {
37
38
  if (success.loaded) {
38
39
  this.factors = this.getFactors(success.factorScores.modelStructure);
39
40
  this.expectedEffectOnList = success.factorScores.factorScores.map(p => new ActionOptionDto(p.key, p.name));
40
- this.teams = success.factorScores.composition.points.points.map(p => new ActionOptionDto(p.publicKey, p.name));
41
+ if (success.teamMetaData != null) {
42
+ this.teams.push(new ActionOptionDto(success.teamMetaData.teamKey, success.teamMetaData.name));
43
+ }
44
+ else {
45
+ this.teams = success.factorScores.composition.points.points.map(p => new ActionOptionDto(p.publicKey, p.name));
46
+ }
41
47
  if (this.teams.length == 1) {
42
48
  this.prefill.teamKey = this.teams[0].key;
43
49
  }
@@ -141,10 +147,10 @@ export class ActionManageComponent extends ComponentBase {
141
147
  this.viewStateSubscription.unsubscribe();
142
148
  }
143
149
  }
144
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionManageComponent, deps: [{ token: i1.MatDialog }, { token: i2.FormBuilder }, { token: i3.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: ActionManageComponent, selector: "action-manage", inputs: { prefill: "prefill", action: "action" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\" class=\"manage-action-form\">\n <mat-form-field appearance=\"fill\" *ngIf=\"showTeamSelector\">\n <mat-label>Which team owns this action?</mat-label>\n <mat-select formControlName=\"teamKey\" id=\"teamKey\">\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Enter short description</mat-label>\n <textarea matInput formControlName=\"description\" id=\"description\" rows=\"3\" maxlength=\"500\"></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.expectedImpactOn || prefill.expectedImpactOn.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Where do you expect improvement?</mat-label>\n <mat-select multiple formControlName=\"expectedImpactOn\" id=\"expectedImpactOn\">\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.owner\" subscriptSizing=\"dynamic\">\n <mat-label>Who owns this action?</mat-label>\n <mat-select formControlName=\"owner\" id=\"owner\">\n <mat-option class=\"select-option\" *ngFor=\"let owner of ownerList\" [value]=\"owner.key\">{{owner.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.type\" subscriptSizing=\"dynamic\">\n <mat-label>What is the type of action?</mat-label>\n <mat-select formControlName=\"type\" id=\"type\">\n <mat-option class=\"select-option\" *ngFor=\"let interventionType of interventionTypeList\" [value]=\"interventionType.key\">{{interventionType.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.state || action\" subscriptSizing=\"dynamic\">\n <mat-label>What is the state of this action?</mat-label>\n <mat-select formControlName=\"state\" id=\"state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.url || prefill.url.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Url for additional details (e.g. JIRA or Trello)</mat-label>\n <input matInput formControlName=\"url\" id=\"url\" rows=\"1\" maxlength=\"500\">\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>When should it be done?</mat-label>\n <input matInput [matDatepicker]=\"picker\" formControlName=\"due\" id=\"due\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <div class=\"toolbar leftright\">\n <div>\n <a class=\"button borderless delete\" href=\"javascript:void(null);\" (click)=\"delete()\" id=\"delete\" *ngIf=\"action\"><span class=\"icon ph-trash\"></span> delete</a>\n <a class=\"button borderless cancel\" href=\"javascript:void(null);\" (click)=\"cancel()\" id=\"cancel\" *ngIf=\"form.dirty || action\"><span class=\"icon ph-x-circle\"></span> cancel</a>\n </div>\n <input class=\"button primary\" type=\"submit\" id=\"submit\" value=\"save\" />\n </div>\n</form>\n", styles: ["form{margin-top:20px;position:sticky;top:20px}form .mat-form-field{width:100%;margin-bottom:10px}form .toolbar .button.cancel{padding-left:0;margin-left:0}@media only screen and (min-width: 992px){form .toolbar .delete{padding-left:0;margin-left:0}}.mat-mdc-option.lower{margin-left:20px}\n"], dependencies: [{ kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionManageComponent, deps: [{ token: i1.MatDialog }, { token: i2.FormBuilder }, { token: i3.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i4.MatSnackBar }], target: i0.ɵɵFactoryTarget.Component }); }
151
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: ActionManageComponent, selector: "action-manage", inputs: { prefill: "prefill", action: "action" }, usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\" class=\"manage-action-form\">\n <mat-form-field appearance=\"fill\" *ngIf=\"showTeamSelector\">\n <mat-label>Which team owns this action?</mat-label>\n <mat-select formControlName=\"teamKey\" id=\"teamKey\">\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Enter short description</mat-label>\n <textarea matInput formControlName=\"description\" id=\"description\" rows=\"3\" maxlength=\"500\"></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.expectedImpactOn || prefill.expectedImpactOn.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Where do you expect improvement?</mat-label>\n <mat-select multiple formControlName=\"expectedImpactOn\" id=\"expectedImpactOn\">\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.owner\" subscriptSizing=\"dynamic\">\n <mat-label>Who owns this action?</mat-label>\n <mat-select formControlName=\"owner\" id=\"owner\">\n <mat-option class=\"select-option\" *ngFor=\"let owner of ownerList\" [value]=\"owner.key\">{{owner.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.type\" subscriptSizing=\"dynamic\">\n <mat-label>What is the type of action?</mat-label>\n <mat-select formControlName=\"type\" id=\"type\">\n <mat-option class=\"select-option\" *ngFor=\"let interventionType of interventionTypeList\" [value]=\"interventionType.key\">{{interventionType.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.state || action\" subscriptSizing=\"dynamic\">\n <mat-label>What is the state of this action?</mat-label>\n <mat-select formControlName=\"state\" id=\"state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.url || prefill.url.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Url for additional details (e.g. JIRA or Trello)</mat-label>\n <input matInput formControlName=\"url\" id=\"url\" rows=\"1\" maxlength=\"500\">\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>When should it be done?</mat-label>\n <input matInput [matDatepicker]=\"picker\" formControlName=\"due\" id=\"due\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <div class=\"toolbar leftright\">\n <div>\n <a class=\"button borderless delete\" href=\"javascript:void(null);\" (click)=\"delete()\" id=\"delete\" *ngIf=\"action\"><span class=\"icon ph-trash\"></span> delete</a>\n <a class=\"button borderless cancel\" href=\"javascript:void(null);\" (click)=\"cancel()\" id=\"cancel\" *ngIf=\"form.dirty || action\"><span class=\"icon ph-x-circle\"></span> cancel</a>\n </div>\n <input class=\"button primary\" type=\"submit\" id=\"submit\" value=\"save\" />\n </div>\n</form>\n", styles: ["form{margin-top:20px;position:sticky;top:20px}form .mat-form-field{width:100%;margin-bottom:10px}form .toolbar .button.cancel{padding-left:0;margin-left:0}@media only screen and (min-width: 992px){form .toolbar .delete{padding-left:0;margin-left:0}}.mat-mdc-option.lower{margin-left:20px}\n"], dependencies: [{ kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }] }); }
146
152
  }
147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionManageComponent, decorators: [{
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionManageComponent, decorators: [{
148
154
  type: Component,
149
155
  args: [{ selector: 'action-manage', template: "<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(formDirective)\" #formDirective=\"ngForm\" class=\"manage-action-form\">\n <mat-form-field appearance=\"fill\" *ngIf=\"showTeamSelector\">\n <mat-label>Which team owns this action?</mat-label>\n <mat-select formControlName=\"teamKey\" id=\"teamKey\">\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Enter short description</mat-label>\n <textarea matInput formControlName=\"description\" id=\"description\" rows=\"3\" maxlength=\"500\"></textarea>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.expectedImpactOn || prefill.expectedImpactOn.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Where do you expect improvement?</mat-label>\n <mat-select multiple formControlName=\"expectedImpactOn\" id=\"expectedImpactOn\">\n <mat-option class=\"select-option\" [ngClass]=\"{'lower' : factor.lower}\" *ngFor=\"let factor of factors\" [value]=\"factor.value\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.owner\" subscriptSizing=\"dynamic\">\n <mat-label>Who owns this action?</mat-label>\n <mat-select formControlName=\"owner\" id=\"owner\">\n <mat-option class=\"select-option\" *ngFor=\"let owner of ownerList\" [value]=\"owner.key\">{{owner.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.type\" subscriptSizing=\"dynamic\">\n <mat-label>What is the type of action?</mat-label>\n <mat-select formControlName=\"type\" id=\"type\">\n <mat-option class=\"select-option\" *ngFor=\"let interventionType of interventionTypeList\" [value]=\"interventionType.key\">{{interventionType.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.state || action\" subscriptSizing=\"dynamic\">\n <mat-label>What is the state of this action?</mat-label>\n <mat-select formControlName=\"state\" id=\"state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"fill\" *ngIf=\"!prefill.url || prefill.url.length == 0\" subscriptSizing=\"dynamic\">\n <mat-label>Url for additional details (e.g. JIRA or Trello)</mat-label>\n <input matInput formControlName=\"url\" id=\"url\" rows=\"1\" maxlength=\"500\">\n </mat-form-field>\n <mat-form-field appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>When should it be done?</mat-label>\n <input matInput [matDatepicker]=\"picker\" formControlName=\"due\" id=\"due\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n <div class=\"toolbar leftright\">\n <div>\n <a class=\"button borderless delete\" href=\"javascript:void(null);\" (click)=\"delete()\" id=\"delete\" *ngIf=\"action\"><span class=\"icon ph-trash\"></span> delete</a>\n <a class=\"button borderless cancel\" href=\"javascript:void(null);\" (click)=\"cancel()\" id=\"cancel\" *ngIf=\"form.dirty || action\"><span class=\"icon ph-x-circle\"></span> cancel</a>\n </div>\n <input class=\"button primary\" type=\"submit\" id=\"submit\" value=\"save\" />\n </div>\n</form>\n", styles: ["form{margin-top:20px;position:sticky;top:20px}form .mat-form-field{width:100%;margin-bottom:10px}form .toolbar .button.cancel{padding-left:0;margin-left:0}@media only screen and (min-width: 992px){form .toolbar .delete{padding-left:0;margin-left:0}}.mat-mdc-option.lower{margin-left:20px}\n"] }]
150
156
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.FormBuilder }, { type: i3.ActionService }, { type: i11.ViewModelStateBase, decorators: [{
@@ -155,4 +161,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
155
161
  }], action: [{
156
162
  type: Input
157
163
  }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1tYW5hZ2UvYWN0aW9uLW1hbmFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1tYW5hZ2UvYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUE4QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLDJDQUEyQyxDQUFDO0FBRW5HLE9BQU8sRUFBYSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTekQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGFBQWE7SUFjckQsWUFBb0IsU0FBb0IsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQXNDLGNBQWdELEVBQVksUUFBcUI7UUFDcE8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBREUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLGdCQUFXLEdB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Q0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDakYsQ0FBQzthQUNJLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDUixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM1QyxDQUFDO0lBQ0osQ0FBQzs4R0E3SVMscUJBQXFCLG1HQWMyRixrQkFBa0I7a0dBZGxJLHFCQUFxQiw4SENwQmxDLHdtSEFzREE7OzJGRGxDYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0csZUFBZTs7MEJBa0IwRixNQUFNOzJCQUFDLGtCQUFrQjttRUFiNUgsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50QmFzZSc7XG5pbXBvcnQgeyBWSUVXU1RBVEVfUFJPVklERVIsIFZpZXdNb2RlbFN0YXRlQmFzZSB9IGZyb20gJy4uLy4uLy4uL3ZpZXdNb2RlbC92aWV3TW9kZWxTdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElBY3Rpb25TdGF0ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvSUFjdGlvblN0YXRlJztcbmltcG9ydCB7IEFjdGlvbkR0bywgSW50ZXJ2ZW50aW9uU3RhdGVFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbkR0byc7XG5pbXBvcnQgeyBBY3Rpb25PcHRpb25EdG8gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uT3B0aW9uc0R0byc7XG5pbXBvcnQgeyBBY3Rpb25QcmVmaWxsRHRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvblByZWZpbGxEdG8nO1xuaW1wb3J0IHsgU2VsZWN0SXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWxlY3RMaXN0SXRlbSc7XG5pbXBvcnQgeyBBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWN0aW9uU2VydmljZSc7XG5pbXBvcnQgeyBNb2RlbFN0cnVjdHVyZUR0byB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9tb2RlbFN0cnVjdHVyZUR0byc7XG5cbkBDb21wb25lbnQoe1xuICAgc2VsZWN0b3I6ICdhY3Rpb24tbWFuYWdlJyxcbiAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tbWFuYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgIHN0eWxlVXJsczogWycuL2FjdGlvbi1tYW5hZ2UuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25NYW5hZ2VDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRCYXNlIHtcbiAgIEBJbnB1dCgpIHB1YmxpYyBwcmVmaWxsOiBBY3Rpb25QcmVmaWxsRHRvO1xuICAgQElucHV0KCkgcHVibGljIGFjdGlvbjogQWN0aW9uRHRvO1xuICAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgIHB1YmxpYyBpbnRlcnZlbnRpb25UeXBlTGlzdDogQWN0aW9uT3B0aW9uRHRvW107XG4gICBwdWJsaWMgZXhwZWN0ZWRFZmZlY3RPbkxpc3Q6IEFjdGlvbk9wdGlvbkR0b1tdO1xuICAgcHVibGljIHN0YXRlTGlzdDogQWN0aW9uT3B0aW9uRHRvW107XG4gICBwdWJsaWMgb3duZXJMaXN0OiBBY3Rpb25PcHRpb25EdG9bXTtcbiAgIHB1YmxpYyB0ZWFtczogQWN0aW9uT3B0aW9uRHRvW107XG4gICBwdWJsaWMgbXVsdGlwbGVUZWFtczogYm9vbGVhbjtcbiAgIHB1YmxpYyB2aWV3U3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgIHB1YmxpYyBzaG93VGVhbVNlbGVjdG9yOiBib29sZWFuID0gdHJ1ZTtcbiAgIHB1YmxpYyBmYWN0b3JzOiBTZWxlY3RJdGVtW107XG5cbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2csIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsIEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcml2YXRlIHZpZXdNb2RlbFN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SUFjdGlvblN0YXRlPiwgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgc3VwZXIoc25hY2tCYXIpXG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgdGhpcy5vd25lckxpc3QgPSB0aGlzLmFjdGlvblNlcnZpY2UuZ2V0T3duZXJPcHRpb25zKCk7XG4gICAgICB0aGlzLmludGVydmVudGlvblR5cGVMaXN0ID0gdGhpcy5hY3Rpb25TZXJ2aWNlLmdldFR5cGVPcHRpb25zKCk7XG4gICAgICB0aGlzLnN0YXRlTGlzdCA9IHRoaXMuYWN0aW9uU2VydmljZS5nZXRTdGF0ZU9wdGlvbnMoKTtcblxuICAgICAgdGhpcy52aWV3U3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnZpZXdNb2RlbFN0YXRlLmRhdGEuc3Vic2NyaWJlKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgaWYgKHN1Y2Nlc3MubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZhY3RvcnMgPSB0aGlzLmdldEZhY3RvcnMoc3VjY2Vzcy5mYWN0b3JTY29yZXMubW9kZWxTdHJ1Y3R1cmUpO1xuICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVmZmVjdE9uTGlzdCA9IHN1Y2Nlc3MuZmFjdG9yU2NvcmVzLmZhY3RvclNjb3Jlcy5tYXAocCA9PiBuZXcgQWN0aW9uT3B0aW9uRHRvKHAua2V5LCBwLm5hbWUpKTtcbiAgICAgICAgICAgIHRoaXMudGVhbXMgPSBzdWNjZXNzLmZhY3RvclNjb3Jlcy5jb21wb3NpdGlvbi5wb2ludHMucG9pbnRzLm1hcChwID0+IG5ldyBBY3Rpb25PcHRpb25EdG8ocC5wdWJsaWNLZXksIHAubmFtZSkpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy50ZWFtcy5sZW5ndGggPT0gMSkgeyB0aGlzLnByZWZpbGwudGVhbUtleSA9IHRoaXMudGVhbXNbMF0ua2V5OyB9XG4gICAgICAgICAgICB0aGlzLnNob3dUZWFtU2VsZWN0b3IgPSAoIXRoaXMucHJlZmlsbC50ZWFtS2V5IHx8IHRoaXMucHJlZmlsbC50ZWFtS2V5Lmxlbmd0aCA9PSAwKTtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlQcmVmaWxsKCk7XG4gICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMuYWN0aW9uICYmIHRoaXMuYWN0aW9uLnB1YmxpY0tleSkge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRlYW1LZXkuc2V0VmFsdWUodGhpcy5hY3Rpb24udGVhbS5wdWJsaWNLZXkpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnB1YmxpY0tleS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi5wdWJsaWNLZXkpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uLnNldFZhbHVlKHRoaXMuYWN0aW9uLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy51cmwuc2V0VmFsdWUodGhpcy5hY3Rpb24udXJsKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5leHBlY3RlZEltcGFjdE9uLnNldFZhbHVlKHRoaXMuYWN0aW9uLmV4cGVjdGVkSW1wYWN0T24pO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnR5cGUuc2V0VmFsdWUodGhpcy5hY3Rpb24udHlwZSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3duZXIuc2V0VmFsdWUodGhpcy5hY3Rpb24ub3duZXIpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlLnNldFZhbHVlKHRoaXMuYWN0aW9uLnN0YXRlKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5kdWUuc2V0VmFsdWUodGhpcy5hY3Rpb24uZHVlKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5xdWlja1RpcFB1YmxpY0tleS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi5xdWlja1RpcFB1YmxpY0tleSk7XG4gICAgICAgICB0aGlzLnNob3dUZWFtU2VsZWN0b3IgPSBmYWxzZTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGFzeW5jIG9uU3VibWl0KGZvcm1EaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKCF0aGlzLmZvcm0udmFsaWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHMucHVibGljS2V5LnZhbHVlKSB7XG4gICAgICAgICBhd2FpdCB0aGlzLmFjdGlvblNlcnZpY2UudXBkYXRlKHRoaXMuZm9ybS5jb250cm9scy50ZWFtS2V5LnZhbHVlLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25TZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS52YWx1ZSwgdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZUFsbCgpO1xuICAgICAgdGhpcy52aWV3TW9kZWxTdGF0ZS51cGRhdGluZy5uZXh0KHRydWUpO1xuICAgfVxuXG4gICBwdWJsaWMgYXN5bmMgZGVsZXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKHdpbmRvdy5jb25maXJtKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGludGVydmVudGlvbj9cIikpIHtcbiAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uU2VydmljZS5kZWxldGUodGhpcy5mb3JtLmNvbnRyb2xzLnRlYW1LZXkudmFsdWUsIHRoaXMuZm9ybS5jb250cm9scy5wdWJsaWNLZXkudmFsdWUpO1xuICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2VBbGwoKTtcbiAgICAgICAgIHRoaXMudmlld01vZGVsU3RhdGUudXBkYXRpbmcubmV4dCh0cnVlKTtcbiAgICAgIH1cbiAgIH1cblxuICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgIHRoaXMucmVzZXRGb3JtKG51bGwpO1xuICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2VBbGwoKTtcbiAgIH1cblxuICAgcHJpdmF0ZSByZXNldEZvcm0oZm9ybURpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKTogdm9pZCB7XG4gICAgICB0aGlzLnNob3dUZWFtU2VsZWN0b3IgPSAoIXRoaXMucHJlZmlsbC50ZWFtS2V5IHx8IHRoaXMucHJlZmlsbC50ZWFtS2V5Lmxlbmd0aCA9PSAwKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgdGhpcy5hY3Rpb24gPSBudWxsO1xuXG4gICAgICBpZiAoZm9ybURpcmVjdGl2ZSkge1xuICAgICAgICAgZm9ybURpcmVjdGl2ZS5yZXNldEZvcm0oKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlLnNldFZhbHVlKEludGVydmVudGlvblN0YXRlRW51bS5vcGVuKTtcbiAgICAgIHRoaXMuYXBwbHlQcmVmaWxsKCk7XG4gICB9XG5cbiAgIHByaXZhdGUgZ2V0RmFjdG9ycyhtb2RlbDogTW9kZWxTdHJ1Y3R1cmVEdG8pOiBTZWxlY3RJdGVtW10ge1xuICAgICAgaWYgKG1vZGVsID09IG51bGwgfHwgbW9kZWwuZGVmaW5pdGlvbiA9PSBudWxsIHx8IG1vZGVsLmRlZmluaXRpb24uZmFjdG9ycyA9PSBudWxsKSB7IHJldHVybiBudWxsOyB9XG4gICAgICB2YXIgcmVzdWx0OiBTZWxlY3RJdGVtW10gPSBbXTtcblxuICAgICAgZm9yICh2YXIgZmFjdG9yIG9mIG1vZGVsLmRlZmluaXRpb24uZmFjdG9ycy5maWx0ZXIocCA9PiBwLnBhcmVudEtleSA9PSBudWxsKSkge1xuICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFNlbGVjdEl0ZW0oZmFjdG9yLnB1YmxpY0tleSwgZmFjdG9yLm5hbWUsIGZhbHNlKSk7XG5cbiAgICAgICAgIGZvciAodmFyIGxvd2VyRGltZW5zaW9uIG9mIGZhY3Rvci5sb3dlcikge1xuICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFNlbGVjdEl0ZW0obG93ZXJEaW1lbnNpb24ucHVibGljS2V5LCBsb3dlckRpbWVuc2lvbi5uYW1lLCB0cnVlKSk7XG4gICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICB9XG5cbiAgIHByaXZhdGUgY3JlYXRlRm9ybSgpOiB2b2lkIHtcbiAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgcHVibGljS2V5OiBbXCJcIl0sXG4gICAgICAgICB0ZWFtS2V5OiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgICAgIHF1aWNrVGlwUHVibGljS2V5OiBbXCJcIl0sXG4gICAgICAgICBkZXNjcmlwdGlvbjogW1wiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MDApXV0sXG4gICAgICAgICB1cmw6IFtcIlwiLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTAwKV1dLFxuICAgICAgICAgb3duZXI6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHN0YXRlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICB0eXBlOiBbXCJcIiwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAgICBkdWU6IFtcIlwiXSxcbiAgICAgICAgIGV4cGVjdGVkSW1wYWN0T246IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgfSk7XG4gICB9XG5cbiAgIHByaXZhdGUgYXBwbHlQcmVmaWxsKCk6IHZvaWQge1xuICAgICAgaWYgKHRoaXMucHJlZmlsbCkge1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnRlYW1LZXkuc2V0VmFsdWUodGhpcy5wcmVmaWxsLnRlYW1LZXkpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmRlc2NyaXB0aW9uLnNldFZhbHVlKHRoaXMucHJlZmlsbC5kZXNjcmlwdGlvbik7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZXhwZWN0ZWRJbXBhY3RPbi5zZXRWYWx1ZSh0aGlzLnByZWZpbGwuZXhwZWN0ZWRJbXBhY3RPbik7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudHlwZS5zZXRWYWx1ZSh0aGlzLnByZWZpbGwudHlwZSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMub3duZXIuc2V0VmFsdWUodGhpcy5wcmVmaWxsLm93bmVyKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5zdGF0ZS5zZXRWYWx1ZSh0aGlzLnByZWZpbGwuc3RhdGUpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnVybC5zZXRWYWx1ZSh0aGlzLnByZWZpbGwudXJsKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5xdWlja1RpcFB1YmxpY0tleS5zZXRWYWx1ZSh0aGlzLnByZWZpbGwucXVpY2tUaXBQdWJsaWNLZXkpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgICB0aGlzLnByZWZpbGwgPSBuZXcgQWN0aW9uUHJlZmlsbER0bygpO1xuICAgICAgICAgdGhpcy5wcmVmaWxsLmV4cGVjdGVkSW1wYWN0T24gPSBbXTtcbiAgICAgIH1cbiAgIH1cblxuICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICBpZiAodGhpcy52aWV3U3RhdGVTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgIHRoaXMudmlld1N0YXRlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAobmdTdWJtaXQpPVwib25TdWJtaXQoZm9ybURpcmVjdGl2ZSlcIiAjZm9ybURpcmVjdGl2ZT1cIm5nRm9ybVwiIGNsYXNzPVwibWFuYWdlLWFjdGlvbi1mb3JtXCI+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cInNob3dUZWFtU2VsZWN0b3JcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hpY2ggdGVhbSBvd25zIHRoaXMgYWN0aW9uPzwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGVhbUtleVwiIGlkPVwidGVhbUtleVwiPlxuICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IHRlYW0gb2YgdGVhbXNcIiBbdmFsdWVdPVwidGVhbS5rZXlcIj57e3RlYW0ubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+RW50ZXIgc2hvcnQgZGVzY3JpcHRpb248L21hdC1sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIGlkPVwiZGVzY3JpcHRpb25cIiByb3dzPVwiM1wiIG1heGxlbmd0aD1cIjUwMFwiPjwvdGV4dGFyZWE+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCIhcHJlZmlsbC5leHBlY3RlZEltcGFjdE9uIHx8IHByZWZpbGwuZXhwZWN0ZWRJbXBhY3RPbi5sZW5ndGggPT0gMFwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hlcmUgZG8geW91IGV4cGVjdCBpbXByb3ZlbWVudD88L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IG11bHRpcGxlIGZvcm1Db250cm9sTmFtZT1cImV4cGVjdGVkSW1wYWN0T25cIiBpZD1cImV4cGVjdGVkSW1wYWN0T25cIj5cbiAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiIFtuZ0NsYXNzXT1cInsnbG93ZXInIDogZmFjdG9yLmxvd2VyfVwiICpuZ0Zvcj1cImxldCBmYWN0b3Igb2YgZmFjdG9yc1wiIFt2YWx1ZV09XCJmYWN0b3IudmFsdWVcIj57e2ZhY3Rvci5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwiIXByZWZpbGwub3duZXJcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPldobyBvd25zIHRoaXMgYWN0aW9uPzwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwib3duZXJcIiBpZD1cIm93bmVyXCI+XG4gICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgb3duZXIgb2Ygb3duZXJMaXN0XCIgW3ZhbHVlXT1cIm93bmVyLmtleVwiPnt7b3duZXIubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cIiFwcmVmaWxsLnR5cGVcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPldoYXQgaXMgdGhlIHR5cGUgb2YgYWN0aW9uPzwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiIGlkPVwidHlwZVwiPlxuICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IGludGVydmVudGlvblR5cGUgb2YgaW50ZXJ2ZW50aW9uVHlwZUxpc3RcIiBbdmFsdWVdPVwiaW50ZXJ2ZW50aW9uVHlwZS5rZXlcIj57e2ludGVydmVudGlvblR5cGUubGFiZWx9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cIiFwcmVmaWxsLnN0YXRlIHx8IGFjdGlvblwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hhdCBpcyB0aGUgc3RhdGUgb2YgdGhpcyBhY3Rpb24/PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJzdGF0ZVwiIGlkPVwic3RhdGVcIj5cbiAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBzdGF0ZSBvZiBzdGF0ZUxpc3RcIiBbdmFsdWVdPVwic3RhdGUua2V5XCI+e3tzdGF0ZS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwiIXByZWZpbGwudXJsIHx8IHByZWZpbGwudXJsLmxlbmd0aCA9PSAwXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5VcmwgZm9yIGFkZGl0aW9uYWwgZGV0YWlscyAoZS5nLiBKSVJBIG9yIFRyZWxsbyk8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ1cmxcIiBpZD1cInVybFwiIHJvd3M9XCIxXCIgbWF4bGVuZ3RoPVwiNTAwXCI+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5XaGVuIHNob3VsZCBpdCBiZSBkb25lPzwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIGZvcm1Db250cm9sTmFtZT1cImR1ZVwiIGlkPVwiZHVlXCI+XG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxuICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXI+PC9tYXQtZGF0ZXBpY2tlcj5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8ZGl2IGNsYXNzPVwidG9vbGJhciBsZWZ0cmlnaHRcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbiBib3JkZXJsZXNzIGRlbGV0ZVwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQobnVsbCk7XCIgKGNsaWNrKT1cImRlbGV0ZSgpXCIgaWQ9XCJkZWxldGVcIiAqbmdJZj1cImFjdGlvblwiPjxzcGFuIGNsYXNzPVwiaWNvbiBwaC10cmFzaFwiPjwvc3Bhbj4gZGVsZXRlPC9hPlxuICAgICAgICAgPGEgY2xhc3M9XCJidXR0b24gYm9yZGVybGVzcyBjYW5jZWxcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKG51bGwpO1wiIChjbGljayk9XCJjYW5jZWwoKVwiIGlkPVwiY2FuY2VsXCIgKm5nSWY9XCJmb3JtLmRpcnR5IHx8IGFjdGlvblwiPjxzcGFuIGNsYXNzPVwiaWNvbiBwaC14LWNpcmNsZVwiPjwvc3Bhbj4gY2FuY2VsPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXQgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiIHR5cGU9XCJzdWJtaXRcIiBpZD1cInN1Ym1pdFwiIHZhbHVlPVwic2F2ZVwiIC8+XG4gICA8L2Rpdj5cbjwvZm9ybT5cbiJdfQ==
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1tYW5hZ2UvYWN0aW9uLW1hbmFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NydW10ZWFtc3VydmV5LXRvb2xzL3NyYy9saWIvYWN0aW9ucy9jb21wb25lbnRzL2FjdGlvbi1tYW5hZ2UvYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUE4QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFzQixNQUFNLDJDQUEyQyxDQUFDO0FBRW5HLE9BQU8sRUFBYSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTekQsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGFBQWE7SUFjckQsWUFBb0IsU0FBb0IsRUFBVSxXQUF3QixFQUFVLGFBQTRCLEVBQXNDLGNBQWdELEVBQVksUUFBcUI7UUFDcE8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBREUsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUFVLGdCQUFXLEdB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OzBCQWtCMEYsTUFBTTsyQkFBQyxrQkFBa0I7bUVBYjVILE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudEJhc2UnO1xuaW1wb3J0IHsgVklFV1NUQVRFX1BST1ZJREVSLCBWaWV3TW9kZWxTdGF0ZUJhc2UgfSBmcm9tICcuLi8uLi8uLi92aWV3TW9kZWwvdmlld01vZGVsU3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJQWN0aW9uU3RhdGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL0lBY3Rpb25TdGF0ZSc7XG5pbXBvcnQgeyBBY3Rpb25EdG8sIEludGVydmVudGlvblN0YXRlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb25EdG8nO1xuaW1wb3J0IHsgQWN0aW9uT3B0aW9uRHRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjdGlvbk9wdGlvbnNEdG8nO1xuaW1wb3J0IHsgQWN0aW9uUHJlZmlsbER0byB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb25QcmVmaWxsRHRvJztcbmltcG9ydCB7IFNlbGVjdEl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VsZWN0TGlzdEl0ZW0nO1xuaW1wb3J0IHsgQWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FjdGlvblNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kZWxTdHJ1Y3R1cmVEdG8gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvbW9kZWxTdHJ1Y3R1cmVEdG8nO1xuXG5AQ29tcG9uZW50KHtcbiAgIHNlbGVjdG9yOiAnYWN0aW9uLW1hbmFnZScsXG4gICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLW1hbmFnZS5jb21wb25lbnQuaHRtbCcsXG4gICBzdHlsZVVybHM6IFsnLi9hY3Rpb24tbWFuYWdlLmNvbXBvbmVudC5sZXNzJ11cbn0pXG5leHBvcnQgY2xhc3MgQWN0aW9uTWFuYWdlQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50QmFzZSB7XG4gICBASW5wdXQoKSBwdWJsaWMgcHJlZmlsbDogQWN0aW9uUHJlZmlsbER0bztcbiAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb246IEFjdGlvbkR0bztcbiAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gICBwdWJsaWMgaW50ZXJ2ZW50aW9uVHlwZUxpc3Q6IEFjdGlvbk9wdGlvbkR0b1tdO1xuICAgcHVibGljIGV4cGVjdGVkRWZmZWN0T25MaXN0OiBBY3Rpb25PcHRpb25EdG9bXTtcbiAgIHB1YmxpYyBzdGF0ZUxpc3Q6IEFjdGlvbk9wdGlvbkR0b1tdO1xuICAgcHVibGljIG93bmVyTGlzdDogQWN0aW9uT3B0aW9uRHRvW107XG4gICBwdWJsaWMgdGVhbXM6IEFjdGlvbk9wdGlvbkR0b1tdID0gW107XG4gICBwdWJsaWMgbXVsdGlwbGVUZWFtczogYm9vbGVhbjtcbiAgIHB1YmxpYyB2aWV3U3RhdGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgIHB1YmxpYyBzaG93VGVhbVNlbGVjdG9yOiBib29sZWFuID0gdHJ1ZTtcbiAgIHB1YmxpYyBmYWN0b3JzOiBTZWxlY3RJdGVtW107XG5cbiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2csIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIGFjdGlvblNlcnZpY2U6IEFjdGlvblNlcnZpY2UsIEBJbmplY3QoVklFV1NUQVRFX1BST1ZJREVSKSBwcml2YXRlIHZpZXdNb2RlbFN0YXRlOiBWaWV3TW9kZWxTdGF0ZUJhc2U8SUFjdGlvblN0YXRlPiwgcHJvdGVjdGVkIHNuYWNrQmFyOiBNYXRTbmFja0Jhcikge1xuICAgICAgc3VwZXIoc25hY2tCYXIpXG4gICB9XG5cbiAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgICAgdGhpcy5vd25lckxpc3QgPSB0aGlzLmFjdGlvblNlcnZpY2UuZ2V0T3duZXJPcHRpb25zKCk7XG4gICAgICB0aGlzLmludGVydmVudGlvblR5cGVMaXN0ID0gdGhpcy5hY3Rpb25TZXJ2aWNlLmdldFR5cGVPcHRpb25zKCk7XG4gICAgICB0aGlzLnN0YXRlTGlzdCA9IHRoaXMuYWN0aW9uU2VydmljZS5nZXRTdGF0ZU9wdGlvbnMoKTtcblxuICAgICAgdGhpcy52aWV3U3RhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnZpZXdNb2RlbFN0YXRlLmRhdGEuc3Vic2NyaWJlKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgaWYgKHN1Y2Nlc3MubG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmZhY3RvcnMgPSB0aGlzLmdldEZhY3RvcnMoc3VjY2Vzcy5mYWN0b3JTY29yZXMubW9kZWxTdHJ1Y3R1cmUpO1xuICAgICAgICAgICAgdGhpcy5leHBlY3RlZEVmZmVjdE9uTGlzdCA9IHN1Y2Nlc3MuZmFjdG9yU2NvcmVzLmZhY3RvclNjb3Jlcy5tYXAocCA9PiBuZXcgQWN0aW9uT3B0aW9uRHRvKHAua2V5LCBwLm5hbWUpKTtcblxuICAgICAgICAgICAgaWYgKHN1Y2Nlc3MudGVhbU1ldGFEYXRhICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgIHRoaXMudGVhbXMucHVzaChuZXcgQWN0aW9uT3B0aW9uRHRvKHN1Y2Nlc3MudGVhbU1ldGFEYXRhLnRlYW1LZXksIHN1Y2Nlc3MudGVhbU1ldGFEYXRhLm5hbWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgdGhpcy50ZWFtcyA9IHN1Y2Nlc3MuZmFjdG9yU2NvcmVzLmNvbXBvc2l0aW9uLnBvaW50cy5wb2ludHMubWFwKHAgPT4gbmV3IEFjdGlvbk9wdGlvbkR0byhwLnB1YmxpY0tleSwgcC5uYW1lKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnRlYW1zLmxlbmd0aCA9PSAxKSB7IHRoaXMucHJlZmlsbC50ZWFtS2V5ID0gdGhpcy50ZWFtc1swXS5rZXk7IH1cbiAgICAgICAgICAgIHRoaXMuc2hvd1RlYW1TZWxlY3RvciA9ICghdGhpcy5wcmVmaWxsLnRlYW1LZXkgfHwgdGhpcy5wcmVmaWxsLnRlYW1LZXkubGVuZ3RoID09IDApO1xuICAgICAgICAgICAgdGhpcy5hcHBseVByZWZpbGwoKTtcbiAgICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5hY3Rpb24gJiYgdGhpcy5hY3Rpb24ucHVibGljS2V5KSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi50ZWFtLnB1YmxpY0tleSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMucHVibGljS2V5LnNldFZhbHVlKHRoaXMuYWN0aW9uLnB1YmxpY0tleSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5hY3Rpb24uZGVzY3JpcHRpb24pO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnVybC5zZXRWYWx1ZSh0aGlzLmFjdGlvbi51cmwpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmV4cGVjdGVkSW1wYWN0T24uc2V0VmFsdWUodGhpcy5hY3Rpb24uZXhwZWN0ZWRJbXBhY3RPbik7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudHlwZS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi50eXBlKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5vd25lci5zZXRWYWx1ZSh0aGlzLmFjdGlvbi5vd25lcik7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGUuc2V0VmFsdWUodGhpcy5hY3Rpb24uc3RhdGUpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmR1ZS5zZXRWYWx1ZSh0aGlzLmFjdGlvbi5kdWUpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnF1aWNrVGlwUHVibGljS2V5LnNldFZhbHVlKHRoaXMuYWN0aW9uLnF1aWNrVGlwUHVibGljS2V5KTtcbiAgICAgICAgIHRoaXMuc2hvd1RlYW1TZWxlY3RvciA9IGZhbHNlO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgYXN5bmMgb25TdWJtaXQoZm9ybURpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAoIXRoaXMuZm9ybS52YWxpZCkgeyByZXR1cm47IH1cblxuICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy5wdWJsaWNLZXkudmFsdWUpIHtcbiAgICAgICAgIGF3YWl0IHRoaXMuYWN0aW9uU2VydmljZS51cGRhdGUodGhpcy5mb3JtLmNvbnRyb2xzLnRlYW1LZXkudmFsdWUsIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICBhd2FpdCB0aGlzLmFjdGlvblNlcnZpY2UuY3JlYXRlKHRoaXMuZm9ybS5jb250cm9scy50ZWFtS2V5LnZhbHVlLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlQWxsKCk7XG4gICAgICB0aGlzLnZpZXdNb2RlbFN0YXRlLnVwZGF0aW5nLm5leHQodHJ1ZSk7XG4gICB9XG5cbiAgIHB1YmxpYyBhc3luYyBkZWxldGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICBpZiAod2luZG93LmNvbmZpcm0oXCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgaW50ZXJ2ZW50aW9uP1wiKSkge1xuICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb25TZXJ2aWNlLmRlbGV0ZSh0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS52YWx1ZSwgdGhpcy5mb3JtLmNvbnRyb2xzLnB1YmxpY0tleS52YWx1ZSk7XG4gICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZUFsbCgpO1xuICAgICAgICAgdGhpcy52aWV3TW9kZWxTdGF0ZS51cGRhdGluZy5uZXh0KHRydWUpO1xuICAgICAgfVxuICAgfVxuXG4gICBwdWJsaWMgY2FuY2VsKCkge1xuICAgICAgdGhpcy5yZXNldEZvcm0obnVsbCk7XG4gICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZUFsbCgpO1xuICAgfVxuXG4gICBwcml2YXRlIHJlc2V0Rm9ybShmb3JtRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUpOiB2b2lkIHtcbiAgICAgIHRoaXMuc2hvd1RlYW1TZWxlY3RvciA9ICghdGhpcy5wcmVmaWxsLnRlYW1LZXkgfHwgdGhpcy5wcmVmaWxsLnRlYW1LZXkubGVuZ3RoID09IDApO1xuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XG4gICAgICB0aGlzLmFjdGlvbiA9IG51bGw7XG5cbiAgICAgIGlmIChmb3JtRGlyZWN0aXZlKSB7XG4gICAgICAgICBmb3JtRGlyZWN0aXZlLnJlc2V0Rm9ybSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmZvcm0uY29udHJvbHMuc3RhdGUuc2V0VmFsdWUoSW50ZXJ2ZW50aW9uU3RhdGVFbnVtLm9wZW4pO1xuICAgICAgdGhpcy5hcHBseVByZWZpbGwoKTtcbiAgIH1cblxuICAgcHJpdmF0ZSBnZXRGYWN0b3JzKG1vZGVsOiBNb2RlbFN0cnVjdHVyZUR0byk6IFNlbGVjdEl0ZW1bXSB7XG4gICAgICBpZiAobW9kZWwgPT0gbnVsbCB8fCBtb2RlbC5kZWZpbml0aW9uID09IG51bGwgfHwgbW9kZWwuZGVmaW5pdGlvbi5mYWN0b3JzID09IG51bGwpIHsgcmV0dXJuIG51bGw7IH1cbiAgICAgIHZhciByZXN1bHQ6IFNlbGVjdEl0ZW1bXSA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBmYWN0b3Igb2YgbW9kZWwuZGVmaW5pdGlvbi5mYWN0b3JzLmZpbHRlcihwID0+IHAucGFyZW50S2V5ID09IG51bGwpKSB7XG4gICAgICAgICByZXN1bHQucHVzaChuZXcgU2VsZWN0SXRlbShmYWN0b3IucHVibGljS2V5LCBmYWN0b3IubmFtZSwgZmFsc2UpKTtcblxuICAgICAgICAgZm9yICh2YXIgbG93ZXJEaW1lbnNpb24gb2YgZmFjdG9yLmxvd2VyKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChuZXcgU2VsZWN0SXRlbShsb3dlckRpbWVuc2lvbi5wdWJsaWNLZXksIGxvd2VyRGltZW5zaW9uLm5hbWUsIHRydWUpKTtcbiAgICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgIH1cblxuICAgcHJpdmF0ZSBjcmVhdGVGb3JtKCk6IHZvaWQge1xuICAgICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICBwdWJsaWNLZXk6IFtcIlwiXSxcbiAgICAgICAgIHRlYW1LZXk6IFtcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgICAgcXVpY2tUaXBQdWJsaWNLZXk6IFtcIlwiXSxcbiAgICAgICAgIGRlc2NyaXB0aW9uOiBbXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwMCldXSxcbiAgICAgICAgIHVybDogW1wiXCIsIFtWYWxpZGF0b3JzLm1heExlbmd0aCg1MDApXV0sXG4gICAgICAgICBvd25lcjogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgc3RhdGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIHR5cGU6IFtcIlwiLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgIGR1ZTogW1wiXCJdLFxuICAgICAgICAgZXhwZWN0ZWRJbXBhY3RPbjogW1wiXCIsIFZhbGlkYXRvcnMucmVxdWlyZWRdXG4gICAgICB9KTtcbiAgIH1cblxuICAgcHJpdmF0ZSBhcHBseVByZWZpbGwoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5wcmVmaWxsKSB7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudGVhbUtleS5zZXRWYWx1ZSh0aGlzLnByZWZpbGwudGVhbUtleSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5wcmVmaWxsLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5leHBlY3RlZEltcGFjdE9uLnNldFZhbHVlKHRoaXMucHJlZmlsbC5leHBlY3RlZEltcGFjdE9uKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy50eXBlLnNldFZhbHVlKHRoaXMucHJlZmlsbC50eXBlKTtcbiAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5vd25lci5zZXRWYWx1ZSh0aGlzLnByZWZpbGwub3duZXIpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnN0YXRlLnNldFZhbHVlKHRoaXMucHJlZmlsbC5zdGF0ZSk7XG4gICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudXJsLnNldFZhbHVlKHRoaXMucHJlZmlsbC51cmwpO1xuICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnF1aWNrVGlwUHVibGljS2V5LnNldFZhbHVlKHRoaXMucHJlZmlsbC5xdWlja1RpcFB1YmxpY0tleSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgIHRoaXMucHJlZmlsbCA9IG5ldyBBY3Rpb25QcmVmaWxsRHRvKCk7XG4gICAgICAgICB0aGlzLnByZWZpbGwuZXhwZWN0ZWRJbXBhY3RPbiA9IFtdO1xuICAgICAgfVxuICAgfVxuXG4gICBuZ09uRGVzdHJveSgpIHtcbiAgICAgIGlmICh0aGlzLnZpZXdTdGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgdGhpcy52aWV3U3RhdGVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdChmb3JtRGlyZWN0aXZlKVwiICNmb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgY2xhc3M9XCJtYW5hZ2UtYWN0aW9uLWZvcm1cIj5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwic2hvd1RlYW1TZWxlY3RvclwiPlxuICAgICAgPG1hdC1sYWJlbD5XaGljaCB0ZWFtIG93bnMgdGhpcyBhY3Rpb24/PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0ZWFtS2V5XCIgaWQ9XCJ0ZWFtS2V5XCI+XG4gICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgdGVhbSBvZiB0ZWFtc1wiIFt2YWx1ZV09XCJ0ZWFtLmtleVwiPnt7dGVhbS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5FbnRlciBzaG9ydCBkZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgaWQ9XCJkZXNjcmlwdGlvblwiIHJvd3M9XCIzXCIgbWF4bGVuZ3RoPVwiNTAwXCI+PC90ZXh0YXJlYT5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiAqbmdJZj1cIiFwcmVmaWxsLmV4cGVjdGVkSW1wYWN0T24gfHwgcHJlZmlsbC5leHBlY3RlZEltcGFjdE9uLmxlbmd0aCA9PSAwXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5XaGVyZSBkbyB5b3UgZXhwZWN0IGltcHJvdmVtZW50PzwvbWF0LWxhYmVsPlxuICAgICAgPG1hdC1zZWxlY3QgbXVsdGlwbGUgZm9ybUNvbnRyb2xOYW1lPVwiZXhwZWN0ZWRJbXBhY3RPblwiIGlkPVwiZXhwZWN0ZWRJbXBhY3RPblwiPlxuICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgW25nQ2xhc3NdPVwieydsb3dlcicgOiBmYWN0b3IubG93ZXJ9XCIgKm5nRm9yPVwibGV0IGZhY3RvciBvZiBmYWN0b3JzXCIgW3ZhbHVlXT1cImZhY3Rvci52YWx1ZVwiPnt7ZmFjdG9yLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCIhcHJlZmlsbC5vd25lclwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hvIG93bnMgdGhpcyBhY3Rpb24/PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJvd25lclwiIGlkPVwib3duZXJcIj5cbiAgICAgICAgIDxtYXQtb3B0aW9uIGNsYXNzPVwic2VsZWN0LW9wdGlvblwiICpuZ0Zvcj1cImxldCBvd25lciBvZiBvd25lckxpc3RcIiBbdmFsdWVdPVwib3duZXIua2V5XCI+e3tvd25lci5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwiIXByZWZpbGwudHlwZVwiIHN1YnNjcmlwdFNpemluZz1cImR5bmFtaWNcIj5cbiAgICAgIDxtYXQtbGFiZWw+V2hhdCBpcyB0aGUgdHlwZSBvZiBhY3Rpb24/PC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0eXBlXCIgaWQ9XCJ0eXBlXCI+XG4gICAgICAgICA8bWF0LW9wdGlvbiBjbGFzcz1cInNlbGVjdC1vcHRpb25cIiAqbmdGb3I9XCJsZXQgaW50ZXJ2ZW50aW9uVHlwZSBvZiBpbnRlcnZlbnRpb25UeXBlTGlzdFwiIFt2YWx1ZV09XCJpbnRlcnZlbnRpb25UeXBlLmtleVwiPnt7aW50ZXJ2ZW50aW9uVHlwZS5sYWJlbH19PC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwiZmlsbFwiICpuZ0lmPVwiIXByZWZpbGwuc3RhdGUgfHwgYWN0aW9uXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiPlxuICAgICAgPG1hdC1sYWJlbD5XaGF0IGlzIHRoZSBzdGF0ZSBvZiB0aGlzIGFjdGlvbj88L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCIgaWQ9XCJzdGF0ZVwiPlxuICAgICAgICAgPG1hdC1vcHRpb24gY2xhc3M9XCJzZWxlY3Qtb3B0aW9uXCIgKm5nRm9yPVwibGV0IHN0YXRlIG9mIHN0YXRlTGlzdFwiIFt2YWx1ZV09XCJzdGF0ZS5rZXlcIj57e3N0YXRlLmxhYmVsfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICA8L21hdC1mb3JtLWZpZWxkPlxuICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJmaWxsXCIgKm5nSWY9XCIhcHJlZmlsbC51cmwgfHwgcHJlZmlsbC51cmwubGVuZ3RoID09IDBcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPlVybCBmb3IgYWRkaXRpb25hbCBkZXRhaWxzIChlLmcuIEpJUkEgb3IgVHJlbGxvKTwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInVybFwiIGlkPVwidXJsXCIgcm93cz1cIjFcIiBtYXhsZW5ndGg9XCI1MDBcIj5cbiAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cImZpbGxcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgICA8bWF0LWxhYmVsPldoZW4gc2hvdWxkIGl0IGJlIGRvbmU/PC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwiZHVlXCIgaWQ9XCJkdWVcIj5cbiAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwicGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XG4gICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxuICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyIGxlZnRyaWdodFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIGJvcmRlcmxlc3MgZGVsZXRlXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZChudWxsKTtcIiAoY2xpY2spPVwiZGVsZXRlKClcIiBpZD1cImRlbGV0ZVwiICpuZ0lmPVwiYWN0aW9uXCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLXRyYXNoXCI+PC9zcGFuPiBkZWxldGU8L2E+XG4gICAgICAgICA8YSBjbGFzcz1cImJ1dHRvbiBib3JkZXJsZXNzIGNhbmNlbFwiIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQobnVsbCk7XCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgaWQ9XCJjYW5jZWxcIiAqbmdJZj1cImZvcm0uZGlydHkgfHwgYWN0aW9uXCI+PHNwYW4gY2xhc3M9XCJpY29uIHBoLXgtY2lyY2xlXCI+PC9zcGFuPiBjYW5jZWw8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dCBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgdHlwZT1cInN1Ym1pdFwiIGlkPVwic3VibWl0XCIgdmFsdWU9XCJzYXZlXCIgLz5cbiAgIDwvZGl2PlxuPC9mb3JtPlxuIl19
@@ -60,10 +60,10 @@ export class ActionTileComponent extends ComponentWithViewStateBase {
60
60
  onDataUpdate(data) {
61
61
  }
62
62
  ;
63
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionTileComponent, deps: [{ token: i1.MatSnackBar }, { token: i2.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
64
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: ActionTileComponent, selector: "action-tile", inputs: { action: "action", multipleTeams: "multipleTeams", actionManageComponent: "actionManageComponent" }, usesInheritance: true, ngImport: i0, template: "<div [id]=\"'action-' + action.publicKey\" class=\"wirebox action contentwithborders\" [ngClass]=\"[multipleTeams ? action.team.colorString : '', action.isDue ? 'due' : '']\" *ngIf=\"!action.deleted\" editActionDialog [action]=\"action\">\n <div class=\"summary property-description\" [innerHTML]=\"action.description\">\n </div>\n <div class=\"expectedeffect\">\n <h4>Should improve</h4>\n <span class=\"badge positive\" *ngFor=\"let area of action.expectedImpactOnLabels\">{{ area }}</span>\n </div>\n <div class=\"details\">\n <div class=\"properties\">\n <div class=\"property property-age\"><i class=\"ph-clock-bold icon\"></i> {{action.ageInDays}} days old</div>\n <div class=\"property property-team\" *ngIf=\"multipleTeams\"><i class=\"ph-users-three-bold icon\"></i> {{action.team.name}}</div>\n <div class=\"property property-owner\"><i class=\"ph-user-bold icon\"></i> {{action.owner | interventionOwnerToString}}</div>\n <div class=\"property property-type\"><i class=\"ph-tag-bold icon\"></i> {{action.type | interventionTypeToString}}</div>\n <div class=\"property property-url\" *ngIf=\"action.url\"><i class=\"ph-arrow-square-in-bold icon\"></i> <a [href]=\"action.url\" target=\"_blank\">open detail url</a></div>\n <div class=\"property property-due\" *ngIf=\"action.due\"><i class=\"ph-calendar-bold icon\" *ngIf=\"!action.isDue\"></i><i class=\"ph-bell-simple-ringing-bold\" *ngIf=\"action.isDue\"></i> Due on {{action.due | date}}</div>\n </div>\n <span class=\"status unimpeded ph-fire-simple\" matTooltip=\"Mark this item as impeded. This means that help from outside the team (e.g. management, coaches) is urgently needed to complete on this action. Impeded actions are highlighted in the Teams Dashboard.'\" *ngIf=\"action.state == 'Open'\" (click)=\"impede($event, action)\"></span>\n <span class=\"status impeded\" matTooltip=\"This action is impeded. The team needs urgent help from outside team to complete this action.\" *ngIf=\"action.state == 'Impeded'\" (click)=\"unimpede($event, action)\">\n <img src=\"/assets/img/impeded.svg\" class=\"icon\">\n </span>\n <div>\n <span class=\"status obsolete ph-eye-slash-bold\" matTooltip=\"This action was marked obsolete. Click to re-open this action\" *ngIf=\"action.state == 'Obsolete'\" (click)=\"open($event, action)\"></span>\n <span class=\"status checked ph-check-circle-fill\" matTooltip=\"Mark this action as uncompleted\" *ngIf=\"action.state == 'Completed'\" (click)=\"open($event, action)\"></span>\n <span class=\"status unchecked ph-circle\" matTooltip=\"Mark this action as completed\" *ngIf=\"action.state == 'Open' || action.state == 'Impeded'\" (click)=\"complete($event, action)\"></span>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.action{display:flex;flex-direction:column;margin-bottom:0;cursor:pointer;box-sizing:border-box;height:100%}.action.due{border-color:red}.action.due .property-due{font-family:StevieSans,sans-serif;font-weight:600!important;color:red!important}.action.green{border-left:#00af77 15px solid}.action.yellow{border-left:#fff73f 15px solid}.action.red{border-left:#ef6f00 15px solid}.action.pink{border-left:#ef4f9f 15px solid}.action.blue{border-left:#1F3F8F 15px solid}.action.gray{border-left:#2f2f2f 15px solid}.action.deleted{background:#00f}.action h4{margin:0 0 15px;text-transform:uppercase;font-style:normal;font-weight:600;font-size:15px;line-height:100%}.action .summary{flex:1 0 auto;margin-bottom:30px;word-break:break-word;white-space:pre-wrap}.action .expectedeffect .badge{margin-right:10px;display:inline-block}.action .details{margin-top:60px;position:relative}.action .details .properties .property{margin-bottom:15px;display:grid;grid-gap:15px;grid-template-columns:15px auto;text-transform:uppercase;font-style:normal;font-weight:600;font-size:15px;line-height:100%;color:#000;align-items:center}.action .details .properties .property a{text-decoration:none}.action .details .properties .property img{width:20px}.action .details .properties .property img line,.action .details .properties .property img circle,.action .details .properties .property img polyline,.action .details .properties .property img path,.action .details .properties .property img rect{stroke-width:16}.action .details .status{position:absolute;right:15px;bottom:15px;cursor:pointer;width:35px;font-size:35px}.action .details .status.impeded,.action .details .status.unimpeded{bottom:55px}.action .details .status.unimpeded{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:.3}.action .details .status.unimpeded:hover{opacity:1}\n"], dependencies: [{ kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.OpenEditActionDialogDirective, selector: "[editActionDialog]", inputs: ["action"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i7.InterventionTypeToStringPipe, name: "interventionTypeToString" }, { kind: "pipe", type: i8.InterventionOwnerToStringPipe, name: "interventionOwnerToString" }] }); }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionTileComponent, deps: [{ token: i1.MatSnackBar }, { token: i2.ActionService }, { token: VIEWSTATE_PROVIDER }, { token: i3.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: ActionTileComponent, selector: "action-tile", inputs: { action: "action", multipleTeams: "multipleTeams", actionManageComponent: "actionManageComponent" }, usesInheritance: true, ngImport: i0, template: "<div [id]=\"'action-' + action.publicKey\" class=\"wirebox action contentwithborders\" [ngClass]=\"[multipleTeams ? action.team.colorString : '', action.isDue ? 'due' : '']\" *ngIf=\"!action.deleted\" editActionDialog [action]=\"action\">\n <div class=\"summary property-description\" [innerHTML]=\"action.description\">\n </div>\n <div class=\"expectedeffect\">\n <h4>Should improve</h4>\n <span class=\"badge positive\" *ngFor=\"let area of action.expectedImpactOnLabels\">{{ area }}</span>\n </div>\n <div class=\"details\">\n <div class=\"properties\">\n <div class=\"property property-age\"><i class=\"ph-clock-bold icon\"></i> {{action.ageInDays}} days old</div>\n <div class=\"property property-team\" *ngIf=\"multipleTeams\"><i class=\"ph-users-three-bold icon\"></i> {{action.team.name}}</div>\n <div class=\"property property-owner\"><i class=\"ph-user-bold icon\"></i> {{action.owner | interventionOwnerToString}}</div>\n <div class=\"property property-type\"><i class=\"ph-tag-bold icon\"></i> {{action.type | interventionTypeToString}}</div>\n <div class=\"property property-url\" *ngIf=\"action.url\"><i class=\"ph-arrow-square-in-bold icon\"></i> <a [href]=\"action.url\" target=\"_blank\">open detail url</a></div>\n <div class=\"property property-due\" *ngIf=\"action.due\"><i class=\"ph-calendar-bold icon\" *ngIf=\"!action.isDue\"></i><i class=\"ph-bell-simple-ringing-bold\" *ngIf=\"action.isDue\"></i> Due on {{action.due | date}}</div>\n </div>\n <span class=\"status unimpeded ph-fire-simple\" matTooltip=\"Mark this item as impeded. This means that help from outside the team (e.g. management, coaches) is urgently needed to complete on this action. Impeded actions are highlighted in the Teams Dashboard.'\" *ngIf=\"action.state == 'Open'\" (click)=\"impede($event, action)\"></span>\n <span class=\"status impeded\" matTooltip=\"This action is impeded. The team needs urgent help from outside team to complete this action.\" *ngIf=\"action.state == 'Impeded'\" (click)=\"unimpede($event, action)\">\n <img src=\"/assets/img/impeded.svg\" class=\"icon\">\n </span>\n <div>\n <span class=\"status obsolete ph-eye-slash-bold\" matTooltip=\"This action was marked obsolete. Click to re-open this action\" *ngIf=\"action.state == 'Obsolete'\" (click)=\"open($event, action)\"></span>\n <span class=\"status checked ph-check-circle-fill\" matTooltip=\"Mark this action as uncompleted\" *ngIf=\"action.state == 'Completed'\" (click)=\"open($event, action)\"></span>\n <span class=\"status unchecked ph-circle\" matTooltip=\"Mark this action as completed\" *ngIf=\"action.state == 'Open' || action.state == 'Impeded'\" (click)=\"complete($event, action)\"></span>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.action{display:flex;flex-direction:column;margin-bottom:0;cursor:pointer;box-sizing:border-box;height:100%}.action.due{border-color:red}.action.due .property-due{font-family:StevieSans,sans-serif;font-weight:600!important;color:red!important}.action.green{border-left:#00af77 15px solid}.action.yellow{border-left:#fff73f 15px solid}.action.red{border-left:#ef6f00 15px solid}.action.pink{border-left:#ef4f9f 15px solid}.action.blue{border-left:#1F3F8F 15px solid}.action.gray{border-left:#2f2f2f 15px solid}.action.deleted{background:#00f}.action h4{margin:0 0 15px;text-transform:uppercase;font-style:normal;font-weight:600;font-size:15px;line-height:100%}.action .summary{flex:1 0 auto;margin-bottom:30px;word-break:break-word;white-space:pre-wrap}.action .expectedeffect .badge{margin-right:10px;display:inline-block}.action .details{margin-top:60px;position:relative}.action .details .properties .property{margin-bottom:15px;display:grid;grid-gap:15px;grid-template-columns:15px auto;text-transform:uppercase;font-style:normal;font-weight:600;font-size:15px;line-height:100%;color:#000;align-items:center}.action .details .properties .property a{text-decoration:none}.action .details .properties .property img{width:20px}.action .details .properties .property img line,.action .details .properties .property img circle,.action .details .properties .property img polyline,.action .details .properties .property img path,.action .details .properties .property img rect{stroke-width:16}.action .details .status{position:absolute;right:15px;bottom:15px;cursor:pointer;width:35px;font-size:35px}.action .details .status.impeded,.action .details .status.unimpeded{bottom:55px}.action .details .status.unimpeded{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:.3}.action .details .status.unimpeded:hover{opacity:1}\n"], dependencies: [{ kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.OpenEditActionDialogDirective, selector: "[editActionDialog]", inputs: ["action"] }, { kind: "pipe", type: i5.DatePipe, name: "date" }, { kind: "pipe", type: i7.InterventionTypeToStringPipe, name: "interventionTypeToString" }, { kind: "pipe", type: i8.InterventionOwnerToStringPipe, name: "interventionOwnerToString" }] }); }
65
65
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: ActionTileComponent, decorators: [{
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ActionTileComponent, decorators: [{
67
67
  type: Component,
68
68
  args: [{ selector: 'action-tile', template: "<div [id]=\"'action-' + action.publicKey\" class=\"wirebox action contentwithborders\" [ngClass]=\"[multipleTeams ? action.team.colorString : '', action.isDue ? 'due' : '']\" *ngIf=\"!action.deleted\" editActionDialog [action]=\"action\">\n <div class=\"summary property-description\" [innerHTML]=\"action.description\">\n </div>\n <div class=\"expectedeffect\">\n <h4>Should improve</h4>\n <span class=\"badge positive\" *ngFor=\"let area of action.expectedImpactOnLabels\">{{ area }}</span>\n </div>\n <div class=\"details\">\n <div class=\"properties\">\n <div class=\"property property-age\"><i class=\"ph-clock-bold icon\"></i> {{action.ageInDays}} days old</div>\n <div class=\"property property-team\" *ngIf=\"multipleTeams\"><i class=\"ph-users-three-bold icon\"></i> {{action.team.name}}</div>\n <div class=\"property property-owner\"><i class=\"ph-user-bold icon\"></i> {{action.owner | interventionOwnerToString}}</div>\n <div class=\"property property-type\"><i class=\"ph-tag-bold icon\"></i> {{action.type | interventionTypeToString}}</div>\n <div class=\"property property-url\" *ngIf=\"action.url\"><i class=\"ph-arrow-square-in-bold icon\"></i> <a [href]=\"action.url\" target=\"_blank\">open detail url</a></div>\n <div class=\"property property-due\" *ngIf=\"action.due\"><i class=\"ph-calendar-bold icon\" *ngIf=\"!action.isDue\"></i><i class=\"ph-bell-simple-ringing-bold\" *ngIf=\"action.isDue\"></i> Due on {{action.due | date}}</div>\n </div>\n <span class=\"status unimpeded ph-fire-simple\" matTooltip=\"Mark this item as impeded. This means that help from outside the team (e.g. management, coaches) is urgently needed to complete on this action. Impeded actions are highlighted in the Teams Dashboard.'\" *ngIf=\"action.state == 'Open'\" (click)=\"impede($event, action)\"></span>\n <span class=\"status impeded\" matTooltip=\"This action is impeded. The team needs urgent help from outside team to complete this action.\" *ngIf=\"action.state == 'Impeded'\" (click)=\"unimpede($event, action)\">\n <img src=\"/assets/img/impeded.svg\" class=\"icon\">\n </span>\n <div>\n <span class=\"status obsolete ph-eye-slash-bold\" matTooltip=\"This action was marked obsolete. Click to re-open this action\" *ngIf=\"action.state == 'Obsolete'\" (click)=\"open($event, action)\"></span>\n <span class=\"status checked ph-check-circle-fill\" matTooltip=\"Mark this action as uncompleted\" *ngIf=\"action.state == 'Completed'\" (click)=\"open($event, action)\"></span>\n <span class=\"status unchecked ph-circle\" matTooltip=\"Mark this action as completed\" *ngIf=\"action.state == 'Open' || action.state == 'Impeded'\" (click)=\"complete($event, action)\"></span>\n </div>\n </div>\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.action{display:flex;flex-direction:column;margin-bottom:0;cursor:pointer;box-sizing:border-box;height:100%}.action.due{border-color:red}.action.due .property-due{font-family:StevieSans,sans-serif;font-weight:600!important;color:red!important}.action.green{border-left:#00af77 15px solid}.action.yellow{border-left:#fff73f 15px solid}.action.red{border-left:#ef6f00 15px solid}.action.pink{border-left:#ef4f9f 15px solid}.action.blue{border-left:#1F3F8F 15px solid}.action.gray{border-left:#2f2f2f 15px solid}.action.deleted{background:#00f}.action h4{margin:0 0 15px;text-transform:uppercase;font-style:normal;font-weight:600;font-size:15px;line-height:100%}.action .summary{flex:1 0 auto;margin-bottom:30px;word-break:break-word;white-space:pre-wrap}.action .expectedeffect .badge{margin-right:10px;display:inline-block}.action .details{margin-top:60px;position:relative}.action .details .properties .property{margin-bottom:15px;display:grid;grid-gap:15px;grid-template-columns:15px auto;text-transform:uppercase;font-style:normal;font-weight:600;font-size:15px;line-height:100%;color:#000;align-items:center}.action .details .properties .property a{text-decoration:none}.action .details .properties .property img{width:20px}.action .details .properties .property img line,.action .details .properties .property img circle,.action .details .properties .property img polyline,.action .details .properties .property img path,.action .details .properties .property img rect{stroke-width:16}.action .details .status{position:absolute;right:15px;bottom:15px;cursor:pointer;width:35px;font-size:35px}.action .details .status.impeded,.action .details .status.unimpeded{bottom:55px}.action .details .status.unimpeded{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;opacity:.3}.action .details .status.unimpeded:hover{opacity:1}\n"] }]
69
69
  }], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: i2.ActionService }, { type: i9.ViewModelStateBase, decorators: [{
@@ -62,10 +62,10 @@ export class DialogExportActionsComponent extends ComponentWithViewStateBase {
62
62
  });
63
63
  }
64
64
  ;
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DialogExportActionsComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }, { token: i2.ActionService }, { token: i3.MatDialogRef }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: DialogExportActionsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Export actions</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <p>Export actions to .csv for your own analyses.</p>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field>\n <mat-label>Select date range (creation date)</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\" [disabled]=\"sending\">export</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}.confirmation h4{margin:0 0 5px}.confirmation p{margin:0}\n"], dependencies: [{ kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
65
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DialogExportActionsComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }, { token: i2.ActionService }, { token: i3.MatDialogRef }, { token: i4.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
66
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: DialogExportActionsComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Export actions</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <p>Export actions to .csv for your own analyses.</p>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field>\n <mat-label>Select date range (creation date)</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\" [disabled]=\"sending\">export</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}.confirmation h4{margin:0 0 5px}.confirmation p{margin:0}\n"], dependencies: [{ kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
67
67
  }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DialogExportActionsComponent, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DialogExportActionsComponent, decorators: [{
69
69
  type: Component,
70
70
  args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title>Export actions</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <p>Export actions to .csv for your own analyses.</p>\n <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n <mat-form-field>\n <mat-label>Select date range (creation date)</mat-label>\n <mat-date-range-input [rangePicker]=\"picker\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <button class=\"button primary\" type=\"submit\" [ngClass]=\"{'loading': sending }\" [disabled]=\"sending\">export</button>\n <button class=\"button\" mat-dialog-close>cancel</button>\n </div>\n </form>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.errors{margin-bottom:15px}.confirmation h4{margin:0 0 5px}.confirmation p{margin:0}\n"] }]
71
71
  }], ctorParameters: () => [{ type: i8.ViewModelStateBase, decorators: [{
@@ -15,10 +15,10 @@ export class OpenExportActionsDialogDirective {
15
15
  dialogConfig.exitAnimationDuration = 0;
16
16
  this.dialog.open(DialogExportActionsComponent, dialogConfig);
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenExportActionsDialogDirective, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
19
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: OpenExportActionsDialogDirective, selector: "[exportActionsDialog]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenExportActionsDialogDirective, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
19
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: OpenExportActionsDialogDirective, selector: "[exportActionsDialog]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenExportActionsDialogDirective, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenExportActionsDialogDirective, decorators: [{
22
22
  type: Directive,
23
23
  args: [{
24
24
  selector: '[exportActionsDialog]',
@@ -71,10 +71,10 @@ export class DialogActionFiltersComponent extends ComponentWithViewStateBase {
71
71
  await this.userSettings.apply();
72
72
  this.dialogRef.close();
73
73
  }
74
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DialogActionFiltersComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }, { token: i2.MatDialogRef }, { token: VIEWSTATE_USERSETTINGS_STRATEGY }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
75
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: DialogActionFiltersComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\" id=\"dialog-actionfilters\">\n <h1 mat-dialog-title>Action filters</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <div class=\"filters\" *ngIf=\"userSettings.settings && userSettings.settings.user\">\n <mat-form-field class=\"status\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Status</mat-label>\n <mat-select id=\"actions-filter-state\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"owner\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Owner</mat-label>\n <mat-select id=\"actions-filter-owner\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.owner\">\n <mat-option class=\"select-option\" *ngFor=\"let state of ownerFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"team\" *ngIf=\"multipleTeams\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Team</mat-label>\n <mat-select id=\"actions-filter-team\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.teamKey\">\n <mat-option class=\"select-option\" [value]=\"null\">All teams</mat-option>\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"type\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Type</mat-label>\n <mat-select id=\"actions-filter-type\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.type\">\n <mat-option class=\"select-option\" *ngFor=\"let state of typeFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"expectedImpactOn\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Expected impact on</mat-label>\n <mat-select id=\"actions-filter-expectedImpactOn\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.expectedImpactOn\">\n <mat-option class=\"select-option\" *ngFor=\"let state of expectedEffectOnList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <div class=\"button primary\" id=\"actions-filters-apply\" (click)=\"applyFilters()\">apply filters</div>\n <div class=\"button\" id=\"actions-filters-clear\" (click)=\"clearFilters()\"><span class=\"icon ph-trash\"></span>clear filters</div>\n </div>\n </div>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.toolbar{margin-top:30px}\n"], dependencies: [{ kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
74
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DialogActionFiltersComponent, deps: [{ token: VIEWSTATE_PROVIDER }, { token: i1.MatSnackBar }, { token: i2.MatDialogRef }, { token: VIEWSTATE_USERSETTINGS_STRATEGY }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
75
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: DialogActionFiltersComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dialog-header\" id=\"dialog-actionfilters\">\n <h1 mat-dialog-title>Action filters</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <div class=\"filters\" *ngIf=\"userSettings.settings && userSettings.settings.user\">\n <mat-form-field class=\"status\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Status</mat-label>\n <mat-select id=\"actions-filter-state\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"owner\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Owner</mat-label>\n <mat-select id=\"actions-filter-owner\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.owner\">\n <mat-option class=\"select-option\" *ngFor=\"let state of ownerFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"team\" *ngIf=\"multipleTeams\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Team</mat-label>\n <mat-select id=\"actions-filter-team\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.teamKey\">\n <mat-option class=\"select-option\" [value]=\"null\">All teams</mat-option>\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"type\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Type</mat-label>\n <mat-select id=\"actions-filter-type\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.type\">\n <mat-option class=\"select-option\" *ngFor=\"let state of typeFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"expectedImpactOn\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Expected impact on</mat-label>\n <mat-select id=\"actions-filter-expectedImpactOn\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.expectedImpactOn\">\n <mat-option class=\"select-option\" *ngFor=\"let state of expectedEffectOnList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <div class=\"button primary\" id=\"actions-filters-apply\" (click)=\"applyFilters()\">apply filters</div>\n <div class=\"button\" id=\"actions-filters-clear\" (click)=\"clearFilters()\"><span class=\"icon ph-trash\"></span>clear filters</div>\n </div>\n </div>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.toolbar{margin-top:30px}\n"], dependencies: [{ kind: "directive", type: i2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
76
76
  }
77
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DialogActionFiltersComponent, decorators: [{
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DialogActionFiltersComponent, decorators: [{
78
78
  type: Component,
79
79
  args: [{ template: "<div class=\"dialog-header\" id=\"dialog-actionfilters\">\n <h1 mat-dialog-title>Action filters</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <div class=\"filters\" *ngIf=\"userSettings.settings && userSettings.settings.user\">\n <mat-form-field class=\"status\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Status</mat-label>\n <mat-select id=\"actions-filter-state\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.state\">\n <mat-option class=\"select-option\" *ngFor=\"let state of stateFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"owner\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Owner</mat-label>\n <mat-select id=\"actions-filter-owner\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.owner\">\n <mat-option class=\"select-option\" *ngFor=\"let state of ownerFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"team\" *ngIf=\"multipleTeams\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Team</mat-label>\n <mat-select id=\"actions-filter-team\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.teamKey\">\n <mat-option class=\"select-option\" [value]=\"null\">All teams</mat-option>\n <mat-option class=\"select-option\" *ngFor=\"let team of teams\" [value]=\"team.key\">{{team.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"type\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Type</mat-label>\n <mat-select id=\"actions-filter-type\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.type\">\n <mat-option class=\"select-option\" *ngFor=\"let state of typeFilterList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field class=\"expectedImpactOn\" appearance=\"fill\" subscriptSizing=\"dynamic\">\n <mat-label>Expected impact on</mat-label>\n <mat-select id=\"actions-filter-expectedImpactOn\" [(ngModel)]=\"userSettings.settings.user.interventionFilter.expectedImpactOn\">\n <mat-option class=\"select-option\" *ngFor=\"let state of expectedEffectOnList\" [value]=\"state.key\">{{state.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <div class=\"toolbar\">\n <div class=\"button primary\" id=\"actions-filters-apply\" (click)=\"applyFilters()\">apply filters</div>\n <div class=\"button\" id=\"actions-filters-clear\" (click)=\"clearFilters()\"><span class=\"icon ph-trash\"></span>clear filters</div>\n </div>\n </div>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.toolbar{margin-top:30px}\n"] }]
80
80
  }], ctorParameters: () => [{ type: i8.ViewModelStateBase, decorators: [{
@@ -98,10 +98,10 @@ export class OpenActionFiltersDialogDirective {
98
98
  dialogConfig.exitAnimationDuration = 0;
99
99
  this.dialog.open(DialogActionFiltersComponent, dialogConfig);
100
100
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenActionFiltersDialogDirective, deps: [{ token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
102
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: OpenActionFiltersDialogDirective, selector: "[actionFiltersDialog]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenActionFiltersDialogDirective, deps: [{ token: i2.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
102
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: OpenActionFiltersDialogDirective, selector: "[actionFiltersDialog]", host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
103
103
  }
104
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenActionFiltersDialogDirective, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenActionFiltersDialogDirective, decorators: [{
105
105
  type: Directive,
106
106
  args: [{
107
107
  selector: '[actionFiltersDialog]',
@@ -12,10 +12,10 @@ export class DialogActionManageComponent {
12
12
  }
13
13
  ngOnInit() {
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DialogActionManageComponent, deps: [{ token: i1.MatDialog }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: DialogActionManageComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title *ngIf=\"!data.action\">Add Action</h1>\n <h1 mat-dialog-title *ngIf=\"data.action\">Edit Action</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <action-manage [prefill]=\"data.prefill\" [action]=\"data.action\" id=\"dialog-manageaction\"></action-manage>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}\n"], dependencies: [{ kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ActionManageComponent, selector: "action-manage", inputs: ["prefill", "action"] }] }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DialogActionManageComponent, deps: [{ token: i1.MatDialog }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: DialogActionManageComponent, selector: "ng-component", ngImport: i0, template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title *ngIf=\"!data.action\">Add Action</h1>\n <h1 mat-dialog-title *ngIf=\"data.action\">Edit Action</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <action-manage [prefill]=\"data.prefill\" [action]=\"data.action\" id=\"dialog-manageaction\"></action-manage>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}\n"], dependencies: [{ kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.ActionManageComponent, selector: "action-manage", inputs: ["prefill", "action"] }] }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: DialogActionManageComponent, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: DialogActionManageComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ template: "<div class=\"dialog-header\">\n <h1 mat-dialog-title *ngIf=\"!data.action\">Add Action</h1>\n <h1 mat-dialog-title *ngIf=\"data.action\">Edit Action</h1>\n <div class=\"close\" mat-dialog-close><i class=\"responsive icon ph-x-bold\"></i></div>\n</div>\n<mat-dialog-content>\n <action-manage [prefill]=\"data.prefill\" [action]=\"data.action\" id=\"dialog-manageaction\"></action-manage>\n</mat-dialog-content>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}\n"] }]
21
21
  }], ctorParameters: () => [{ type: i1.MatDialog }, { type: undefined, decorators: [{
@@ -34,10 +34,10 @@ export class OpenAddActionDialogDirective {
34
34
  dialogConfig.exitAnimationDuration = 0;
35
35
  this.dialog.open(DialogActionManageComponent, dialogConfig);
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenAddActionDialogDirective, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
38
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: OpenAddActionDialogDirective, selector: "[addActionDialog]", inputs: { prefill: "prefill" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenAddActionDialogDirective, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: OpenAddActionDialogDirective, selector: "[addActionDialog]", inputs: { prefill: "prefill" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenAddActionDialogDirective, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenAddActionDialogDirective, decorators: [{
41
41
  type: Directive,
42
42
  args: [{
43
43
  selector: '[addActionDialog]',
@@ -61,10 +61,10 @@ export class OpenEditActionDialogDirective {
61
61
  dialogConfig.enterAnimationDuration = 0;
62
62
  this.dialog.open(DialogActionManageComponent, dialogConfig);
63
63
  }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenEditActionDialogDirective, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
65
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: OpenEditActionDialogDirective, selector: "[editActionDialog]", inputs: { action: "action" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
64
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenEditActionDialogDirective, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Directive }); }
65
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.6", type: OpenEditActionDialogDirective, selector: "[editActionDialog]", inputs: { action: "action" }, host: { listeners: { "click": "onClick()" } }, ngImport: i0 }); }
66
66
  }
67
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: OpenEditActionDialogDirective, decorators: [{
67
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: OpenEditActionDialogDirective, decorators: [{
68
68
  type: Directive,
69
69
  args: [{
70
70
  selector: '[editActionDialog]',
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUFjdGlvblN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2FjdGlvbnMvaW50ZXJmYWNlcy9JQWN0aW9uU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvclNjb3JlQ29sbGVjdGlvbkR0byB9IGZyb20gXCIuLi8uLi9yZXN1bHRzL21vZGVscy9mYWN0b3JTY29yZUR0b1wiO1xuaW1wb3J0IHsgVGVhbUxpc3RSZXNwb25zZUR0byB9IGZyb20gXCIuLi8uLi9yZXN1bHRzL21vZGVscy90ZWFtTGlzdFJlc3BvbnNlRHRvXCI7XG5pbXBvcnQgeyBJVmlld1N0YXRlIH0gZnJvbSBcIi4uLy4uL3ZpZXdNb2RlbC9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBBY3Rpb25Db2xsZWN0aW9uRHRvIH0gZnJvbSBcIi4uL21vZGVscy9hY3Rpb25SZXNwb25zZUR0b1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpb25TdGF0ZSBleHRlbmRzIElWaWV3U3RhdGUge1xuICAgYWN0aW9uczogQWN0aW9uQ29sbGVjdGlvbkR0bztcbiAgIGZhY3RvclNjb3JlczogRmFjdG9yU2NvcmVDb2xsZWN0aW9uRHRvO1xuICAgdGVhbUxpc3Q6IFRlYW1MaXN0UmVzcG9uc2VEdG87XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSUFjdGlvblN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjcnVtdGVhbXN1cnZleS10b29scy9zcmMvbGliL2FjdGlvbnMvaW50ZXJmYWNlcy9JQWN0aW9uU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhY3RvclNjb3JlQ29sbGVjdGlvbkR0byB9IGZyb20gXCIuLi8uLi9yZXN1bHRzL21vZGVscy9mYWN0b3JTY29yZUR0b1wiO1xuaW1wb3J0IHsgVGVhbUxpc3RSZXNwb25zZUR0byB9IGZyb20gXCIuLi8uLi9yZXN1bHRzL21vZGVscy90ZWFtTGlzdFJlc3BvbnNlRHRvXCI7XG5pbXBvcnQgeyBUZWFtTWV0YURhdGFEdG8gfSBmcm9tIFwiLi4vLi4vcmVzdWx0cy9tb2RlbHMvdGVhbU1ldGFEYXRhRHRvXCI7XG5pbXBvcnQgeyBJVmlld1N0YXRlIH0gZnJvbSBcIi4uLy4uL3ZpZXdNb2RlbC9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBBY3Rpb25Db2xsZWN0aW9uRHRvIH0gZnJvbSBcIi4uL21vZGVscy9hY3Rpb25SZXNwb25zZUR0b1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpb25TdGF0ZSBleHRlbmRzIElWaWV3U3RhdGUge1xuICAgYWN0aW9uczogQWN0aW9uQ29sbGVjdGlvbkR0bztcbiAgIGZhY3RvclNjb3JlczogRmFjdG9yU2NvcmVDb2xsZWN0aW9uRHRvO1xuICAgdGVhbUxpc3Q6IFRlYW1MaXN0UmVzcG9uc2VEdG87XG4gICB0ZWFtTWV0YURhdGE6IFRlYW1NZXRhRGF0YUR0bztcbn1cbiJdfQ==
@@ -20,10 +20,10 @@ export class InterventionOwnerToStringPipe {
20
20
  return "Other";
21
21
  }
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: InterventionOwnerToStringPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.4", ngImport: i0, type: InterventionOwnerToStringPipe, name: "interventionOwnerToString" }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InterventionOwnerToStringPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: InterventionOwnerToStringPipe, name: "interventionOwnerToString" }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: InterventionOwnerToStringPipe, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InterventionOwnerToStringPipe, decorators: [{
27
27
  type: Pipe,
28
28
  args: [{
29
29
  name: 'interventionOwnerToString'