@openziti/ziti-console-lib 1.1.1 → 1.1.3

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.
@@ -129,6 +129,7 @@ class ExtensionsNoopService {
129
129
  constructor() {
130
130
  this.formDataChanged = new BehaviorSubject({ isEmpty: true });
131
131
  this.closed = new EventEmitter();
132
+ this.consoleActionTriggered = new EventEmitter();
132
133
  this.closeAfterSave = true;
133
134
  this.moreActions = [];
134
135
  this.disabledComponents = [];
@@ -319,6 +320,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
319
320
  }] } });
320
321
 
321
322
  class NumberInputComponent {
323
+ set fieldName(name) {
324
+ this._fieldName = name;
325
+ this._idName = name.replace(/\s/g, '').toLowerCase();
326
+ }
322
327
  constructor() {
323
328
  this._fieldName = 'Field Label';
324
329
  this._idName = 'fieldname';
@@ -330,19 +335,17 @@ class NumberInputComponent {
330
335
  this.fieldValueChange = new EventEmitter();
331
336
  this.valueChange = new Subject();
332
337
  this._isValid = true;
333
- }
334
- set fieldName(name) {
335
- this._fieldName = name;
336
- this._idName = name.replace(/\s/g, '').toLowerCase();
338
+ this._emitEventsDebounced = debounce(this.emitEvents.bind(this), 500);
337
339
  }
338
340
  setIsValid(isValid) {
339
341
  this._isValid = isValid;
340
342
  }
341
343
  onKeyup() {
342
- debounce(() => {
343
- this.fieldValueChange.emit(this.fieldValue);
344
- this.valueChange.next(this.fieldValue);
345
- }, 500)();
344
+ this._emitEventsDebounced();
345
+ }
346
+ emitEvents() {
347
+ this.fieldValueChange.emit(this.fieldValue);
348
+ this.valueChange.next(this.fieldValue);
346
349
  }
347
350
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
348
351
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: NumberInputComponent, isStandalone: false, selector: "lib-number-input", inputs: { fieldName: "fieldName", helpText: "helpText", fieldValue: "fieldValue", placeholder: "placeholder", parentage: "parentage", labelColor: "labelColor", fieldClass: "fieldClass", error: "error" }, outputs: { fieldValueChange: "fieldValueChange" }, ngImport: i0, template: `
@@ -361,7 +364,7 @@ class NumberInputComponent {
361
364
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
362
365
  type="number" class="jsonEntry"
363
366
  [ngClass]="{'error': error}"
364
- [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
367
+ [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
365
368
  @if (error) {
366
369
  <div class="error">{{error}}</div>
367
370
  }
@@ -386,13 +389,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
386
389
  <input id="schema_{{parentage?parentage+'_':''}}{{_idName}}"
387
390
  type="number" class="jsonEntry"
388
391
  [ngClass]="{'error': error}"
389
- [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()"/>
392
+ [placeholder]="placeholder" [(ngModel)]="fieldValue" (paste)="onKeyup()" (keyup)="onKeyup()" (change)="emitEvents()"/>
390
393
  @if (error) {
391
394
  <div class="error">{{error}}</div>
392
395
  }
393
396
  </div>
394
397
  `, standalone: false, styles: [".number-input-container{margin:var(--marginSmall) 0}.number-input-container label{margin-bottom:0rem;margin-top:0rem}.number-input-container input.error{border-color:red}.number-input-container div.error{color:red}.label-container{display:flex;gap:.3125rem;margin-bottom:var(--marginSmall);margin-top:var(--marginMedium)}\n"] }]
