@openziti/ziti-console-lib 0.6.1 → 0.6.2

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 (51) hide show
  1. package/assets/html/api-sessions.htm +0 -1
  2. package/assets/html/auth-policies.htm +1 -1
  3. package/assets/html/cas.htm +1 -7
  4. package/assets/html/config-types.htm +0 -1
  5. package/assets/html/jwt-signers.htm +1 -1
  6. package/assets/html/posture-checks.htm +1 -1
  7. package/assets/styles/global.scss +21 -0
  8. package/esm2022/lib/features/config-editor/config-editor.component.mjs +1 -3
  9. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +2 -1
  10. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -1
  11. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +6 -3
  12. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +20 -8
  13. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +7 -7
  14. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +1 -1
  15. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +2 -2
  16. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +2 -2
  17. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
  18. package/esm2022/lib/pages/identities/identities-page.component.mjs +2 -2
  19. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +27 -7
  20. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +2 -2
  21. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -2
  22. package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
  23. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +2 -2
  24. package/esm2022/lib/services/tab-name.service.mjs +8 -5
  25. package/esm2022/lib/shared/list-page-service.class.mjs +5 -2
  26. package/esm2022/lib/version.mjs +2 -2
  27. package/fesm2022/openziti-ziti-console-lib.mjs +73 -36
  28. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  29. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  30. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  31. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  32. package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -1
  33. package/lib/features/wrappers/zac-wrapper.service.d.ts +2 -2
  34. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
  35. package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -1
  36. package/lib/pages/auth-policies/auth-policies-page.service.d.ts +1 -1
  37. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -1
  38. package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
  39. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +1 -1
  40. package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -1
  41. package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
  42. package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +3 -0
  43. package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts.map +1 -1
  44. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -1
  45. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  46. package/lib/pages/services/services-page.component.d.ts.map +1 -1
  47. package/lib/pages/terminators/terminators-page.component.d.ts.map +1 -1
  48. package/lib/services/tab-name.service.d.ts.map +1 -1
  49. package/lib/shared/list-page-service.class.d.ts +1 -0
  50. package/lib/shared/list-page-service.class.d.ts.map +1 -1
  51. package/package.json +1 -1
@@ -6,7 +6,7 @@ import { Subject, BehaviorSubject, firstValueFrom, tap, map, Subscription } from
6
6
  import { catchError } from 'rxjs/operators';
7
7
  import _, { isEmpty, isNumber, includes, isNil, defer, cloneDeep, set, invoke, get, debounce, isNaN as isNaN$1, forEach, isFunction, unset, isBoolean, keys, isEqual, isObject, isArray, forOwn, invert, map as map$1, isString, some, filter, delay, sortedUniq } from 'lodash';
8
8
  import * as i1$1 from '@angular/common/http';
9
- import { HttpClient, HttpParams, HttpClientModule } from '@angular/common/http';
9
+ import { HttpClient, HttpParams, HttpClientModule, HttpHeaders } from '@angular/common/http';
10
10
  import * as i1 from 'ngx-logger';
11
11
  import { NgxLoggerLevel } from 'ngx-logger';
12
12
  import { __decorate, __param } from 'tslib';
@@ -2606,9 +2606,9 @@ let ListPageServiceClass = class ListPageServiceClass {
2606
2606
  if (!isEmpty(this.settings?.settings?.session?.id)) {
2607
2607
  if (this.currentSettings?.session?.id !== settings?.session?.id && this.refreshData) {
2608
2608
  this.refreshData();
2609
- this.currentSettings = settings;
2610
2609
  }
2611
2610
  }
2611
+ this.currentSettings = settings;
2612
2612
  });
2613
2613
  router.events.subscribe((event) => {
2614
2614
  if (event => event instanceof NavigationEnd) {
@@ -2680,6 +2680,9 @@ let ListPageServiceClass = class ListPageServiceClass {
2680
2680
  }
2681
2681
  return text?.length > 0;
2682
2682
  }
2683
+ getNetworkJwt() {
2684
+ return this.dataService.get('network-jwts', {}, []);
2685
+ }
2683
2686
  openEditForm(itemId = '', basePath) {
2684
2687
  if (isEmpty(itemId)) {
2685
2688
  itemId = 'create';
@@ -4665,17 +4668,20 @@ class TabNameService {
4665
4668
  ["routers", [
4666
4669
  { label: 'Routers', url: '/routers' },
4667
4670
  { label: 'Transit Routers', url: '/transit-routers' },
4668
- { label: 'Router Policies', url: '/router-policies' },
4669
4671
  ],
4670
4672
  ],
4671
4673
  ["policies", [
4672
4674
  { label: 'Service Policies', url: '/service-policies' },
4673
4675
  { label: 'Router Policies', url: '/router-policies' },
4674
- { label: 'Service Router Policies', url: '/service-router-policies' },
4676
+ { label: 'Service Router Policies', url: '/service-router-policies' }
4677
+ ]
4678
+ ],
4679
+ ["authentication", [
4680
+ { label: 'Certificate Authorities', url: '/certificate-authorities' },
4675
4681
  { label: 'Auth Policies', url: '/auth-policies' },
4676
4682
  { label: 'JWT Signers', url: '/jwt-signers' },
4677
- ],
4678
- ],
4683
+ ]
4684
+ ]
4679
4685
  ]);
4680
4686
  }
