@masterteam/delegations 0.0.34 → 0.0.36

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/delegations",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/delegations",
6
6
  "linkDirectory": false,
@@ -20,8 +20,8 @@
20
20
  "tailwindcss": "^4.2.2",
21
21
  "tailwindcss-primeui": "^0.6.1",
22
22
  "@ngxs/store": "^20.1.0",
23
- "@masterteam/forms": "^0.0.81",
24
23
  "@masterteam/components": "^0.0.179",
24
+ "@masterteam/forms": "^0.0.81",
25
25
  "@masterteam/icons": "^0.0.15"
26
26
  },
27
27
  "sideEffects": false,
@@ -1,9 +1,9 @@
1
- import * as _masterteam_components_entities from '@masterteam/components/entities';
2
- import { EntityUserValue } from '@masterteam/components/entities';
3
1
  import * as _masterteam_delegations from '@masterteam/delegations';
4
2
  import * as _angular_core from '@angular/core';
5
3
  import { OnInit } from '@angular/core';
6
4
  import { Popover } from 'primeng/popover';
5
+ import * as _masterteam_components_entities from '@masterteam/components/entities';
6
+ import { EntityUserValue } from '@masterteam/components/entities';
7
7
  import { PageHeaderTab } from '@masterteam/components/page-header';
8
8
  import { TableAction, TableStatusMapValue, ColumnDef } from '@masterteam/components/table';
9
9
  import { FormControl } from '@angular/forms';
@@ -11,7 +11,6 @@ import { HttpContext, HttpInterceptorFn } from '@angular/common/http';
11
11
  import { DynamicFormConfig } from '@masterteam/components';
12
12
  import { ModalRef } from '@masterteam/components/dialog';
13
13
  import { ModalService } from '@masterteam/components/modal';
14
- import { TreeNode, TreeActionEvent } from '@masterteam/components/tree';
15
14
  import * as rxjs from 'rxjs';
16
15
  import { StateContext } from '@ngxs/store';
17
16
 