395
- }], propDecorators: { fieldName: [{
398
+ }], ctorParameters: () => [], propDecorators: { fieldName: [{
396
399
  type: Input
397
400
  }], helpText: [{
398
401
  type: Input
@@ -881,7 +884,7 @@ class CheckboxListInputComponent {
881
884
  <input type="checkbox"
882
885
  class="jsonEntry checkbox"
883
886
  [ngClass]="{'error': error}"
884
- [checked]="item.checked" (click)="item.checked=!item.checked;updateFieldVal();"/>
887
+ [(ngModel)]="item.checked" (ngModelChange)="updateFieldVal()"/>
885
888
  <span class="boxlabel">{{item.name}}</span>
886
889
  </div>
887
890
  }
@@ -889,7 +892,7 @@ class CheckboxListInputComponent {
889
892
  <div class="error">{{error}}</div>
890
893
  }
891
894
  </div>
892
- `, isInline: true, styles: [".boxlabel{text-transform:uppercase;position:absolute;padding-top:.3rem;padding-left:.25rem}input{width:1rem;height:1.5rem;border-radius:.25rem}input:checked{background-color:var(--green)!important}.jsonEntry.checkbox{width:1.5625rem;height:1.5625rem;border-radius:.9375rem;cursor:pointer;transition:background-color .5s;top:.8125rem;left:.625rem;background-color:var(--navigation);transition:var(--transition);border:.125rem var(--offWhite) solid}.jsonEntry.checkbox:checked{background-color:var(--green);background-image:url(/assets/images/check.png);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
895
+ `, isInline: true, styles: [".boxlabel{text-transform:uppercase;position:absolute;padding-top:.3rem;padding-left:.25rem}input{width:1rem;height:1.5rem;border-radius:.25rem}input:checked{background-color:var(--green)!important}.jsonEntry.checkbox{width:1.5625rem;height:1.5625rem;border-radius:.9375rem;cursor:pointer;transition:background-color .5s;top:.8125rem;left:.625rem;background-color:var(--navigation);transition:var(--transition);border:.125rem var(--offWhite) solid}.jsonEntry.checkbox:checked{background-color:var(--green);background-image:url(/assets/images/check.png);background-size:45%;background-position:center center;background-repeat:no-repeat;border:none}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
893
896
  }
894
897
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CheckboxListInputComponent, decorators: [{
895
898
  type: Component,
@@ -901,7 +904,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
901
904
  <input type="checkbox"
902
905
  class="jsonEntry checkbox"
903
906
  [ngClass]="{'error': error}"
904
- [checked]="item.checked" (click)="item.checked=!item.checked;updateFieldVal();"/>
907
+ [(ngModel)]="item.checked" (ngModelChange)="updateFieldVal()"/>
905
908
  <span class="boxlabel">{{item.name}}</span>
906
909
  </div>
907
910
  }
@@ -5817,7 +5820,6 @@ class IdentitiesPageService extends ListPageServiceClass {
5817
5820
  ];
5818
5821
  this.tableHeaderActions = [
5819
5822
  { name: 'Download All', action: 'download-all' },
5820
- { name: 'Download Selected', action: 'download-selected' },
5821
5823
  ];
5822
5824
  this.resourceType = 'identities';
5823
5825
  this.validate = (formData) => {
@@ -6471,6 +6473,8 @@ class EdgeRoutersPageService extends ListPageServiceClass {
6471
6473
  { label: 'Version', path: 'versionInfo.version' },
6472
6474
  { label: 'Revision', path: 'versionInfo.revision' },
6473
6475
  { label: 'Fingerprint', path: 'fingerprint' },
6476
+ { label: 'Advertise TLS Address', path: 'supportedProtocols.tls' },
6477
+ { label: 'Advertise WSS Address', path: 'supportedProtocols.wss' },
6474
6478
  { label: 'ID', path: 'id' },
6475
6479
  ];
6476
6480
  this.selectedEdgeRouter = new EdgeRouter();
@@ -6655,6 +6659,46 @@ class EdgeRoutersPageService extends ListPageServiceClass {
6655
6659
  resizable: true,
6656
6660
  cellClass: 'nf-cell-vert-align tCol',
6657
6661
  },
6662
+ {
6663
+ colId: 'hostname',
6664
+ field: 'hostname',
6665
+ headerName: 'Host Name',
6666
+ headerComponent: TableColumnDefaultComponent,
6667
+ resizable: true,
6668
+ cellClass: 'nf-cell-vert-align tCol',
6669
+ sortable: false,
6670
+ filter: false,
6671
+ tooltipValueGetter: (params) => {
6672
+ return params.value || '';
6673
+ }
6674
+ },
6675
+ {
6676
+ colId: 'version',
6677
+ field: 'versionInfo.version',
6678
+ headerName: 'Router Version',
6679
+ headerComponent: TableColumnDefaultComponent,
6680
+ resizable: true,
6681
+ cellClass: 'nf-cell-vert-align tCol',
6682
+ sortable: false,
6683
+ filter: false,
6684
+ },
6685
+ {
6686
+ colId: 'supportedProtocols',
6687
+ headerName: 'Advertise Address',
6688
+ headerComponent: TableColumnDefaultComponent,
6689
+ resizable: true,
6690
+ sortable: false,
6691
+ filter: false,
6692
+ valueGetter: (params) => {
6693
+ const protocols = params.data?.supportedProtocols;
6694
+ if (!protocols)
6695
+ return '';
6696
+ return Object.values(protocols).filter(Boolean).join(' | ');
6697
+ },
6698
+ tooltipValueGetter: (params) => params.value,
6699
+ tooltipShowMode: 'whenTruncated',
6700
+ cellStyle: { whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' }
6701
+ },
6658
6702
  this.ID_COLUMN_DEF
6659
6703
  ];
6660
6704
  if (this.extService.processTableColumns) {
@@ -8567,10 +8611,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
8567
8611
  limitations under the License.
8568
8612
  */
8569
8613
  class ConfigurationsPageComponent extends ListPageComponent {
8570
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
8571
- super(filterService, svc, consoleEvents, dialogForm);
8614
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
8615
+ super(filterService, svc, consoleEvents, dialogForm, extService);
8572
8616
  this.svc = svc;
8573
8617
  this.tabNames = tabNames;
8618
+ this.extService = extService;
8574
8619
  this.title = 'Configurations';
8575
8620
  this.formDataChanged = false;
8576
8621
  }
@@ -8605,6 +8650,7 @@ class ConfigurationsPageComponent extends ListPageComponent {
8605
8650
  }
8606
8651
  }
8607
8652
  tableAction(event) {
8653
+ this.trackMenuAction(event?.action, event?.item);
8608
8654
  switch (event?.action) {
8609
8655
  case 'toggleAll':
8610
8656
  case 'toggleItem':
@@ -8629,6 +8675,14 @@ class ConfigurationsPageComponent extends ListPageComponent {
8629
8675
  break;
8630
8676
  }
8631
8677
  }
8678
+ trackMenuAction(action, item) {
8679
+ this.extService?.consoleActionTriggered?.emit({
8680
+ action,
8681
+ page: 'config',
8682
+ item,
8683
+ type: 'menu-action'
8684
+ });
8685
+ }
8632
8686
  deleteItem(item) {
8633
8687
  this.openBulkDelete([item], 'config');
8634
8688
  }
@@ -8666,13 +8720,16 @@ class ConfigurationsPageComponent extends ListPageComponent {
8666
8720
  }
8667
8721
  });
8668
8722
  }
8669
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigurationsPageComponent, deps: [{ token: ConfigurationsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
8723
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigurationsPageComponent, deps: [{ token: ConfigurationsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
8670
8724
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ConfigurationsPageComponent, isStandalone: false, selector: "lib-configurations", 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"] }] }); }
8671
8725
  }
8672
8726
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigurationsPageComponent, decorators: [{
8673
8727
  type: Component,
8674
8728
  args: [{ selector: 'lib-configurations', standalone: false, 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"] }]
8675
- }], ctorParameters: () => [{ type: ConfigurationsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
8729
+ }], ctorParameters: () => [{ type: ConfigurationsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
8730
+ type: Inject,
8731
+ args: [SHAREDZ_EXTENSION]
8732
+ }] }] });
8676
8733
 
8677
8734
  /*
8678
8735
  Copyright NetFoundry Inc.
@@ -11457,6 +11514,7 @@ class IdentitiesPageComponent extends ListPageComponent {
11457
11514
  }
11458
11515
  tableAction(event) {
11459
11516
  const extensionActionFound = this.handleExtensionActions(event);
11517
+ this.trackMenuAction(event?.action, event?.item);
11460
11518
  if (extensionActionFound) {
11461
11519
  return;
11462
11520
  }
@@ -11533,6 +11591,14 @@ class IdentitiesPageComponent extends ListPageComponent {
11533
11591
  autoFocus: false,
11534
11592
  });
11535
11593
  }
11594
+ trackMenuAction(action, item) {
11595
+ this.extService?.consoleActionTriggered?.emit({
11596
+ action,
11597
+ page: 'identity',
11598
+ item,
11599
+ type: 'menu-action'
11600
+ });
11601
+ }
11536
11602
  deleteItem(item) {
11537
11603
  this.openBulkDelete([item], 'identity');
11538
11604
  }
@@ -11642,6 +11708,7 @@ class EdgeRoutersPageComponent extends ListPageComponent {
11642
11708
  this.formDataChanged = event;
11643
11709
  }
11644
11710
  tableAction(event) {
11711
+ this.trackMenuAction(event?.action, event?.item);
11645
11712
  if (this.extService?.listActions?.length > 0) {
11646
11713
  let extensionFound = false;
11647
11714
  this.extService?.listActions?.forEach((extAction) => {
@@ -11686,6 +11753,14 @@ class EdgeRoutersPageComponent extends ListPageComponent {
11686
11753
  break;
11687
11754
  }
11688
11755
  }
11756
+ trackMenuAction(action, item) {
11757
+ this.extService?.consoleActionTriggered?.emit({
11758
+ action,
11759
+ page: 'edge-router',
11760
+ item,
11761
+ type: 'menu-action'
11762
+ });
11763
+ }
11689
11764
  downloadJWT(item) {
11690
11765
  const jwt = this.svc.getJWT(item);
11691
11766
  this.svc.downloadJWT(jwt, item.name);
@@ -11991,6 +12066,7 @@ class TransitRoutersPageComponent extends ListPageComponent {
11991
12066
  this.formDataChanged = event;
11992
12067
  }
11993
12068
  tableAction(event) {
12069
+ this.trackMenuAction(event?.action, event?.item);
11994
12070
  if (this.extService?.listActions?.length > 0) {
11995
12071
  let extensionFound = false;
11996
12072
  this.extService?.listActions?.forEach((extAction) => {
@@ -12035,6 +12111,14 @@ class TransitRoutersPageComponent extends ListPageComponent {
12035
12111
  break;
12036
12112
  }
12037
12113
  }
12114
+ trackMenuAction(action, item) {
12115
+ this.extService?.consoleActionTriggered?.emit({
12116
+ action,
12117
+ page: 'transit-router',
12118
+ item,
12119
+ type: 'menu-action'
12120
+ });
12121
+ }
12038
12122
  downloadJWT(item) {
12039
12123
  const jwt = this.svc.getJWT(item);
12040
12124
  this.svc.downloadJWT(jwt, item.name);
@@ -13525,6 +13609,7 @@ class ServicesPageComponent extends ListPageComponent {
13525
13609
  }
13526
13610
  }
13527
13611
  tableAction(event) {
13612
+ this.trackMenuAction(event?.action, event?.item);
13528
13613
  const extensionActionFound = this.handleExtensionActions(event);
13529
13614
  if (extensionActionFound) {
13530
13615
  return;
@@ -13553,6 +13638,14 @@ class ServicesPageComponent extends ListPageComponent {
13553
13638
  break;
13554
13639
  }
13555
13640
  }
13641
+ trackMenuAction(action, item) {
13642
+ this.extensionService?.consoleActionTriggered?.emit({
13643
+ action,
13644
+ page: 'service',
13645
+ item,
13646
+ type: 'menu-action'
13647
+ });
13648
+ }
13556
13649
  deleteItem(item) {
13557
13650
  this.openBulkDelete([item], 'service');
13558
13651
  }
@@ -17646,6 +17739,10 @@ class EdgeRouterFormComponent extends ProjectableForm {
17646
17739
  if (!this.formData.isVerified) {
17647
17740
  this.formData.badges.push({ label: 'Unverified', class: 'unreg' });
17648
17741
  }
17742
+ if (this.formData.versionInfo?.version) {
17743
+ const version = this.formData.versionInfo?.version.replace(/^v/, '').trim();
17744
+ this.formData.badges.push({ label: `Version: ${version}`, class: 'offline' });
17745
+ }
17649
17746
  }
17650
17747
  this.getEdgeRouterRoleAttributes();
17651
17748
  this.svc.getAssociatedServices(this.formData.id);
@@ -17773,7 +17870,7 @@ class EdgeRouterFormComponent extends ProjectableForm {
17773
17870
  provide: MatDialogRef,
17774
17871
  useValue: {}
17775
17872
  }
17776
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n [class.projectable-form-hidden]=\"!dataInit\"\n >\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [class.is-scrolled]=\"isScrolled\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\" #formContainer>\n @if (formView === 'simple') {\n <div class=\"projectable-form-main-column form-group-row\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n @if (showMore) {\n <div class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\" [class.disabled]=\"!tunnelerEnabledReadOnly\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div (click)=\"tunnelerEnabledReadOnly && toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled,disabled: !tunnelerEnabledReadOnly }\" class=\"toggle\"\n [matTooltip]=\"!tunnelerEnabledReadOnly ? 'Disabled because already hosted by netfoundry ' : ''\"\n matTooltipPosition=\"above\" style=\"pointer-events: auto;\">\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n }\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n @if (hasEnrolmentToken && !extService['hideZitiRegistration']) {\n <lib-form-field-container\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy-text\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n @if (formData) {\n <lib-json-view [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n }\n </lib-form-field-container>\n </div>\n </div>\n }\n @if (formView === 'raw') {\n <div class=\"form-group-column\">\n @if (formData) {\n <lib-json-view [(data)]=\"formData\"></lib-json-view>\n }\n </div>\n }\n </div>\n</div>\n@if (isLoading || !dataInit) {\n <lib-loading-indicator [isLoading]=\"isLoading || !dataInit\"></lib-loading-indicator>\n}\n", styles: [".edge-router-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:.9375rem}.form-field-dropdown{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right .625rem;background-repeat:no-repeat;background-size:1.125rem;padding-right:1.75rem}.disabled{opacity:.5;pointer-events:none}.toggle.disabled{cursor:not-allowed}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:.625rem;padding-right:.625rem;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);border-bottom-right-radius:var(--inputBorderRadius);border-bottom-left-radius:var(--inputBorderRadius);border-top-style:none}.svc-test-result.test-result-open{height:fit-content;box-shadow:0 -.125rem .6875rem 0 var(--boxShadow);padding-bottom:.9375rem;padding-top:.9375rem}.svc-test-result .close.icon-close{top:.625rem;right:.625rem;font-size:1.125rem;height:1.125rem;width:1.125rem;line-height:1.125rem}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:var(--inputBorderWidth)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:.0625rem}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "badges", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText", "showHeaderToggle", "showHeaderButton", "multiActions"], outputs: ["formViewChange", "actionRequested", "multiActionRequested"] }, { kind: "component", type: FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "contentClass", "showHeader", "showToggle", "headerActions", "headerToggle"], outputs: ["actionRequested", "headerToggleChange"] }, { kind: "component", type: PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter", "localFilter"], outputs: ["itemSelected", "itemRemoved", "filterChanged"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy", "showLineNumbers"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: QrCodeComponent, selector: "lib-qr-code", inputs: ["jwt", "token", "expiration", "identity", "type", "authenticators", "qrOnly", "canExpand"], outputs: ["doRefresh"] }, { kind: "component", type: CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }] }); }
17873
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n [class.projectable-form-hidden]=\"!dataInit\"\n >\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [class.is-scrolled]=\"isScrolled\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\" #formContainer>\n @if (formView === 'simple') {\n <div class=\"projectable-form-main-column form-group-row\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n @if (showMore) {\n <div class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\" [class.disabled]=\"!tunnelerEnabledReadOnly\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div (click)=\"tunnelerEnabledReadOnly && toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled,disabled: !tunnelerEnabledReadOnly }\" class=\"toggle\"\n [matTooltip]=\"!tunnelerEnabledReadOnly ? 'Disabled because already hosted by netfoundry ' : ''\"\n matTooltipPosition=\"above\" style=\"pointer-events: auto;\">\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n @if (formData?.hostname || formData?.supportedProtocols?.tls || formData?.supportedProtocols?.wss) {\n <lib-form-field-container [showHeader]=\"false\">\n @if (formData?.hostname) {\n <div class=\"config-item\">\n <div class=\"config-item-label-container\">\n <span class=\"config-title\">Domain Name</span>\n </div>\n <div class=\"config-container domain-container\">\n <div class=\"config-container-label domain-label\">\n {{ formData?.hostname }}\n </div>\n </div>\n </div>\n }\n @if (formData?.supportedProtocols?.tls || formData?.supportedProtocols?.wss) {\n <div class=\"config-item\">\n <div class=\"config-item-label-container\">\n <span class=\"config-title\">ADVERTISE ADDRESS</span>\n </div>\n <div class=\"config-container advertise-address-container\">\n <div class=\"config-container-label advertise-address-label\">\n {{ formData?.supportedProtocols?.tls }}\n <br />\n {{ formData?.supportedProtocols?.wss }}\n </div>\n </div>\n </div>\n }\n </lib-form-field-container>\n }\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n }\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n @if (hasEnrolmentToken && !extService['hideZitiRegistration']) {\n <lib-form-field-container\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy-text\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n @if (formData) {\n <lib-json-view [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n }\n </lib-form-field-container>\n </div>\n </div>\n }\n @if (formView === 'raw') {\n <div class=\"form-group-column\">\n @if (formData) {\n <lib-json-view [(data)]=\"formData\"></lib-json-view>\n }\n </div>\n }\n </div>\n</div>\n@if (isLoading || !dataInit) {\n <lib-loading-indicator [isLoading]=\"isLoading || !dataInit\"></lib-loading-indicator>\n}\n", styles: [".edge-router-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:.9375rem}.form-field-dropdown{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right .625rem;background-repeat:no-repeat;background-size:1.125rem;padding-right:1.75rem}.disabled{opacity:.5;pointer-events:none}.toggle.disabled{cursor:not-allowed}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:.625rem;padding-right:.625rem;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);border-bottom-right-radius:var(--inputBorderRadius);border-bottom-left-radius:var(--inputBorderRadius);border-top-style:none}.svc-test-result.test-result-open{height:fit-content;box-shadow:0 -.125rem .6875rem 0 var(--boxShadow);padding-bottom:.9375rem;padding-top:.9375rem}.svc-test-result .close.icon-close{top:.625rem;right:.625rem;font-size:1.125rem;height:1.125rem;width:1.125rem;line-height:1.125rem}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:var(--inputBorderWidth)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:.0625rem}.config-container-label.domain-label,.config-container-label.advertise-address-label{text-transform:lowercase}.config-container.domain-container,.config-container.advertise-address-container{background-color:var(--stroke)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FormHeaderComponent, selector: "lib-form-header", inputs: ["data", "badges", "title", "moreActions", "formView", "saveDisabled", "saveTooltip", "actionButtonText", "moreActionsText", "showHeaderToggle", "showHeaderButton", "multiActions"], outputs: ["formViewChange", "actionRequested", "multiActionRequested"] }, { kind: "component", type: FormFieldContainerComponent, selector: "lib-form-field-container", inputs: ["title", "title2", "titleIcon", "layout", "helpText", "helpText2", "label", "count", "action", "actionLabel", "class", "contentStyle", "contentClass", "showHeader", "showToggle", "headerActions", "headerToggle"], outputs: ["actionRequested", "headerToggleChange"] }, { kind: "component", type: PreviewListComponent, selector: "lib-preview-list", inputs: ["label", "clickable", "isLoading", "allNames", "items", "allowRemove", "tooltip", "showfilter", "localFilter"], outputs: ["itemSelected", "itemRemoved", "filterChanged"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }, { kind: "component", type: FormFieldToggleComponent, selector: "lib-form-field-toggle", inputs: ["label", "orientation", "labelOn", "labelOff", "toggleOn"], outputs: ["toggleOnChange"] }, { kind: "component", type: JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy", "showLineNumbers"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }, { kind: "component", type: TagSelectorComponent, selector: "lib-tag-selector", inputs: ["placeholder", "disableField", "disableCreate", "hideOption", "isLoading", "errorMessage", "focusOnInit", "selectedRoleAttributes", "selectedNamedAttributes", "hasError", "availableRoleAttributes", "availableNamedAttributes"], outputs: ["addRoleAttribute", "addNamedAttribute", "roleAttributeRemoved", "namedAttributeRemoved", "selectedRoleAttributesChange", "selectedNamedAttributesChange", "filterChange"] }, { kind: "component", type: QrCodeComponent, selector: "lib-qr-code", inputs: ["jwt", "token", "expiration", "identity", "type", "authenticators", "qrOnly", "canExpand"], outputs: ["doRefresh"] }, { kind: "component", type: CustomTagsComponent, selector: "lib-custom-tags", inputs: ["tags"], outputs: ["tagsChange"] }] }); }
17777
17874
  }
17778
17875
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EdgeRouterFormComponent, decorators: [{
17779
17876
  type: Component,
@@ -17782,7 +17879,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
17782
17879
  provide: MatDialogRef,
17783
17880
  useValue: {}
17784
17881
  }
17785
- ], standalone: false, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n [class.projectable-form-hidden]=\"!dataInit\"\n >\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [class.is-scrolled]=\"isScrolled\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\" #formContainer>\n @if (formView === 'simple') {\n <div class=\"projectable-form-main-column form-group-row\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n @if (showMore) {\n <div class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\" [class.disabled]=\"!tunnelerEnabledReadOnly\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div (click)=\"tunnelerEnabledReadOnly && toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled,disabled: !tunnelerEnabledReadOnly }\" class=\"toggle\"\n [matTooltip]=\"!tunnelerEnabledReadOnly ? 'Disabled because already hosted by netfoundry ' : ''\"\n matTooltipPosition=\"above\" style=\"pointer-events: auto;\">\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n }\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n @if (hasEnrolmentToken && !extService['hideZitiRegistration']) {\n <lib-form-field-container\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy-text\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n @if (formData) {\n <lib-json-view [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n }\n </lib-form-field-container>\n </div>\n </div>\n }\n @if (formView === 'raw') {\n <div class=\"form-group-column\">\n @if (formData) {\n <lib-json-view [(data)]=\"formData\"></lib-json-view>\n }\n </div>\n }\n </div>\n</div>\n@if (isLoading || !dataInit) {\n <lib-loading-indicator [isLoading]=\"isLoading || !dataInit\"></lib-loading-indicator>\n}\n", styles: [".edge-router-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:.9375rem}.form-field-dropdown{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right .625rem;background-repeat:no-repeat;background-size:1.125rem;padding-right:1.75rem}.disabled{opacity:.5;pointer-events:none}.toggle.disabled{cursor:not-allowed}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:.625rem;padding-right:.625rem;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);border-bottom-right-radius:var(--inputBorderRadius);border-bottom-left-radius:var(--inputBorderRadius);border-top-style:none}.svc-test-result.test-result-open{height:fit-content;box-shadow:0 -.125rem .6875rem 0 var(--boxShadow);padding-bottom:.9375rem;padding-top:.9375rem}.svc-test-result .close.icon-close{top:.625rem;right:.625rem;font-size:1.125rem;height:1.125rem;width:1.125rem;line-height:1.125rem}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:var(--inputBorderWidth)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:.0625rem}\n"] }]
17882
+ ], standalone: false, template: "<div class=\"projectable-form-wrapper\"\n (keyup.enter)=\"save($event)\"\n (keyup.escape)=\"closeModal(false)\"\n [class.projectable-form-hidden]=\"!dataInit\"\n >\n <lib-form-header\n [data]=\"formData\"\n [title]=\"formData.id ? 'Edit Edge Router: ' : 'Create New Edge Router'\"\n [moreActions]=\"moreActions\"\n (actionRequested)=\"headerActionRequested($event)\"\n [(formView)]=\"formView\"\n [class.is-scrolled]=\"isScrolled\"\n ></lib-form-header>\n <div class=\"edge-router-form-container projectable-form-container\" #formContainer>\n @if (formView === 'simple') {\n <div class=\"projectable-form-main-column form-group-row\">\n <div class=\"form-group-column three-fifths\">\n <lib-form-field-container [title]=\"'Edge Router Name'\" [label]=\"'REQUIRED'\">\n <input\n class=\"form-field-input\"\n placeholder=\"Name this edge router\"\n [ngClass]=\"{error: errors['name']}\"\n [(ngModel)]=\"formData.name\"\n autofocus\n #nameFieldInput\n />\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'Select or create Edge Router attributes'\"\n [label]=\"'OPTIONAL'\"\n [contentStyle]=\"'z-index: 99999999'\"\n [helpText]=\"'Attributes are tags applied to an resource. Apply the same tag to other Edge Routers to form a group of Edge Routers.'\"\n >\n <lib-tag-selector\n [(selectedRoleAttributes)]=\"formData.roleAttributes\"\n [availableRoleAttributes]=\"edgeRouterRoleAttributes\"\n [placeholder]=\"'Add attributes to group Edge Routers'\"\n ></lib-tag-selector>\n </lib-form-field-container>\n <ng-content select=\"[slot=column-1-slot-1]\"></ng-content>\n <lib-form-field-toggle [(toggleOn)]=\"showMore\" style=\"margin: 0px 10px\"></lib-form-field-toggle>\n @if (showMore) {\n <div class=\"form-group-column\">\n <lib-form-field-container\n [title]=\"'TUNNELER'\"\n [title2]=\"'TRAVERSAL'\"\n [layout]=\"'row'\"\n class=\"form-field-advanced\"\n >\n <div class=\"config-item\" [class.disabled]=\"!tunnelerEnabledReadOnly\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">TUNNELER ENABLED</div>\n <div (click)=\"tunnelerEnabledReadOnly && toggleTunnelerEnabled()\"\n [ngClass]=\"{ on: formData.isTunnelerEnabled,disabled: !tunnelerEnabledReadOnly }\" class=\"toggle\"\n [matTooltip]=\"!tunnelerEnabledReadOnly ? 'Disabled because already hosted by netfoundry ' : ''\"\n matTooltipPosition=\"above\" style=\"pointer-events: auto;\">\n <span [hidden]=\"!formData.isTunnelerEnabled\" class=\"on-label\">YES</span>\n <span [hidden]=\"formData.isTunnelerEnabled\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n <div class=\"config-item\">\n <div class=\"config-container toggle-container\">\n <div class=\"config-container-label\">ALLOW TRAVERSAL</div>\n <div\n (click)=\"toggleNoTraversal()\"\n [ngClass]=\"{ on: !formData.noTraversal }\"\n class=\"toggle\"\n >\n <span [hidden]=\"formData.noTraversal\" class=\"on-label\">YES</span>\n <span [hidden]=\"!formData.noTraversal\" class=\"off-label\">NO</span>\n <div class=\"switch\"></div>\n </div>\n </div>\n </div>\n </lib-form-field-container>\n @if (formData?.hostname || formData?.supportedProtocols?.tls || formData?.supportedProtocols?.wss) {\n <lib-form-field-container [showHeader]=\"false\">\n @if (formData?.hostname) {\n <div class=\"config-item\">\n <div class=\"config-item-label-container\">\n <span class=\"config-title\">Domain Name</span>\n </div>\n <div class=\"config-container domain-container\">\n <div class=\"config-container-label domain-label\">\n {{ formData?.hostname }}\n </div>\n </div>\n </div>\n }\n @if (formData?.supportedProtocols?.tls || formData?.supportedProtocols?.wss) {\n <div class=\"config-item\">\n <div class=\"config-item-label-container\">\n <span class=\"config-title\">ADVERTISE ADDRESS</span>\n </div>\n <div class=\"config-container advertise-address-container\">\n <div class=\"config-container-label advertise-address-label\">\n {{ formData?.supportedProtocols?.tls }}\n <br />\n {{ formData?.supportedProtocols?.wss }}\n </div>\n </div>\n </div>\n }\n </lib-form-field-container>\n }\n <lib-form-field-container\n [title]=\"'Custom Tags'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-custom-tags [(tags)]=\"formData.tags\"></lib-custom-tags>\n </lib-form-field-container>\n <lib-form-field-container\n [title]=\"'App Data'\"\n [label]=\"'OPTIONAL'\"\n class=\"form-field-advanced\"\n >\n <lib-json-view [(data)]=\"formData.appData\"></lib-json-view>\n </lib-form-field-container>\n </div>\n }\n </div>\n <div class=\"form-group-column two-fifths\">\n <ng-content select=\"[slot=column-2-slot-1]\"></ng-content>\n @if (hasEnrolmentToken && !extService['hideZitiRegistration']) {\n <lib-form-field-container\n [showHeader]=\"false\"\n >\n <lib-qr-code\n [identity]=\"formData\"\n [jwt]=\"formData.enrollmentJwt\"\n [token]=\"formData.enrollmentToken\"\n [expiration]=\"formData.enrollmentExpiresAt\"\n (doRefresh)=\"refreshEdgeRouter()\"\n [type]=\"'router'\"\n ></lib-qr-code>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Services'\"\n [count]=\"svc.associatedServices.length\"\n [class]=\"'hide-overflow'\"\n [helpText]=\"'Preview list of all services that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"servicesLoading\"\n [allNames]=\"svc.associatedServiceNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n @if (formData.id) {\n <lib-form-field-container\n [title]=\"'Associated Identities'\"\n [count]=\"svc.associatedIdentities.length\"\n [helpText]=\"'Preview list of all Identities that this Edge Router is associated with.'\"\n >\n <lib-preview-list\n [clickable]=\"false\"\n [isLoading]=\"identitiesLoading\"\n [allNames]=\"svc.associatedIdentityNames\"\n ></lib-preview-list>\n </lib-form-field-container>\n }\n <lib-form-field-container\n [title]=\"'API Calls'\"\n [label]=\"'OPTIONAL'\"\n >\n <div class=\"form-row\">\n <input class=\"form-field-input\" [value]=\"apiCallURL\"/>\n <div class=\"icon-copy copy-text\" (click)=\"copyToClipboard(apiCallURL)\"></div>\n </div>\n @if (formData) {\n <lib-json-view [(data)]=\"apiData\" [readOnly]=\"true\" [showCopy]=\"true\"></lib-json-view>\n }\n </lib-form-field-container>\n </div>\n </div>\n }\n @if (formView === 'raw') {\n <div class=\"form-group-column\">\n @if (formData) {\n <lib-json-view [(data)]=\"formData\"></lib-json-view>\n }\n </div>\n }\n </div>\n</div>\n@if (isLoading || !dataInit) {\n <lib-loading-indicator [isLoading]=\"isLoading || !dataInit\"></lib-loading-indicator>\n}\n", styles: [".edge-router-form-container{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;gap:.9375rem}.form-field-dropdown{background-image:url(/assets/svgs/ArrowDown.svg);background-position:center right .625rem;background-repeat:no-repeat;background-size:1.125rem;padding-right:1.75rem}.disabled{opacity:.5;pointer-events:none}.toggle.disabled{cursor:not-allowed}::ng-deep .admin-toggle{width:100%;width:35%;display:flex}::ng-deep .admin-toggle .form-field-line{display:none}::ng-deep .admin-toggle .toggle{width:100%}::ng-deep .is-admin-container .form-field-title-container.title-container-2{width:35%!important}.svc-test-result{position:absolute;transition:var(--transition);height:0;width:100%;background-color:var(--background);bottom:0;font-weight:600;padding-left:.625rem;padding-right:.625rem;border-color:var(--inputBorder);border-style:solid;border-width:var(--inputBorderWidth);border-bottom-right-radius:var(--inputBorderRadius);border-bottom-left-radius:var(--inputBorderRadius);border-top-style:none}.svc-test-result.test-result-open{height:fit-content;box-shadow:0 -.125rem .6875rem 0 var(--boxShadow);padding-bottom:.9375rem;padding-top:.9375rem}.svc-test-result .close.icon-close{top:.625rem;right:.625rem;font-size:1.125rem;height:1.125rem;width:1.125rem;line-height:1.125rem}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-label{color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .form-field-line{border-color:var(--primaryColor)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle{border-color:var(--primaryColor);border-style:solid;border-width:var(--inputBorderWidth)}::ng-deep .admin-toggle .form-field-toggle-container:focus .toggle .switch{top:.0625rem}.config-container-label.domain-label,.config-container-label.advertise-address-label{text-transform:lowercase}.config-container.domain-container,.config-container.advertise-address-container{background-color:var(--stroke)}\n"] }]
17786
17883
  }], ctorParameters: () => [{ type: SettingsService, decorators: [{
17787
17884
  type: Inject,
17788
17885
  args: [SETTINGS_SERVICE]
@@ -18111,8 +18208,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
18111
18208
 
18112
18209
  class ConfigEditorComponent {
18113
18210
  set configData(data) {
18211
+ if (this._configData === data) {
18212
+ return;
18213
+ }
18114
18214
  this._configData = data;
18115
18215
  this.initFormData();
18216
+ defer(() => {
18217
+ this.updateConfigData();
18218
+ });
18116
18219
  }
18117
18220
  ;
18118
18221
  get configData() {
@@ -18160,6 +18263,16 @@ class ConfigEditorComponent {
18160
18263
  ngOnInit() {
18161
18264
  this.createForm();
18162
18265
  }
18266
+ ngAfterViewInit() {
18267
+ if (this.schema && this.dynamicForm) {
18268
+ this.createForm();
18269
+ if (this._configData && !isEmpty(this._configData)) {
18270
+ defer(() => {
18271
+ this.updateConfigData();
18272
+ });
18273
+ }
18274
+ }
18275
+ }
18163
18276
  createForm() {
18164
18277
  this.clearForm();
18165
18278
  if (this.dynamicForm && this.schema) {
@@ -18185,20 +18298,18 @@ class ConfigEditorComponent {
18185
18298
  let parentKey;
18186
18299
  if (pName)
18187
18300
  parentKey = pName.join('.');
18188
- //if (parentKey && !this.formData[parentKey]) this.formData[parentKey] = {};
18189
18301
  }
18190
18302
  }
18191
18303
  }
18192
18304
  }
18193
18305
  updateConfigData() {
18194
18306
  if (!this.showJsonView) {
18195
- this.updateFormView(this.items, this.configData);
18196
- }
18197
- else {
18198
- this.hideConfigJSON = true;
18199
- defer(() => {
18200
- this.getConfigDataFromForm();
18201
- });
18307
+ if (this.items && this.items.length > 0) {
18308
+ this.updateFormView(this.items, this.configData);
18309
+ if (!isEmpty(this.configData)) {
18310
+ this.configDataChange.emit(this.configData);
18311
+ }
18312
+ }
18202
18313
  }
18203
18314
  }
18204
18315
  updateFormView(items, data = {}) {
@@ -18252,6 +18363,9 @@ class ConfigEditorComponent {
18252
18363
  return data;
18253
18364
  }
18254
18365
  getConfigDataFromForm() {
18366
+ if (!this.items || this.items.length === 0) {
18367
+ return;
18368
+ }
18255
18369
  const data = {};
18256
18370
  this.addItemsToConfig(this.items, data);
18257
18371
  this._configData = data;
@@ -18264,6 +18378,9 @@ class ConfigEditorComponent {
18264
18378
  if (item.addedItems) {
18265
18379
  data[item.key] = item.addedItems;
18266
18380
  }
18381
+ else if (item?.component?.instance?.fieldValue) {
18382
+ data[item.key] = item.component.instance.fieldValue;
18383
+ }
18267
18384
  else {
18268
18385
  data[item.key] = [];
18269
18386
  }
@@ -18272,7 +18389,7 @@ class ConfigEditorComponent {
18272
18389
  const val = this.addItemsToConfig(item.items, {}, item.type);
18273
18390
  let hasDefinition = false;
18274
18391
  keys(val).forEach((key) => {
18275
- if (isBoolean(val[key]) || (!isEmpty(val[key]) && !isNil(val[key]))) {
18392
+ if (isBoolean(val[key]) || isNumber(val[key]) || (!isEmpty(val[key]) && !isNil(val[key]))) {
18276
18393
  hasDefinition = true;
18277
18394
  }
18278
18395
  });
@@ -18381,7 +18498,6 @@ class ConfigEditorComponent {
18381
18498
  initFormData() {
18382
18499
  if (!this.configDataInit && !isEmpty(this._configData) && !isEmpty(this.schema)) {
18383
18500
  this.configDataInit = true;
18384
- this.formDataChanged();
18385
18501
  }
18386
18502
  }
18387
18503
  formDataChanged() {
@@ -18390,10 +18506,7 @@ class ConfigEditorComponent {
18390
18506
  });
18391
18507
  }
18392
18508
  jsonDataChanged(event) {
18393
- defer(() => {
18394
- this.configDataChange.emit(this.configData);
18395
- this.updateFormView(this.items, this.configData);
18396
- });
18509
+ this.configDataChange.emit(this.configData);
18397
18510
  }
18398
18511
  removeUndefinedProperties(data) {
18399
18512
  if (Array.isArray(data)) {
@@ -18409,11 +18522,11 @@ class ConfigEditorComponent {
18409
18522
  return data;
18410
18523
  }
18411
18524
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigEditorComponent, deps: [{ token: SchemaService }, { token: GrowlerService }], target: i0.ɵɵFactoryTarget.Component }); }
18412
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ConfigEditorComponent, isStandalone: false, selector: "lib-config-editor", inputs: { configErrors: "configErrors", configData: "configData", showJsonView: "showJsonView", schema: "schema" }, outputs: { configErrorsChange: "configErrorsChange", configDataChange: "configDataChange" }, viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["dynamicform"], descendants: true, read: ViewContainerRef }, { propertyName: "editor", first: true, predicate: JsonEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\" (clickOutside)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n@if (showJsonView && !hideConfigJSON) {\n <lib-json-view (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n}\n@if (showJsonView && hideConfigJSON) {\n <lib-json-view [(data)]=\"configData\"></lib-json-view>\n}", styles: [""], dependencies: [{ kind: "directive", type: i1$4.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy", "showLineNumbers"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
18525
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ConfigEditorComponent, isStandalone: false, selector: "lib-config-editor", inputs: { configErrors: "configErrors", configData: "configData", showJsonView: "showJsonView", schema: "schema" }, outputs: { configErrorsChange: "configErrorsChange", configDataChange: "configDataChange" }, viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: ["dynamicform"], descendants: true, read: ViewContainerRef }, { propertyName: "editor", first: true, predicate: JsonEditorComponent, descendants: true }], ngImport: i0, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\" (clickOutside)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n@if (showJsonView && !hideConfigJSON) {\n <lib-json-view (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n}\n@if (showJsonView && hideConfigJSON) {\n <lib-json-view [(data)]=\"configData\"></lib-json-view>\n}\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { kind: "component", type: JsonViewComponent, selector: "lib-json-view", inputs: ["data", "schema", "readOnly", "jsonInvalid", "showCopy", "showLineNumbers"], outputs: ["dataChange", "jsonChange", "jsonInvalidChange"] }] }); }
18413
18526
  }
18414
18527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigEditorComponent, decorators: [{
18415
18528
  type: Component,
18416
- args: [{ selector: 'lib-config-editor', standalone: false, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\" (clickOutside)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n@if (showJsonView && !hideConfigJSON) {\n <lib-json-view (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n}\n@if (showJsonView && hideConfigJSON) {\n <lib-json-view [(data)]=\"configData\"></lib-json-view>\n}" }]
18529
+ args: [{ selector: 'lib-config-editor', standalone: false, template: "<div class=\"form-field-extended-fields\" [hidden]=\"showJsonView\" (mouseup)=\"formDataChangedDebounced($event)\" (keyup)=\"formDataChangedDebounced($event)\" (clickOutside)=\"formDataChangedDebounced($event)\">\n <ng-container #dynamicform></ng-container>\n</div>\n@if (showJsonView && !hideConfigJSON) {\n <lib-json-view (dataChange)=\"jsonDataChangedDebounced($event)\" [(data)]=\"configData\"></lib-json-view>\n}\n@if (showJsonView && hideConfigJSON) {\n <lib-json-view [(data)]=\"configData\"></lib-json-view>\n}\n" }]
18417
18530
  }], ctorParameters: () => [{ type: SchemaService }, { type: GrowlerService }], propDecorators: { configErrors: [{
18418
18531
  type: Input
18419
18532
  }], configErrorsChange: [{
@@ -20298,10 +20411,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
20298
20411
  limitations under the License.
20299
20412
  */
20300
20413
  class EdgeRouterPoliciesPageComponent extends ListPageComponent {
20301
- constructor(svc, filterService, dialogForm, tabNames, consoleEvents) {
20302
- super(filterService, svc, consoleEvents, dialogForm);
20414
+ constructor(svc, filterService, dialogForm, tabNames, consoleEvents, extService) {
20415
+ super(filterService, svc, consoleEvents, dialogForm, extService);
20303
20416
  this.svc = svc;
20304
20417
  this.tabNames = tabNames;
20418
+ this.extService = extService;
20305
20419
  this.routerRoleAttributes = [];
20306
20420
  this.identityRoleAttributes = [];
20307
20421
  this.formDataChanged = false;
@@ -20334,6 +20448,7 @@ class EdgeRouterPoliciesPageComponent extends ListPageComponent {
20334
20448
  }
20335
20449
  }
20336
20450
  tableAction(event) {
20451
+ this.trackMenuAction(event?.action, event?.item);
20337
20452
  switch (event?.action) {
20338
20453
  case 'toggleAll':
20339
20454
  case 'toggleItem':
@@ -20364,6 +20479,14 @@ class EdgeRouterPoliciesPageComponent extends ListPageComponent {
20364
20479
  break;
20365
20480
  }
20366
20481
  }
20482
+ trackMenuAction(action, item) {
20483
+ this.extService?.consoleActionTriggered?.emit({
20484
+ action,
20485
+ page: 'edge-router-policy',
20486
+ item,
20487
+ type: 'menu-action'
20488
+ });
20489
+ }
20367
20490
  getRoleAttributes() {
20368
20491
  this.svc.getEdgeRouterRoleAttributes().then((result) => {
20369
20492
  this.routerRoleAttributes = result.data;
@@ -20390,13 +20513,16 @@ class EdgeRouterPoliciesPageComponent extends ListPageComponent {
20390
20513
  serviceTypeSelected(event) {
20391
20514
  this.svc.serviceType = event;
20392
20515
  }
20393
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EdgeRouterPoliciesPageComponent, deps: [{ token: EdgeRouterPoliciesPageService }, { token: DataTableFilterService }, { token: i5.MatDialog }, { token: TabNameService }, { token: ConsoleEventsService }], target: i0.ɵɵFactoryTarget.Component }); }
20516
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EdgeRouterPoliciesPageComponent, deps: [{ token: EdgeRouterPoliciesPageService }, { token: DataTableFilterService }, { token: i5.MatDialog }, { token: TabNameService }, { token: ConsoleEventsService }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
20394
20517
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: EdgeRouterPoliciesPageComponent, isStandalone: false, selector: "lib-edge-router-policies-page", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container edge-router-policies-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]=\"'edge-router-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Edge Router Policies defined, Click the plus to add a Edge Router Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
20395
20518
  }
20396
20519
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EdgeRouterPoliciesPageComponent, decorators: [{
20397
20520
  type: Component,
20398
20521
  args: [{ selector: 'lib-edge-router-policies-page', standalone: false, template: "<div class=\"ziti-page-container edge-router-policies-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]=\"'edge-router-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Edge Router Policies defined, Click the plus to add a Edge Router Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n" }]
20399
- }], ctorParameters: () => [{ type: EdgeRouterPoliciesPageService }, { type: DataTableFilterService }, { type: i5.MatDialog }, { type: TabNameService }, { type: ConsoleEventsService }] });
20522
+ }], ctorParameters: () => [{ type: EdgeRouterPoliciesPageService }, { type: DataTableFilterService }, { type: i5.MatDialog }, { type: TabNameService }, { type: ConsoleEventsService }, { type: undefined, decorators: [{
20523
+ type: Inject,
20524
+ args: [SHAREDZ_EXTENSION]
20525
+ }] }] });
20400
20526
 
20401
20527
  /*
20402
20528
  Copyright NetFoundry Inc.
@@ -20842,10 +20968,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
20842
20968
  limitations under the License.
20843
20969
  */
20844
20970
  class ServicePoliciesPageComponent extends ListPageComponent {
20845
- constructor(svc, filterService, dialogForm, tabNames, consoleEvents) {
20846
- super(filterService, svc, consoleEvents, dialogForm);
20971
+ constructor(svc, filterService, dialogForm, tabNames, consoleEvents, extService) {
20972
+ super(filterService, svc, consoleEvents, dialogForm, extService);
20847
20973
  this.svc = svc;
20848
20974
  this.tabNames = tabNames;
20975
+ this.extService = extService;
20849
20976
  this.serviceType = '';
20850
20977
  this.serviceRoleAttributes = [];
20851
20978
  this.identityRoleAttributes = [];
@@ -20879,6 +21006,7 @@ class ServicePoliciesPageComponent extends ListPageComponent {
20879
21006
  }
20880
21007
  }
20881
21008
  tableAction(event) {
21009
+ this.trackMenuAction(event?.action, event?.item);
20882
21010
  switch (event?.action) {
20883
21011
  case 'toggleAll':
20884
21012
  case 'toggleItem':
@@ -20904,6 +21032,14 @@ class ServicePoliciesPageComponent extends ListPageComponent {
20904
21032
  break;
20905
21033
  }
20906
21034
  }
21035
+ trackMenuAction(action, item) {
21036
+ this.extService?.consoleActionTriggered?.emit({
21037
+ action,
21038
+ page: 'service-policy',
21039
+ item,
21040
+ type: 'menu-action'
21041
+ });
21042
+ }
20907
21043
  getRoleAttributes() {
20908
21044
  this.svc.getServiceRoleAttributes().then((result) => {
20909
21045
  this.serviceRoleAttributes = result.data;
@@ -20930,13 +21066,16 @@ class ServicePoliciesPageComponent extends ListPageComponent {
20930
21066
  serviceTypeSelected(event) {
20931
21067
  this.svc.serviceType = event;
20932
21068
  }
20933
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ServicePoliciesPageComponent, deps: [{ token: ServicePoliciesPageService }, { token: DataTableFilterService }, { token: i5.MatDialog }, { token: TabNameService }, { token: ConsoleEventsService }], target: i0.ɵɵFactoryTarget.Component }); }
21069
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ServicePoliciesPageComponent, deps: [{ token: ServicePoliciesPageService }, { token: DataTableFilterService }, { token: i5.MatDialog }, { token: TabNameService }, { token: ConsoleEventsService }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
20934
21070
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ServicePoliciesPageComponent, isStandalone: false, selector: "lib-service-policies-page", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-service-policies-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]=\"'service-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Service Policies defined, Click the plus to add a Service Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
20935
21071
  }
20936
21072
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ServicePoliciesPageComponent, decorators: [{
20937
21073
  type: Component,
20938
21074
  args: [{ selector: 'lib-service-policies-page', standalone: false, template: "<div class=\"ziti-page-container ziti-service-policies-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]=\"'service-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Service Policies defined, Click the plus to add a Service Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n" }]
20939
- }], ctorParameters: () => [{ type: ServicePoliciesPageService }, { type: DataTableFilterService }, { type: i5.MatDialog }, { type: TabNameService }, { type: ConsoleEventsService }] });
21075
+ }], ctorParameters: () => [{ type: ServicePoliciesPageService }, { type: DataTableFilterService }, { type: i5.MatDialog }, { type: TabNameService }, { type: ConsoleEventsService }, { type: undefined, decorators: [{
21076
+ type: Inject,
21077
+ args: [SHAREDZ_EXTENSION]
21078
+ }] }] });
20940
21079
 
