@openziti/ziti-console-lib 1.5.5 → 1.7.0

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.
package/index.d.ts CHANGED
@@ -15,36 +15,36 @@ import { NGXLogger } from 'ngx-logger';
15
15
  import { HttpBackend, HttpClient } from '@angular/common/http';
16
16
  import * as i2 from '@angular/common';
17
17
  import { Location } from '@angular/common';
18
- import * as i128 from '@angular/material/dialog';
18
+ import * as i135 from '@angular/material/dialog';
19
19
  import { MatDialog, MatDialogRef } from '@angular/material/dialog';
20
20
  import moment from 'moment/moment';
21
- import * as i140 from 'ag-grid-angular';
21
+ import * as i147 from 'ag-grid-angular';
22
22
  import { IHeaderAngularComp, ICellRendererAngularComp, ITooltipAngularComp } from 'ag-grid-angular';
23
23
  import { IHeaderParams, ICellRendererParams, ITooltipParams } from 'ag-grid-community';
24
- import * as i139 from '@angular/cdk/drag-drop';
24
+ import * as i146 from '@angular/cdk/drag-drop';
25
25
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
26
- import * as i143 from 'ang-jsoneditor';
26
+ import * as i150 from 'ang-jsoneditor';
27
27
  import { JsonEditorComponent } from 'ang-jsoneditor';
28
- import * as i131 from '@angular/material/datepicker';
28
+ import * as i138 from '@angular/material/datepicker';
29
29
  import { MatCalendar, MatDateRangePicker } from '@angular/material/datepicker';
30
- import * as i132 from '@angular/material/core';
30
+ import * as i139 from '@angular/material/core';
31
31
  import { DateAdapter } from '@angular/material/core';
32
- import * as i146 from 'ngx-lottie';
32
+ import * as i153 from 'ngx-lottie';
33
33
  import { AnimationOptions } from 'ngx-lottie';
34
- import * as i135 from '@angular/material/select';
34
+ import * as i142 from '@angular/material/select';
35
35
  import { MatSelect } from '@angular/material/select';
36
36
  import { OAuthService } from 'angular-oauth2-oidc';
37
37
  import moment$1 from 'moment';
38
- import * as i129 from '@angular/material/radio';
39
- import * as i133 from '@angular/material/form-field';
40
- import * as i134 from '@angular/material/input';
41
- import * as i136 from '@angular/material/button';
42
- import * as i137 from '@angular/material/icon';
43
- import * as i138 from '@angular/cdk/overlay';
44
- import * as i141 from 'angularx-qrcode';
45
- import * as i142 from 'ng-click-outside';
46
- import * as i144 from '@angular/material/tooltip';
47
- import * as i145 from '@angular/material/autocomplete';
38
+ import * as i4 from '@angular/material/tooltip';
39
+ import * as i136 from '@angular/material/radio';
40
+ import * as i140 from '@angular/material/form-field';
41
+ import * as i141 from '@angular/material/input';
42
+ import * as i143 from '@angular/material/button';
43
+ import * as i144 from '@angular/material/icon';
44
+ import * as i145 from '@angular/cdk/overlay';
45
+ import * as i148 from 'angularx-qrcode';
46
+ import * as i149 from 'ng-click-outside';
47
+ import * as i152 from '@angular/material/autocomplete';
48
48
 