4681
4687
  getTabs(key) {
@@ -7874,7 +7880,7 @@ class ConfigurationsPageComponent extends ListPageComponent {
7874
7880
  super(filterService, svc, consoleEvents, dialogForm);
7875
7881
  this.svc = svc;
7876
7882
  this.tabNames = tabNames;
7877
- this.title = 'Configuration Management';
7883
+ this.title = 'Configurations';
7878
7884
  this.formDataChanged = false;
7879
7885
  }
7880
7886
  ngOnInit() {
@@ -8405,6 +8411,9 @@ class FormHeaderComponent {
8405
8411
  return hasMoreActions;
8406
8412
  }
8407
8413
  requestAction(action) {
8414
+ if (action?.name === 'save' && this.saveDisabled) {
8415
+ return;
8416
+ }
8408
8417
  if (action.name === 'toggle-view') {
8409
8418
  if (action.data === 'simple') {
8410
8419
  this.formView = 'raw';
@@ -8432,11 +8441,11 @@ class FormHeaderComponent {
8432
8441
  });
8433
8442
  }
8434
8443
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormHeaderComponent, selector: "lib-form-header", inputs: { data: "data", title: "title", moreActions: "moreActions", formView: "formView", saveDisabled: "saveDisabled", saveTooltip: "saveTooltip", actionButtonText: "actionButtonText", moreActionsText: "moreActionsText" }, outputs: { formViewChange: "formViewChange", actionRequested: "actionRequested" }, ngImport: i0, template: "<div class=\"form-header-container\" [ngClass]=\"{'show-more-actions': (moreActions && moreActions.length > 0 && data.id)}\">\n <div class=\"form-header-group\">\n <div class=\"form-title-container\">\n <div class=\"form-title-back-button\" (click)=\"requestAction({name: 'close'})\">\n <div class=\"form-title-back-button-image\"></div>\n <div class=\"form-title-back-button-line\"></div>\n </div>\n <div class=\"form-header-title-text\">\n <span class=\"form-title\">{{title}}</span>\n <span class=\"form-title title-name\" *ngIf=\"data.name\">{{data.name}}</span>\n </div>\n </div>\n <div class=\"header-actions-container\">\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'simple'}\"\n (click)=\"requestAction({name: 'toggle-view', data: 'raw'})\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"requestAction({name: 'toggle-view', data: formView})\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': formView === 'simple', 'toggle-right': formView === 'raw'}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'raw'}\"\n (click)=\"requestAction({name:'toggle-view', data: 'simple'})\"\n >\n JSON\n </span>\n </div>\n <div class=\"more-actions-container\" [ngClass]=\"{'more-actions-open': showActionsDropDown}\" *ngIf=\"hasMoreActions\" (click)=\"showMoreActions()\">\n <div class=\"more-actions-button\">\n <div class=\"more-actions-label\">\n <div class=\"more-actions-text\">{{moreActionsText}}</div>\n <div class=\"more-actions-arrow\"></div>\n </div>\n </div>\n <div class=\"more-actions-list\" *ngIf=\"showActionsDropDown\" (clickOutside)=\"closeActionsMoreActions()\">\n <div\n *ngFor=\"let action of moreActions\"\n class=\"more-actions-item\"\n (click)=\"requestAction(action)\"\n >\n {{action.label}}\n </div>\n </div>\n </div>\n <div class=\"save-button\"\n (click)=\"requestAction({name: 'save'})\"\n [ngClass]=\"{'save-disabled': saveDisabled}\"\n matTooltip=\"{{saveDisabled ? saveTooltip : ''}}\"\n matTooltipPosition=\"below\"\n >{{actionButtonText}}</div>\n </div>\n </div>\n <div class=\"form-header-group badges-container\">\n <div *ngFor=\"let badge of data.badges\" class=\"header-badge-container {{badge.class}}\">\n <span *ngIf=\"badge.circle\" class=\"circle {{badge.circle}}\"></span>\n <span class=\"badge-label\">{{badge.label}}</span>\n </div>\n </div>\n</div>", styles: [":host{position:relative;width:100%;max-width:1100px;margin-bottom:10px}.form-header-container{display:flex;flex-direction:column;width:100%}.form-header-container.show-more-actions .form-title-container{max-width:calc(100% - 375px)}.form-header-container.show-more-actions .header-actions-container{min-width:375px}.form-header-container .form-header-group{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%}.form-header-container .form-header-group.badges-container{justify-content:flex-start;margin-left:30px;margin-top:5px;gap:10px}.form-header-container .form-title-container{display:flex;flex-direction:row;justify-content:flex-start;max-width:calc(100% - 200px)}.form-header-container .form-title-container .form-header-title-text{overflow:hidden;display:block;white-space:nowrap;text-overflow:ellipsis}.form-header-container .form-title-container .form-title{width:100%;flex:1 1 auto;font-weight:700;font-size:22px;color:var(--tableText);margin-left:7px;min-width:130px;text-wrap:nowrap}.form-header-container .form-title-container .form-title.title-name{color:var(--primary);margin-left:5px}.form-header-container .form-title-container .form-title-back-button{display:flex;align-items:center;justify-content:center;position:relative;transform:scaleY(.8);cursor:pointer;padding-right:6px;margin-top:2px;margin-left:4px;transition:.3s}.form-header-container .form-title-container .form-title-back-button:hover{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(90%);transition:.3s}.form-header-container .form-title-container .form-title-back-button:active{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(80%);transition:.3s}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-image{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23434c5e%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 14px;width:20px;height:14px;transform:rotate(90deg)}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-line{border-color:var(--tableText);border-style:solid;border-left-width:1px;border-right-width:1px;width:14px;position:absolute;left:8px}.form-header-container .header-actions-container{display:flex;flex-direction:row;min-width:180px;justify-content:flex-end}.form-header-container .header-actions-container .save-button{min-width:65px;height:33px;text-transform:none}.form-header-container .header-actions-container .save-button.save-disabled{filter:grayscale(1);opacity:.3;pointer:not-allowed}.more-actions-container{width:150px;height:33px;display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer;z-index:999999;margin-right:20px}.more-actions-container .more-actions-button{height:100%;width:100%;background-color:var(--inputBorder);display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer}.more-actions-container .more-actions-button:hover{outline:0;filter:brightness(95%)}.more-actions-container .more-actions-label{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;margin-left:15px;margin-right:10px}.more-actions-container .more-actions-label .more-actions-arrow{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23668291%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 10px;width:20px;height:10px;transition:.3s}.more-actions-container .more-actions-label .more-actions-text{color:var(--tableText);font-weight:600}.more-actions-container .more-actions-list{display:flex;flex-direction:column;background-color:var(--white);position:absolute;top:33px;width:100%;box-shadow:0 3px 5px 1px var(--boxShadow);border-radius:5px}.more-actions-container .more-actions-item{display:flex;flex-direction:row;align-items:center;height:25px;width:100%;padding-left:15px;color:var(--tableText);cursor:pointer}.more-actions-container .more-actions-item:hover{background-color:var(--inputBorder)}.more-actions-container.more-actions-open .more-actions-arrow{transform:rotate(180deg)}.form-header-toggle-container{display:flex;flex-direction:row;align-items:center;margin-right:20px}.form-header-toggle-container .form-header-toggle{display:flex;flex-direction:row;width:30px;height:18px;border-radius:10px;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);margin-left:5px;cursor:pointer;position:relative;margin-right:5px}.form-header-toggle-container .form-header-toggle:hover{filter:brightness(90%)}.form-header-toggle-container .form-header-toggle:active{transform:translateY(1px);filter:brightness(80%)}.form-header-toggle-container .form-header-toggle .form-toggle-switch{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;height:100%;margin-left:3px;position:absolute;transition:.5s;left:0}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right{left:10px}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right .form-toggle-indicator{border-color:var(--red)}.form-header-toggle-container .form-header-toggle .form-toggle-switch .form-toggle-indicator{height:10px;border-color:var(--green);border-style:solid;border-left-width:1px;border-right-width:1px;position:relative;margin-left:2px}.form-header-toggle-container .toggle-option-text{font-size:13px;font-weight:600;color:var(--placeholder);cursor:pointer}.form-header-toggle-container .toggle-option-text:hover{filter:brightness(90%)}.form-header-toggle-container .toggle-option-text:hover.toggle-option-selected{filter:unset}.form-header-toggle-container .toggle-option-text.toggle-option-selected{color:var(--tableText);cursor:default}.header-badge-container{height:30px;display:flex;flex-direction:row;align-items:center;border-radius:30px;padding:0 12px;font-weight:600;color:var(--tableText);background:var(--inputBorder)}.header-badge-container.online{background-color:var(--greenShadow)}.header-badge-container.unreg{background-color:var(--redShadow);color:var(--red)}.header-badge-container .badge-label{margin-left:5px}.header-badge-container .circle.false{background-color:var(--white)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
8444
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormHeaderComponent, selector: "lib-form-header", inputs: { data: "data", title: "title", moreActions: "moreActions", formView: "formView", saveDisabled: "saveDisabled", saveTooltip: "saveTooltip", actionButtonText: "actionButtonText", moreActionsText: "moreActionsText" }, outputs: { formViewChange: "formViewChange", actionRequested: "actionRequested" }, ngImport: i0, template: "<div class=\"form-header-container\" [ngClass]=\"{'show-more-actions': (moreActions && moreActions.length > 0 && data.id)}\">\n <div class=\"form-header-group\">\n <div class=\"form-title-container\">\n <div class=\"form-title-back-button\" (click)=\"requestAction({name: 'close'})\">\n <div class=\"form-title-back-button-image\"></div>\n <div class=\"form-title-back-button-line\"></div>\n </div>\n <div class=\"form-header-title-text\">\n <span class=\"form-title\">{{title}}</span>\n <span class=\"form-title title-name\" *ngIf=\"data.name\">{{data.name}}</span>\n </div>\n </div>\n <div class=\"header-actions-container\">\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'simple'}\"\n (click)=\"requestAction({name: 'toggle-view', data: 'raw'})\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"requestAction({name: 'toggle-view', data: formView})\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': formView === 'simple', 'toggle-right': formView === 'raw'}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'raw'}\"\n (click)=\"requestAction({name:'toggle-view', data: 'simple'})\"\n >\n JSON\n </span>\n </div>\n <div class=\"more-actions-container\" [ngClass]=\"{'more-actions-open': showActionsDropDown}\" *ngIf=\"hasMoreActions\" (click)=\"showMoreActions()\">\n <div class=\"more-actions-button\">\n <div class=\"more-actions-label\">\n <div class=\"more-actions-text\">{{moreActionsText}}</div>\n <div class=\"more-actions-arrow\"></div>\n </div>\n </div>\n <div class=\"more-actions-list\" *ngIf=\"showActionsDropDown\" (clickOutside)=\"closeActionsMoreActions()\">\n <div\n *ngFor=\"let action of moreActions\"\n class=\"more-actions-item\"\n (click)=\"requestAction(action)\"\n >\n {{action.label}}\n </div>\n </div>\n </div>\n <div class=\"save-button\"\n (click)=\"requestAction({name: 'save'})\"\n [ngClass]=\"{'save-disabled': saveDisabled}\"\n matTooltip=\"{{saveDisabled ? saveTooltip : ''}}\"\n matTooltipPosition=\"below\"\n >{{actionButtonText}}</div>\n </div>\n </div>\n <div class=\"form-header-group badges-container\">\n <div *ngFor=\"let badge of data.badges\" class=\"header-badge-container {{badge.class}}\">\n <span *ngIf=\"badge.circle\" class=\"circle {{badge.circle}}\"></span>\n <span class=\"badge-label\">{{badge.label}}</span>\n </div>\n </div>\n</div>", styles: [":host{position:relative;width:100%;max-width:1100px;margin-bottom:10px}.form-header-container{display:flex;flex-direction:column;width:100%}.form-header-container.show-more-actions .form-title-container{max-width:calc(100% - 375px)}.form-header-container.show-more-actions .header-actions-container{min-width:375px}.form-header-container .form-header-group{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%}.form-header-container .form-header-group.badges-container{justify-content:flex-start;margin-left:30px;margin-top:5px;gap:10px}.form-header-container .form-title-container{display:flex;flex-direction:row;justify-content:flex-start;max-width:calc(100% - 200px)}.form-header-container .form-title-container .form-header-title-text{overflow:hidden;display:block;white-space:nowrap;text-overflow:ellipsis}.form-header-container .form-title-container .form-title{width:100%;flex:1 1 auto;font-weight:700;font-size:22px;color:var(--tableText);margin-left:7px;min-width:130px;text-wrap:nowrap}.form-header-container .form-title-container .form-title.title-name{color:var(--primary);margin-left:5px}.form-header-container .form-title-container .form-title-back-button{display:flex;align-items:center;justify-content:center;position:relative;transform:scaleY(.8);cursor:pointer;padding-right:6px;margin-top:2px;margin-left:4px;transition:.3s}.form-header-container .form-title-container .form-title-back-button:hover{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(90%);transition:.3s}.form-header-container .form-title-container .form-title-back-button:active{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(80%);transition:.3s}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-image{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23434c5e%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 14px;width:20px;height:14px;transform:rotate(90deg)}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-line{border-color:var(--tableText);border-style:solid;border-left-width:1px;border-right-width:1px;width:14px;position:absolute;left:8px}.form-header-container .header-actions-container{display:flex;flex-direction:row;min-width:180px;justify-content:flex-end}.form-header-container .header-actions-container .save-button{min-width:65px;height:33px;text-transform:none}.form-header-container .header-actions-container .save-button.save-disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.form-header-container .header-actions-container .save-button.save-disabled:active{transform:translateY(0);background:var(--primary)}.more-actions-container{width:150px;height:33px;display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer;z-index:999999;margin-right:20px}.more-actions-container .more-actions-button{height:100%;width:100%;background-color:var(--inputBorder);display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer}.more-actions-container .more-actions-button:hover{outline:0;filter:brightness(95%)}.more-actions-container .more-actions-label{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;margin-left:15px;margin-right:10px}.more-actions-container .more-actions-label .more-actions-arrow{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23668291%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 10px;width:20px;height:10px;transition:.3s}.more-actions-container .more-actions-label .more-actions-text{color:var(--tableText);font-weight:600}.more-actions-container .more-actions-list{display:flex;flex-direction:column;background-color:var(--white);position:absolute;top:33px;width:100%;box-shadow:0 3px 5px 1px var(--boxShadow);border-radius:5px}.more-actions-container .more-actions-item{display:flex;flex-direction:row;align-items:center;height:25px;width:100%;padding-left:15px;color:var(--tableText);cursor:pointer}.more-actions-container .more-actions-item:hover{background-color:var(--inputBorder)}.more-actions-container.more-actions-open .more-actions-arrow{transform:rotate(180deg)}.form-header-toggle-container{display:flex;flex-direction:row;align-items:center;margin-right:20px}.form-header-toggle-container .form-header-toggle{display:flex;flex-direction:row;width:30px;height:18px;border-radius:10px;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);margin-left:5px;cursor:pointer;position:relative;margin-right:5px}.form-header-toggle-container .form-header-toggle:hover{filter:brightness(90%)}.form-header-toggle-container .form-header-toggle:active{transform:translateY(1px);filter:brightness(80%)}.form-header-toggle-container .form-header-toggle .form-toggle-switch{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;height:100%;margin-left:3px;position:absolute;transition:.5s;left:0}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right{left:10px}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right .form-toggle-indicator{border-color:var(--red)}.form-header-toggle-container .form-header-toggle .form-toggle-switch .form-toggle-indicator{height:10px;border-color:var(--green);border-style:solid;border-left-width:1px;border-right-width:1px;position:relative;margin-left:2px}.form-header-toggle-container .toggle-option-text{font-size:13px;font-weight:600;color:var(--placeholder);cursor:pointer}.form-header-toggle-container .toggle-option-text:hover{filter:brightness(90%)}.form-header-toggle-container .toggle-option-text:hover.toggle-option-selected{filter:unset}.form-header-toggle-container .toggle-option-text.toggle-option-selected{color:var(--tableText);cursor:default}.header-badge-container{height:30px;display:flex;flex-direction:row;align-items:center;border-radius:30px;padding:0 12px;font-weight:600;color:var(--tableText);background:var(--inputBorder)}.header-badge-container.online{background-color:var(--greenShadow)}.header-badge-container.unreg{background-color:var(--redShadow);color:var(--red)}.header-badge-container .badge-label{margin-left:5px}.header-badge-container .circle.false{background-color:var(--white)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
8436
8445
  }
8437
8446
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormHeaderComponent, decorators: [{
8438
8447
  type: Component,
8439
- args: [{ selector: 'lib-form-header', template: "<div class=\"form-header-container\" [ngClass]=\"{'show-more-actions': (moreActions && moreActions.length > 0 && data.id)}\">\n <div class=\"form-header-group\">\n <div class=\"form-title-container\">\n <div class=\"form-title-back-button\" (click)=\"requestAction({name: 'close'})\">\n <div class=\"form-title-back-button-image\"></div>\n <div class=\"form-title-back-button-line\"></div>\n </div>\n <div class=\"form-header-title-text\">\n <span class=\"form-title\">{{title}}</span>\n <span class=\"form-title title-name\" *ngIf=\"data.name\">{{data.name}}</span>\n </div>\n </div>\n <div class=\"header-actions-container\">\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'simple'}\"\n (click)=\"requestAction({name: 'toggle-view', data: 'raw'})\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"requestAction({name: 'toggle-view', data: formView})\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': formView === 'simple', 'toggle-right': formView === 'raw'}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'raw'}\"\n (click)=\"requestAction({name:'toggle-view', data: 'simple'})\"\n >\n JSON\n </span>\n </div>\n <div class=\"more-actions-container\" [ngClass]=\"{'more-actions-open': showActionsDropDown}\" *ngIf=\"hasMoreActions\" (click)=\"showMoreActions()\">\n <div class=\"more-actions-button\">\n <div class=\"more-actions-label\">\n <div class=\"more-actions-text\">{{moreActionsText}}</div>\n <div class=\"more-actions-arrow\"></div>\n </div>\n </div>\n <div class=\"more-actions-list\" *ngIf=\"showActionsDropDown\" (clickOutside)=\"closeActionsMoreActions()\">\n <div\n *ngFor=\"let action of moreActions\"\n class=\"more-actions-item\"\n (click)=\"requestAction(action)\"\n >\n {{action.label}}\n </div>\n </div>\n </div>\n <div class=\"save-button\"\n (click)=\"requestAction({name: 'save'})\"\n [ngClass]=\"{'save-disabled': saveDisabled}\"\n matTooltip=\"{{saveDisabled ? saveTooltip : ''}}\"\n matTooltipPosition=\"below\"\n >{{actionButtonText}}</div>\n </div>\n </div>\n <div class=\"form-header-group badges-container\">\n <div *ngFor=\"let badge of data.badges\" class=\"header-badge-container {{badge.class}}\">\n <span *ngIf=\"badge.circle\" class=\"circle {{badge.circle}}\"></span>\n <span class=\"badge-label\">{{badge.label}}</span>\n </div>\n </div>\n</div>", styles: [":host{position:relative;width:100%;max-width:1100px;margin-bottom:10px}.form-header-container{display:flex;flex-direction:column;width:100%}.form-header-container.show-more-actions .form-title-container{max-width:calc(100% - 375px)}.form-header-container.show-more-actions .header-actions-container{min-width:375px}.form-header-container .form-header-group{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%}.form-header-container .form-header-group.badges-container{justify-content:flex-start;margin-left:30px;margin-top:5px;gap:10px}.form-header-container .form-title-container{display:flex;flex-direction:row;justify-content:flex-start;max-width:calc(100% - 200px)}.form-header-container .form-title-container .form-header-title-text{overflow:hidden;display:block;white-space:nowrap;text-overflow:ellipsis}.form-header-container .form-title-container .form-title{width:100%;flex:1 1 auto;font-weight:700;font-size:22px;color:var(--tableText);margin-left:7px;min-width:130px;text-wrap:nowrap}.form-header-container .form-title-container .form-title.title-name{color:var(--primary);margin-left:5px}.form-header-container .form-title-container .form-title-back-button{display:flex;align-items:center;justify-content:center;position:relative;transform:scaleY(.8);cursor:pointer;padding-right:6px;margin-top:2px;margin-left:4px;transition:.3s}.form-header-container .form-title-container .form-title-back-button:hover{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(90%);transition:.3s}.form-header-container .form-title-container .form-title-back-button:active{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(80%);transition:.3s}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-image{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23434c5e%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 14px;width:20px;height:14px;transform:rotate(90deg)}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-line{border-color:var(--tableText);border-style:solid;border-left-width:1px;border-right-width:1px;width:14px;position:absolute;left:8px}.form-header-container .header-actions-container{display:flex;flex-direction:row;min-width:180px;justify-content:flex-end}.form-header-container .header-actions-container .save-button{min-width:65px;height:33px;text-transform:none}.form-header-container .header-actions-container .save-button.save-disabled{filter:grayscale(1);opacity:.3;pointer:not-allowed}.more-actions-container{width:150px;height:33px;display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer;z-index:999999;margin-right:20px}.more-actions-container .more-actions-button{height:100%;width:100%;background-color:var(--inputBorder);display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer}.more-actions-container .more-actions-button:hover{outline:0;filter:brightness(95%)}.more-actions-container .more-actions-label{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;margin-left:15px;margin-right:10px}.more-actions-container .more-actions-label .more-actions-arrow{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23668291%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 10px;width:20px;height:10px;transition:.3s}.more-actions-container .more-actions-label .more-actions-text{color:var(--tableText);font-weight:600}.more-actions-container .more-actions-list{display:flex;flex-direction:column;background-color:var(--white);position:absolute;top:33px;width:100%;box-shadow:0 3px 5px 1px var(--boxShadow);border-radius:5px}.more-actions-container .more-actions-item{display:flex;flex-direction:row;align-items:center;height:25px;width:100%;padding-left:15px;color:var(--tableText);cursor:pointer}.more-actions-container .more-actions-item:hover{background-color:var(--inputBorder)}.more-actions-container.more-actions-open .more-actions-arrow{transform:rotate(180deg)}.form-header-toggle-container{display:flex;flex-direction:row;align-items:center;margin-right:20px}.form-header-toggle-container .form-header-toggle{display:flex;flex-direction:row;width:30px;height:18px;border-radius:10px;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);margin-left:5px;cursor:pointer;position:relative;margin-right:5px}.form-header-toggle-container .form-header-toggle:hover{filter:brightness(90%)}.form-header-toggle-container .form-header-toggle:active{transform:translateY(1px);filter:brightness(80%)}.form-header-toggle-container .form-header-toggle .form-toggle-switch{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;height:100%;margin-left:3px;position:absolute;transition:.5s;left:0}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right{left:10px}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right .form-toggle-indicator{border-color:var(--red)}.form-header-toggle-container .form-header-toggle .form-toggle-switch .form-toggle-indicator{height:10px;border-color:var(--green);border-style:solid;border-left-width:1px;border-right-width:1px;position:relative;margin-left:2px}.form-header-toggle-container .toggle-option-text{font-size:13px;font-weight:600;color:var(--placeholder);cursor:pointer}.form-header-toggle-container .toggle-option-text:hover{filter:brightness(90%)}.form-header-toggle-container .toggle-option-text:hover.toggle-option-selected{filter:unset}.form-header-toggle-container .toggle-option-text.toggle-option-selected{color:var(--tableText);cursor:default}.header-badge-container{height:30px;display:flex;flex-direction:row;align-items:center;border-radius:30px;padding:0 12px;font-weight:600;color:var(--tableText);background:var(--inputBorder)}.header-badge-container.online{background-color:var(--greenShadow)}.header-badge-container.unreg{background-color:var(--redShadow);color:var(--red)}.header-badge-container .badge-label{margin-left:5px}.header-badge-container .circle.false{background-color:var(--white)}\n"] }]
8448
+ args: [{ selector: 'lib-form-header', template: "<div class=\"form-header-container\" [ngClass]=\"{'show-more-actions': (moreActions && moreActions.length > 0 && data.id)}\">\n <div class=\"form-header-group\">\n <div class=\"form-title-container\">\n <div class=\"form-title-back-button\" (click)=\"requestAction({name: 'close'})\">\n <div class=\"form-title-back-button-image\"></div>\n <div class=\"form-title-back-button-line\"></div>\n </div>\n <div class=\"form-header-title-text\">\n <span class=\"form-title\">{{title}}</span>\n <span class=\"form-title title-name\" *ngIf=\"data.name\">{{data.name}}</span>\n </div>\n </div>\n <div class=\"header-actions-container\">\n <div class=\"form-header-toggle-container\">\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'simple'}\"\n (click)=\"requestAction({name: 'toggle-view', data: 'raw'})\"\n >\n FORM\n </span>\n <div class=\"form-header-toggle\" (click)=\"requestAction({name: 'toggle-view', data: formView})\">\n <div\n class=\"form-toggle-switch\"\n [ngClass]=\"{'toggle-left': formView === 'simple', 'toggle-right': formView === 'raw'}\"\n >\n <div class=\"form-toggle-indicator\"></div>\n <div class=\"form-toggle-indicator\"></div>\n </div>\n </div>\n <span\n class=\"toggle-option-text\"\n [ngClass]=\"{'toggle-option-selected': formView === 'raw'}\"\n (click)=\"requestAction({name:'toggle-view', data: 'simple'})\"\n >\n JSON\n </span>\n </div>\n <div class=\"more-actions-container\" [ngClass]=\"{'more-actions-open': showActionsDropDown}\" *ngIf=\"hasMoreActions\" (click)=\"showMoreActions()\">\n <div class=\"more-actions-button\">\n <div class=\"more-actions-label\">\n <div class=\"more-actions-text\">{{moreActionsText}}</div>\n <div class=\"more-actions-arrow\"></div>\n </div>\n </div>\n <div class=\"more-actions-list\" *ngIf=\"showActionsDropDown\" (clickOutside)=\"closeActionsMoreActions()\">\n <div\n *ngFor=\"let action of moreActions\"\n class=\"more-actions-item\"\n (click)=\"requestAction(action)\"\n >\n {{action.label}}\n </div>\n </div>\n </div>\n <div class=\"save-button\"\n (click)=\"requestAction({name: 'save'})\"\n [ngClass]=\"{'save-disabled': saveDisabled}\"\n matTooltip=\"{{saveDisabled ? saveTooltip : ''}}\"\n matTooltipPosition=\"below\"\n >{{actionButtonText}}</div>\n </div>\n </div>\n <div class=\"form-header-group badges-container\">\n <div *ngFor=\"let badge of data.badges\" class=\"header-badge-container {{badge.class}}\">\n <span *ngIf=\"badge.circle\" class=\"circle {{badge.circle}}\"></span>\n <span class=\"badge-label\">{{badge.label}}</span>\n </div>\n </div>\n</div>", styles: [":host{position:relative;width:100%;max-width:1100px;margin-bottom:10px}.form-header-container{display:flex;flex-direction:column;width:100%}.form-header-container.show-more-actions .form-title-container{max-width:calc(100% - 375px)}.form-header-container.show-more-actions .header-actions-container{min-width:375px}.form-header-container .form-header-group{display:flex;flex-direction:row;justify-content:space-between;align-items:center;width:100%}.form-header-container .form-header-group.badges-container{justify-content:flex-start;margin-left:30px;margin-top:5px;gap:10px}.form-header-container .form-title-container{display:flex;flex-direction:row;justify-content:flex-start;max-width:calc(100% - 200px)}.form-header-container .form-title-container .form-header-title-text{overflow:hidden;display:block;white-space:nowrap;text-overflow:ellipsis}.form-header-container .form-title-container .form-title{width:100%;flex:1 1 auto;font-weight:700;font-size:22px;color:var(--tableText);margin-left:7px;min-width:130px;text-wrap:nowrap}.form-header-container .form-title-container .form-title.title-name{color:var(--primary);margin-left:5px}.form-header-container .form-title-container .form-title-back-button{display:flex;align-items:center;justify-content:center;position:relative;transform:scaleY(.8);cursor:pointer;padding-right:6px;margin-top:2px;margin-left:4px;transition:.3s}.form-header-container .form-title-container .form-title-back-button:hover{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(90%);transition:.3s}.form-header-container .form-title-container .form-title-back-button:active{background-color:#fff;border-radius:var(--inputBorderRadius);filter:brightness(80%);transition:.3s}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-image{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23434c5e%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 14px;width:20px;height:14px;transform:rotate(90deg)}.form-header-container .form-title-container .form-title-back-button .form-title-back-button-line{border-color:var(--tableText);border-style:solid;border-left-width:1px;border-right-width:1px;width:14px;position:absolute;left:8px}.form-header-container .header-actions-container{display:flex;flex-direction:row;min-width:180px;justify-content:flex-end}.form-header-container .header-actions-container .save-button{min-width:65px;height:33px;text-transform:none}.form-header-container .header-actions-container .save-button.save-disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.form-header-container .header-actions-container .save-button.save-disabled:active{transform:translateY(0);background:var(--primary)}.more-actions-container{width:150px;height:33px;display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer;z-index:999999;margin-right:20px}.more-actions-container .more-actions-button{height:100%;width:100%;background-color:var(--inputBorder);display:flex;flex-direction:row;align-items:center;justify-content:center;border-radius:5px;position:relative;cursor:pointer}.more-actions-container .more-actions-button:hover{outline:0;filter:brightness(95%)}.more-actions-container .more-actions-label{display:flex;flex-direction:row;align-items:center;justify-content:space-between;width:100%;margin-left:15px;margin-right:10px}.more-actions-container .more-actions-label .more-actions-arrow{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22utf-8%22%3F%3E%3C!-- Generator%3A Adobe Illustrator 23.0.3%2C SVG Export Plug-In . SVG Version%3A 6.00 Build 0) --%3E%3Csvg id%3D'Stroke_Color' style%3D'enable-background%3Anew 0 0 20.2 10.8%3B' version%3D'1.1' viewBox%3D'0 0 20.2 10.8' x%3D'0px' xml%3Aspace%3D'preserve' xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg' y%3D'0px'%3E%3Cstyle type%3D'text%2Fcss'%3E%09.st0 %7B fill%3A %23668291%3B %7D%3C%2Fstyle%3E %3Cg%3E%09%3Cpath class%3D'st0' d%3D'M19.8%2C1.7c0%2C0.4-0.1%2C0.7-0.4%2C0.9l-8.5%2C7.3c-0.5%2C0.4-1.2%2C0.4-1.6%2C0L0.7%2C2.7C0.2%2C2.2%2C0.2%2C1.5%2C0.6%2C0.9%09%09c0.5-0.5%2C1.2-0.6%2C1.8-0.1l7.7%2C6.6l7.7-6.6c0.5-0.5%2C1.3-0.4%2C1.8%2C0.1C19.7%2C1.2%2C19.8%2C1.5%2C19.8%2C1.7z'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E\");background-size:20px 10px;width:20px;height:10px;transition:.3s}.more-actions-container .more-actions-label .more-actions-text{color:var(--tableText);font-weight:600}.more-actions-container .more-actions-list{display:flex;flex-direction:column;background-color:var(--white);position:absolute;top:33px;width:100%;box-shadow:0 3px 5px 1px var(--boxShadow);border-radius:5px}.more-actions-container .more-actions-item{display:flex;flex-direction:row;align-items:center;height:25px;width:100%;padding-left:15px;color:var(--tableText);cursor:pointer}.more-actions-container .more-actions-item:hover{background-color:var(--inputBorder)}.more-actions-container.more-actions-open .more-actions-arrow{transform:rotate(180deg)}.form-header-toggle-container{display:flex;flex-direction:row;align-items:center;margin-right:20px}.form-header-toggle-container .form-header-toggle{display:flex;flex-direction:row;width:30px;height:18px;border-radius:10px;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);margin-left:5px;cursor:pointer;position:relative;margin-right:5px}.form-header-toggle-container .form-header-toggle:hover{filter:brightness(90%)}.form-header-toggle-container .form-header-toggle:active{transform:translateY(1px);filter:brightness(80%)}.form-header-toggle-container .form-header-toggle .form-toggle-switch{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;height:100%;margin-left:3px;position:absolute;transition:.5s;left:0}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right{left:10px}.form-header-toggle-container .form-header-toggle .form-toggle-switch.toggle-right .form-toggle-indicator{border-color:var(--red)}.form-header-toggle-container .form-header-toggle .form-toggle-switch .form-toggle-indicator{height:10px;border-color:var(--green);border-style:solid;border-left-width:1px;border-right-width:1px;position:relative;margin-left:2px}.form-header-toggle-container .toggle-option-text{font-size:13px;font-weight:600;color:var(--placeholder);cursor:pointer}.form-header-toggle-container .toggle-option-text:hover{filter:brightness(90%)}.form-header-toggle-container .toggle-option-text:hover.toggle-option-selected{filter:unset}.form-header-toggle-container .toggle-option-text.toggle-option-selected{color:var(--tableText);cursor:default}.header-badge-container{height:30px;display:flex;flex-direction:row;align-items:center;border-radius:30px;padding:0 12px;font-weight:600;color:var(--tableText);background:var(--inputBorder)}.header-badge-container.online{background-color:var(--greenShadow)}.header-badge-container.unreg{background-color:var(--redShadow);color:var(--red)}.header-badge-container .badge-label{margin-left:5px}.header-badge-container .circle.false{background-color:var(--white)}\n"] }]
8440
8449
  }], ctorParameters: function () { return []; }, propDecorators: { data: [{
8441
8450
  type: Input
8442
8451
  }], title: [{
@@ -10334,7 +10343,7 @@ class IdentitiesPageComponent extends ListPageComponent {
10334
10343
  this.zacWrapperService = zacWrapperService;
10335
10344
  this.router = router;
10336
10345
  this.extService = extService;
10337
- this.title = 'Identity Management';
10346
+ this.title = 'Identities';
10338
10347
  this.isLoading = false;
10339
10348
  this.identityRoleAttributes = [];
10340
10349
  this.formDataChanged = false;
@@ -10527,7 +10536,7 @@ class EdgeRoutersPageComponent extends ListPageComponent {
10527
10536
  this.tabNames = tabNames;
10528
10537
  this.zacWrapperService = zacWrapperService;
10529
10538
  this.extService = extService;
10530
- this.title = 'Edge Router Management';
10539
+ this.title = 'Edge Routers';
10531
10540
  this.isLoading = false;
10532
10541
  this.edgeRouterRoleAttributes = [];
10533
10542
  this.formDataChanged = false;
@@ -10883,7 +10892,7 @@ class ServicesPageComponent extends ListPageComponent {
10883
10892
  this.serviceRoleAttributes = [];
10884
10893
  this.identityRoleAttributes = [];
10885
10894
  this.formDataChanged = false;
10886
- this.title = 'Manage Services';
10895
+ this.title = 'Services';
10887
10896
  let userLang = navigator.language || 'en-us';
10888
10897
  userLang = userLang.toLowerCase();
10889
10898
  }
@@ -15045,6 +15054,7 @@ class EdgeRouterFormComponent extends ProjectableForm {
15045
15054
  else {
15046
15055
  this.initData = this.formData;
15047
15056
  }
15057
+ this.extService.updateFormData(this.formData);
15048
15058
  }).finally(() => {
15049
15059
  this.isLoading = false;
15050
15060
  });
@@ -15705,10 +15715,8 @@ class ConfigEditorComponent {
15705
15715
  this.lColorArray = [
15706
15716
  'white',
15707
15717
  'white',
15708
- 'white',
15709
15718
  ];
15710
15719
  this.bColorArray = [
15711
- 'var(--formBase)',
15712
15720
  'var(--formGroup)',
15713
15721
  'var(--formSubGroup)'
15714
15722
  ];
@@ -17569,7 +17577,7 @@ class EdgeRouterPoliciesPageComponent extends ListPageComponent {
17569
17577
  this.routerRoleAttributes = [];
17570
17578
  this.identityRoleAttributes = [];
17571
17579
  this.formDataChanged = false;
17572
- this.title = 'Manage Edge Router Policies';
17580
+ this.title = 'Edge Router Policies';
17573
17581
  let userLang = navigator.language || 'en-us';
17574
17582
  userLang = userLang.toLowerCase();
17575
17583
  }
@@ -18127,7 +18135,7 @@ class ServicePoliciesPageComponent extends ListPageComponent {
18127
18135
  this.serviceRoleAttributes = [];
18128
18136
  this.identityRoleAttributes = [];
18129
18137
  this.formDataChanged = false;
18130
- this.title = 'Manage Service Policies';
18138
+ this.title = 'Service Policies';
18131
18139
  let userLang = navigator.language || 'en-us';
18132
18140
  userLang = userLang.toLowerCase();
18133
18141
  }
@@ -19535,7 +19543,7 @@ class ServiceEdgeRouterPoliciesPageComponent extends ListPageComponent {
19535
19543
  this.routerRoleAttributes = [];
19536
19544
  this.serviceRoleAttributes = [];
19537
19545
  this.formDataChanged = false;
19538
- this.title = 'Manage Service Edge Router Policies';
19546
+ this.title = 'Service Edge Router Policies';
19539
19547
  let userLang = navigator.language || 'en-us';
19540
19548
  userLang = userLang.toLowerCase();
19541
19549
  }
@@ -20245,7 +20253,7 @@ class TerminatorsPageComponent extends ListPageComponent {
20245
20253
  super(filterService, svc, consoleEvents, dialogForm);
20246
20254
  this.svc = svc;
20247
20255
  this.tabNames = tabNames;
20248
- this.title = 'Terminator Management';
20256
+ this.title = 'Terminators';
20249
20257
  this.formDataChanged = false;
20250
20258
  }
20251
20259
  ngOnInit() {
@@ -20501,6 +20509,7 @@ class ConfigurationFormComponent extends ProjectableForm {
20501
20509
  this._apiData = {};
20502
20510
  }
20503
20511
  ngOnInit() {
20512
+ this.svc.configJsonView = false;
20504
20513
  super.ngOnInit();
20505
20514
  this.settingsService.settingsChange.subscribe((results) => {
20506
20515
  this.settings = results;
@@ -20862,12 +20871,18 @@ class JwtSignersPageComponent extends ListPageComponent {
20862
20871
  super(filterService, svc, consoleEvents, dialogForm);
20863
20872
  this.svc = svc;
20864
20873
  this.tabNames = tabNames;
20865
- this.title = 'JWT Signers Management';
20874
+ this.title = 'JWT Signers';
20866
20875
  this.formDataChanged = false;
20867
20876
  }
20868
20877
  ngOnInit() {
20869
- this.tabs = this.tabNames.getTabs('policies');
20878
+ this.tabs = this.tabNames.getTabs('authentication');
20870
20879
  this.svc.refreshData = this.refreshData;
20880
+ this.svc.getNetworkJwt().then((result) => {
20881
+ if (isEmpty(result?.data)) {
20882
+ return;
20883
+ }
20884
+ this._networkJwt = result.data[0].token;
20885
+ });
20871
20886
  super.ngOnInit();
20872
20887
  }
20873
20888
  headerActionClicked(action) {
@@ -20919,12 +20934,23 @@ class JwtSignersPageComponent extends ListPageComponent {
20919
20934
  dataChanged(event) {
20920
20935
  this.formDataChanged = event;
20921
20936
  }
20937
+ get networkJwt() {
20938
+ return encodeURIComponent(this._networkJwt);
20939
+ }
20940
+ get networkJwtFilename() {
20941
+ let filename = 'network-jwt';
20942
+ if (this.svc?.currentSettings?.selectedEdgeController) {
20943
+ const urlObject = new URL(this.svc?.currentSettings?.selectedEdgeController);
20944
+ filename = urlObject.hostname;
20945
+ }
20946
+ return filename;
20947
+ }
20922
20948
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageComponent, deps: [{ token: JwtSignersPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i3$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
20923
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: JwtSignersPageComponent, selector: "lib-jwt-signers", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-configs-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'configurations'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}\n"], dependencies: [{ kind: "component", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: ["title", "tabs", "showAdd", "hideAction"], outputs: ["actionClicked"] }, { kind: "component", type: DataTableComponent, selector: "lib-data-table", inputs: ["rowData", "expandRowData", "collapseRowData", "rowValidation", "isTimeSearchAvailable", "isLoading", "tableId", "options", "validateService", "rowsToggled", "tableRefreshCount", "view", "serverSideDataSource", "allowDownload", "startCount", "endCount", "totalCount", "emptyMsg", "filterApplied", "menuItems", "headerActions", "noItemsClass", "entityTypeName", "showNoItemsAdd", "currentPage", "noItemsImage", "rowHeight", "filterName", "filterColumn", "columnDefinitions", "refreshCount"], outputs: ["actionRequested", "gridReady", "dragStart", "dragLeave", "pageChanged"] }] }); }
20949
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: JwtSignersPageComponent, selector: "lib-jwt-signers", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-configs-container\">\n <a\n *ngIf=\"_networkJwt\"\n class=\"network-jwt-link save-button\"\n href=\"data:application/ziti-jwt;charset=utf-8,{{networkJwt}}\"\n download=\"{{networkJwtFilename}}.jwt\"\n >\n Download Network JWT\n </a>\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'configurations'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}.network-jwt-link{position:absolute;right:90px;top:25px;z-index:10001;height:var(--buttonHeightSmall);padding-left:var(--buttonImagePaddingSmall);background-position:var(--buttonImagePositionSmall);background-image:url(/assets/svgs/DownloadKey.svg);background-repeat:no-repeat;background-size:var(--buttonImageSizeSmall);color:var(--white)}\n"], dependencies: [{ kind: "directive", type: i1$4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: ["title", "tabs", "showAdd", "hideAction"], outputs: ["actionClicked"] }, { kind: "component", type: DataTableComponent, selector: "lib-data-table", inputs: ["rowData", "expandRowData", "collapseRowData", "rowValidation", "isTimeSearchAvailable", "isLoading", "tableId", "options", "validateService", "rowsToggled", "tableRefreshCount", "view", "serverSideDataSource", "allowDownload", "startCount", "endCount", "totalCount", "emptyMsg", "filterApplied", "menuItems", "headerActions", "noItemsClass", "entityTypeName", "showNoItemsAdd", "currentPage", "noItemsImage", "rowHeight", "filterName", "filterColumn", "columnDefinitions", "refreshCount"], outputs: ["actionRequested", "gridReady", "dragStart", "dragLeave", "pageChanged"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
20924
20950
  }
20925
20951
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: JwtSignersPageComponent, decorators: [{
20926
20952
  type: Component,
20927
- args: [{ selector: 'lib-jwt-signers', template: "<div class=\"ziti-page-container ziti-configs-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'configurations'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}\n"] }]
20953
+ args: [{ selector: 'lib-jwt-signers', template: "<div class=\"ziti-page-container ziti-configs-container\">\n <a\n *ngIf=\"_networkJwt\"\n class=\"network-jwt-link save-button\"\n href=\"data:application/ziti-jwt;charset=utf-8,{{networkJwt}}\"\n download=\"{{networkJwtFilename}}.jwt\"\n >\n Download Network JWT\n </a>\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [showAdd]=\"!itemsSelected\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'configurations'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Configurations defined, Click the plus to add a Configuration.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n<lib-loading-indicator *ngIf=\"isLoading\" [isLoading]=\"isLoading\"></lib-loading-indicator>\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}.network-jwt-link{position:absolute;right:90px;top:25px;z-index:10001;height:var(--buttonHeightSmall);padding-left:var(--buttonImagePaddingSmall);background-position:var(--buttonImagePositionSmall);background-image:url(/assets/svgs/DownloadKey.svg);background-repeat:no-repeat;background-size:var(--buttonImageSizeSmall);color:var(--white)}\n"] }]
20928
20954
  }], ctorParameters: function () { return [{ type: JwtSignersPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i3$1.MatDialog }]; } });
20929
20955
 
20930
20956
  class JwtSigner {
@@ -21547,11 +21573,11 @@ class AuthPoliciesPageComponent extends ListPageComponent {
21547
21573
  super(filterService, svc, consoleEvents, dialogForm);
21548
21574
  this.svc = svc;
21549
21575
  this.tabNames = tabNames;
21550
- this.title = 'Auth Policies Management';
21576
+ this.title = 'Auth Policies';
21551
21577
  this.formDataChanged = false;
21552
21578
  }
21553
21579
  ngOnInit() {
21554
- this.tabs = this.tabNames.getTabs('policies');
21580
+ this.tabs = this.tabNames.getTabs('authentication');
21555
21581
  this.svc.refreshData = this.refreshData;
21556
21582
  super.ngOnInit();
21557
21583
  }
@@ -21564,14 +21590,14 @@ class AuthPoliciesPageComponent extends ListPageComponent {
21564
21590
  this.svc.openEditForm();
21565
21591
  break;
21566
21592
  case 'delete':
21567
- let defaultPolicy;
21593
+ let defaultCheckPromise = Promise.resolve(true);
21568
21594
  const selectedItems = this.rowData.filter((row) => {
21569
- if (row.id === 'default') {
21570
- defaultPolicy = row;
21595
+ if (row.selected && row.id === 'default') {
21596
+ defaultCheckPromise = this.svc.checkDefaultAuthPolicy(row);
21571
21597
  }
21572
21598
  return row.selected;
21573
21599
  });
21574
- this.svc.checkDefaultAuthPolicy(defaultPolicy).then((result) => {
21600
+ defaultCheckPromise.then((result) => {
21575
21601
  if (!result) {
21576
21602
  return;
21577
21603
  }
@@ -22419,7 +22445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
22419
22445
  }] });
22420
22446
 
22421
22447
  const VERSION = {
22422
- "version": "3.5.0"
22448
+ "version": "3.6.1"
22423
22449
  };
22424
22450
 
22425
22451
  /*
@@ -22476,13 +22502,15 @@ const COMPONENTS = {
22476
22502
  <div class="tab" data-go="/service-policies" data-i18n="ServicePolicies"></div>
22477
22503
  <div class="tab" data-go="/router-policies" data-i18n="EdgeRouterPolicies"></div>
22478
22504
  <div class="tab" data-go="/service-router-policies" data-i18n="ServiceRouterPolicies"></div>
22479
- <div class="tab" data-go="/auth-policies" data-i18n="AuthPolicies"></div>
22480
- <div class="tab" data-go="/jwt-signers" data-i18n="JwtSigners"></div>
22481
22505
  </div>`,
22506
+ tabAuthentication: `<div class="tabs">
22507
+ <div class="tab" data-go="/cas" data-i18n="CAs"></div>
22508
+ <div class="tab" data-go="/auth-policies" data-i18n="AuthPolicies"></div>
22509
+ <div class="tab" data-go="/jwt-signers" data-i18n="JwtSigners"></div>
22510
+ </div>`,
22482
22511
  tabRouters: `<div class="tabs">
22483
22512
  <div class="tab" data-go="/routers" data-i18n="EdgeRouters"></div>
22484
22513
  <div class="tab" data-go="/transit-routers" data-i18n="TransitRouters"></div>
22485
- <div class="tab" data-go="/router-policies" data-i18n="EdgeRouterPolicies"></div>
22486
22514
  </div>`,
22487
22515
  tabServers: `<div class="tabs">
22488
22516
  <div class="tab" data-go="/servers" data-i18n="ManageServers">Manage Servers</div>
@@ -22854,6 +22882,11 @@ class ZacWrapperService extends ZacWrapperServiceClass {
22854
22882
  this.handleServiceResult(result, returnTo);
22855
22883
  });
22856
22884
  break;
22885
+ case 'verify':
22886
+ this.callZitiEdge(`${controllerDomain}/edge/management/v1/cas/${params.id}/verify`, params.cert, 'POST', 'text/plain').then((result) => {
22887
+ this.handleServiceResult(result, returnTo);
22888
+ });
22889
+ break;
22857
22890
  case 'tags':
22858
22891
  // For no this is a no-op
22859
22892
  break;
@@ -23249,8 +23282,8 @@ class ZacWrapperService extends ZacWrapperServiceClass {
23249
23282
  });
23250
23283
  });
23251
23284
  }
23252
- callZitiEdge(url, body, method = 'GET') {
23253
- const options = this.getHttpOptions();
23285
+ callZitiEdge(url, body, method = 'GET', contentType) {
23286
+ const options = this.getHttpOptions(false, contentType);
23254
23287
  let prom;
23255
23288
  switch (method) {
23256
23289
  case 'GET':
@@ -23288,7 +23321,7 @@ class ZacWrapperService extends ZacWrapperServiceClass {
23288
23321
  if (!this.modalShow || !this.modalClose) {
23289
23322
  return;
23290
23323
  }
23291
- const modalIds = ['DetailModal', 'AddMessageModal', 'QRModal', 'ResetModal', 'OverrideModal', 'AddModal'];
23324
+ const modalIds = ['DetailModal', 'AddMessageModal', 'QRModal', 'ResetModal', 'OverrideModal', 'AddModal', 'VerifyModal'];
23292
23325
  modal.show = (id, readOnly) => {
23293
23326
  this.modalShow(id, readOnly);
23294
23327
  if (modalIds.includes(id)) {
@@ -23303,7 +23336,7 @@ class ZacWrapperService extends ZacWrapperServiceClass {
23303
23336
  $$4('.tab[data-go="/recipes"]').hide();
23304
23337
  }
23305
23338
  }
23306
- getHttpOptions(useZitiCreds = false) {
23339
+ getHttpOptions(useZitiCreds = false, contentType) {
23307
23340
  const options = {
23308
23341
  headers: {
23309
23342
  accept: 'application/json',
@@ -23311,6 +23344,10 @@ class ZacWrapperService extends ZacWrapperServiceClass {
23311
23344
  params: {},
23312
23345
  responseType: 'json',
23313
23346
  };
23347
+ if (contentType) {
23348
+ const headers = new HttpHeaders().set('Content-Type', contentType);
23349
+ options.headers = headers;
23350
+ }
23314
23351
  return options;
23315
23352
  }
23316
23353
  handleError(result) {