20941
21080
  class ServicePolicyFormComponent extends ProjectableForm {
20942
21081
  constructor(settingsService, svc, zitiService, growlerService, extService, router, route, location) {
@@ -21986,10 +22125,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
21986
22125
  limitations under the License.
21987
22126
  */
21988
22127
  class ServiceEdgeRouterPoliciesPageComponent extends ListPageComponent {
21989
- constructor(svc, filterService, dialogForm, tabNames, consoleEvents) {
21990
- super(filterService, svc, consoleEvents, dialogForm);
22128
+ constructor(svc, filterService, dialogForm, tabNames, consoleEvents, extService) {
22129
+ super(filterService, svc, consoleEvents, dialogForm, extService);
21991
22130
  this.svc = svc;
21992
22131
  this.tabNames = tabNames;
22132
+ this.extService = extService;
21993
22133
  this.routerRoleAttributes = [];
21994
22134
  this.serviceRoleAttributes = [];
21995
22135
  this.formDataChanged = false;
@@ -22022,6 +22162,7 @@ class ServiceEdgeRouterPoliciesPageComponent extends ListPageComponent {
22022
22162
  }
22023
22163
  }
22024
22164
  tableAction(event) {
22165
+ this.trackMenuAction(event?.action, event?.item);
22025
22166
  switch (event?.action) {
22026
22167
  case 'toggleAll':
22027
22168
  case 'toggleItem':
@@ -22047,6 +22188,14 @@ class ServiceEdgeRouterPoliciesPageComponent extends ListPageComponent {
22047
22188
  break;
22048
22189
  }
22049
22190
  }
22191
+ trackMenuAction(action, item) {
22192
+ this.extService?.consoleActionTriggered?.emit({
22193
+ action,
22194
+ page: 'service-edge-router-policy',
22195
+ item,
22196
+ type: 'menu-action'
22197
+ });
22198
+ }
22050
22199
  getRoleAttributes() {
22051
22200
  this.svc.getEdgeRouterRoleAttributes().then((result) => {
22052
22201
  this.routerRoleAttributes = result.data;
@@ -22072,13 +22221,16 @@ class ServiceEdgeRouterPoliciesPageComponent extends ListPageComponent {
22072
22221
  serviceTypeSelected(event) {
22073
22222
  this.svc.serviceType = event;
22074
22223
  }
22075
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ServiceEdgeRouterPoliciesPageComponent, deps: [{ token: ServiceEdgeRouterPoliciesPageService }, { token: DataTableFilterService }, { token: i5.MatDialog }, { token: TabNameService }, { token: ConsoleEventsService }], target: i0.ɵɵFactoryTarget.Component }); }
22224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ServiceEdgeRouterPoliciesPageComponent, deps: [{ token: ServiceEdgeRouterPoliciesPageService }, { token: DataTableFilterService }, { token: i5.MatDialog }, { token: TabNameService }, { token: ConsoleEventsService }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
22076
22225
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ServiceEdgeRouterPoliciesPageComponent, isStandalone: false, selector: "lib-service-edge-router-policies-page", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container service-edge-router-policies-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]=\"'service-edge-router-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Service Edge Router Policies defined, Click the plus to add a Service Edge Router Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
22077
22226
  }
22078
22227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ServiceEdgeRouterPoliciesPageComponent, decorators: [{
22079
22228
  type: Component,
22080
22229
  args: [{ selector: 'lib-service-edge-router-policies-page', standalone: false, template: "<div class=\"ziti-page-container service-edge-router-policies-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]=\"'service-edge-router-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Service Edge Router Policies defined, Click the plus to add a Service Edge Router Policy.'\"\n [filterApplied]=\"filterApplied\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n" }]
22081
- }], ctorParameters: () => [{ type: ServiceEdgeRouterPoliciesPageService }, { type: DataTableFilterService }, { type: i5.MatDialog }, { type: TabNameService }, { type: ConsoleEventsService }] });
22230
+ }], ctorParameters: () => [{ type: ServiceEdgeRouterPoliciesPageService }, { type: DataTableFilterService }, { type: i5.MatDialog }, { type: TabNameService }, { type: ConsoleEventsService }, { type: undefined, decorators: [{
22231
+ type: Inject,
22232
+ args: [SHAREDZ_EXTENSION]
22233
+ }] }] });
22082
22234
 