49
49
  declare class SafePipe implements PipeTransform {
50
50
  private sanitized;
@@ -131,6 +131,11 @@ interface ListColumn<T = any> {
131
131
  tooltipInputs?: (ctx: ListCellContext<T>) => Record<string, unknown>;
132
132
  /** Defaults to true. When false the column cannot be hidden. */
133
133
  hideable?: boolean;
134
+ /** Leave the column out of the Columns menu (it still renders in the table). */
135
+ excludeFromChooser?: boolean;
136
+ /** In tree mode, the column that holds the expand/collapse control and per-level
137
+ * indentation. When no column sets this, the first visible column is used. */
138
+ treeColumn?: boolean;
134
139
  /** Defaults to true. When false the column cannot be drag-reordered. */
135
140
  reorderable?: boolean;
136
141
  /** Initial visibility (was ag-grid `hide`). */
@@ -145,6 +150,18 @@ interface ListCell<T = any> {
145
150
  row?: T;
146
151
  value?: any;
147
152
  }
153
+ /** Nested-row layout: 'card' floats each level as a bordered card, 'flat' renders inline. */
154
+ type TreeVariant = 'card' | 'flat';
155
+ /** Structural options for {@link ListTableComponent}. */
156
+ interface ListTableOptions {
157
+ noSelect?: boolean;
158
+ noMenu?: boolean;
159
+ pager?: 'pages' | 'cursor';
160
+ tree?: boolean;
161
+ /** Tree mode: render checkboxes on nested rows and include them in the selection. */
162
+ selectChildren?: boolean;
163
+ fitColumns?: boolean;
164
+ }
148
165
 
149
166
  declare const SHAREDZ_EXTENSION: InjectionToken<any>;
150
167
  type ExtensionEventType = 'formDataUpdated' | 'attributesChanged' | 'service-attributes-changed' | 'identity-attributes-changed' | 'policy-type-changed' | 'policy-semantic-changed' | 'tableDataUpdated' | string;
@@ -1352,6 +1369,10 @@ declare class ListTableService {
1352
1369
  private stateKey;
1353
1370
  private widthsKey;
1354
1371
  private pageSizeKey;
1372
+ private treeVariantKey;
1373
+ /** Returns the saved tree layout ('card' | 'flat'), or `fallback` if none. */
1374
+ restoreTreeVariant(fallback: TreeVariant): TreeVariant;
1375
+ saveTreeVariant(variant: TreeVariant): void;
1355
1376
  private static pageSizeKeyFor;
1356
1377
  restorePageSize(fallback: number): number;
1357
1378
  savePageSize(size: number): void;
@@ -1362,9 +1383,22 @@ declare class ListTableService {
1362
1383
  * and order applied. Columns not present in the saved state keep their declared
1363
1384
  * position (appended after the saved ones).
1364
1385
  */
1386
+ /** Parses a stored JSON value, or null when missing/unavailable/malformed. */
1387
+ private readJson;
1388
+ /** Applies a widths map then a persisted order/visibility list onto a fresh copy of
1389
+ * `columns`. Shared by the top-level and per-depth restore paths. */
1390
+ private mergePersistedColumns;
1391
+ /** Order + visibility + width entries for one set of columns. */
1392
+ private columnStateEntries;
1365
1393
  applyPersistedState(columns: ListColumn[]): ListColumn[];
1366
1394
  /** Persists the current order + visibility (and widths embedded in each entry). */
1367
1395
  saveState(columns: ListColumn[]): void;
1396
+ private childStateKey;
1397
+ private childWidthsKey;
1398
+ /** Applies persisted order/visibility/width for one nested depth to its columns. */
1399
+ applyPersistedChildState(level: number, columns: ListColumn[]): ListColumn[];
1400
+ saveChildState(level: number, columns: ListColumn[]): void;
1401
+ saveChildWidth(level: number, colId: string, width: number, columns: ListColumn[]): void;
1368
1402
  /** Persists a single column's width, then rewrites the ordered state. */
1369
1403
  saveWidth(colId: string, width: number, columns: ListColumn[]): void;
1370
1404
  /** Clears all persisted layout for this table ("Restore Default Table"). */
@@ -1441,13 +1475,43 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1441
1475
  get tableId(): string;
1442
1476
  private _tableId;
1443
1477
  set columns(value: ListColumn[]);
1444
- rowData: any[];
1478
+ set rowData(value: any[]);
1479
+ get rowData(): any[];
1480
+ private _rowData;
1445
1481
  isLoading: boolean;
1446
- options: {
1447
- noSelect?: boolean;
1448
- noMenu?: boolean;
1449
- pager?: 'pages' | 'cursor';
1450
- };
1482
+ set options(value: ListTableOptions);
1483
+ get options(): ListTableOptions;
1484
+ private _options;
1485
+ /** Tree mode: fetch a row's children the first time it is expanded. Return the
1486
+ * child rows (any shape the columns render). A row with `leaf: true`, or one that
1487
+ * resolves to an empty array, shows no expand control.
1488
+ * Note: tree runtime state (`children`, `leaf`, `__tree*`) is written onto the row
1489
+ * objects, so a host that reuses a row in a save call should strip it first. */
1490
+ loadChildren?: (row: any) => Promise<any[]> | any[];
1491
+ /** Tree mode: columns per depth level (index = level; level 0 uses `columns`).
1492
+ * Nested rows render in their own grid with a per-level sub-header, so children
1493
+ * need not match the parent. Unset renders children with the parent's columns.
1494
+ * The bound value is the default; users can show/hide/reorder/resize child columns
1495
+ * per depth from the Columns menu, persisted per table. */
1496
+ set childColumnsByLevel(v: ListColumn[][] | undefined);
1497
+ get childColumnsByLevel(): ListColumn[][] | undefined;
1498
+ private _declaredChildColumnsByLevel?;
1499
+ private _childColumnsByLevel?;
1500
+ private _childLevelCache;
1501
+ private _childColsVersion;
1502
+ private _childLevelCacheVersion;
1503
+ private _treeKeyCache;
1504
+ private _leadOffsetCache;
1505
+ private _treeMemoVersion;
1506
+ private invalidateColumnCache;
1507
+ private syncTreeMemo;
1508
+ /** Rebuilds the effective per-level child columns from the declared defaults with
1509
+ * any persisted order/visibility/width applied. */
1510
+ private buildChildColumns;
1511
+ nodeToggled: EventEmitter<{
1512
+ row: any;
1513
+ expanded: boolean;
1514
+ }>;
1451
1515
  hasNext: boolean;
1452
1516
  hasPrev: boolean;
1453
1517
  startCount: any;
@@ -1468,6 +1532,8 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1468
1532
  item?: any;
1469
1533
  }>;
1470
1534
  tableReady: EventEmitter<any>;
1535
+ /** Full set of selected rows (all depths) whenever the selection changes. */
1536
+ selectionChanged: EventEmitter<any[]>;
1471
1537
  contextMenu?: ElementRef;
1472
1538
  filterZone?: ElementRef<HTMLElement>;
1473
1539
  filtersRow?: ElementRef<HTMLElement>;
@@ -1484,6 +1550,32 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1484
1550
  menuTop: number;
1485
1551
  selectedItem: any;
1486
1552
  allToggled: boolean;
1553
+ /** Rows actually rendered: in tree mode this is the roots plus the expanded
1554
+ * descendants in order; otherwise it is `rowData` unchanged. */
1555
+ flatRows: any[];
1556
+ /** Tree look: 'card' floats each nested level as a bordered card; 'flat' renders
1557
+ * nested rows inline with the table, sub-headers as plain strips, no card chrome.
1558
+ * The bound value is the default; the user can switch it from the Columns menu and
1559
+ * the choice is remembered per table. */
1560
+ set treeVariant(v: TreeVariant);
1561
+ get treeVariant(): TreeVariant;
1562
+ private _treeVariant;
1563
+ private _declaredTreeVariant;
1564
+ /** Show the flat/nested row-layout switch in the Columns menu. Hidden for now;
1565
+ * the variant still comes from the `treeVariant` input. */
1566
+ showTreeVariantToggle: boolean;
1567
+ /** Flat variant only: draw a running guide rail down the left of each nested level. */
1568
+ treeRail: boolean;
1569
+ get isFlatTree(): boolean;
1570
+ /** Show the flat/nested switch only when the table actually renders nested rows. */
1571
+ get canSwitchTreeVariant(): boolean;
1572
+ setTreeVariant(variant: TreeVariant): void;
1573
+ readonly treeIndentRem = 1.25;
1574
+ readonly treeDeepAlignRem = 0.625;
1575
+ readonly treeFlatBaseRem = 3.75;
1576
+ readonly treeFlatStepRem = 2.125;
1577
+ readonly treeCardBaseRem = 4;
1578
+ readonly treeSelectColRem = 2.25;
1487
1579
  showColumnChooser: boolean;
1488
1580
  searchString: string;
1489
1581
  activeFilters: FilterObj[];
@@ -1506,6 +1598,9 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1506
1598
  private _initialColumns;
1507
1599
  private _initialized;
1508
1600
  private subscription;
1601
+ private _expandedKeys;
1602
+ private _childrenCache;
1603
+ private _destroyed;
1509
1604
  constructor(svc: ListTableService, tableFilterService: DataTableFilterService, el: ElementRef, ngZone: NgZone, sanitizer: DomSanitizer);
1510
1605
  ngOnInit(): void;
1511
1606
  ngAfterViewInit(): void;
@@ -1550,15 +1645,78 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1550
1645
  } | null;
1551
1646
  onCellHover(col: ListColumn, row: any, i: number, event: MouseEvent): void;
1552
1647
  onCellLeave(): void;
1648
+ /** True when nested rows get checkboxes and join the selection (opt-in). */
1649
+ get childSelectEnabled(): boolean;
1650
+ /** Rows the checkboxes and select-all act on: top-level only, unless selectChildren
1651
+ * is set. Keeps select-all from marking nested rows a host that reads rowData never sees. */
1652
+ private get selectableRows();
1553
1653
  toggleItem: (item: any) => void;
1554
1654
  /** Some rows selected but the header select-all isn't fully on (indeterminate). */
1555
1655
  get someSelected(): boolean;
1556
1656
  toggleAll(): void;
1657
+ private syncSelectAll;
1658
+ /** Emit every selected row across all depths. Walks the full data, not just the rendered
1659
+ * rows, so a collapsed parent's selected children are still reported. */
1660
+ private emitSelection;
1661
+ get isTreeMode(): boolean;
1662
+ /** True when per-level child columns are configured (children render in their own
1663
+ * grid with a sub-header rather than the parent's columns). */
1664
+ get hasChildColumns(): boolean;
1665
+ /** Columns used at a given depth: level 0 is the main (visible) columns; deeper
1666
+ * levels use `childColumnsByLevel`, falling back to the deepest set defined. */
1667
+ columnsForLevel(level: number): ListColumn[];
1668
+ /** Child columns the chooser lists at a depth: all declared ones (including hidden),
1669
+ * minus structural columns like the select checkbox or row-actions gutter. */
1670
+ allColumnsForLevel(level: number): ListColumn[];
1671
+ /** Depths that offer configurable columns (skips the level-0 placeholder and any
1672
+ * level that only holds structural columns), one chooser group per level. */
1673
+ get childLevels(): number[];
1674
+ /** Chooser hint for a nested level: its first few column labels, then "+N". */
1675
+ childLevelLabel(level: number): string;
1676
+ /** Key of the column that carries the expand control + indentation for a column set:
1677
+ * the flagged one, else the first real data column (skipping a leading structural
1678
+ * column such as a select checkbox the host put at the start). */
1679
+ private treeColumnKeyFor;
1680
+ treeColumnKeyForLevel(level: number): string | undefined;
1681
+ /** Width of the columns before the tree column, used to pull the flat first-column
1682
+ * indent back by whatever structural columns (like a select checkbox) sit ahead of
1683
+ * it, so its content still lands under the parent row's name. */
1684
+ treeLeadOffset(level: number): string;
1685
+ isTreeColumn(col: ListColumn, level: number): boolean;
1686
+ isTreeCell(col: ListColumn): boolean;
1687
+ /** Columns a full-width nested row spans: the data columns plus the select and
1688
+ * menu gutters, matching the header's cell count. */
1689
+ get treeSpanCount(): number;
1690
+ /** Per-level indent (rem); the card variant nudges levels past the first so the edge meets the parent chevron. */
1691
+ treeIndentFor(level: number): number;
1692
+ /** Flat variant: left pad (rem) of a nested row's first column (sub-header + data),
1693
+ * one chevron-width per level so it lines up under the parent row's name. */
1694
+ treeFlatFirstIndentRem(level: number): number;
1695
+ /** Flat variant: drop the chevron slot for a leaf-only level so values sit under their header. */
1696
+ showTreeLead(row: any): boolean;
1697
+ /** Left inset (rem) of a nested card at a given depth, matching the td padding. */
1698
+ private treeCardLeftRem;
1699
+ private _railCache;
1700
+ /** Vertical guide lines redrawing each ancestor card's left edge at this row's
1701
+ * position, so a card's left border stays continuous where a nested card is
1702
+ * inserted between its rows. Returns a stack of 1px background gradients, or null
1703
+ * when there is no ancestor to redraw (roots and the first nested level). */
1704
+ treeAncestorRails(level: number): string | null;
1705
+ private computeAncestorRails;
1706
+ gridTemplate(level: number): string;
1707
+ private hasChildren;
1708
+ /** A row can be expanded unless it is a leaf, has no loaded children, and has no
1709
+ * loader left to try. */
1710
+ canExpand(row: any): boolean;
1711
+ toggleNode(row: any): void;
1712
+ private onChildrenLoaded;
1713
+ /** Flatten the tree into the ordered render list, tagging each row with its depth.
1714
+ * Outside tree mode the render list is `rowData` as-is. */
1715
+ private rebuildFlatRows;
1557
1716
  onHeaderSort(event: {
1558
1717
  colId: string;
1559
1718
  dir: ListSortDir;
1560
1719
  }): void;
1561
- hideColumn(col: ListColumn): void;
1562
1720
  showColumn(event: {
1563
1721
  column: any;
1564
1722
  visible: boolean;
@@ -1568,16 +1726,51 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1568
1726
  /** Count of columns the user has hidden beyond the defaults (drives the badge).
1569
1727
  * Columns hidden by default don't count, so a fresh/default load shows no badge. */
1570
1728
  get hiddenColumnCount(): number;
1571
- /** True when visibility + order match the originally declared columns. */
1729
+ /** True when visibility, order, and width all match the originally declared
1730
+ * columns. Width is included so resizing a column alone still enables the
1731
+ * reset button; a column with no declared width uses null on both sides so
1732
+ * it only counts as changed once the user drags it to a concrete width. */
1572
1733
  get columnsAtDefault(): boolean;
1734
+ /** True when every nested level's columns match their declared order/visibility/width. */
1735
+ private get childColumnsAtDefault();
1573
1736
  /** True when the column is hidden in the originally declared defaults. */
1574
1737
  isDefaultHidden(col: ListColumn): boolean;
1575
1738
  toggleColumnChooser(event: MouseEvent): void;
1576
1739
  closeColumnChooser(): void;
1577
- toggleColumnVisible(col: ListColumn): void;
1578
- chooserReorder(event: CdkDragDrop<ListColumn[]>): void;
1740
+ private _chooserDragged;
1741
+ onChooserDragStarted(): void;
1742
+ onChooserDragEnded(): void;
1743
+ /** Toggle a column's visibility. `level` undefined targets the top-level columns;
1744
+ * a number targets that nested depth's columns. */
1745
+ toggleColumnVisible(col: ListColumn, level?: number): void;
1746
+ /** True when this is the only visible column at its level, so its toggle is disabled
1747
+ * to keep at least one column on screen. */
1748
+ isLastVisibleColumn(col: ListColumn, level?: number): boolean;
1749
+ /** Columns shown in the top-level Columns menu. */
1750
+ get chooserColumns(): ListColumn[];
1751
+ /** Reorder columns from a chooser drag. `level` undefined targets the top-level
1752
+ * columns; a number targets that nested depth's columns. */
1753
+ chooserReorder(event: CdkDragDrop<ListColumn[]>, level?: number): void;
1754
+ /** Refresh and persist after a column visibility/order change, routing to the
1755
+ * top-level or nested-level persistence as appropriate. */
1756
+ private afterColumnChange;
1757
+ private nestedChooserOpen;
1758
+ isNestedGroupOpen(id: string): boolean;
1759
+ toggleNestedGroup(id: string): void;
1579
1760
  startResize(col: ListColumn, event: PointerEvent): void;
1761
+ /** Resize a nested row's column. Measures the sub-header cell's current rendered
1762
+ * width so a flexible (1fr) column converts to a concrete width before dragging;
1763
+ * the grid reflows live because its template reads each column's width. */
1764
+ startChildResize(col: ListColumn, level: number, event: PointerEvent): void;
1580
1765
  private handleResizeMove;
1766
+ /** fitColumns: pick the sink column and the range the drag may travel, so the column and the sink
1767
+ * trade width while every other column stays fixed. No-op (plain resize) when fitColumns is off. */
1768
+ private setupFitCompensation;
1769
+ /** The column that absorbs a resize: a flexible column first (it is meant to take up slack), else
1770
+ * the nearest resizable column that is not the tree column, so indentation never shifts. */
1771
+ private pickSink;
1772
+ private measuredHeaderWidth;
1773
+ private measuredCellWidth;
1581
1774
  private handleResizeEnd;
1582
1775
  private detachResizeListeners;
1583
1776
  openActionMenu: (event: MouseEvent, item: any) => void;
@@ -1622,15 +1815,11 @@ declare class ListTableComponent implements OnInit, AfterViewInit, AfterViewChec
1622
1815
  onPageSizeChange(size: number): void;
1623
1816
  /** Re-fetch the current page (re-emits the page so the host reloads its data). */
1624
1817
  refresh(): void;
1625
- autoRefresh: boolean;
1626
- readonly autoRefreshIntervalMs = 30000;
1627
- private autoRefreshTimer?;
1628
- toggleAutoRefresh(): void;
1629
1818
  private iconCache;
1630
1819
  private safeIcon;
1631
1820
  private updateEntityTypeLabel;
1632
1821
  static ɵfac: i0.ɵɵFactoryDeclaration<ListTableComponent, never>;
1633
- static ɵcmp: i0.ɵɵComponentDeclaration<ListTableComponent, "lib-list-table", never, { "tableId": { "alias": "tableId"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "options": { "alias": "options"; "required": false; }; "hasNext": { "alias": "hasNext"; "required": false; }; "hasPrev": { "alias": "hasPrev"; "required": false; }; "startCount": { "alias": "startCount"; "required": false; }; "endCount": { "alias": "endCount"; "required": false; }; "totalCount": { "alias": "totalCount"; "required": false; }; "filterApplied": { "alias": "filterApplied"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "noItemsImage": { "alias": "noItemsImage"; "required": false; }; "showNoItemsAdd": { "alias": "showNoItemsAdd"; "required": false; }; "noItemsReadonly": { "alias": "noItemsReadonly"; "required": false; }; "accessDenied": { "alias": "accessDenied"; "required": false; }; "entityTypeName": { "alias": "entityTypeName"; "required": false; }; "filterName": { "alias": "filterName"; "required": false; }; "filterColumn": { "alias": "filterColumn"; "required": false; }; "initialPageSize": { "alias": "initialPageSize"; "required": false; }; }, { "actionRequested": "actionRequested"; "tableReady": "tableReady"; }, never, never, false, never>;
1822
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListTableComponent, "lib-list-table", never, { "tableId": { "alias": "tableId"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "options": { "alias": "options"; "required": false; }; "loadChildren": { "alias": "loadChildren"; "required": false; }; "childColumnsByLevel": { "alias": "childColumnsByLevel"; "required": false; }; "hasNext": { "alias": "hasNext"; "required": false; }; "hasPrev": { "alias": "hasPrev"; "required": false; }; "startCount": { "alias": "startCount"; "required": false; }; "endCount": { "alias": "endCount"; "required": false; }; "totalCount": { "alias": "totalCount"; "required": false; }; "filterApplied": { "alias": "filterApplied"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "noItemsImage": { "alias": "noItemsImage"; "required": false; }; "showNoItemsAdd": { "alias": "showNoItemsAdd"; "required": false; }; "noItemsReadonly": { "alias": "noItemsReadonly"; "required": false; }; "accessDenied": { "alias": "accessDenied"; "required": false; }; "entityTypeName": { "alias": "entityTypeName"; "required": false; }; "filterName": { "alias": "filterName"; "required": false; }; "filterColumn": { "alias": "filterColumn"; "required": false; }; "treeVariant": { "alias": "treeVariant"; "required": false; }; "showTreeVariantToggle": { "alias": "showTreeVariantToggle"; "required": false; }; "treeRail": { "alias": "treeRail"; "required": false; }; "initialPageSize": { "alias": "initialPageSize"; "required": false; }; }, { "nodeToggled": "nodeToggled"; "actionRequested": "actionRequested"; "tableReady": "tableReady"; "selectionChanged": "selectionChanged"; }, never, ["[toolbar-filters]"], false, never>;
1634
1823
  }
1635
1824
 
1636
1825
  declare class ConsoleEventsService {
@@ -1955,6 +2144,9 @@ declare class ListTableHeaderComponent {
1955
2144
  activeTab: any;
1956
2145
  actionClicked: EventEmitter<string>;
1957
2146
  tabClicked: EventEmitter<any>;
2147
+ /** Only show the tab strip when there is more than one visible tab; a lone tab
2148
+ * is just a redundant label, so the strip is hidden. */
2149
+ get showTabs(): boolean;
1958
2150
  clickAction(value: string): void;
1959
2151
  onTabClick(tab: any): void;
1960
2152
  tabSelected(tab: any): boolean;
@@ -2504,6 +2696,48 @@ declare class DataTableComponent implements OnChanges, OnInit {
2504
2696
  static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent, "lib-data-table", never, { "rowData": { "alias": "rowData"; "required": false; }; "expandRowData": { "alias": "expandRowData"; "required": false; }; "collapseRowData": { "alias": "collapseRowData"; "required": false; }; "rowValidation": { "alias": "rowValidation"; "required": false; }; "isTimeSearchAvailable": { "alias": "isTimeSearchAvailable"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; "options": { "alias": "options"; "required": false; }; "validateService": { "alias": "validateService"; "required": false; }; "rowsToggled": { "alias": "rowsToggled"; "required": false; }; "tableRefreshCount": { "alias": "tableRefreshCount"; "required": false; }; "view": { "alias": "view"; "required": false; }; "serverSideDataSource": { "alias": "serverSideDataSource"; "required": false; }; "allowDownload": { "alias": "allowDownload"; "required": false; }; "startCount": { "alias": "startCount"; "required": false; }; "endCount": { "alias": "endCount"; "required": false; }; "totalCount": { "alias": "totalCount"; "required": false; }; "emptyMsg": { "alias": "emptyMsg"; "required": false; }; "filterApplied": { "alias": "filterApplied"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "headerActions": { "alias": "headerActions"; "required": false; }; "noItemsClass": { "alias": "noItemsClass"; "required": false; }; "entityTypeName": { "alias": "entityTypeName"; "required": false; }; "showNoItemsAdd": { "alias": "showNoItemsAdd"; "required": false; }; "noItemsReadonly": { "alias": "noItemsReadonly"; "required": false; }; "accessDenied": { "alias": "accessDenied"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; }; "noItemsImage": { "alias": "noItemsImage"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "filterName": { "alias": "filterName"; "required": false; }; "filterColumn": { "alias": "filterColumn"; "required": false; }; "columnDefinitions": { "alias": "columnDefinitions"; "required": false; }; "refreshCount": { "alias": "refreshCount"; "required": false; }; }, { "actionRequested": "actionRequested"; "gridReady": "gridReady"; "dragStart": "dragStart"; "dragLeave": "dragLeave"; "pageChanged": "pageChanged"; }, never, never, false, never>;
2505
2697
  }
2506
2698
 
2699
+ interface RefreshInterval {
2700
+ label: string;
2701
+ seconds: number;
2702
+ }
2703
+ /** Auto-refresh control: a pill + interval menu. Owns the timer and emits `refresh` each tick. */
2704
+ declare class ListTableAutoRefreshComponent implements OnDestroy {
2705
+ /** Current interval in seconds; 0 means off. */
2706
+ set seconds(value: number);
2707
+ get seconds(): number;
2708
+ private _seconds;
2709
+ /** Skip a tick while a refresh is already in flight. */
2710
+ loading: boolean;
2711
+ intervals: RefreshInterval[];
2712
+ refresh: EventEmitter<void>;
2713
+ secondsChange: EventEmitter<number>;
2714
+ open: boolean;
2715
+ /** Menu geometry, all measured when the menu opens: left offset so labels line up
2716
+ * under the button's value, width so the right edge lands on the button's right
2717
+ * edge, and right padding so the check centers under the chevron. */
2718
+ menuLeft: number;
2719
+ menuWidth: number;
2720
+ menuPadRight: number;
2721
+ private timer?;
2722
+ arEl?: ElementRef<HTMLElement>;
2723
+ valueEl?: ElementRef<HTMLElement>;
2724
+ chevronEl?: ElementRef<HTMLElement>;
2725
+ get enabled(): boolean;
2726
+ get valueLabel(): string;
2727
+ toggleMenu(event: MouseEvent): void;
2728
+ /** Position + size the menu so its labels sit directly under the button's value,
2729
+ * its right edge lands on the button's right edge (one shared border), and the
2730
+ * right-aligned check centers under the chevron. */
2731
+ private alignMenuToValue;
2732
+ closeMenu(): void;
2733
+ isSelected(seconds: number): boolean;
2734
+ select(seconds: number): void;
2735
+ private restartTimer;
2736
+ ngOnDestroy(): void;
2737
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListTableAutoRefreshComponent, never>;
2738
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListTableAutoRefreshComponent, "lib-list-table-auto-refresh", never, { "seconds": { "alias": "seconds"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "intervals": { "alias": "intervals"; "required": false; }; }, { "refresh": "refresh"; "secondsChange": "secondsChange"; }, never, never, false, never>;
2739
+ }
2740
+
2507
2741
  /**
2508
2742
  * Name cell for {@link ListTableComponent}: a link to the entity's detail route,
2509
2743
  * with optional identity/router status circles and a prefix icon. Inputs come from
@@ -2547,7 +2781,7 @@ declare class SelectCellComponent {
2547
2781
  static ɵcmp: i0.ɵɵComponentDeclaration<SelectCellComponent, "lib-select-cell", never, { "row": { "alias": "row"; "required": false; }; "toggleItem": { "alias": "toggleItem"; "required": false; }; }, {}, never, never, false, never>;
2548
2782
  }
2549
2783
 
2550
- /** Header cell for {@link ListTableComponent}: label, 3-state sort (asc/desc), and hide. */
2784
+ /** Header cell for {@link ListTableComponent}: label and 3-state sort (asc/desc). */
2551
2785
  declare class ListHeaderCellComponent {
2552
2786
  column: ListColumn;
2553
2787
  sortDir: ListSortDir;
@@ -2555,12 +2789,10 @@ declare class ListHeaderCellComponent {
2555
2789
  colId: string;
2556
2790
  dir: ListSortDir;
2557
2791
  }>;
2558
- hideColumn: EventEmitter<ListColumn<any>>;
2559
2792
  get enableSorting(): boolean;
2560
2793
  sort(): void;
2561
- hide(event: MouseEvent): void;
2562
2794
  static ɵfac: i0.ɵɵFactoryDeclaration<ListHeaderCellComponent, never>;
2563
- static ɵcmp: i0.ɵɵComponentDeclaration<ListHeaderCellComponent, "lib-list-header-cell", never, { "column": { "alias": "column"; "required": false; }; "sortDir": { "alias": "sortDir"; "required": false; }; }, { "sortChanged": "sortChanged"; "hideColumn": "hideColumn"; }, never, never, false, never>;
2795
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListHeaderCellComponent, "lib-list-header-cell", never, { "column": { "alias": "column"; "required": false; }; "sortDir": { "alias": "sortDir"; "required": false; }; }, { "sortChanged": "sortChanged"; }, never, never, false, never>;
2564
2796
  }
2565
2797
 
2566
2798
  type FilterMode = 'text' | 'single' | 'multi' | 'daterange';
@@ -2587,6 +2819,8 @@ declare class ListFilterCellComponent implements OnInit, OnDestroy {
2587
2819
  selectedValues: string[];
2588
2820
  /** In-dropdown search text for the multi-select attribute combo. */
2589
2821
  attrSearch: string;
2822
+ /** Match any selected attribute (or) vs every one (and); attribute filters only. */
2823
+ attrSemantic: 'AnyOf' | 'AllOf';
2590
2824
  open: boolean;
2591
2825
  menuLeft: number;
2592
2826
  menuTop: number;
@@ -2624,6 +2858,7 @@ declare class ListFilterCellComponent implements OnInit, OnDestroy {
2624
2858
  selectOption(opt: FilterOption): void;
2625
2859
  toggleOption(opt: FilterOption): void;
2626
2860
  private emitMulti;
2861
+ setSemantic(semantic: 'AnyOf' | 'AllOf'): void;
2627
2862
  selectDatePreset(opt: FilterOption): void;
2628
2863
  openCustomRange(event: MouseEvent): void;
2629
2864
  onRangeStartChanged(date: Date | null): void;
@@ -2686,7 +2921,7 @@ interface TokenAction {
2686
2921
  icon: string;
2687
2922
  }
2688
2923
  /**
2689
- * Enrollment-token cell for the identities list. Shows a status chip (Available /
2924
+ * Enrollment-token cell for the identities list. Shows a status chip (Token /
2690
2925
  * Expired / —) that doubles as a dropdown of enrollment actions (Download JWT, Show
2691
2926
  * QR, Re-issue). Actions are emitted via the cell context's `emitAction`, so they run
2692
2927
  * through the same page handlers as the row ⋯ menu.
@@ -2700,6 +2935,11 @@ declare class TokenCellComponent {
2700
2935
  menuTop: number;
2701
2936
  get status(): TokenStatus;
2702
2937
  get statusLabel(): string;
2938
+ /** A cert-enrolled identity with no pending token can have its enrollment
2939
+ * re-issued. Reset enrollment acts on the cert authenticator, so this is gated
2940
+ * on cert specifically: password (updb) and external-IdP/JWT-signer identities
2941
+ * have no cert to reset and are left as the empty state. */
2942
+ get canReissue(): boolean;
2703
2943
  get actions(): TokenAction[];
2704
2944
  toggleMenu(event: MouseEvent): void;
2705
2945
  closeMenu(): void;
@@ -2710,6 +2950,37 @@ declare class TokenCellComponent {
2710
2950
  static ɵcmp: i0.ɵɵComponentDeclaration<TokenCellComponent, "lib-token-cell", never, { "row": { "alias": "row"; "required": false; }; "emitAction": { "alias": "emitAction"; "required": false; }; }, {}, never, never, false, never>;
2711
2951
  }
2712
2952
 
2953
+ interface AttrChip {
2954
+ label: string;
2955
+ raw: string;
2956
+ bare: string;
2957
+ isNamed: boolean;
2958
+ copied?: boolean;
2959
+ }
2960
+ /**
2961
+ * Role/attribute chips for list-table attribute columns. Each chip reveals two
2962
+ * controls on hover: copy (puts the bare name on the clipboard) and filter (adds
2963
+ * the attribute to this column's filter). Filtering goes through the shared
2964
+ * DataTableFilterService so it stacks with, and stays in sync with, the column
2965
+ * header's filter dropdown.
2966
+ */
2967
+ declare class AttributeCellComponent {
2968
+ private filterService;
2969
+ set attributes(value: any);
2970
+ /** Column field; used as the filter's columnId so the filter icon drives the
2971
+ * same filter as the column header dropdown. */
2972
+ field: string;
2973
+ /** Column label, shown on the applied-filter tag. */
2974
+ filterLabel: string;
2975
+ chips: AttrChip[];
2976
+ constructor(filterService: DataTableFilterService);
2977
+ private toChips;
2978
+ copy(chip: AttrChip, event: MouseEvent): Promise<void>;
2979
+ filter(chip: AttrChip, event: MouseEvent): void;
2980
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributeCellComponent, never>;
2981
+ static ɵcmp: i0.ɵɵComponentDeclaration<AttributeCellComponent, "lib-attribute-cell", never, { "attributes": { "alias": "attributes"; "required": false; }; "field": { "alias": "field"; "required": false; }; "filterLabel": { "alias": "filterLabel"; "required": false; }; }, {}, never, never, false, never>;
2982
+ }
2983
+
2713
2984
  declare class TableCellSelectComponent implements ICellRendererAngularComp {
2714
2985
  cellParams: any;
2715
2986
  item: any;
@@ -2955,6 +3226,7 @@ declare class EdgeRouterFormComponent extends ProjectableForm implements OnInit,
2955
3226
  clear(): void;
2956
3227
  isTunnelerDisabled(): boolean;
2957
3228
  get tunnelerEnabledReadOnly(): boolean;
3229
+ get isCustomerHosted(): boolean;
2958
3230
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeRouterFormComponent, never>;
2959
3231
  static ɵcmp: i0.ɵɵComponentDeclaration<EdgeRouterFormComponent, "lib-edge-router-form", never, { "edgeRouterRoleAttributes": { "alias": "edgeRouterRoleAttributes"; "required": false; }; }, { "close": "close"; }, never, ["[slot=tabs-slot]", "[slot=column-1-slot-1]", "[slot=column-2-slot-1]"], false, never>;
2960
3232
  }
@@ -4673,16 +4945,19 @@ declare class ServicePoliciesPageService extends ListPageServiceClass {
4673
4945
  menuItems: {
4674
4946
  name: string;
4675
4947
  action: string;
4948
+ icon: string;
4676
4949
  }[];
4677
4950
  tableHeaderActions: {
4678
4951
  name: string;
4679
4952
  action: string;
4953
+ icon: string;
4680
4954
  }[];
4681
4955
  resourceType: string;
4682
4956
  constructor(settings: SettingsServiceClass, filterService: DataTableFilterService, zitiService: ZitiDataService, csvDownloadService: CsvDownloadService, growlerService: GrowlerService, dialogForm: MatDialog, extService: ExtensionService, router: Router);
4683
4957
  validate: (formData: any) => Promise<CallbackResults>;
4684
4958
  initTableColumns(): any;
4685
- getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any>;
4959
+ initListTableColumns(): ListColumn[];
4960
+ getData(filters?: FilterObj[], sort?: any, page?: any, pageSize?: number): Promise<any>;
4686
4961
  private processData;
4687
4962
  private addActionsPerRow;
4688
4963
  getServiceRoleAttributes(): Promise<any>;
@@ -4723,6 +4998,34 @@ declare class ServicePoliciesPageComponent extends ListPageComponent implements
4723
4998
  static ɵcmp: i0.ɵɵComponentDeclaration<ServicePoliciesPageComponent, "lib-service-policies-page", never, {}, {}, never, never, false, never>;
4724
4999
  }
4725
5000
 
5001
+ declare class ServicePoliciesListPageComponent extends ListPageComponent implements OnInit, OnDestroy {
5002
+ svc: ServicePoliciesPageService;
5003
+ private tabNames;
5004
+ private extService;
5005
+ title: string;
5006
+ tabs: {
5007
+ url: string;
5008
+ label: string;
5009
+ }[];
5010
+ isLoading: boolean;
5011
+ formDataChanged: boolean;
5012
+ protected readonly tableId = "service-policies";
5013
+ protected readonly initialPageSize = 50;
5014
+ constructor(svc: ServicePoliciesPageService, filterService: DataTableFilterService, dialogForm: MatDialog, tabNames: TabNameService, consoleEvents: ConsoleEventsService, extService: ExtensionService);
5015
+ protected loadTableColumns(): any[];
5016
+ ngOnInit(): void;
5017
+ headerActionClicked(action: string): void;
5018
+ tableAction(event: any): void;
5019
+ trackMenuAction(action: string, item: any): void;
5020
+ getRoleAttributes(): void;
5021
+ deleteItem(item: any): void;
5022
+ closeModal(event?: any): void;
5023
+ dataChanged(event: any): void;
5024
+ ngOnDestroy(): void;
5025
+ static ɵfac: i0.ɵɵFactoryDeclaration<ServicePoliciesListPageComponent, never>;
5026
+ static ɵcmp: i0.ɵɵComponentDeclaration<ServicePoliciesListPageComponent, "lib-service-policies-list", never, {}, {}, never, ["[slot=list-page-subheader]"], false, never>;
5027
+ }
5028
+
4726
5029
  declare class ServicePolicy {
4727
5030
  name: string;
4728
5031
  serviceRoles: any[];
@@ -4821,16 +5124,19 @@ declare class EdgeRouterPoliciesPageService extends ListPageServiceClass {
4821
5124
  menuItems: {
4822
5125
  name: string;
4823
5126
  action: string;
5127
+ icon: string;
4824
5128
  }[];
4825
5129
  tableHeaderActions: {
4826
5130
  name: string;
4827
5131
  action: string;
5132
+ icon: string;
4828
5133
  }[];
4829
5134
  resourceType: string;
4830
5135
  constructor(settings: SettingsServiceClass, filterService: DataTableFilterService, zitiService: ZitiDataService, csvDownloadService: CsvDownloadService, growlerService: GrowlerService, dialogForm: MatDialog, extService: ExtensionService, router: Router);
4831
5136
  validate: (formData: any) => Promise<CallbackResults>;
4832
5137
  initTableColumns(): any;
4833
- getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any>;
5138
+ initListTableColumns(): ListColumn[];
5139
+ getData(filters?: FilterObj[], sort?: any, page?: any, pageSize?: number): Promise<any>;
4834
5140
  private processData;
4835
5141
  private addActionsPerRow;
4836
5142
  getEdgeRouterRoleAttributes(): Promise<any>;
@@ -4870,6 +5176,34 @@ declare class EdgeRouterPoliciesPageComponent extends ListPageComponent implemen
4870
5176
  static ɵcmp: i0.ɵɵComponentDeclaration<EdgeRouterPoliciesPageComponent, "lib-edge-router-policies-page", never, {}, {}, never, never, false, never>;
4871
5177
  }
4872
5178
 
5179
+ declare class EdgeRouterPoliciesListPageComponent extends ListPageComponent implements OnInit, OnDestroy {
5180
+ svc: EdgeRouterPoliciesPageService;
5181
+ private tabNames;
5182
+ private extService;
5183
+ title: string;
5184
+ tabs: {
5185
+ url: string;
5186
+ label: string;
5187
+ }[];
5188
+ isLoading: boolean;
5189
+ formDataChanged: boolean;
5190
+ protected readonly tableId = "edge-router-policies";
5191
+ protected readonly initialPageSize = 50;
5192
+ constructor(svc: EdgeRouterPoliciesPageService, filterService: DataTableFilterService, dialogForm: MatDialog, tabNames: TabNameService, consoleEvents: ConsoleEventsService, extService: ExtensionService);
5193
+ protected loadTableColumns(): any[];
5194
+ ngOnInit(): void;
5195
+ headerActionClicked(action: string): void;
5196
+ tableAction(event: any): void;
5197
+ trackMenuAction(action: string, item: any): void;
5198
+ getRoleAttributes(): void;
5199
+ deleteItem(item: any): void;
5200
+ closeModal(event?: any): void;
5201
+ dataChanged(event: any): void;
5202
+ ngOnDestroy(): void;
5203
+ static ɵfac: i0.ɵɵFactoryDeclaration<EdgeRouterPoliciesListPageComponent, never>;
5204
+ static ɵcmp: i0.ɵɵComponentDeclaration<EdgeRouterPoliciesListPageComponent, "lib-edge-router-policies-list", never, {}, {}, never, ["[slot=list-page-subheader]"], false, never>;
5205
+ }
5206
+
4873
5207
  declare const EDGE_ROUTER_POLICY_EXTENSION_SERVICE: InjectionToken<any>;
4874
5208
  declare class EdgeRouterPolicyFormService {
4875
5209
  settingsService: SettingsService;
@@ -5028,16 +5362,19 @@ declare class ServiceEdgeRouterPoliciesPageService extends ListPageServiceClass
5028
5362
  menuItems: {
5029
5363
  name: string;
5030
5364
  action: string;
5365
+ icon: string;
5031
5366
  }[];
5032
5367
  tableHeaderActions: {
5033
5368
  name: string;
5034
5369
  action: string;
5370
+ icon: string;
5035
5371
  }[];
5036
5372
  resourceType: string;
5037
5373
  constructor(settings: SettingsServiceClass, filterService: DataTableFilterService, zitiService: ZitiDataService, csvDownloadService: CsvDownloadService, growlerService: GrowlerService, dialogForm: MatDialog, extService: ExtensionService, router: Router);
5038
5374
  validate: (formData: any) => Promise<CallbackResults>;
5039
5375
  initTableColumns(): any;
5040
- getData(filters?: FilterObj[], sort?: any, page?: any): Promise<any>;
5376
+ initListTableColumns(): ListColumn[];
5377
+ getData(filters?: FilterObj[], sort?: any, page?: any, pageSize?: number): Promise<any>;
5041
5378
  private processData;
5042
5379
  private addActionsPerRow;
5043
5380
  getEdgeRouterRoleAttributes(): Promise<any>;
@@ -5076,6 +5413,34 @@ declare class ServiceEdgeRouterPoliciesPageComponent extends ListPageComponent i
5076
5413
  static ɵcmp: i0.ɵɵComponentDeclaration<ServiceEdgeRouterPoliciesPageComponent, "lib-service-edge-router-policies-page", never, {}, {}, never, never, false, never>;
5077
5414
  }
5078
5415
 
5416
+ declare class ServiceEdgeRouterPoliciesListPageComponent extends ListPageComponent implements OnInit, OnDestroy {
5417
+ svc: ServiceEdgeRouterPoliciesPageService;
5418
+ private tabNames;
5419
+ private extService;
5420
+ title: string;
5421
+ tabs: {
5422
+ url: string;
5423
+ label: string;
5424
+ }[];
5425
+ isLoading: boolean;
5426
+ formDataChanged: boolean;
5427
+ protected readonly tableId = "service-edge-router-policies";
5428
+ protected readonly initialPageSize = 50;
5429
+ constructor(svc: ServiceEdgeRouterPoliciesPageService, filterService: DataTableFilterService, dialogForm: MatDialog, tabNames: TabNameService, consoleEvents: ConsoleEventsService, extService: ExtensionService);
5430
+ protected loadTableColumns(): any[];
5431
+ ngOnInit(): void;
5432
+ headerActionClicked(action: string): void;
5433
+ tableAction(event: any): void;
5434
+ trackMenuAction(action: string, item: any): void;
5435
+ getRoleAttributes(): void;
5436
+ deleteItem(item: any): void;
5437
+ closeModal(event?: any): void;
5438
+ dataChanged(event: any): void;
5439
+ ngOnDestroy(): void;
5440
+ static ɵfac: i0.ɵɵFactoryDeclaration<ServiceEdgeRouterPoliciesListPageComponent, never>;
5441
+ static ɵcmp: i0.ɵɵComponentDeclaration<ServiceEdgeRouterPoliciesListPageComponent, "lib-service-edge-router-policies-list", never, {}, {}, never, ["[slot=list-page-subheader]"], false, never>;
5442
+ }
5443
+
5079
5444
  declare const SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE: InjectionToken<any>;
5080
5445
  declare class ServiceEdgeRouterPolicyFormService {
5081
5446
  settingsService: SettingsService;
@@ -5969,6 +6334,7 @@ declare class LoginDialogComponent implements OnInit {
5969
6334
 
5970
6335
  declare class PostureChecksPageService extends ListPageServiceClass {
5971
6336
  private schemaSvc;
6337
+ private extService;
5972
6338
  protected router: Router;
5973
6339
  private paging;
5974
6340
  resourceType: string;
@@ -5976,10 +6342,18 @@ declare class PostureChecksPageService extends ListPageServiceClass {
5976
6342
  menuItems: {
5977
6343
  name: string;
5978
6344
  action: string;
6345
+ icon: string;
6346
+ }[];
6347
+ tableHeaderActions: {
6348
+ name: string;
6349
+ action: string;
6350
+ icon: string;
5979
6351
  }[];
5980
6352
  constructor(schemaSvc: SchemaService, settings: SettingsService, filterService: DataTableFilterService, csvDownloadService: CsvDownloadService, extService: ExtensionService, router: Router);
6353
+ private detailsRenderer;
5981
6354
  initTableColumns(): any;
5982
- getData(filters?: FilterObj[], sort?: any): Promise<any>;
6355
+ initListTableColumns(): ListColumn[];
6356
+ getData(filters?: FilterObj[], sort?: any, page?: any, pageSize?: number): Promise<any>;
5983
6357
  private processData;
5984
6358
  private addActionsPerRow;
5985
6359
  openUpdate(item?: any): void;
@@ -6010,6 +6384,33 @@ declare class PostureChecksPageComponent extends ListPageComponent implements On
6010
6384
  static ɵcmp: i0.ɵɵComponentDeclaration<PostureChecksPageComponent, "lib-configurations", never, {}, {}, never, never, false, never>;
6011
6385
  }
6012
6386
 
6387
+ declare class PostureChecksListPageComponent extends ListPageComponent implements OnInit, OnDestroy {
6388
+ svc: PostureChecksPageService;
6389
+ private tabNames;
6390
+ private extService;
6391
+ title: string;
6392
+ tabs: {
6393
+ url: string;
6394
+ label: string;
6395
+ }[];
6396
+ isLoading: boolean;
6397
+ formDataChanged: boolean;
6398
+ protected readonly tableId = "posture-checks";
6399
+ protected readonly initialPageSize = 50;
6400
+ constructor(svc: PostureChecksPageService, filterService: DataTableFilterService, dialogForm: MatDialog, tabNames: TabNameService, consoleEvents: ConsoleEventsService, extService: ExtensionService);
6401
+ protected loadTableColumns(): any[];
6402
+ ngOnInit(): void;
6403
+ headerActionClicked(action: string): void;
6404
+ tableAction(event: any): void;
6405
+ trackMenuAction(action: string, item: any): void;
6406
+ deleteItem(item: any): void;
6407
+ closeModal(event?: any): void;
6408
+ dataChanged(event: any): void;
6409
+ ngOnDestroy(): void;
6410
+ static ɵfac: i0.ɵɵFactoryDeclaration<PostureChecksListPageComponent, never>;
6411
+ static ɵcmp: i0.ɵɵComponentDeclaration<PostureChecksListPageComponent, "lib-posture-checks-list", never, {}, {}, never, ["[slot=list-page-subheader]"], false, never>;
6412
+ }
6413
+
6013
6414
  declare class PostureCheckFormService {
6014
6415
  private dataService;
6015
6416
  private extService;
@@ -8390,7 +8791,7 @@ declare class SideNavigatorComponent implements OnInit, OnDestroy {
8390
8791
  navExpanded: boolean;
8391
8792
  navHidden: boolean;
8392
8793
  hideMenuNavBar: boolean;
8393
- betaFeaturesEnabled: boolean;
8794
+ get betaFeaturesEnabled(): boolean;
8394
8795
  isHAEnabled: boolean;
8395
8796
  private routerSubscription?;
8396
8797
  private haSubscription?;
@@ -8451,6 +8852,339 @@ declare class QuickAddComponent {
8451
8852
  static ɵcmp: i0.ɵɵComponentDeclaration<QuickAddComponent, "lib-quick-add", never, {}, {}, never, never, false, never>;
8452
8853
  }
8453
8854
 
8855
+ type DeployMode = 'standalone' | 'ha';
8856
+ /** An overlay bind point: the listener binds a Ziti service through an identity instead of a local interface. */
8857
+ interface BindPointIdentity {
8858
+ source: 'file' | 'env';
8859
+ /** Path of the identity JSON file, or the name of the env var holding it base64-encoded. */
8860
+ value: string;
8861
+ service: string;
8862
+ clientAuth: string;
8863
+ bindUsingEdgeIdentity: boolean;
8864
+ /** The ingested `identity` map, so keys the form does not manage survive a save. */
8865
+ raw?: any;
8866
+ }
8867
+ interface BindPoint {
8868
+ interface: string;
8869
+ address: string;
8870
+ newAddress?: string;
8871
+ /** Set for an overlay bind point. `interface` and `address` are unused then. */
8872
+ identity?: BindPointIdentity;
8873
+ /** Other keys on an ingested overlay bind point. */
8874
+ extra?: any;
8875
+ }
8876
+ interface WebListener {
8877
+ name: string;
8878
+ bindPoints: BindPoint[];
8879
+ apis: {
8880
+ [binding: string]: boolean;
8881
+ };
8882
+ spaPath: string;
8883
+ spaLocation: string;
8884
+ extra?: any;
8885
+ extraApis?: any[];
8886
+ apiOptions?: {
8887
+ [binding: string]: any;
8888
+ };
8889
+ spaExtra?: any;
8890
+ }
8891
+ interface EventLogger {
8892
+ name: string;
8893
+ subscriptions: string[];
8894
+ format: 'json' | 'cs';
8895
+ path: string;
8896
+ rawSubs?: {
8897
+ [type: string]: any;
8898
+ };
8899
+ handlerRaw?: any;
8900
+ }
8901
+ interface ControllerConfig {
8902
+ /** Parsed source document when a file was ingested; unmanaged keys pass through from here. */
8903
+ base?: any;
8904
+ mode: DeployMode;
8905
+ trustDomain: string;
8906
+ identity: {
8907
+ cert: string;
8908
+ serverCert: string;
8909
+ key: string;
8910
+ ca: string;
8911
+ };
8912
+ db: string;
8913
+ cluster: {
8914
+ dataDir: string;
8915
+ preferredLeader: boolean;
8916
+ snapshotInterval: string;
8917
+ snapshotThreshold: number;
8918
+ electionTimeout: string;
8919
+ heartbeatTimeout: string;
8920
+ logLevel: string;
8921
+ };
8922
+ ctrl: {
8923
+ listener: string;
8924
+ advertiseAddress: string;
8925
+ connectTimeoutMs: number;
8926
+ maxQueuedConnects: number;
8927
+ };
8928
+ network: {
8929
+ cycleSeconds: number;
8930
+ routeTimeoutSeconds: number;
8931
+ createCircuitRetries: number;
8932
+ pendingLinkTimeoutSeconds: number;
8933
+ minRouterCost: number;
8934
+ routerConnectChurnLimit: string;
8935
+ smartReroute: boolean;
8936
+ rerouteFraction: number;
8937
+ rerouteCap: number;
8938
+ };
8939
+ edge: {
8940
+ enabled: boolean;
8941
+ apiAddress: string;
8942
+ sessionTimeout: string;
8943
+ signingCert: string;
8944
+ signingKey: string;
8945
+ identityEnrollmentDuration: string;
8946
+ routerEnrollmentDuration: string;
8947
+ accessTokenDuration: string;
8948
+ refreshTokenDuration: string;
8949
+ authRateLimiter: boolean;
8950
+ authRateLimiterMax: number;
8951
+ totpHostname: string;
8952
+ };
8953
+ web: WebListener[];
8954
+ events: EventLogger[];
8955
+ healthCheckInterval: string;
8956
+ }
8957
+ interface ValidationIssue {
8958
+ section: string;
8959
+ level: 'error' | 'warn';
8960
+ message: string;
8961
+ /** Model path under `cfg` (e.g. `ctrl.listener`) so the form can flag the input. */
8962
+ field?: string;
8963
+ }
8964
+
8965
+ type TunnelMode = 'tproxy' | 'host' | 'proxy';
8966
+ type ConfigKind = 'controller' | 'router';
8967
+ interface RouterConfig {
8968
+ /** Parsed source document when a file was ingested. */
8969
+ base?: any;
8970
+ /** The source listed controllers under `ctrl.endpoints` rather than the single `ctrl.endpoint`. */
8971
+ ctrlList: boolean;
8972
+ /** The source kept its CSR at top level (fabric-only template) instead of under `edge`. */
8973
+ csrTop: boolean;
8974
+ identity: {
8975
+ cert: string;
8976
+ serverCert: string;
8977
+ key: string;
8978
+ ca: string;
8979
+ };
8980
+ ctrl: {
8981
+ endpoints: string[];
8982
+ endpointsFile: string;
8983
+ };
8984
+ link: {
8985
+ dial: boolean;
8986
+ listen: boolean;
8987
+ bind: string;
8988
+ advertise: string;
8989
+ outQueueSize: number | null;
8990
+ /** `groups` on the transport dialer: only dial listeners that share a group. */
8991
+ dialGroups: string[];
8992
+ /** `groups` on the transport listener: the groups this listener belongs to. */
8993
+ listenGroups: string[];
8994
+ };
8995
+ edge: {
8996
+ enabled: boolean;
8997
+ address: string;
8998
+ advertise: string;
8999
+ connectTimeoutMs: number | null;
9000
+ getSessionTimeout: number | null;
9001
+ };
9002
+ /** Bindings of listeners the form does not model (e.g. edge_wss, proxy). Kept as-is on save. */
9003
+ otherListeners: string[];
9004
+ tunnel: {
9005
+ enabled: boolean;
9006
+ mode: TunnelMode;
9007
+ resolver: string;
9008
+ lanIf: string;
9009
+ dnsSvcIpRange: string;
9010
+ };
9011
+ csr: {
9012
+ country: string;
9013
+ province: string;
9014
+ locality: string;
9015
+ organization: string;
9016
+ organizationalUnit: string;
9017
+ dns: string[];
9018
+ ip: string[];
9019
+ };
9020
+ forwarder: {
9021
+ xgressDialQueueLength: number | null;
9022
+ xgressDialWorkerCount: number | null;
9023
+ linkDialQueueLength: number | null;
9024
+ linkDialWorkerCount: number | null;
9025
+ };
9026
+ metrics: {
9027
+ reportInterval: string;
9028
+ messageQueueSize: number | null;
9029
+ };
9030
+ health: {
9031
+ ctrlPingInterval: string;
9032
+ ctrlPingTimeout: string;
9033
+ ctrlPingInitialDelay: string;
9034
+ minLinks: number | null;
9035
+ };
9036
+ }
9037
+
9038
+ interface Section {
9039
+ id: string;
9040
+ label: string;
9041
+ blurb: string;
9042
+ icon: string;
9043
+ /** Heading shown in the rail above the first section of each group; sections of a group stay adjacent. */
9044
+ group: string;
9045
+ }
9046
+ declare class ConfigBuilderComponent implements OnInit {
9047
+ pageTitle: string;
9048
+ kind: ConfigKind;
9049
+ cfg: ControllerConfig;
9050
+ rcfg: RouterConfig;
9051
+ verbose: boolean;
9052
+ active: string;
9053
+ yaml: string;
9054
+ highlighted: string;
9055
+ issues: ValidationIssue[];
9056
+ showHelp: boolean;
9057
+ /** Id of the section whose help popover is open; it closes on its own when another section is selected. */
9058
+ sectionHelpFor: string;
9059
+ previewWidth: number;
9060
+ /** Until the user drags the splitter the form is capped and the preview takes all the remaining width. */
9061
+ previewAuto: boolean;
9062
+ resizing: boolean;
9063
+ fileName: string;
9064
+ fileHandle: any;
9065
+ dirty: boolean;
9066
+ dragOver: boolean;
9067
+ notice: string;
9068
+ loadError: string;
9069
+ loadWarnings: string[];
9070
+ fileInput?: ElementRef<HTMLInputElement>;
9071
+ private readonly host;
9072
+ readonly bindings: {
9073
+ id: string;
9074
+ label: string;
9075
+ hint: string;
9076
+ }[];
9077
+ readonly subscriptions: string[];
9078
+ readonly logLevels: string[];
9079
+ readonly tunnelModes: {
9080
+ id: TunnelMode;
9081
+ label: string;
9082
+ hint: string;
9083
+ }[];
9084
+ readonly clientAuthPolicies: {
9085
+ id: string;
9086
+ label: string;
9087
+ }[];
9088
+ readonly routerSections: Section[];
9089
+ get sections(): Section[];
9090
+ get kindLabel(): string;
9091
+ get defaultFileName(): string;
9092
+ readonly controllerSections: Section[];
9093
+ ngOnInit(): void;
9094
+ private resizeStartX;
9095
+ private resizeStartWidth;
9096
+ startResize(event: PointerEvent): void;
9097
+ onResize(event: PointerEvent): void;
9098
+ endResize(event: PointerEvent): void;
9099
+ onSplitterKey(event: KeyboardEvent): void;
9100
+ resetPreviewWidth(): void;
9101
+ /** The first manual resize pins the preview at the width it has now, so it does not jump. */
9102
+ private leaveAutoWidth;
9103
+ private setPreviewWidth;
9104
+ toggleHelp(): void;
9105
+ get sectionHelpOpen(): boolean;
9106
+ get sectionHelp(): {
9107
+ what: string;
9108
+ tip: string;
9109
+ } | undefined;
9110
+ toggleSectionHelp(): void;
9111
+ onEscape(): void;
9112
+ get activeSection(): Section;
9113
+ get errorCount(): number;
9114
+ get warnCount(): number;
9115
+ issuesFor(section: string): ValidationIssue[];
9116
+ /** Issues with no field tag in the form. Those list in the banner; field issues show on their label instead. */
9117
+ bannerIssues(section: string): ValidationIssue[];
9118
+ /** The label tag for `field`: a short message for the label and the full text for its tooltip. */
9119
+ tagFor(field: string): {
9120
+ short: string;
9121
+ full: string;
9122
+ } | null;
9123
+ /** True when a validation error targets the model path `field` (relative to `cfg`). */
9124
+ bad(field: string): boolean;
9125
+ badge(section: string): 'error' | 'warn' | 'ok';
9126
+ /** Jump to the first section (in rail order) with an error, or a warning when there are no errors. */
9127
+ goToFirstIssue(): void;
9128
+ select(id: string): void;
9129
+ next(delta: number): void;
9130
+ setMode(mode: DeployMode): void;
9131
+ toggle(obj: any, key: string): void;
9132
+ toggleSub(logger: {
9133
+ subscriptions: string[];
9134
+ }, sub: string): void;
9135
+ addListener(): void;
9136
+ removeListener(i: number): void;
9137
+ addBindPoint(w: {
9138
+ bindPoints: any[];
9139
+ }): void;
9140
+ addIdentityBindPoint(w: {
9141
+ bindPoints: any[];
9142
+ }): void;
9143
+ removeBindPoint(w: {
9144
+ bindPoints: any[];
9145
+ }, i: number): void;
9146
+ addLogger(): void;
9147
+ removeLogger(i: number): void;
9148
+ /** Switch between controller and router. Starts a fresh config of that kind. */
9149
+ setKind(kind: ConfigKind): void;
9150
+ addCtrlEndpoint(): void;
9151
+ removeCtrlEndpoint(i: number): void;
9152
+ addSan(list: string[], value: string): void;
9153
+ removeSan(list: string[], i: number): void;
9154
+ setTunnelMode(mode: TunnelMode): void;
9155
+ /** Blank number inputs arrive as null/'' ; keep optional numbers null so they are omitted. */
9156
+ optNum(obj: any, key: string, value: any): void;
9157
+ reset(kind?: ConfigKind): void;
9158
+ get canPickFiles(): boolean;
9159
+ openFile(): Promise<void>;
9160
+ onFileInput(event: Event): Promise<void>;
9161
+ onDragOver(event: DragEvent): void;
9162
+ onDrop(event: DragEvent): Promise<void>;
9163
+ private ingest;
9164
+ /** Write back to the opened file when the browser granted a handle; otherwise ask where to save. */
9165
+ save(): Promise<void>;
9166
+ saveAs(): Promise<void>;
9167
+ refresh(markDirty?: boolean): void;
9168
+ download(): void;
9169
+ trackByIndex(i: number): number;
9170
+ private escape;
9171
+ /** Tiny YAML colorizer. Input is escaped first, so the resulting markup is safe to bind. */
9172
+ private highlight;
9173
+ private colorValue;
9174
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfigBuilderComponent, never>;
9175
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfigBuilderComponent, "lib-config-builder", never, {}, {}, never, never, false, never>;
9176
+ }
9177
+
9178
+ /**
9179
+ * The config builder on its own. It needs no controller session, services or extension tokens, so the standalone
9180
+ * `app-config-builder` app imports this module directly instead of the whole library module.
9181
+ */
9182
+ declare class ConfigBuilderModule {
9183
+ static ɵfac: i0.ɵɵFactoryDeclaration<ConfigBuilderModule, never>;
9184
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ConfigBuilderModule, [typeof ConfigBuilderComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.MatTooltipModule], [typeof ConfigBuilderComponent]>;
9185
+ static ɵinj: i0.ɵɵInjectorDeclaration<ConfigBuilderModule>;
9186
+ }
9187
+
8454
9188
  declare class ZacRoutingModule {
8455
9189
  static ɵfac: i0.ɵɵFactoryDeclaration<ZacRoutingModule, never>;
8456
9190
  static ɵmod: i0.ɵɵNgModuleDeclaration<ZacRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
@@ -8514,7 +9248,7 @@ declare class GrowlerModule {
8514
9248
  declare function playerFactory(): Promise<typeof lottie_web>;
8515
9249
  declare class OpenZitiConsoleLibModule {
8516
9250
  static ɵfac: i0.ɵɵFactoryDeclaration<OpenZitiConsoleLibModule, never>;
8517
- static ɵmod: i0.ɵɵNgModuleDeclaration<OpenZitiConsoleLibModule, [typeof SafePipe, typeof ExtendableComponent, typeof StringInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof SelectorInputComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof SideNavbarComponent, typeof PasswordInputComponent, typeof TerminatorFormComponent, typeof ConfigurationsPageComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof ListPageHeaderComponent, typeof ListTableHeaderComponent, typeof FilterBarComponent, typeof ListPageFormComponent, typeof IdentitiesPageComponent, typeof IdentitiesListPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof DataTableComponent, typeof ListTableComponent, typeof ListMenuComponent, typeof NameCellComponent, typeof SelectCellComponent, typeof ListHeaderCellComponent, typeof ListFilterCellComponent, typeof OsInfoTooltipComponent, typeof SdkInfoTooltipComponent, typeof BooleanCellComponent, typeof TokenCellComponent, typeof TableCellSelectComponent, typeof TableColumnSelectComponent, typeof TableCellMenuComponent, typeof TableColumnMenuComponent, typeof TableColumnDefaultComponent, typeof TableColumnFilterComponent, typeof IdentityFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof HiddenColumnsBarComponent, typeof ConfirmComponent, typeof NoItemsComponent, typeof SideModalComponent, typeof FormHeaderComponent, typeof FormFieldContainerComponent, typeof PreviewListComponent, typeof LoadingIndicatorComponent, typeof FormFieldToggleComponent, typeof JsonViewComponent, typeof TagSelectorComponent, typeof QrCodeComponent, typeof TableCellTokenComponent, typeof OSTooltipComponent, typeof SDKTooltipComponent, typeof OverridesComponent, typeof ResetEnrollmentComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CustomTagsComponent, typeof ServicesPageComponent, typeof ServiceFormComponent, typeof PortRangesComponent, typeof ForwardingConfigComponent, typeof CardListComponent, typeof SimpleServiceComponent, typeof CardComponent, typeof CreationSummaryDialogComponent, typeof ConfigEditorComponent, typeof ServicePoliciesPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof EdgeRouterPolicyFormComponent, typeof MultiActionButtonComponent, typeof TableCellNameComponent, typeof ServiceEdgeRouterPoliciesPageComponent, typeof ServiceEdgeRouterPolicyFormComponent, typeof TerminatorsPageComponent, typeof ConfigurationFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof PreviewSelectionsComponent, typeof CertificateAuthoritiesPageComponent, typeof CertificateAuthorityFormComponent, typeof VerifyCertificateComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof MapLegendComponent, typeof EntityCountLegendComponent, typeof CircuitHopsTableComponent, typeof RouterPathTableComponent, typeof GeolocateFilterBarComponent, typeof SidePanelContainerComponent, typeof MarkerPanelComponent, typeof LinkPanelComponent, typeof CircuitPanelComponent, typeof EntityListPanelComponent, typeof UnlocatedPanelComponent, typeof ServicesWithCircuitsPanelComponent, typeof HaStatusIndicatorComponent, typeof AttributesComponent, typeof SideNavigatorComponent, typeof HeaderBarComponent, typeof QuickAddComponent, typeof DateRangeQuickHeaderComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i128.MatDialogModule, typeof i129.MatRadioModule, typeof ZacRoutingModule, typeof i131.MatDatepickerModule, typeof i132.MatNativeDateModule, typeof i133.MatFormFieldModule, typeof i134.MatInputModule, typeof i135.MatSelectModule, typeof i136.MatButtonModule, typeof i137.MatIconModule, typeof i138.OverlayModule, typeof i139.DragDropModule, typeof i140.AgGridModule, typeof i141.QRCodeComponent, typeof i142.ClickOutsideModule, typeof i143.NgJsonEditorModule, typeof i144.MatTooltipModule, typeof i145.MatAutocompleteModule, typeof i146.LottieComponent, typeof DateTimePickerComponent], [typeof ExtendableComponent, typeof SideNavbarComponent, typeof StringInputComponent, typeof SelectorInputComponent, typeof PasswordInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof ConfigurationsPageComponent, typeof ConfigurationFormComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof IdentitiesPageComponent, typeof IdentitiesListPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof ServicesPageComponent, typeof ZacRoutingModule, typeof SideModalComponent, typeof IdentityFormComponent, typeof LoadingIndicatorComponent, typeof GrowlerModule, typeof FormFieldContainerComponent, typeof FormFieldToggleComponent, typeof ServiceFormComponent, typeof ServicePoliciesPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof TerminatorsPageComponent, typeof TerminatorFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof FormHeaderComponent, typeof JsonViewComponent, typeof PreviewListComponent, typeof TagSelectorComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof ConfigEditorComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof AttributesComponent, typeof HeaderBarComponent, typeof SideNavigatorComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective, typeof ListTableComponent, typeof ListTableHeaderComponent]>;
9251
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OpenZitiConsoleLibModule, [typeof SafePipe, typeof ExtendableComponent, typeof StringInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof SelectorInputComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof SideNavbarComponent, typeof PasswordInputComponent, typeof TerminatorFormComponent, typeof ConfigurationsPageComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof ListPageHeaderComponent, typeof ListTableHeaderComponent, typeof FilterBarComponent, typeof ListPageFormComponent, typeof IdentitiesPageComponent, typeof IdentitiesListPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof DataTableComponent, typeof ListTableComponent, typeof ListMenuComponent, typeof ListTableAutoRefreshComponent, typeof NameCellComponent, typeof SelectCellComponent, typeof ListHeaderCellComponent, typeof ListFilterCellComponent, typeof OsInfoTooltipComponent, typeof SdkInfoTooltipComponent, typeof BooleanCellComponent, typeof TokenCellComponent, typeof AttributeCellComponent, typeof TableCellSelectComponent, typeof TableColumnSelectComponent, typeof TableCellMenuComponent, typeof TableColumnMenuComponent, typeof TableColumnDefaultComponent, typeof TableColumnFilterComponent, typeof IdentityFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof HiddenColumnsBarComponent, typeof ConfirmComponent, typeof NoItemsComponent, typeof SideModalComponent, typeof FormHeaderComponent, typeof FormFieldContainerComponent, typeof PreviewListComponent, typeof LoadingIndicatorComponent, typeof FormFieldToggleComponent, typeof JsonViewComponent, typeof TagSelectorComponent, typeof QrCodeComponent, typeof TableCellTokenComponent, typeof OSTooltipComponent, typeof SDKTooltipComponent, typeof OverridesComponent, typeof ResetEnrollmentComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CustomTagsComponent, typeof ServicesPageComponent, typeof ServiceFormComponent, typeof PortRangesComponent, typeof ForwardingConfigComponent, typeof CardListComponent, typeof SimpleServiceComponent, typeof CardComponent, typeof CreationSummaryDialogComponent, typeof ConfigEditorComponent, typeof ServicePoliciesPageComponent, typeof ServicePoliciesListPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof EdgeRouterPoliciesListPageComponent, typeof EdgeRouterPolicyFormComponent, typeof MultiActionButtonComponent, typeof TableCellNameComponent, typeof ServiceEdgeRouterPoliciesPageComponent, typeof ServiceEdgeRouterPoliciesListPageComponent, typeof ServiceEdgeRouterPolicyFormComponent, typeof TerminatorsPageComponent, typeof ConfigurationFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof PreviewSelectionsComponent, typeof CertificateAuthoritiesPageComponent, typeof CertificateAuthorityFormComponent, typeof VerifyCertificateComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureChecksListPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof MapLegendComponent, typeof EntityCountLegendComponent, typeof CircuitHopsTableComponent, typeof RouterPathTableComponent, typeof GeolocateFilterBarComponent, typeof SidePanelContainerComponent, typeof MarkerPanelComponent, typeof LinkPanelComponent, typeof CircuitPanelComponent, typeof EntityListPanelComponent, typeof UnlocatedPanelComponent, typeof ServicesWithCircuitsPanelComponent, typeof HaStatusIndicatorComponent, typeof AttributesComponent, typeof SideNavigatorComponent, typeof HeaderBarComponent, typeof QuickAddComponent, typeof DateRangeQuickHeaderComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective], [typeof i2.CommonModule, typeof ConfigBuilderModule, typeof i3.FormsModule, typeof i135.MatDialogModule, typeof i136.MatRadioModule, typeof ZacRoutingModule, typeof i138.MatDatepickerModule, typeof i139.MatNativeDateModule, typeof i140.MatFormFieldModule, typeof i141.MatInputModule, typeof i142.MatSelectModule, typeof i143.MatButtonModule, typeof i144.MatIconModule, typeof i145.OverlayModule, typeof i146.DragDropModule, typeof i147.AgGridModule, typeof i148.QRCodeComponent, typeof i149.ClickOutsideModule, typeof i150.NgJsonEditorModule, typeof i4.MatTooltipModule, typeof i152.MatAutocompleteModule, typeof i153.LottieComponent, typeof DateTimePickerComponent], [typeof ExtendableComponent, typeof SideNavbarComponent, typeof StringInputComponent, typeof SelectorInputComponent, typeof PasswordInputComponent, typeof NumberInputComponent, typeof BooleanToggleInputComponent, typeof ObjectComponent, typeof TextListInputComponent, typeof ChipsInputComponent, typeof IdentityServicePathComponent, typeof NetworkVisualizerComponent, typeof CheckboxListInputComponent, typeof ProtocolAddressPortInputComponent, typeof ConfigurationsPageComponent, typeof ConfigurationFormComponent, typeof ConfigTypesPageComponent, typeof ConfigTypeFormComponent, typeof EdgeRouterFormComponent, typeof TransitRouterFormComponent, typeof IdentitiesPageComponent, typeof IdentitiesListPageComponent, typeof EdgeRoutersPageComponent, typeof TransitRoutersPageComponent, typeof ServicesPageComponent, typeof ZacRoutingModule, typeof SideModalComponent, typeof IdentityFormComponent, typeof LoadingIndicatorComponent, typeof GrowlerModule, typeof FormFieldContainerComponent, typeof FormFieldToggleComponent, typeof ServiceFormComponent, typeof ServicePoliciesPageComponent, typeof ServicePoliciesListPageComponent, typeof ServicePolicyFormComponent, typeof EdgeRouterPoliciesPageComponent, typeof EdgeRouterPoliciesListPageComponent, typeof TerminatorsPageComponent, typeof TerminatorFormComponent, typeof JwtSignersPageComponent, typeof JwtSignerFormComponent, typeof AuthPoliciesPageComponent, typeof AuthPolicyFormComponent, typeof LoginDialogComponent, typeof PostureChecksPageComponent, typeof PostureChecksListPageComponent, typeof PostureCheckFormComponent, typeof SessionsPageComponent, typeof SessionFormComponent, typeof APISessionsPageComponent, typeof APISessionFormComponent, typeof CallbackComponent, typeof FormHeaderComponent, typeof JsonViewComponent, typeof PreviewListComponent, typeof TagSelectorComponent, typeof ProgressMeterComponent, typeof ProgressWizardComponent, typeof ConfigEditorComponent, typeof SettingsComponent, typeof ProfileComponent, typeof GeolocateComponent, typeof AttributesComponent, typeof HeaderBarComponent, typeof SideNavigatorComponent, typeof FilterSelectComponent, typeof FilterSelectOptionTemplateDirective, typeof FilterSelectTriggerTemplateDirective, typeof ListTableComponent, typeof ListTableHeaderComponent, typeof ListTableAutoRefreshComponent]>;
8518
9252
  static ɵinj: i0.ɵɵInjectorDeclaration<OpenZitiConsoleLibModule>;
8519
9253
  }
8520
9254
 
@@ -8747,6 +9481,6 @@ declare const ZAC_VERSION: {
8747
9481
  version: string;
8748
9482
  };
8749
9483
 
8750
- export { APISessionFormComponent, APISessionsPageComponent, API_RESOURCE_TO_ENTITY_PERMISSION, ApiSessionsPageService, AttributesComponent, AuthPoliciesPageComponent, AuthPoliciesPageService, AuthPolicyFormComponent, AuthPolicyFormService, AuthService, BooleanCellComponent, BooleanToggleInputComponent, CallbackComponent, CardListComponent, CertificateAuthoritiesPageComponent, CertificateAuthoritiesPageService, CertificateAuthorityFormComponent, CertificateAuthorityFormService, CheckboxListInputComponent, ChipsInputComponent, ConfigEditorComponent, ConfigTypeFormComponent, ConfigTypesPageComponent, ConfigurationFormComponent, ConfigurationService, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DEFAULT_APP_CONFIG, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FilterSelectComponent, FilterSelectOptionTemplateDirective, FilterSelectTriggerTemplateDirective, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GeolocateComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, HAControllerService, HaStatusIndicatorComponent, HeaderBarComponent, IDENTITY_EXTENSION_SERVICE, IdentitiesListPageComponent, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, InsecureContextError, JsonViewComponent, JwtSignerFormComponent, JwtSignerFormService, JwtSignersPageComponent, JwtSignersPageService, KEY_CODES, ListFilterCellComponent, ListHeaderCellComponent, ListMenuComponent, ListPageComponent, ListPageServiceClass, ListTableComponent, ListTableHeaderComponent, ListTableService, LoadingIndicatorComponent, LoggerService, LoginDialogComponent, LoginServiceClass, ManagementPermissionsService, NameCellComponent, NetworkVisualizerComponent, NodeDataService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, OIDC_CLIENT_ID, OIDC_CLIENT_ID_LEGACY, ObjectComponent, OidcEnvironmentalError, OidcSessionUnrecoverableError, OpenZitiConsoleLibModule, OsInfoTooltipComponent, PasswordInputComponent, PostureCheckFormComponent, PostureChecksPageComponent, PostureChecksPageService, PreviewListComponent, ProfileComponent, ProgressMeterComponent, ProgressMeterStep, ProgressWizardComponent, ProgressWizardStep, ProjectableForm, ProtocolAddressPortInputComponent, QuickAddComponent, ResetEnrollmentService, SAVE_DENIED_BY_PERMISSION_TOOLTIP, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SdkInfoTooltipComponent, SelectCellComponent, SelectorInputComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, Session, SessionFormComponent, SessionRefreshService, SessionsPageComponent, SessionsPageService, SettingsComponent, SettingsService, SettingsServiceClass, SideModalComponent, SideNavbarComponent, SideNavigatorComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TagSelectorComponent, TerminatorFormComponent, TerminatorFormService, TerminatorsPageComponent, TerminatorsPageService, TextListInputComponent, TokenCellComponent, TransitRouterFormComponent, TransitRouterFormService, TransitRoutersPageComponent, TransitRoutersPageService, ValidationService, VerifyCertificateComponent, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_VERSION, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZitiControllerDataService, ZitiDataService, ZitiOidcService, decodeJwtPayload, jwtExpMs, jwtIatMs, pkceChallengeS256, playerFactory, randomUrlSafeString };
8751
- export type { CanComponentDeactivate, ExtensionEvent, ExtensionEventType, ExtensionService, FilterObj, HAClusterStatus, HAController, ListCell, ListCellContext, ListColumn, ListLegacyCellShim, ListMenuItem, ListSortDir, OidcAuthContext, OidcLoginStep, OidcTokenSet, TabInterceptorService, ZitiDomainControllerService, ZitiSessionData };
9484
+ export { APISessionFormComponent, APISessionsPageComponent, API_RESOURCE_TO_ENTITY_PERMISSION, ApiSessionsPageService, AttributesComponent, AuthPoliciesPageComponent, AuthPoliciesPageService, AuthPolicyFormComponent, AuthPolicyFormService, AuthService, BooleanCellComponent, BooleanToggleInputComponent, CallbackComponent, CardListComponent, CertificateAuthoritiesPageComponent, CertificateAuthoritiesPageService, CertificateAuthorityFormComponent, CertificateAuthorityFormService, CheckboxListInputComponent, ChipsInputComponent, ConfigBuilderComponent, ConfigBuilderModule, ConfigEditorComponent, ConfigTypeFormComponent, ConfigTypesPageComponent, ConfigurationFormComponent, ConfigurationService, ConfigurationsPageComponent, CsvDownloadService, DEACTIVATE_GUARD, DEFAULT_APP_CONFIG, DataTableFilterService, DeactivateGuardService, EDGE_ROUTER_EXTENSION_SERVICE, EDGE_ROUTER_POLICY_EXTENSION_SERVICE, EdgeRouter, EdgeRouterFormComponent, EdgeRouterFormService, EdgeRouterPoliciesListPageComponent, EdgeRouterPoliciesPageComponent, EdgeRouterPoliciesPageService, EdgeRouterPolicyFormComponent, EdgeRouterPolicyFormService, EdgeRoutersPageComponent, EdgeRoutersPageService, Entity, ExtendableComponent, ExtensionsNoopService, FilterSelectComponent, FilterSelectOptionTemplateDirective, FilterSelectTriggerTemplateDirective, FormFieldContainerComponent, FormFieldToggleComponent, FormHeaderComponent, GeolocateComponent, GrowlerComponent, GrowlerModel, GrowlerModule, GrowlerService, HAControllerService, HaStatusIndicatorComponent, HeaderBarComponent, IDENTITY_EXTENSION_SERVICE, IdentitiesListPageComponent, IdentitiesPageComponent, IdentitiesPageService, Identity$1 as Identity, IdentityFormComponent, IdentityFormService, IdentityServicePathComponent, InsecureContextError, JsonViewComponent, JwtSignerFormComponent, JwtSignerFormService, JwtSignersPageComponent, JwtSignersPageService, KEY_CODES, ListFilterCellComponent, ListHeaderCellComponent, ListMenuComponent, ListPageComponent, ListPageServiceClass, ListTableAutoRefreshComponent, ListTableComponent, ListTableHeaderComponent, ListTableService, LoadingIndicatorComponent, LoggerService, LoginDialogComponent, LoginServiceClass, ManagementPermissionsService, NameCellComponent, NetworkVisualizerComponent, NodeDataService, NoopLoginService, NoopTabInterceptorService, NumberInputComponent, OIDC_CLIENT_ID, OIDC_CLIENT_ID_LEGACY, ObjectComponent, OidcEnvironmentalError, OidcSessionUnrecoverableError, OpenZitiConsoleLibModule, OsInfoTooltipComponent, PasswordInputComponent, PostureCheckFormComponent, PostureChecksListPageComponent, PostureChecksPageComponent, PostureChecksPageService, PreviewListComponent, ProfileComponent, ProgressMeterComponent, ProgressMeterStep, ProgressWizardComponent, ProgressWizardStep, ProjectableForm, ProtocolAddressPortInputComponent, QuickAddComponent, ResetEnrollmentService, SAVE_DENIED_BY_PERMISSION_TOOLTIP, SERVICE_EDGE_ROUTER_POLICY_EXTENSION_SERVICE, SERVICE_EXTENSION_SERVICE, SERVICE_POLICY_EXTENSION_SERVICE, SETTINGS_SERVICE, SHAREDZ_EXTENSION, SdkInfoTooltipComponent, SelectCellComponent, SelectorInputComponent, ServiceEdgeRouterPoliciesListPageComponent, ServiceEdgeRouterPoliciesPageComponent, ServiceEdgeRouterPoliciesPageService, ServiceEdgeRouterPolicyFormComponent, ServiceEdgeRouterPolicyFormService, ServiceFormComponent, ServiceFormService, ServicePoliciesListPageComponent, ServicePoliciesPageComponent, ServicePoliciesPageService, ServicePolicyFormComponent, ServicePolicyFormService, ServicesPageComponent, ServicesPageService, Session, SessionFormComponent, SessionRefreshService, SessionsPageComponent, SessionsPageService, SettingsComponent, SettingsService, SettingsServiceClass, SideModalComponent, SideNavbarComponent, SideNavigatorComponent, SimpleServiceComponent, StringInputComponent, TabNameService, TagSelectorComponent, TerminatorFormComponent, TerminatorFormService, TerminatorsPageComponent, TerminatorsPageService, TextListInputComponent, TokenCellComponent, TransitRouterFormComponent, TransitRouterFormService, TransitRoutersPageComponent, TransitRoutersPageService, ValidationService, VerifyCertificateComponent, VisualizerServiceClass, ZAC_LOGIN_SERVICE, ZAC_VERSION, ZITI_DATA_SERVICE, ZITI_DOMAIN_CONTROLLER, ZITI_NAVIGATOR, ZITI_TAB_OVERRIDES, ZITI_URLS, ZacRoutingModule, ZitiControllerDataService, ZitiDataService, ZitiOidcService, decodeJwtPayload, jwtExpMs, jwtIatMs, pkceChallengeS256, playerFactory, randomUrlSafeString };
9485
+ export type { CanComponentDeactivate, ExtensionEvent, ExtensionEventType, ExtensionService, FilterObj, HAClusterStatus, HAController, ListCell, ListCellContext, ListColumn, ListLegacyCellShim, ListMenuItem, ListSortDir, ListTableOptions, OidcAuthContext, OidcLoginStep, OidcTokenSet, RefreshInterval, TabInterceptorService, TreeVariant, ZitiDomainControllerService, ZitiSessionData };
8752
9486
  //# sourceMappingURL=index.d.ts.map