@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/assets/delegations.css +1 -1
- package/assets/i18n/ar.json +163 -155
- package/assets/i18n/en.json +163 -155
- package/fesm2022/masterteam-delegations.mjs +672 -262
- package/fesm2022/masterteam-delegations.mjs.map +1 -1
- package/package.json +2 -2
- package/types/masterteam-delegations.d.ts +188 -50
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@masterteam/delegations",
|
|
3
|
-
"version": "0.0.
|
|
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
|
-
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
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
|
-
|
|
342
|
-
protected
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
608
|
-
|
|
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
|
-
|
|
719
|
+
kind: DelegationScopeNodeKind;
|
|
616
720
|
displayName?: DelegationDisplayValue;
|
|
617
|
-
|
|
618
|
-
|
|
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
|
|
624
|
-
*
|
|
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`.
|
|
628
|
-
*
|
|
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
|
-
|
|
651
|
-
protected readonly
|
|
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
|
|
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
|
|
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 };
|