22083
22235
  class ServiceEdgeRouterPolicy {
22084
22236
  constructor() {
@@ -22739,10 +22891,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
22739
22891
  limitations under the License.
22740
22892
  */
22741
22893
  class TerminatorsPageComponent extends ListPageComponent {
22742
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
22743
- super(filterService, svc, consoleEvents, dialogForm);
22894
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
22895
+ super(filterService, svc, consoleEvents, dialogForm, extService);
22744
22896
  this.svc = svc;
22745
22897
  this.tabNames = tabNames;
22898
+ this.extService = extService;
22746
22899
  this.title = 'Terminators';
22747
22900
  this.formDataChanged = false;
22748
22901
  }
@@ -22770,6 +22923,7 @@ class TerminatorsPageComponent extends ListPageComponent {
22770
22923
  }
22771
22924
  }
22772
22925
  tableAction(event) {
22926
+ this.trackMenuAction(event?.action, event?.item);
22773
22927
  switch (event?.action) {
22774
22928
  case 'toggleAll':
22775
22929
  case 'toggleItem':
@@ -22788,6 +22942,14 @@ class TerminatorsPageComponent extends ListPageComponent {
22788
22942
  break;
22789
22943
  }
22790
22944
  }
22945
+ trackMenuAction(action, item) {
22946
+ this.extService?.consoleActionTriggered?.emit({
22947
+ action,
22948
+ page: 'terminator',
22949
+ item,
22950
+ type: 'menu-action'
22951
+ });
22952
+ }
22791
22953
  deleteItem(item) {
22792
22954
  this.openBulkDelete([item], 'terminator');
22793
22955
  }
@@ -22800,13 +22962,16 @@ class TerminatorsPageComponent extends ListPageComponent {
22800
22962
  dataChanged(event) {
22801
22963
  this.formDataChanged = event;
22802
22964
  }
22803
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TerminatorsPageComponent, deps: [{ token: TerminatorsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
22965
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TerminatorsPageComponent, deps: [{ token: TerminatorsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
22804
22966
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: TerminatorsPageComponent, isStandalone: false, selector: "lib-configurations", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-terminators-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [hideAction]=\"true\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n <lib-data-table [tableId]=\"'terminators'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No terminators defined, Click the plus to add a terminator.'\"\n [filterApplied]=\"filterApplied\"\n [filterName]=\"'Address'\"\n [filterColumn]=\"'address'\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n [options]=\"{noSelect: true, noMenu: false}\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
22805
22967
  }
22806
22968
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TerminatorsPageComponent, decorators: [{
22807
22969
  type: Component,
22808
22970
  args: [{ selector: 'lib-configurations', standalone: false, template: "<div class=\"ziti-page-container ziti-terminators-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [hideAction]=\"true\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n <lib-data-table [tableId]=\"'terminators'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No terminators defined, Click the plus to add a terminator.'\"\n [filterApplied]=\"filterApplied\"\n [filterName]=\"'Address'\"\n [filterColumn]=\"'address'\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n [options]=\"{noSelect: true, noMenu: false}\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n" }]
22809
- }], ctorParameters: () => [{ type: TerminatorsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
22971
+ }], ctorParameters: () => [{ type: TerminatorsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
22972
+ type: Inject,
22973
+ args: [SHAREDZ_EXTENSION]
22974
+ }] }] });
22810
22975
 
22811
22976
  class Config {
22812
22977
  constructor() {
@@ -23372,10 +23537,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
23372
23537
  limitations under the License.
23373
23538
  */
23374
23539
  class JwtSignersPageComponent extends ListPageComponent {
23375
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
23376
- super(filterService, svc, consoleEvents, dialogForm);
23540
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
23541
+ super(filterService, svc, consoleEvents, dialogForm, extService);
23377
23542
  this.svc = svc;
23378
23543
  this.tabNames = tabNames;
23544
+ this.extService = extService;
23379
23545
  this.title = 'JWT Signers';
23380
23546
  this.formDataChanged = false;
23381
23547
  }
@@ -23430,6 +23596,7 @@ class JwtSignersPageComponent extends ListPageComponent {
23430
23596
  });
23431
23597
  }
23432
23598
  tableAction(event) {
23599
+ this.trackMenuAction(event?.action, event?.item);
23433
23600
  switch (event?.action) {
23434
23601
  case 'toggleAll':
23435
23602
  case 'toggleItem':
@@ -23449,6 +23616,14 @@ class JwtSignersPageComponent extends ListPageComponent {
23449
23616
  break;
23450
23617
  }
23451
23618
  }
23619
+ trackMenuAction(action, item) {
23620
+ this.extService?.consoleActionTriggered?.emit({
23621
+ action,
23622
+ page: 'jwt-signer',
23623
+ item,
23624
+ type: 'menu-action'
23625
+ });
23626
+ }
23452
23627
  checkForAssociatedEntities(selectedItems) {
23453
23628
  this.svc.getTableData('auth-policies', this.svc.DEFAULT_PAGING).then((policies) => {
23454
23629
  const signersWithAssociations = [];
@@ -23494,13 +23669,16 @@ class JwtSignersPageComponent extends ListPageComponent {
23494
23669
  }
23495
23670
  return filename;
23496
23671
  }
23497
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: JwtSignersPageComponent, deps: [{ token: JwtSignersPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
23672
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: JwtSignersPageComponent, deps: [{ token: JwtSignersPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
23498
23673
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: JwtSignersPageComponent, isStandalone: false, selector: "lib-jwt-signers", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-configs-container\">\n @if (_networkJwt) {\n <a\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 }\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]=\"'ext-jwt-signers'\"\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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}.network-jwt-link{position:absolute;right:5.625rem;top:1.5625rem;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: "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"] }] }); }
23499
23674
  }
23500
23675
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: JwtSignersPageComponent, decorators: [{
23501
23676
  type: Component,
23502
23677
  args: [{ selector: 'lib-jwt-signers', standalone: false, template: "<div class=\"ziti-page-container ziti-configs-container\">\n @if (_networkJwt) {\n <a\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 }\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]=\"'ext-jwt-signers'\"\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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [".configurations{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}.network-jwt-link{position:absolute;right:5.625rem;top:1.5625rem;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"] }]
23503
- }], ctorParameters: () => [{ type: JwtSignersPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
23678
+ }], ctorParameters: () => [{ type: JwtSignersPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
23679
+ type: Inject,
23680
+ args: [SHAREDZ_EXTENSION]
23681
+ }] }] });
23504
23682
 
23505
23683
  class JwtSigner {
23506
23684
  constructor() {
@@ -24394,10 +24572,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
24394
24572
  limitations under the License.
24395
24573
  */
24396
24574
  class AuthPoliciesPageComponent extends ListPageComponent {
24397
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
24398
- super(filterService, svc, consoleEvents, dialogForm);
24575
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
24576
+ super(filterService, svc, consoleEvents, dialogForm, extService);
24399
24577
  this.svc = svc;
24400
24578
  this.tabNames = tabNames;
24579
+ this.extService = extService;
24401
24580
  this.title = 'Auth Policies';
24402
24581
  this.formDataChanged = false;
24403
24582
  }
@@ -24434,6 +24613,7 @@ class AuthPoliciesPageComponent extends ListPageComponent {
24434
24613
  }
24435
24614
  }
24436
24615
  tableAction(event) {
24616
+ this.trackMenuAction(event?.action, event?.item);
24437
24617
  switch (event?.action) {
24438
24618
  case 'toggleAll':
24439
24619
  case 'toggleItem':
@@ -24468,6 +24648,14 @@ class AuthPoliciesPageComponent extends ListPageComponent {
24468
24648
  break;
24469
24649
  }
24470
24650
  }
24651
+ trackMenuAction(action, item) {
24652
+ this.extService?.consoleActionTriggered?.emit({
24653
+ action,
24654
+ page: 'auth-policy',
24655
+ item,
24656
+ type: 'menu-action'
24657
+ });
24658
+ }
24471
24659
  deleteItem(item) {
24472
24660
  this.openBulkDelete([item], 'auth-policy');
24473
24661
  }
@@ -24480,13 +24668,16 @@ class AuthPoliciesPageComponent extends ListPageComponent {
24480
24668
  dataChanged(event) {
24481
24669
  this.formDataChanged = event;
24482
24670
  }
24483
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AuthPoliciesPageComponent, deps: [{ token: AuthPoliciesPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
24671
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AuthPoliciesPageComponent, deps: [{ token: AuthPoliciesPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
24484
24672
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: AuthPoliciesPageComponent, isStandalone: false, selector: "lib-auth-policies", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-auth-policies-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]=\"'auth-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Auth Policies 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"] }] }); }
24485
24673
  }
24486
24674
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AuthPoliciesPageComponent, decorators: [{
24487
24675
  type: Component,
24488
24676
  args: [{ selector: 'lib-auth-policies', standalone: false, template: "<div class=\"ziti-page-container ziti-auth-policies-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]=\"'auth-policies'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Auth Policies 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"] }]
24489
- }], ctorParameters: () => [{ type: AuthPoliciesPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
24677
+ }], ctorParameters: () => [{ type: AuthPoliciesPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
24678
+ type: Inject,
24679
+ args: [SHAREDZ_EXTENSION]
24680
+ }] }] });
24490
24681
 
24491
24682
  class AuthPolicy {
24492
24683
  constructor() {
@@ -25164,10 +25355,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
25164
25355
  limitations under the License.
25165
25356
  */
25166
25357
  class CertificateAuthoritiesPageComponent extends ListPageComponent {
25167
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
25168
- super(filterService, svc, consoleEvents, dialogForm);
25358
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
25359
+ super(filterService, svc, consoleEvents, dialogForm, extService);
25169
25360
  this.svc = svc;
25170
25361
  this.tabNames = tabNames;
25362
+ this.extService = extService;
25171
25363
  this.title = 'Certificate Authorities';
25172
25364
  this.formDataChanged = false;
25173
25365
  }
@@ -25195,6 +25387,7 @@ class CertificateAuthoritiesPageComponent extends ListPageComponent {
25195
25387
  }
25196
25388
  }
25197
25389
  tableAction(event) {
25390
+ this.trackMenuAction(event?.action, event?.item);
25198
25391
  switch (event?.action) {
25199
25392
  case 'toggleAll':
25200
25393
  case 'toggleItem':
@@ -25222,6 +25415,14 @@ class CertificateAuthoritiesPageComponent extends ListPageComponent {
25222
25415
  break;
25223
25416
  }
25224
25417
  }
25418
+ trackMenuAction(action, item) {
25419
+ this.extService?.consoleActionTriggered?.emit({
25420
+ action,
25421
+ page: 'certificate-authority',
25422
+ item,
25423
+ type: 'menu-action'
25424
+ });
25425
+ }
25225
25426
  deleteItem(item) {
25226
25427
  this.openBulkDelete([item], 'certificate authority');
25227
25428
  }
@@ -25247,13 +25448,16 @@ class CertificateAuthoritiesPageComponent extends ListPageComponent {
25247
25448
  });
25248
25449
  super.gridReady(event);
25249
25450
  }
25250
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CertificateAuthoritiesPageComponent, deps: [{ token: CertificateAuthoritiesPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
25451
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CertificateAuthoritiesPageComponent, deps: [{ token: CertificateAuthoritiesPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
25251
25452
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: CertificateAuthoritiesPageComponent, isStandalone: false, selector: "lib-auth-policies", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-cert-authorities-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]=\"'certificate-authorities'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Certificate Authorities 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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [".certificate-authorities{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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
25252
25453
  }
25253
25454
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CertificateAuthoritiesPageComponent, decorators: [{
25254
25455
  type: Component,
25255
25456
  args: [{ selector: 'lib-auth-policies', standalone: false, template: "<div class=\"ziti-page-container ziti-cert-authorities-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]=\"'certificate-authorities'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Certificate Authorities 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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [".certificate-authorities{width:100%;height:100%;display:flex;flex-direction:column;position:relative;flex:1 1 auto}\n"] }]
25256
- }], ctorParameters: () => [{ type: CertificateAuthoritiesPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
25457
+ }], ctorParameters: () => [{ type: CertificateAuthoritiesPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
25458
+ type: Inject,
25459
+ args: [SHAREDZ_EXTENSION]
25460
+ }] }] });
25257
25461
 
25258
25462
  class CertificateAuthority {
25259
25463
  constructor() {
@@ -26214,10 +26418,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
26214
26418
  limitations under the License.
26215
26419
  */
26216
26420
  class ConfigTypesPageComponent extends ListPageComponent {
26217
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
26218
- super(filterService, svc, consoleEvents, dialogForm);
26421
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
26422
+ super(filterService, svc, consoleEvents, dialogForm, extService);
26219
26423
  this.svc = svc;
26220
26424
  this.tabNames = tabNames;
26425
+ this.extService = extService;
26221
26426
  this.title = 'Config Types';
26222
26427
  this.formDataChanged = false;
26223
26428
  this.reservedNames = ['host.v1', 'host.v2', 'intercept.v1', 'ziti-tunneler-client.v1', 'ziti-tunneler-server.v1'];
@@ -26246,6 +26451,7 @@ class ConfigTypesPageComponent extends ListPageComponent {
26246
26451
  }
26247
26452
  }
26248
26453
  tableAction(event) {
26454
+ this.trackMenuAction(event?.action, event?.item);
26249
26455
  switch (event?.action) {
26250
26456
  case 'toggleAll':
26251
26457
  case 'toggleItem':
@@ -26270,6 +26476,14 @@ class ConfigTypesPageComponent extends ListPageComponent {
26270
26476
  break;
26271
26477
  }
26272
26478
  }
26479
+ trackMenuAction(action, item) {
26480
+ this.extService?.consoleActionTriggered?.emit({
26481
+ action,
26482
+ page: 'config-type',
26483
+ item,
26484
+ type: 'menu-action'
26485
+ });
26486
+ }
26273
26487
  deleteItem(item) {
26274
26488
  this.openBulkDelete([item], 'config type');
26275
26489
  }
@@ -26307,13 +26521,16 @@ class ConfigTypesPageComponent extends ListPageComponent {
26307
26521
  }
26308
26522
  });
26309
26523
  }
26310
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigTypesPageComponent, deps: [{ token: ConfigTypesPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
26524
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigTypesPageComponent, deps: [{ token: ConfigTypesPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
26311
26525
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: ConfigTypesPageComponent, isStandalone: false, selector: "lib-configurations", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-config-types-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]=\"'config-types'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Config Types 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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
26312
26526
  }
26313
26527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConfigTypesPageComponent, decorators: [{
26314
26528
  type: Component,
26315
26529
  args: [{ selector: 'lib-configurations', standalone: false, template: "<div class=\"ziti-page-container ziti-config-types-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]=\"'config-types'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Config Types 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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}" }]
26316
- }], ctorParameters: () => [{ type: ConfigTypesPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
26530
+ }], ctorParameters: () => [{ type: ConfigTypesPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
26531
+ type: Inject,
26532
+ args: [SHAREDZ_EXTENSION]
26533
+ }] }] });
26317
26534
 