@@ -74,6 +73,8 @@ interface DelegationScopeTarget {
74
73
  applicationKey: string;
75
74
  targetType: string;
76
75
  targetKey: string;
76
+ /** Backend-localized name (preferred display source in the new contract). */
77
+ name?: DelegationDisplayValue;
77
78
  parentTargetType?: string | null;
78
79
  parentTargetKey?: string | null;
79
80
  parentDisplayName?: DelegationDisplayValue;
@@ -95,6 +96,8 @@ interface DelegationScopeAction {
95
96
  applicationKey: string;
96
97
  operationKey: string;
97
98
  operationKind: string;
99
+ /** Backend-localized name (preferred display source in the new contract). */
100
+ name?: DelegationDisplayValue;
98
101
  displayName?: DelegationDisplayValue;
99
102
  displayLabel?: DelegationDisplayValue;
100
103
  operationDisplayName?: DelegationDisplayValue;
@@ -158,7 +161,60 @@ interface DelegationScopeHierarchyGroup {
158
161
  sortOrder?: number | null;
159
162
  targets: DelegationScopeHierarchyTarget[];
160
163
  }
164
+ /**
165
+ * New `scope/options` contract (doc 03): `permissions` is a Template -> Level ->
166
+ * Module hierarchy where Level and Level Module are both selectable permission
167
+ * surfaces, each carrying its own backend-filtered `operations`. `appAccessibility`
168
+ * lists optional accessibility grants with backend-localized names.
169
+ */
170
+ interface DelegationScopeModuleNode {
171
+ applicationKey: string;
172
+ targetType: string;
173
+ targetKey: string;
174
+ name?: DelegationDisplayValue;
175
+ legacyModuleId?: number | null;
176
+ levelId?: number | null;
177
+ levelModuleId?: number | null;
178
+ domainModuleId?: number | null;
179
+ targetId?: number | null;
180
+ moduleKey?: string | null;
181
+ permissionModuleType?: string | null;
182
+ permissionTargetId?: number | null;
183
+ sortOrder?: number | null;
184
+ operations?: DelegationScopeAction[] | null;
185
+ }
186
+ interface DelegationScopeLevelNode {
187
+ applicationKey: string;
188
+ targetType: string;
189
+ targetKey: string;
190
+ name?: DelegationDisplayValue;
191
+ legacyModuleId?: number | null;
192
+ levelId?: number | null;
193
+ targetId?: number | null;
194
+ permissionModuleType?: string | null;
195
+ permissionTargetId?: number | null;
196
+ sortOrder?: number | null;
197
+ operations?: DelegationScopeAction[] | null;
198
+ modules?: DelegationScopeModuleNode[] | null;
199
+ }
200
+ interface DelegationScopePermissionGroup {
201
+ groupType: string;
202
+ groupKey: string;
203
+ name?: DelegationDisplayValue;
204
+ templateId?: number | null;
205
+ sortOrder?: number | null;
206
+ levels?: DelegationScopeLevelNode[] | null;
207
+ }
208
+ interface DelegationAppAccessibility {
209
+ accessibilityGroupId?: number | null;
210
+ applicationKey: string;
211
+ accessibilityKey: string;
212
+ name?: DelegationDisplayValue;
213
+ labelKey?: string | null;
214
+ }
161
215
  interface DelegationScopeOptions {
216
+ permissions?: DelegationScopePermissionGroup[] | null;
217
+ appAccessibility?: DelegationAppAccessibility[] | null;
162
218
  hierarchy?: DelegationScopeHierarchyGroup[] | null;
163
219
  grants?: DelegationGrant[] | null;
164
220
  metadata?: Record<string, unknown>;
@@ -290,6 +346,7 @@ interface RejectDelegationRequest {
290
346
  declare enum DelegationsActionKey {
291
347
  GetMy = "getMy",
292
348
  GetAssigned = "getAssigned",
349
+ GetApprovals = "getApprovals",
293
350
  GetAdmin = "getAdmin",
294
351
  GetActive = "getActive",
295
352
  GetDetail = "getDetail",
@@ -304,6 +361,7 @@ declare enum DelegationsActionKey {
304
361
  interface DelegationsStateModel extends LoadingStateShape<DelegationsActionKey> {
305
362
  my: DelegationPage<DelegationRow> | null;
306
363
  assigned: DelegationPage<DelegationRow> | null;
364
+ approvals: DelegationPage<DelegationRow> | null;
307
365
  admin: DelegationPage<DelegationRow> | null;
308
366
  active: DelegationPage<DelegationRow> | null;
309
367
  detail: DelegationDetail | null;
@@ -312,12 +370,18 @@ interface DelegationsStateModel extends LoadingStateShape<DelegationsActionKey>
312
370
  }
313
371
 
314
372
  /**
315
- * Topbar surface for the delegation runtime (doc 05, 09).
373
+ * Topbar surface + controller for the delegation runtime (doc 05, 09).
374
+ *
375
+ * Always-mounted controller: loads the delegation candidates and shows the
376
+ * post-login prompt. Visible trigger states:
377
+ * - hidden — no candidates, no active session;
378
+ * - candidates — icon button (matches sibling topbar icons) + count badge;
379
+ * - active — delegator avatar + "Acting on behalf of {delegator}".
316
380
  *
317
- * State A no candidates, no active session: renders nothing.
318
- * State B candidates exist, no active session: lets the user start a session.
319
- * State C active delegated session: shows "Acting on behalf of {delegator}" +
320
- * "Executed by {actual user}", plus Back / Switch.
381
+ * The popover content is the shared {@link DelegationMenuPanel}, which can also
382
+ * be embedded directly in a host menu (e.g. the user-avatar dropdown). Set
383
+ * `headless` to keep this controller mounted (loading + prompt) while rendering
384
+ * the panel elsewhere.
321
385
  */
322
386
  declare class TopbarDelegationMenu implements OnInit {
323
387
  /** Path to the management page, e.g. `/control-panel/delegations` or `/delegations`. */
@@ -325,10 +389,16 @@ declare class TopbarDelegationMenu implements OnInit {
325
389
  readonly compact: _angular_core.InputSignal<boolean>;
326
390
  readonly showManageLink: _angular_core.InputSignal<boolean>;
327
391
  readonly promptOnCandidates: _angular_core.InputSignal<boolean>;
392
+ /**
393
+ * Render no visible trigger/popover but keep loading candidates + the prompt.
394
+ * Use when the delegation menu is embedded elsewhere (e.g. the user dropdown
395
+ * via {@link DelegationMenuPanel}).
396
+ */
397
+ readonly headless: _angular_core.InputSignal<boolean>;
328
398
  private readonly facade;
329
399
  private readonly modal;
330
400
  private readonly transloco;
331
- protected readonly popover: _angular_core.Signal<Popover>;
401
+ protected readonly popover: _angular_core.Signal<Popover | undefined>;
332
402
  protected readonly active: _angular_core.Signal<_masterteam_delegations.ActiveDelegationSession | null>;
333
403
  protected readonly candidates: _angular_core.Signal<DelegationRow[]>;
334
404
  protected readonly hasCandidates: _angular_core.Signal<boolean>;
@@ -338,16 +408,49 @@ declare class TopbarDelegationMenu implements OnInit {
338
408
  protected readonly mode: _angular_core.Signal<"active" | "candidates" | "hidden">;
339
409
  constructor();
340
410
  ngOnInit(): void;
341
- protected formatScopeSummary(summary: DelegationRow['scopeSummary']): string;
342
- protected userEntity(party: DelegationRow['delegator'] | null | undefined, showEmail?: boolean): _masterteam_components_entities.EntityData;
411
+ /** Two-letter initials for a delegator avatar (matches the user-menu pattern). */
412
+ protected initials(party: DelegationRow['delegator'] | null | undefined): string;
343
413
  togglePopover(event: Event): void;
344
- start(row: DelegationRow, event: MouseEvent): void;
345
- switchTo(row: DelegationRow, event: MouseEvent): void;
346
- endSession(event: MouseEvent): void;
414
+ closePopover(): void;
347
415
  private openConfirm;
348
416
  private openCandidatesPrompt;
349
417
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TopbarDelegationMenu, never>;
350
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TopbarDelegationMenu, "mt-topbar-delegation-menu", never, { "managePath": { "alias": "managePath"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "showManageLink": { "alias": "showManageLink"; "required": false; "isSignal": true; }; "promptOnCandidates": { "alias": "promptOnCandidates"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
418
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TopbarDelegationMenu, "mt-topbar-delegation-menu", never, { "managePath": { "alias": "managePath"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "showManageLink": { "alias": "showManageLink"; "required": false; "isSignal": true; }; "promptOnCandidates": { "alias": "promptOnCandidates"; "required": false; "isSignal": true; }; "headless": { "alias": "headless"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
419
+ }
420
+
421
+ /**
422
+ * Embeddable delegation menu content (doc 05, 09): renders the candidate /
423
+ * active-session rows and the start / switch / end actions, with no trigger of
424
+ * its own. Designed to be dropped inside a host menu (e.g. the user-avatar
425
+ * dropdown) or the topbar popover. Reads the shared `DelegationSessionFacade`
426
+ * signals; candidate loading + the post-login prompt stay in the always-mounted
427
+ * `TopbarDelegationMenu` controller.
428
+ *
429
+ * Emits `closeRequested` after any action so the host overlay can dismiss.
430
+ */
431
+ declare class DelegationMenuPanel {
432
+ /** Path to the management page, e.g. `/control-panel/delegations` or `/delegations`. */
433
+ readonly managePath: _angular_core.InputSignal<string>;
434
+ readonly showManageLink: _angular_core.InputSignal<boolean>;
435
+ readonly closeRequested: _angular_core.OutputEmitterRef<void>;
436
+ private readonly facade;
437
+ private readonly modal;
438
+ private readonly transloco;
439
+ protected readonly active: _angular_core.Signal<_masterteam_delegations.ActiveDelegationSession | null>;
440
+ protected readonly candidates: _angular_core.Signal<DelegationRow[]>;
441
+ protected readonly hasCandidates: _angular_core.Signal<boolean>;
442
+ protected readonly onBehalfOf: _angular_core.Signal<_masterteam_delegations.DelegationParty | null>;
443
+ protected readonly executedBy: _angular_core.Signal<_masterteam_delegations.DelegationParty | null>;
444
+ protected readonly mode: _angular_core.Signal<"active" | "candidates" | "hidden">;
445
+ /** Two-letter initials for a delegator avatar (matches the user-menu pattern). */
446
+ protected initials(party: DelegationRow['delegator'] | null | undefined): string;
447
+ protected start(row: DelegationRow, event: MouseEvent): void;
448
+ protected switchTo(row: DelegationRow, event: MouseEvent): void;
449
+ protected endSession(event: MouseEvent): void;
450
+ protected onManage(): void;
451
+ private openConfirm;
452
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DelegationMenuPanel, never>;
453
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DelegationMenuPanel, "mt-delegation-menu-panel", never, { "managePath": { "alias": "managePath"; "required": false; "isSignal": true; }; "showManageLink": { "alias": "showManageLink"; "required": false; "isSignal": true; }; }, { "closeRequested": "closeRequested"; }, never, never, true, never>;
351
454
  }
352
455
 
353
456
  interface StatusVisual {
@@ -491,6 +594,11 @@ declare class DelegationsList implements OnInit {
491
594
  protected readonly emptyStateKey: _angular_core.Signal<string>;
492
595
  protected readonly tableActions: _angular_core.Signal<TableAction[]>;
493
596
  protected readonly rowActions: _angular_core.WritableSignal<TableAction[]>;
597
+ /**
598
+ * Table status accent colors. Kept in visual sync with the canonical palette
599
+ * in `delegation-status-chip` (its light-mode text colors) so the list table
600
+ * and the status chip render the same hue for each status.
601
+ */
494
602
  private readonly statusColors;
495
603
  protected readonly statusMap: _angular_core.WritableSignal<Record<DelegationEffectiveStatus, TableStatusMapValue>>;
496
604
  protected readonly tableColumns: _angular_core.WritableSignal<ColumnDef[]>;
@@ -585,16 +693,17 @@ declare class DelegationDetailDrawer implements OnInit {
585
693
  private readonly facade;
586
694
  private readonly transloco;
587
695
  protected readonly ref: ModalRef;
588
- protected readonly tabs: {
589
- key: DetailTab;
590
- i18n: string;
591
- }[];
592
696
  protected readonly activeTab: _angular_core.WritableSignal<DetailTab>;
697
+ protected readonly tabOptions: _angular_core.Signal<{
698
+ value: DetailTab;
699
+ label: string;
700
+ }[]>;
701
+ private readonly weekdayKeys;
593
702
  protected readonly isLoading: _angular_core.Signal<boolean>;
594
703
  protected readonly detail: _angular_core.Signal<_masterteam_delegations.DelegationDetail | null>;
595
704
  protected readonly row: _angular_core.Signal<_masterteam_delegations.DelegationRow | null>;
596
705
  ngOnInit(): void;
597
- protected setTab(tab: DetailTab): void;
706
+ protected formatSpecificDays(days: readonly number[] | null | undefined): string;
598
707
  protected approvalLabel(): string;
599
708
  protected getScopeTargetLabel(target: DelegationScopeTarget): string;
600
709
  protected getScopeActionLabel(action: DelegationScopeAction): string;
@@ -604,29 +713,29 @@ declare class DelegationDetailDrawer implements OnInit {
604
713
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DelegationDetailDrawer, "mt-delegation-detail-drawer", never, { "delegationId": { "alias": "delegationId"; "required": true; "isSignal": true; }; "adminMode": { "alias": "adminMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
605
714
  }
606
715
 
607
- interface DelegationGrantableTargetGroup {
608
- key: string;
609
- target: DelegationScopeTarget;
610
- grants: DelegationGrant[];
611
- sortOrder: number;
612
- }
613
- interface DelegationGrantableHierarchyGroup {
716
+ type DelegationScopeNodeKind = 'template' | 'level' | 'module' | 'operation';
717
+ interface DelegationScopeTreeNode {
614
718
  key: string;
615
- groupType: string;
719
+ kind: DelegationScopeNodeKind;
616
720
  displayName?: DelegationDisplayValue;
617
- sortOrder: number;
618
- targets: DelegationGrantableTargetGroup[];
721
+ fallbackKey?: string | null;
722
+ isHighRisk?: boolean;
723
+ /** Present only on operation leaves — the explicit grant to persist/preview. */
724
+ grant?: DelegationGrant;
725
+ children?: DelegationScopeTreeNode[];
619
726
  }
620
727
 
728
+ type NodeCheckState = 'checked' | 'indeterminate' | 'unchecked';
621
729
  /**
622
730
  * Hierarchy-based scope picker (doc 03). Driven entirely by `scope/options`:
623
- * - renders backend-owned Level -> Level Module -> operations hierarchy,
624
- * - lets the user toggle each explicit grant,
731
+ * - renders the backend-owned Template -> Level -> Module -> operation tree as a
732
+ * clean, accessible checkbox tree (parents propagate to descendant operations),
733
+ * - offers optional app-accessibility grants,
625
734
  * - calls `scope/preview` (debounced) and surfaces summary / warnings / denied.
626
735
  *
627
- * `[(scope)]` two-way binds a `DelegationScopeSelection`. The component never
628
- * invents permission metadata it only echoes targets/actions returned by
629
- * options.
736
+ * `[(scope)]` two-way binds a `DelegationScopeSelection`. Scope grants are the
737
+ * single source of truth for selection; the component never invents permission
738
+ * metadata — it only echoes targets/actions/accessibilities returned by options.
630
739
  */
631
740
  declare class ScopePicker {
632
741
  readonly scope: _angular_core.ModelSignal<DelegationScopeSelection>;
@@ -645,25 +754,42 @@ declare class ScopePicker {
645
754
  protected readonly isLoadingOptions: _angular_core.Signal<boolean>;
646
755
  protected readonly isPreviewing: _angular_core.Signal<boolean>;
647
756
  protected readonly errorOptions: _angular_core.Signal<string | null>;
648
- protected readonly groups: _angular_core.Signal<DelegationGrantableHierarchyGroup[]>;
649
757
  protected readonly activeLang: _angular_core.Signal<string>;
650
- /** Selected grant keys for O(1) checkbox state. */
651
- protected readonly selectedKeys: _angular_core.Signal<Set<string>>;
652
- protected readonly treeSelection: _angular_core.WritableSignal<TreeNode<any>[] | null>;
653
- protected readonly treeNodes: _angular_core.Signal<TreeNode<any>[]>;
758
+ protected readonly treeModel: _angular_core.Signal<DelegationScopeTreeNode[]>;
759
+ protected readonly hasOptions: _angular_core.Signal<boolean>;
654
760
  protected readonly grantIndex: _angular_core.Signal<Map<string, DelegationGrant>>;
761
+ /** nodeKey -> all descendant operation-leaf keys (self for operation nodes). */
762
+ protected readonly opKeyMap: _angular_core.Signal<Map<string, string[]>>;
763
+ /** Stable operation-node keys for the current scope grants. */
764
+ protected readonly selectedKeys: _angular_core.Signal<Set<string>>;
765
+ protected readonly selectedCount: _angular_core.Signal<number>;
766
+ protected readonly searchTerm: _angular_core.WritableSignal<string>;
767
+ protected readonly expandedKeys: _angular_core.WritableSignal<Set<string>>;
768
+ protected readonly filteredTree: _angular_core.Signal<DelegationScopeTreeNode[]>;
769
+ protected readonly appAccessibilities: _angular_core.Signal<DelegationAppAccessibility[]>;
770
+ protected readonly selectedAccessibilityKeys: _angular_core.WritableSignal<Set<string>>;
771
+ protected readonly selectedAccessibilityCount: _angular_core.Signal<number>;
772
+ protected readonly hasAccessibility: _angular_core.Signal<boolean>;
773
+ /** Inner view switch: permission tree vs app-accessibility grants. */
774
+ protected readonly activeScopeTab: _angular_core.WritableSignal<"permissions" | "accessibility">;
655
775
  constructor();
656
- protected onTreeAction(event: TreeActionEvent): void;
776
+ protected isExpanded(node: DelegationScopeTreeNode): boolean;
777
+ protected toggleExpand(node: DelegationScopeTreeNode): void;
778
+ protected hasChildren(node: DelegationScopeTreeNode): boolean;
779
+ protected nodeState(node: DelegationScopeTreeNode): NodeCheckState;
780
+ protected onRowClick(node: DelegationScopeTreeNode): void;
781
+ protected toggle(node: DelegationScopeTreeNode): void;
782
+ private applySelection;
783
+ protected clearSelection(): void;
784
+ protected toggleAccessibility(key: string): void;
785
+ protected isAccessibilitySelected(key: string): boolean;
786
+ private accessibilityFacts;
787
+ protected nodeLabel(node: DelegationScopeTreeNode): string;
788
+ protected accessibilityLabel(item: DelegationAppAccessibility): string;
657
789
  protected getPreviewSummary(summary: DelegationDisplayValue | undefined): string;
658
790
  protected formatDeniedOperation(value?: string | null): string;
659
791
  protected formatDeniedTarget(value?: string | null): string;
660
- protected groupTargetCount(group: DelegationGrantableHierarchyGroup): number;
661
- protected targetGrantCount(targetGroup: DelegationGrantableTargetGroup): number;
662
- private buildTreeNodes;
663
- private buildTargetNode;
664
- private getGroupLabel;
665
- private getTargetLabel;
666
- private getActionLabel;
792
+ protected trackNode(_index: number, node: DelegationScopeTreeNode): string;
667
793
  private currentLanguage;
668
794
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScopePicker, never>;
669
795
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScopePicker, "mt-scope-picker", never, { "scope": { "alias": "scope"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "adminMode": { "alias": "adminMode"; "required": false; "isSignal": true; }; "delegatorUserId": { "alias": "delegatorUserId"; "required": false; "isSignal": true; }; }, { "scope": "scopeChange"; }, never, never, true, never>;
@@ -686,6 +812,11 @@ declare class GetAssignedDelegations {
686
812
  static readonly type = "[Delegations] Get Assigned Delegations";
687
813
  constructor(query?: DelegationListQuery);
688
814
  }
815
+ declare class GetApprovalDelegations {
816
+ query: DelegationListQuery;
817
+ static readonly type = "[Delegations] Get Approval Delegations";
818
+ constructor(query?: DelegationListQuery);
819
+ }
689
820
  declare class GetAdminDelegations {
690
821
  query: DelegationListQuery;
691
822
  static readonly type = "[Delegations] Get Admin Delegations";
@@ -785,6 +916,7 @@ declare class DelegationsState {
785
916
  private http;
786
917
  static getMy(state: DelegationsStateModel): DelegationPage<DelegationRow> | null;
787
918
  static getAssigned(state: DelegationsStateModel): DelegationPage<DelegationRow> | null;
919
+ static getApprovals(state: DelegationsStateModel): DelegationPage<DelegationRow> | null;
788
920
  static getAdmin(state: DelegationsStateModel): DelegationPage<DelegationRow> | null;
789
921
  static getActive(state: DelegationsStateModel): DelegationPage<DelegationRow> | null;
790
922
  static getDetail(state: DelegationsStateModel): DelegationDetail | null;
@@ -794,6 +926,7 @@ declare class DelegationsState {
794
926
  static getErrors(state: DelegationsStateModel): Record<string, string | null | undefined>;
795
927
  getMy(ctx: StateContext<DelegationsStateModel>, { query }: GetMyDelegations): rxjs.Observable<Response<DelegationPage<DelegationRow>>>;
796
928
  getAssigned(ctx: StateContext<DelegationsStateModel>, { query }: GetAssignedDelegations): rxjs.Observable<Response<DelegationPage<DelegationRow>>>;
929
+ getApprovals(ctx: StateContext<DelegationsStateModel>, { query }: GetApprovalDelegations): rxjs.Observable<Response<DelegationPage<DelegationRow>>>;
797
930
  getAdmin(ctx: StateContext<DelegationsStateModel>, { query }: GetAdminDelegations): rxjs.Observable<Response<DelegationPage<DelegationRow>>>;
798
931
  getActive(ctx: StateContext<DelegationsStateModel>, { query }: GetActiveAssignedDelegations): rxjs.Observable<Response<DelegationPage<DelegationRow>>>;
799
932
  getDetail(ctx: StateContext<DelegationsStateModel>, { id, asAdmin }: GetDelegationDetail): rxjs.Observable<Response<DelegationDetail>>;
@@ -818,6 +951,7 @@ declare class DelegationsFacade {
818
951
  private readonly store;
819
952
  readonly myPage: _angular_core.Signal<_masterteam_delegations.DelegationPage<_masterteam_delegations.DelegationRow> | null>;
820
953
  readonly assignedPage: _angular_core.Signal<_masterteam_delegations.DelegationPage<_masterteam_delegations.DelegationRow> | null>;
954
+ readonly approvalsPage: _angular_core.Signal<_masterteam_delegations.DelegationPage<_masterteam_delegations.DelegationRow> | null>;
821
955
  readonly adminPage: _angular_core.Signal<_masterteam_delegations.DelegationPage<_masterteam_delegations.DelegationRow> | null>;
822
956
  readonly activePage: _angular_core.Signal<_masterteam_delegations.DelegationPage<_masterteam_delegations.DelegationRow> | null>;
823
957
  readonly detail: _angular_core.Signal<_masterteam_delegations.DelegationDetail | null>;
@@ -827,10 +961,12 @@ declare class DelegationsFacade {
827
961
  private readonly errors;
828
962
  readonly myItems: _angular_core.Signal<_masterteam_delegations.DelegationRow[]>;
829
963
  readonly assignedItems: _angular_core.Signal<_masterteam_delegations.DelegationRow[]>;
964
+ readonly approvalItems: _angular_core.Signal<_masterteam_delegations.DelegationRow[]>;
830
965
  readonly adminItems: _angular_core.Signal<_masterteam_delegations.DelegationRow[]>;
831
966
  readonly activeItems: _angular_core.Signal<_masterteam_delegations.DelegationRow[]>;
832
967
  readonly isLoadingMy: _angular_core.Signal<boolean>;
833
968
  readonly isLoadingAssigned: _angular_core.Signal<boolean>;
969
+ readonly isLoadingApprovals: _angular_core.Signal<boolean>;
834
970
  readonly isLoadingAdmin: _angular_core.Signal<boolean>;
835
971
  readonly isLoadingActive: _angular_core.Signal<boolean>;
836
972
  readonly isLoadingDetail: _angular_core.Signal<boolean>;
@@ -842,12 +978,14 @@ declare class DelegationsFacade {
842
978
  readonly isCancelling: _angular_core.Signal<boolean>;
843
979
  readonly errorMy: _angular_core.Signal<string | null>;
844
980
  readonly errorAssigned: _angular_core.Signal<string | null>;
981
+ readonly errorApprovals: _angular_core.Signal<string | null>;
845
982
  readonly errorAdmin: _angular_core.Signal<string | null>;
846
983
  readonly errorDetail: _angular_core.Signal<string | null>;
847
984
  readonly errorScopeOptions: _angular_core.Signal<string | null>;
848
985
  readonly errorSave: _angular_core.Signal<string | null>;
849
986
  getMy(query?: DelegationListQuery): rxjs.Observable<void>;
850
987
  getAssigned(query?: DelegationListQuery): rxjs.Observable<void>;
988
+ getApprovals(query?: DelegationListQuery): rxjs.Observable<void>;
851
989
  getAdmin(query?: DelegationListQuery): rxjs.Observable<void>;
852
990
  getActive(query?: DelegationListQuery): rxjs.Observable<void>;
853
991
  getDetail(id: number, asAdmin?: boolean): rxjs.Observable<void>;
@@ -955,5 +1093,5 @@ declare class DelegationSessionFacade {
955
1093
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<DelegationSessionFacade>;
956
1094
  }
957
1095
 
958
- export { ApproveDelegation, CancelDelegation, ClearDelegationDetail, ClearScopePreview, CreateDelegationLegacy, CreateDelegationV2, DelegationDetailDrawer, DelegationForm, DelegationSessionActionKey, DelegationSessionFacade, DelegationSessionState, DelegationStatusChip, Delegations, DelegationsActionKey, DelegationsFacade, DelegationsList, DelegationsState, EndDelegationSession, GetActiveAssignedDelegations, GetAdminDelegations, GetAssignedDelegations, GetDelegationDetail, GetMyDelegations, GetScopeOptions, LoadDelegationCandidates, PreviewScope, RejectDelegation, RejectDelegationDialog, ScopePicker, StartDelegationSession, StartSessionDialog, SwitchDelegationSession, TopbarDelegationMenu, UpdateDelegationLegacy, UpdateDelegationV2, appDelegationInterceptor };
959
- export type { ActiveDelegationSession, AdminCreateDelegationV2Request, AdminUpdateDelegationV2Request, ApproveDelegationRequest, CreateDelegationLegacyRequest, CreateDelegationV2Request, DelegationAllowedAction, DelegationApprovalInfo, DelegationApprovalStatus, DelegationCancellationInfo, DelegationDayRuleMode, DelegationDetail, DelegationDisplayValue, DelegationDto, DelegationEffectiveStatus, DelegationGrant, DelegationListQuery, DelegationPage, DelegationParty, DelegationRow, DelegationScopeAction, DelegationScopeCombinationRule, DelegationScopeDeniedItem, DelegationScopeFact, DelegationScopeHierarchyGroup, DelegationScopeHierarchyTarget, DelegationScopeOptions, DelegationScopePreview, DelegationScopePreviewRequest, DelegationScopeSelection, DelegationScopeTarget, DelegationScopeWarning, DelegationSessionInvalidationReason, DelegationSessionStateModel, DelegationSortDirection, DelegationStatusInfo, DelegationsStateModel, RejectDelegationRequest, UpdateDelegationLegacyRequest, UpdateDelegationV2Request };
1096
+ export { ApproveDelegation, CancelDelegation, ClearDelegationDetail, ClearScopePreview, CreateDelegationLegacy, CreateDelegationV2, DelegationDetailDrawer, DelegationForm, DelegationMenuPanel, DelegationSessionActionKey, DelegationSessionFacade, DelegationSessionState, DelegationStatusChip, Delegations, DelegationsActionKey, DelegationsFacade, DelegationsList, DelegationsState, EndDelegationSession, GetActiveAssignedDelegations, GetAdminDelegations, GetApprovalDelegations, GetAssignedDelegations, GetDelegationDetail, GetMyDelegations, GetScopeOptions, LoadDelegationCandidates, PreviewScope, RejectDelegation, RejectDelegationDialog, ScopePicker, StartDelegationSession, StartSessionDialog, SwitchDelegationSession, TopbarDelegationMenu, UpdateDelegationLegacy, UpdateDelegationV2, appDelegationInterceptor };
1097
+ export type { ActiveDelegationSession, AdminCreateDelegationV2Request, AdminUpdateDelegationV2Request, ApproveDelegationRequest, CreateDelegationLegacyRequest, CreateDelegationV2Request, DelegationAllowedAction, DelegationAppAccessibility, DelegationApprovalInfo, DelegationApprovalStatus, DelegationCancellationInfo, DelegationDayRuleMode, DelegationDetail, DelegationDisplayValue, DelegationDto, DelegationEffectiveStatus, DelegationGrant, DelegationListQuery, DelegationPage, DelegationParty, DelegationRow, DelegationScopeAction, DelegationScopeCombinationRule, DelegationScopeDeniedItem, DelegationScopeFact, DelegationScopeHierarchyGroup, DelegationScopeHierarchyTarget, DelegationScopeLevelNode, DelegationScopeModuleNode, DelegationScopeOptions, DelegationScopePermissionGroup, DelegationScopePreview, DelegationScopePreviewRequest, DelegationScopeSelection, DelegationScopeTarget, DelegationScopeWarning, DelegationSessionInvalidationReason, DelegationSessionStateModel, DelegationSortDirection, DelegationStatusInfo, DelegationsStateModel, RejectDelegationRequest, UpdateDelegationLegacyRequest, UpdateDelegationV2Request };