26318
26535
  class ConfigType {
26319
26536
  constructor() {
@@ -26828,10 +27045,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
26828
27045
  limitations under the License.
26829
27046
  */
26830
27047
  class PostureChecksPageComponent extends ListPageComponent {
26831
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
26832
- super(filterService, svc, consoleEvents, dialogForm);
27048
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
27049
+ super(filterService, svc, consoleEvents, dialogForm, extService);
26833
27050
  this.svc = svc;
26834
27051
  this.tabNames = tabNames;
27052
+ this.extService = extService;
26835
27053
  this.title = 'Posture Checks';
26836
27054
  this.formDataChanged = false;
26837
27055
  }
@@ -26859,6 +27077,7 @@ class PostureChecksPageComponent extends ListPageComponent {
26859
27077
  }
26860
27078
  }
26861
27079
  tableAction(event) {
27080
+ this.trackMenuAction(event?.action, event?.item);
26862
27081
  switch (event?.action) {
26863
27082
  case 'toggleAll':
26864
27083
  case 'toggleItem':
@@ -26883,6 +27102,14 @@ class PostureChecksPageComponent extends ListPageComponent {
26883
27102
  break;
26884
27103
  }
26885
27104
  }
27105
+ trackMenuAction(action, item) {
27106
+ this.extService?.consoleActionTriggered?.emit({
27107
+ action,
27108
+ page: 'posture-check',
27109
+ item,
27110
+ type: 'menu-action'
27111
+ });
27112
+ }
26886
27113
  deleteItem(item) {
26887
27114
  this.openBulkDelete([item], 'posture check');
26888
27115
  }
@@ -26895,13 +27122,16 @@ class PostureChecksPageComponent extends ListPageComponent {
26895
27122
  dataChanged(event) {
26896
27123
  this.formDataChanged = event;
26897
27124
  }
26898
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PostureChecksPageComponent, deps: [{ token: PostureChecksPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
27125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PostureChecksPageComponent, deps: [{ token: PostureChecksPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
26899
27126
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: PostureChecksPageComponent, isStandalone: false, selector: "lib-configurations", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-posture-checks-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]=\"'posture-checks'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Posture Checks 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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
26900
27127
  }
26901
27128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PostureChecksPageComponent, decorators: [{
26902
27129
  type: Component,
26903
27130
  args: [{ selector: 'lib-configurations', standalone: false, template: "<div class=\"ziti-page-container ziti-posture-checks-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]=\"'posture-checks'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Posture Checks 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@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}" }]
26904
- }], ctorParameters: () => [{ type: PostureChecksPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
27131
+ }], ctorParameters: () => [{ type: PostureChecksPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
27132
+ type: Inject,
27133
+ args: [SHAREDZ_EXTENSION]
27134
+ }] }] });
26905
27135
 
26906
27136
  class PostureCheck {
26907
27137
  constructor() {
@@ -27647,10 +27877,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
27647
27877
  limitations under the License.
27648
27878
  */
27649
27879
  class SessionsPageComponent extends ListPageComponent {
27650
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
27651
- super(filterService, svc, consoleEvents, dialogForm);
27880
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
27881
+ super(filterService, svc, consoleEvents, dialogForm, extService);
27652
27882
  this.svc = svc;
27653
27883
  this.tabNames = tabNames;
27884
+ this.extService = extService;
27654
27885
  this.title = 'Sessions';
27655
27886
  this.formDataChanged = false;
27656
27887
  }
@@ -27678,6 +27909,7 @@ class SessionsPageComponent extends ListPageComponent {
27678
27909
  }
27679
27910
  }
27680
27911
  tableAction(event) {
27912
+ this.trackMenuAction(event?.action, event?.item);
27681
27913
  switch (event?.action) {
27682
27914
  case 'toggleAll':
27683
27915
  case 'toggleItem':
@@ -27702,6 +27934,14 @@ class SessionsPageComponent extends ListPageComponent {
27702
27934
  break;
27703
27935
  }
27704
27936
  }
27937
+ trackMenuAction(action, item) {
27938
+ this.extService?.consoleActionTriggered?.emit({
27939
+ action,
27940
+ page: 'session',
27941
+ item,
27942
+ type: 'menu-action'
27943
+ });
27944
+ }
27705
27945
  openBulkDelete(selectedItems, label) {
27706
27946
  const updatedItems = selectedItems.map((item) => {
27707
27947
  return {
@@ -27723,13 +27963,16 @@ class SessionsPageComponent extends ListPageComponent {
27723
27963
  dataChanged(event) {
27724
27964
  this.formDataChanged = event;
27725
27965
  }
27726
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SessionsPageComponent, deps: [{ token: SessionsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
27966
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SessionsPageComponent, deps: [{ token: SessionsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
27727
27967
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: SessionsPageComponent, isStandalone: false, selector: "lib-sessions", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-sessions-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [hideAction]=\"true\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'sessions'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Sessions defined'\"\n [filterApplied]=\"filterApplied\"\n [filterColumn]=\"'id'\"\n [filterName]=\"'id'\"\n [menuItems]=\"svc.menuItems\"\n [showNoItemsAdd]=\"false\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
27728
27968
  }
27729
27969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SessionsPageComponent, decorators: [{
27730
27970
  type: Component,
27731
27971
  args: [{ selector: 'lib-sessions', standalone: false, template: "<div class=\"ziti-page-container ziti-sessions-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [hideAction]=\"true\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'sessions'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No Sessions defined'\"\n [filterApplied]=\"filterApplied\"\n [filterColumn]=\"'id'\"\n [filterName]=\"'id'\"\n [menuItems]=\"svc.menuItems\"\n [showNoItemsAdd]=\"false\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n" }]
27732
- }], ctorParameters: () => [{ type: SessionsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
27972
+ }], ctorParameters: () => [{ type: SessionsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
27973
+ type: Inject,
27974
+ args: [SHAREDZ_EXTENSION]
27975
+ }] }] });
27733
27976
 
27734
27977
  class SessionFormService {
27735
27978
  constructor(settingsService, zitiService, growlerService, extService) {
@@ -28240,10 +28483,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
28240
28483
  limitations under the License.
28241
28484
  */
28242
28485
  class APISessionsPageComponent extends ListPageComponent {
28243
- constructor(svc, filterService, tabNames, consoleEvents, dialogForm) {
28244
- super(filterService, svc, consoleEvents, dialogForm);
28486
+ constructor(svc, filterService, tabNames, consoleEvents, dialogForm, extService) {
28487
+ super(filterService, svc, consoleEvents, dialogForm, extService);
28245
28488
  this.svc = svc;
28246
28489
  this.tabNames = tabNames;
28490
+ this.extService = extService;
28247
28491
  this.title = 'API Sessions';
28248
28492
  this.formDataChanged = false;
28249
28493
  }
@@ -28271,6 +28515,7 @@ class APISessionsPageComponent extends ListPageComponent {
28271
28515
  }
28272
28516
  }
28273
28517
  tableAction(event) {
28518
+ this.trackMenuAction(event?.action, event?.item);
28274
28519
  switch (event?.action) {
28275
28520
  case 'toggleAll':
28276
28521
  case 'toggleItem':
@@ -28295,6 +28540,14 @@ class APISessionsPageComponent extends ListPageComponent {
28295
28540
  break;
28296
28541
  }
28297
28542
  }
28543
+ trackMenuAction(action, item) {
28544
+ this.extService?.consoleActionTriggered?.emit({
28545
+ action,
28546
+ page: 'api-session',
28547
+ item,
28548
+ type: 'menu-action'
28549
+ });
28550
+ }
28298
28551
  openBulkDelete(selectedItems, label) {
28299
28552
  const updatedItems = selectedItems.map((item) => {
28300
28553
  return {
@@ -28316,13 +28569,16 @@ class APISessionsPageComponent extends ListPageComponent {
28316
28569
  dataChanged(event) {
28317
28570
  this.formDataChanged = event;
28318
28571
  }
28319
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: APISessionsPageComponent, deps: [{ token: ApiSessionsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
28572
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: APISessionsPageComponent, deps: [{ token: ApiSessionsPageService }, { token: DataTableFilterService }, { token: TabNameService }, { token: ConsoleEventsService }, { token: i5.MatDialog }, { token: SHAREDZ_EXTENSION }], target: i0.ɵɵFactoryTarget.Component }); }
28320
28573
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: APISessionsPageComponent, isStandalone: false, selector: "lib-api-sessions", usesInheritance: true, ngImport: i0, template: "<div class=\"ziti-page-container ziti-api-sessions-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [hideAction]=\"true\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'api-sessions'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No API Sessions defined'\"\n [filterApplied]=\"filterApplied\"\n [filterColumn]=\"'id'\"\n [filterName]=\"'ID'\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n", styles: [""], 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"] }, { kind: "component", type: LoadingIndicatorComponent, selector: "lib-loading-indicator", inputs: ["isLoading"] }] }); }
28321
28574
  }
28322
28575
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: APISessionsPageComponent, decorators: [{
28323
28576
  type: Component,
28324
28577
  args: [{ selector: 'lib-api-sessions', standalone: false, template: "<div class=\"ziti-page-container ziti-api-sessions-container\">\n <lib-list-page-header [title]=\"title\"\n [tabs]=\"tabs\"\n [hideAction]=\"true\"\n (actionClicked)=\"headerActionClicked($event)\"></lib-list-page-header>\n\n <lib-data-table [tableId]=\"'api-sessions'\"\n [rowData]=\"rowData\"\n [columnDefinitions]=\"columnDefs\"\n (actionRequested)=\"tableAction($event)\"\n [startCount]=\"startCount\"\n [endCount]=\"endCount\"\n [totalCount]=\"totalCount\"\n [emptyMsg]=\"'No API Sessions defined'\"\n [filterApplied]=\"filterApplied\"\n [filterColumn]=\"'id'\"\n [filterName]=\"'ID'\"\n [menuItems]=\"svc.menuItems\"\n (gridReady)=\"gridReady($event)\"\n >\n </lib-data-table>\n</div>\n@if (isLoading) {\n <lib-loading-indicator [isLoading]=\"isLoading\"></lib-loading-indicator>\n}\n" }]
28325
- }], ctorParameters: () => [{ type: ApiSessionsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }] });
28578
+ }], ctorParameters: () => [{ type: ApiSessionsPageService }, { type: DataTableFilterService }, { type: TabNameService }, { type: ConsoleEventsService }, { type: i5.MatDialog }, { type: undefined, decorators: [{
28579
+ type: Inject,
28580
+ args: [SHAREDZ_EXTENSION]
28581
+ }] }] });
28326
28582
 
28327
28583
  class APISessionFormService {
28328
28584
  constructor(settingsService, zitiService, growlerService, extService) {
@@ -30611,7 +30867,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
30611
30867
  }] });
30612
30868
 
30613
30869
  const ZAC_VERSION = {
30614
- "version": "4.1.1"
30870
+ "version": "4.1.3"
30615
30871
  };
30616
30872
 
30617
30873
  /*