@ardimedia/angular-portal-azure 0.3.18 → 0.3.27
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,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ardimedia/angular-portal-azure",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.27",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^21.1.0",
|
|
6
|
-
"@angular/core": "^21.1.0"
|
|
6
|
+
"@angular/core": "^21.1.0",
|
|
7
|
+
"@angular/forms": "^21.1.0"
|
|
7
8
|
},
|
|
8
9
|
"dependencies": {
|
|
9
10
|
"tslib": "^2.3.0"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { WritableSignal, Type, EnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { WritableSignal, Type, EnvironmentProviders, InjectionToken, AfterContentInit, OnDestroy } from '@angular/core';
|
|
3
3
|
import * as _ardimedia_angular_portal_azure from '@ardimedia/angular-portal-azure';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -47,6 +47,8 @@ declare function statusBarInfo(text: string): StatusBarState;
|
|
|
47
47
|
declare function statusBarError(text: string): StatusBarState;
|
|
48
48
|
declare function statusBarSuccess(text: string): StatusBarState;
|
|
49
49
|
|
|
50
|
+
/** @internal */
|
|
51
|
+
declare function nextBladeUid(): number;
|
|
50
52
|
/**
|
|
51
53
|
* Base blade definition used by BladeService to manage the blade stack.
|
|
52
54
|
* Ported from Blade class in v0.2.346 — flattened from the UserControlBase → Blade hierarchy.
|
|
@@ -55,6 +57,8 @@ declare function statusBarSuccess(text: string): StatusBarState;
|
|
|
55
57
|
* In v0.3.0 commands are a BladeCommand[] array and blade state is managed by the service.
|
|
56
58
|
*/
|
|
57
59
|
interface BladeDefinition {
|
|
60
|
+
/** Auto-incrementing unique ID for @for track identity */
|
|
61
|
+
readonly uid: number;
|
|
58
62
|
/** Unique path identifying this blade (lowercased) */
|
|
59
63
|
path: string;
|
|
60
64
|
/** Blade header title */
|
|
@@ -69,10 +73,12 @@ interface BladeDefinition {
|
|
|
69
73
|
commands: BladeCommand[];
|
|
70
74
|
/** Status bar state */
|
|
71
75
|
statusBar: StatusBarState;
|
|
76
|
+
/** URL-persisted parameters for this blade (e.g., { id: '1' }) */
|
|
77
|
+
params: Record<string, string>;
|
|
72
78
|
}
|
|
73
79
|
/** Creates a blade definition with sensible defaults.
|
|
74
|
-
* statusBar
|
|
75
|
-
declare function createBlade(path: string, title: string, width?: number): BladeDefinition;
|
|
80
|
+
* statusBar and title use getter/setter pairs backed by signals for zoneless change detection. */
|
|
81
|
+
declare function createBlade(path: string, title: string, width?: number, params?: Record<string, string>, uid?: number): BladeDefinition;
|
|
76
82
|
/**
|
|
77
83
|
* Event args for blade navigation.
|
|
78
84
|
* Ported from IAddBladeEventArgs in v0.2.346.
|
|
@@ -111,6 +117,7 @@ interface PortalLabels {
|
|
|
111
117
|
settings: string;
|
|
112
118
|
language: string;
|
|
113
119
|
appearance: string;
|
|
120
|
+
unsavedChangesConfirm: string;
|
|
114
121
|
}
|
|
115
122
|
/** Language preset definition for the built-in language registry. */
|
|
116
123
|
interface LanguagePreset {
|
|
@@ -180,6 +187,7 @@ interface BladeDataLifecycle<T> {
|
|
|
180
187
|
onExecuted?: () => void;
|
|
181
188
|
onExecuteError?: (ex: ApiException) => void;
|
|
182
189
|
isFormValid?: () => boolean;
|
|
190
|
+
isDirty?: () => boolean;
|
|
183
191
|
}
|
|
184
192
|
/**
|
|
185
193
|
* Extended blade definition for data-driven blades with CRUD operations.
|
|
@@ -196,9 +204,9 @@ interface BladeDataDefinition<T> extends BladeDefinition {
|
|
|
196
204
|
lifecycle: BladeDataLifecycle<T>;
|
|
197
205
|
}
|
|
198
206
|
/** Creates a data blade definition with sensible defaults.
|
|
199
|
-
* statusBar, item, items use getter/setter pairs backed by signals for zoneless change detection.
|
|
207
|
+
* statusBar, title, item, items use getter/setter pairs backed by signals for zoneless change detection.
|
|
200
208
|
* Note: cannot use ...createBlade() spread here — spread copies getter values, not getter/setter pairs. */
|
|
201
|
-
declare function createDataBlade<T>(path: string, title: string, width?: number): BladeDataDefinition<T>;
|
|
209
|
+
declare function createDataBlade<T>(path: string, title: string, width?: number, params?: Record<string, string>, uid?: number): BladeDataDefinition<T>;
|
|
202
210
|
/**
|
|
203
211
|
* Execute a load-item operation with lifecycle hooks and status bar updates.
|
|
204
212
|
* Replaces the BladeData.loadItem() template method from v0.2.346.
|
|
@@ -282,6 +290,8 @@ interface TileDefinition {
|
|
|
282
290
|
size: TileSize;
|
|
283
291
|
/** Optional CSS class for tile icon/content */
|
|
284
292
|
cssClass?: string;
|
|
293
|
+
/** Whether the tile is disabled (grayed out, not clickable) */
|
|
294
|
+
disabled?: boolean;
|
|
285
295
|
}
|
|
286
296
|
declare function createTile(title: string, bladePath: string, size?: TileSize): TileDefinition;
|
|
287
297
|
|
|
@@ -302,6 +312,15 @@ declare function getUserDisplayName(account: UserAccount): string;
|
|
|
302
312
|
* Notification panel definition.
|
|
303
313
|
* Ported from AreaNotification in v0.2.346.
|
|
304
314
|
*/
|
|
315
|
+
/** Lifecycle hooks for the notification panel */
|
|
316
|
+
interface NotificationLifecycle {
|
|
317
|
+
/** Called before hide; return false to prevent hiding */
|
|
318
|
+
onHide?: () => boolean;
|
|
319
|
+
/** Called before showing */
|
|
320
|
+
onShow?: () => void;
|
|
321
|
+
/** Called after the panel is shown */
|
|
322
|
+
onShowed?: () => void;
|
|
323
|
+
}
|
|
305
324
|
interface NotificationDefinition {
|
|
306
325
|
/** Path/identifier for the content shown in the notification area */
|
|
307
326
|
path: string;
|
|
@@ -311,15 +330,8 @@ interface NotificationDefinition {
|
|
|
311
330
|
isVisible: boolean;
|
|
312
331
|
/** Background color (default '#32383f') */
|
|
313
332
|
backgroundColor: string;
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
interface NotificationLifecycle {
|
|
317
|
-
/** Called before hide; return false to prevent hiding */
|
|
318
|
-
onHide?: () => boolean;
|
|
319
|
-
/** Called before showing */
|
|
320
|
-
onShow?: () => void;
|
|
321
|
-
/** Called after the panel is shown */
|
|
322
|
-
onShowed?: () => void;
|
|
333
|
+
/** Optional lifecycle hooks invoked during show/hide transitions */
|
|
334
|
+
lifecycle?: NotificationLifecycle;
|
|
323
335
|
}
|
|
324
336
|
declare function createNotificationPanel(): NotificationDefinition;
|
|
325
337
|
|
|
@@ -474,8 +486,8 @@ declare class PortalService {
|
|
|
474
486
|
/** Clear the blade parameter back to defaults */
|
|
475
487
|
clearParameter(): void;
|
|
476
488
|
/** Show the notification panel */
|
|
477
|
-
showNotification(path: string, width?: number): void;
|
|
478
|
-
/** Hide the notification panel */
|
|
489
|
+
showNotification(path: string, width?: number, lifecycle?: NotificationLifecycle): void;
|
|
490
|
+
/** Hide the notification panel. Aborted if onHide() returns false. */
|
|
479
491
|
hideNotification(): void;
|
|
480
492
|
/** Toggle avatar menu open/close. Closes settings if opening. */
|
|
481
493
|
toggleAvatarMenu(): void;
|
|
@@ -493,9 +505,38 @@ declare class PortalService {
|
|
|
493
505
|
*
|
|
494
506
|
* Manages the blade stack: adding, removing, cascade-closing,
|
|
495
507
|
* and panorama visibility toggling.
|
|
508
|
+
*
|
|
509
|
+
* When a BladeRegistry is available, metadata (title, width) from the
|
|
510
|
+
* registry is used as defaults — explicit arguments take precedence.
|
|
496
511
|
*/
|
|
497
512
|
declare class BladeService {
|
|
498
513
|
private readonly portal;
|
|
514
|
+
private readonly registry;
|
|
515
|
+
/**
|
|
516
|
+
* Unsaved-changes guard registry: blade path -> predicate returning true when the blade has
|
|
517
|
+
* unsaved edits. Populated by apa-blade-detail (from the projected NgForm). Consulted before a
|
|
518
|
+
* blade is closed/replaced or the page is left, so the user can confirm discarding changes.
|
|
519
|
+
* Message can be localised via PortalLabels.unsavedChangesConfirm; the navigation flow is
|
|
520
|
+
* synchronous, so a synchronous window.confirm is used.
|
|
521
|
+
*/
|
|
522
|
+
private readonly dirtyChecks;
|
|
523
|
+
/** Optional override for the confirmation message (defaults to the de-CH label). */
|
|
524
|
+
unsavedChangesMessage: string;
|
|
525
|
+
constructor();
|
|
526
|
+
/** Register a blade's unsaved-changes predicate (called by apa-blade-detail). */
|
|
527
|
+
registerDirtyCheck(path: string, isDirty: () => boolean): void;
|
|
528
|
+
/** Remove a blade's unsaved-changes predicate (called when the detail is destroyed). */
|
|
529
|
+
unregisterDirtyCheck(path: string): void;
|
|
530
|
+
private isPathDirty;
|
|
531
|
+
private anyDirty;
|
|
532
|
+
/**
|
|
533
|
+
* Returns true if it's OK to proceed with removing the given blade paths: none of them is dirty,
|
|
534
|
+
* or the user confirmed discarding the changes. Shows one confirmation regardless of how many
|
|
535
|
+
* dirty blades are affected.
|
|
536
|
+
*/
|
|
537
|
+
private mayDiscard;
|
|
538
|
+
/** Drop dirty-check entries for paths that are no longer open. */
|
|
539
|
+
private pruneDirtyChecks;
|
|
499
540
|
/**
|
|
500
541
|
* Set the first blade (e.g., when opening a top-level item from a tile).
|
|
501
542
|
* Clears all existing blades, hides panorama, and adds the new blade.
|
|
@@ -509,7 +550,7 @@ declare class BladeService {
|
|
|
509
550
|
*
|
|
510
551
|
* Ported from AreaBlades.addBlade() in v0.2.346.
|
|
511
552
|
*/
|
|
512
|
-
addBlade(path: string, senderPath?: string, title?: string, width?: number): BladeDefinition | undefined;
|
|
553
|
+
addBlade(path: string, senderPath?: string, title?: string, width?: number, params?: Record<string, string>): BladeDefinition | undefined;
|
|
513
554
|
/**
|
|
514
555
|
* Open a blade from a navigation event (e.g., tile click, nav item click).
|
|
515
556
|
* Wraps addBlade with AddBladeEventArgs for compatibility.
|
|
@@ -526,14 +567,14 @@ declare class BladeService {
|
|
|
526
567
|
*
|
|
527
568
|
* Ported from AreaBlades.clearPath() in v0.2.346.
|
|
528
569
|
*/
|
|
529
|
-
clearPath(path: string):
|
|
570
|
+
clearPath(path: string): boolean;
|
|
530
571
|
/**
|
|
531
572
|
* Remove all blades AFTER a given path (keeps the blade itself).
|
|
532
573
|
* Used for cascade close when a blade opens a child.
|
|
533
574
|
*
|
|
534
575
|
* Ported from AreaBlades.clearChild() in v0.2.346.
|
|
535
576
|
*/
|
|
536
|
-
clearChild(path: string):
|
|
577
|
+
clearChild(path: string): boolean;
|
|
537
578
|
/**
|
|
538
579
|
* Remove blades at and beyond a specific 1-based level.
|
|
539
580
|
* Ported from AreaBlades.clearLevel() in v0.2.346.
|
|
@@ -557,10 +598,23 @@ declare class BladeService {
|
|
|
557
598
|
* Check if a blade with the given path is currently open.
|
|
558
599
|
*/
|
|
559
600
|
isBladeOpen(path: string): boolean;
|
|
601
|
+
/**
|
|
602
|
+
* Get URL-persisted parameters for a blade by path.
|
|
603
|
+
* Returns empty object if blade not found or has no params.
|
|
604
|
+
*/
|
|
605
|
+
getBladeParams(path: string): Record<string, string>;
|
|
560
606
|
static ɵfac: i0.ɵɵFactoryDeclaration<BladeService, never>;
|
|
561
607
|
static ɵprov: i0.ɵɵInjectableDeclaration<BladeService>;
|
|
562
608
|
}
|
|
563
609
|
|
|
610
|
+
/** Entry in the blade registry: component + optional metadata for URL restoration */
|
|
611
|
+
interface BladeRegistryEntry {
|
|
612
|
+
component: Type<unknown>;
|
|
613
|
+
title?: string;
|
|
614
|
+
width?: number;
|
|
615
|
+
/** Parameter names this blade expects from the URL (e.g., ['id']) */
|
|
616
|
+
params?: string[];
|
|
617
|
+
}
|
|
564
618
|
/**
|
|
565
619
|
* Registry for mapping blade paths to Angular components.
|
|
566
620
|
*
|
|
@@ -572,7 +626,7 @@ declare class BladeService {
|
|
|
572
626
|
* ```typescript
|
|
573
627
|
* const registry = inject(BladeRegistry);
|
|
574
628
|
* registry.register('customers', CustomerNavComponent);
|
|
575
|
-
* registry.register('customers/list', CustomerListComponent);
|
|
629
|
+
* registry.register('customers/list', CustomerListComponent, { title: 'All Customers', width: 585 });
|
|
576
630
|
* ```
|
|
577
631
|
*
|
|
578
632
|
* Or register multiple at once:
|
|
@@ -585,18 +639,93 @@ declare class BladeService {
|
|
|
585
639
|
*/
|
|
586
640
|
declare class BladeRegistry {
|
|
587
641
|
private readonly registry;
|
|
588
|
-
/** Register a component for a blade path */
|
|
589
|
-
register(path: string, component: Type<unknown
|
|
642
|
+
/** Register a component for a blade path with optional metadata (title, width, params) */
|
|
643
|
+
register(path: string, component: Type<unknown>, metadata?: {
|
|
644
|
+
title?: string;
|
|
645
|
+
width?: number;
|
|
646
|
+
params?: string[];
|
|
647
|
+
}): void;
|
|
590
648
|
/** Register multiple blade path → component mappings */
|
|
591
649
|
registerAll(mappings: Record<string, Type<unknown>>): void;
|
|
592
650
|
/** Get the component registered for a path, if any */
|
|
593
651
|
get(path: string): Type<unknown> | undefined;
|
|
652
|
+
/** Get the full registry entry (component + metadata) for a path */
|
|
653
|
+
getEntry(path: string): BladeRegistryEntry | undefined;
|
|
594
654
|
/** Check if a component is registered for a path */
|
|
595
655
|
has(path: string): boolean;
|
|
596
656
|
static ɵfac: i0.ɵɵFactoryDeclaration<BladeRegistry, never>;
|
|
597
657
|
static ɵprov: i0.ɵɵInjectableDeclaration<BladeRegistry>;
|
|
598
658
|
}
|
|
599
659
|
|
|
660
|
+
/**
|
|
661
|
+
* Optional service that syncs the blade stack with the browser URL.
|
|
662
|
+
*
|
|
663
|
+
* When enabled, blade paths are stored as URL path segments with matrix params:
|
|
664
|
+
* `/crm/customers/list/detail;id=1`
|
|
665
|
+
*
|
|
666
|
+
* This makes blade states bookmarkable, shareable, and back-button navigable.
|
|
667
|
+
*
|
|
668
|
+
* Opt-in: add `provideBladeRouter()` to your app providers alongside `provideRouter()`.
|
|
669
|
+
* Without it, blade navigation remains purely in-memory (no URL changes).
|
|
670
|
+
*/
|
|
671
|
+
declare class BladeRouterService {
|
|
672
|
+
private readonly router;
|
|
673
|
+
private readonly portal;
|
|
674
|
+
private readonly registry;
|
|
675
|
+
private readonly destroyRef;
|
|
676
|
+
private readonly config;
|
|
677
|
+
private _syncingFromUrl;
|
|
678
|
+
private _initialRestoreDone;
|
|
679
|
+
constructor();
|
|
680
|
+
/**
|
|
681
|
+
* Encode the blade stack into URL path segments.
|
|
682
|
+
* Each blade contributes its "short name" (suffix after parent prefix).
|
|
683
|
+
* Blades with params get Angular matrix params appended.
|
|
684
|
+
*
|
|
685
|
+
* Example: [customers, customers/list, customers/detail{id:1}]
|
|
686
|
+
* → "customers/list/detail;id=1"
|
|
687
|
+
*/
|
|
688
|
+
private encodeBladesToPath;
|
|
689
|
+
/**
|
|
690
|
+
* Decode URL path segments into blade definitions.
|
|
691
|
+
* Resolves short segment names to full blade paths using the registry.
|
|
692
|
+
*
|
|
693
|
+
* Example: "customers/list/detail;id=1" with route prefix "crm"
|
|
694
|
+
* → [customers, customers/list, customers/detail] with detail.params={id:'1'}
|
|
695
|
+
*/
|
|
696
|
+
private decodeBladesFromPath;
|
|
697
|
+
/**
|
|
698
|
+
* Parse a URL segment into its name and matrix parameters.
|
|
699
|
+
* "detail;id=1;mode=edit" → { name: "detail", params: { id: "1", mode: "edit" } }
|
|
700
|
+
*/
|
|
701
|
+
private parseSegment;
|
|
702
|
+
/**
|
|
703
|
+
* Resolve a short segment name to a full blade path using the registry.
|
|
704
|
+
* Tries parent/segment first, then walks up ancestors.
|
|
705
|
+
*/
|
|
706
|
+
private resolveSegment;
|
|
707
|
+
/** Restore blade stack from a path-based URL */
|
|
708
|
+
private restoreFromPath;
|
|
709
|
+
/** Check if params match between two blade arrays */
|
|
710
|
+
private paramsMatch;
|
|
711
|
+
/** Get the route prefix from the current URL (e.g., 'crm' from '/crm/...') */
|
|
712
|
+
private getRoutePrefix;
|
|
713
|
+
/** Normalize URL for comparison (strip trailing slashes) */
|
|
714
|
+
private normalizeUrl;
|
|
715
|
+
/** Extract legacy `blades` query parameter from URL */
|
|
716
|
+
private extractLegacyBladesParam;
|
|
717
|
+
/** Handle legacy ?blades= URL by redirecting to new path format */
|
|
718
|
+
private handleLegacyUrl;
|
|
719
|
+
/**
|
|
720
|
+
* Return the effective route prefix. If a prefix was configured via
|
|
721
|
+
* `provideBladeRouter({ prefix })`, use it (including empty string).
|
|
722
|
+
* Otherwise fall back to dynamically reading the first URL segment.
|
|
723
|
+
*/
|
|
724
|
+
private getEffectivePrefix;
|
|
725
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BladeRouterService, never>;
|
|
726
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BladeRouterService>;
|
|
727
|
+
}
|
|
728
|
+
|
|
600
729
|
/**
|
|
601
730
|
* Provide the angular-portal-azure library configuration.
|
|
602
731
|
*
|
|
@@ -617,6 +746,43 @@ declare class BladeRegistry {
|
|
|
617
746
|
*/
|
|
618
747
|
declare function providePortalAzure(config: PortalConfig): EnvironmentProviders;
|
|
619
748
|
|
|
749
|
+
/** Configuration for `provideBladeRouter()`. */
|
|
750
|
+
interface BladeRouterConfig {
|
|
751
|
+
/**
|
|
752
|
+
* Fixed URL prefix for blade path segments.
|
|
753
|
+
*
|
|
754
|
+
* - When omitted, the prefix is read dynamically from the first URL segment (default).
|
|
755
|
+
* - When set to a non-empty string (e.g. `'app'`), that string is used as the fixed prefix.
|
|
756
|
+
* - When set to `''` (empty string), blade paths are encoded directly at the URL root with no prefix.
|
|
757
|
+
*/
|
|
758
|
+
prefix?: string;
|
|
759
|
+
}
|
|
760
|
+
/** @internal */
|
|
761
|
+
declare const BLADE_ROUTER_CONFIG: InjectionToken<BladeRouterConfig>;
|
|
762
|
+
/**
|
|
763
|
+
* Enables opt-in URL synchronization for the blade stack.
|
|
764
|
+
*
|
|
765
|
+
* Add alongside `provideRouter()` and `providePortalAzure()`:
|
|
766
|
+
* ```typescript
|
|
767
|
+
* export const appConfig: ApplicationConfig = {
|
|
768
|
+
* providers: [
|
|
769
|
+
* provideRouter(routes),
|
|
770
|
+
* providePortalAzure({ title: 'My Portal', ... }),
|
|
771
|
+
* provideBladeRouter(),
|
|
772
|
+
* ],
|
|
773
|
+
* };
|
|
774
|
+
* ```
|
|
775
|
+
*
|
|
776
|
+
* Optionally pass a config to set a fixed route prefix:
|
|
777
|
+
* ```typescript
|
|
778
|
+
* provideBladeRouter({ prefix: 'app' }) // → /app/customers/list
|
|
779
|
+
* provideBladeRouter({ prefix: '' }) // → /customers/list (no prefix)
|
|
780
|
+
* ```
|
|
781
|
+
*
|
|
782
|
+
* Without this provider, blade navigation remains purely in-memory.
|
|
783
|
+
*/
|
|
784
|
+
declare function provideBladeRouter(config?: BladeRouterConfig): EnvironmentProviders;
|
|
785
|
+
|
|
620
786
|
/**
|
|
621
787
|
* Individual dashboard tile.
|
|
622
788
|
* Ported from the tile section in home.html (v0.2.346).
|
|
@@ -641,18 +807,27 @@ declare class TileComponent {
|
|
|
641
807
|
* Displays tiles on the startboard. When a tile is clicked, it opens
|
|
642
808
|
* the first blade via BladeService.setFirstBlade().
|
|
643
809
|
*
|
|
810
|
+
* When `autoNavigate` is true (default), clicking a tile automatically
|
|
811
|
+
* opens the first blade. Set it to false to handle tile clicks manually
|
|
812
|
+
* via the `(tileClick)` output.
|
|
813
|
+
*
|
|
644
814
|
* Usage:
|
|
645
815
|
* ```html
|
|
646
816
|
* <apa-panorama />
|
|
817
|
+
* <apa-panorama [autoNavigate]="false" (tileClick)="onTileClick($event)" />
|
|
647
818
|
* ```
|
|
648
819
|
*/
|
|
649
820
|
declare class PanoramaComponent {
|
|
650
821
|
protected readonly portal: PortalService;
|
|
651
822
|
private readonly bladeService;
|
|
823
|
+
/** When false, tile clicks only emit tileClick without opening a blade. */
|
|
824
|
+
readonly autoNavigate: i0.InputSignal<boolean>;
|
|
825
|
+
/** Emitted when a tile is clicked (always, regardless of autoNavigate). */
|
|
826
|
+
readonly tileClick: i0.OutputEmitterRef<PositionedTile>;
|
|
652
827
|
protected panorama: i0.WritableSignal<_ardimedia_angular_portal_azure.PanoramaDefinition>;
|
|
653
828
|
onTileClick(tile: PositionedTile): void;
|
|
654
829
|
static ɵfac: i0.ɵɵFactoryDeclaration<PanoramaComponent, never>;
|
|
655
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<PanoramaComponent, "apa-panorama", never, {}, {}, never, never, true, never>;
|
|
830
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<PanoramaComponent, "apa-panorama", never, { "autoNavigate": { "alias": "autoNavigate"; "required": false; "isSignal": true; }; }, { "tileClick": "tileClick"; }, never, never, true, never>;
|
|
656
831
|
}
|
|
657
832
|
|
|
658
833
|
/**
|
|
@@ -753,15 +928,21 @@ declare class BladeComponent {
|
|
|
753
928
|
*
|
|
754
929
|
* Usage:
|
|
755
930
|
* ```html
|
|
931
|
+
* <!-- Default: each component is wrapped in <apa-blade> -->
|
|
756
932
|
* <apa-blade-host />
|
|
933
|
+
*
|
|
934
|
+
* <!-- No wrapper: components render directly (they manage their own blade chrome) -->
|
|
935
|
+
* <apa-blade-host [wrapBlade]="false" />
|
|
757
936
|
* ```
|
|
758
937
|
*/
|
|
759
938
|
declare class BladeHostComponent {
|
|
939
|
+
/** Whether to wrap each component in an `<apa-blade>` element. Default: true. */
|
|
940
|
+
readonly wrapBlade: i0.InputSignal<boolean>;
|
|
760
941
|
protected readonly portal: PortalService;
|
|
761
942
|
private readonly registry;
|
|
762
943
|
getComponent(path: string): i0.Type<unknown> | null;
|
|
763
944
|
static ɵfac: i0.ɵɵFactoryDeclaration<BladeHostComponent, never>;
|
|
764
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BladeHostComponent, "apa-blade-host", never, {}, {}, never, never, true, never>;
|
|
945
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BladeHostComponent, "apa-blade-host", never, { "wrapBlade": { "alias": "wrapBlade"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
765
946
|
}
|
|
766
947
|
|
|
767
948
|
/**
|
|
@@ -812,6 +993,8 @@ declare class BladeGridComponent {
|
|
|
812
993
|
readonly senderPath: i0.InputSignal<string>;
|
|
813
994
|
readonly displayField: i0.InputSignal<string>;
|
|
814
995
|
readonly bladePathField: i0.InputSignal<string>;
|
|
996
|
+
readonly idField: i0.InputSignal<string>;
|
|
997
|
+
readonly iconClass: i0.InputSignal<string>;
|
|
815
998
|
readonly searchable: i0.InputSignal<boolean>;
|
|
816
999
|
readonly itemClick: i0.OutputEmitterRef<any>;
|
|
817
1000
|
searchText: string;
|
|
@@ -822,7 +1005,7 @@ declare class BladeGridComponent {
|
|
|
822
1005
|
onSearchInput(event: Event): void;
|
|
823
1006
|
onRowClick(item: any): void;
|
|
824
1007
|
static ɵfac: i0.ɵɵFactoryDeclaration<BladeGridComponent, never>;
|
|
825
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BladeGridComponent, "apa-blade-grid", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "senderPath": { "alias": "senderPath"; "required": false; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": false; "isSignal": true; }; "bladePathField": { "alias": "bladePathField"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
|
|
1008
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BladeGridComponent, "apa-blade-grid", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "senderPath": { "alias": "senderPath"; "required": false; "isSignal": true; }; "displayField": { "alias": "displayField"; "required": false; "isSignal": true; }; "bladePathField": { "alias": "bladePathField"; "required": false; "isSignal": true; }; "idField": { "alias": "idField"; "required": false; "isSignal": true; }; "iconClass": { "alias": "iconClass"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
|
|
826
1009
|
}
|
|
827
1010
|
|
|
828
1011
|
/**
|
|
@@ -846,10 +1029,15 @@ declare class BladeGridComponent {
|
|
|
846
1029
|
* </apa-blade>
|
|
847
1030
|
* ```
|
|
848
1031
|
*/
|
|
849
|
-
declare class BladeDetailComponent {
|
|
1032
|
+
declare class BladeDetailComponent implements AfterContentInit, OnDestroy {
|
|
850
1033
|
readonly blade: i0.InputSignal<BladeDataDefinition<any>>;
|
|
1034
|
+
private readonly bladeService;
|
|
1035
|
+
/** The template-driven form projected into this detail, if any (auto-discovered). */
|
|
1036
|
+
private readonly form;
|
|
1037
|
+
ngAfterContentInit(): void;
|
|
1038
|
+
ngOnDestroy(): void;
|
|
851
1039
|
static ɵfac: i0.ɵɵFactoryDeclaration<BladeDetailComponent, never>;
|
|
852
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BladeDetailComponent, "apa-blade-detail", never, { "blade": { "alias": "blade"; "required": true; "isSignal": true; }; }, {},
|
|
1040
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BladeDetailComponent, "apa-blade-detail", never, { "blade": { "alias": "blade"; "required": true; "isSignal": true; }; }, {}, ["form"], ["*"], true, never>;
|
|
853
1041
|
}
|
|
854
1042
|
/**
|
|
855
1043
|
* Create standard detail blade commands (new, save, delete, cancel).
|
|
@@ -876,6 +1064,8 @@ declare function createDetailCommands(handlers: {
|
|
|
876
1064
|
*/
|
|
877
1065
|
declare class NotificationPanelComponent {
|
|
878
1066
|
protected readonly portal: PortalService;
|
|
1067
|
+
private wasVisible;
|
|
1068
|
+
constructor();
|
|
879
1069
|
onClose(): void;
|
|
880
1070
|
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationPanelComponent, never>;
|
|
881
1071
|
static ɵcmp: i0.ɵɵComponentDeclaration<NotificationPanelComponent, "apa-notification-panel", never, {}, {}, never, ["*"], true, never>;
|
|
@@ -928,5 +1118,5 @@ declare class SidebarComponent {
|
|
|
928
1118
|
static ɵcmp: i0.ɵɵComponentDeclaration<SidebarComponent, "apa-sidebar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "collapsedWidth": { "alias": "collapsedWidth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
929
1119
|
}
|
|
930
1120
|
|
|
931
|
-
export { AvatarMenuComponent, BladeComponent, BladeDetailComponent, BladeGridComponent, BladeHostComponent, BladeNavComponent, BladeRegistry, BladeService, CommandBarComponent, DEFAULT_LABELS, LABELS_DE_CH, LABELS_DE_DE, LABELS_EN, LABELS_ES, LABELS_FR, LABELS_IT, LANGUAGE_PRESETS, NotificationPanelComponent, PanoramaComponent, PortalLayoutComponent, PortalService, SidebarComponent, TILE_DIMENSIONS, TileComponent, TileSize, clearStatusBar, createAvatarMenu, createBlade, createCommand, createDataBlade, createDetailCommands, createNavItem, createNotificationPanel, createPanorama, createTile, executeDeleteItem, executeLoadItem, executeLoadItems, executeSaveItem, filterItems, getUserDisplayName, layoutTiles, providePortalAzure, registerLanguagePreset, statusBarError, statusBarInfo, statusBarSuccess };
|
|
932
|
-
export type { AddBladeEventArgs, ApiException, AvatarMenuDefinition, AvatarMenuItem, BladeCommand, BladeDataDefinition, BladeDataLifecycle, BladeDefinition, BladeNavItem, BladeParameter, LanguagePreset, NotificationDefinition, NotificationLifecycle, PanoramaDefinition, PortalConfig, PortalLabels, PositionedTile, StandardCommandKey, StatusBarState, StatusBarStyle, TileDefinition, UserAccount };
|
|
1121
|
+
export { AvatarMenuComponent, BLADE_ROUTER_CONFIG, BladeComponent, BladeDetailComponent, BladeGridComponent, BladeHostComponent, BladeNavComponent, BladeRegistry, BladeRouterService, BladeService, CommandBarComponent, DEFAULT_LABELS, LABELS_DE_CH, LABELS_DE_DE, LABELS_EN, LABELS_ES, LABELS_FR, LABELS_IT, LANGUAGE_PRESETS, NotificationPanelComponent, PanoramaComponent, PortalLayoutComponent, PortalService, SidebarComponent, TILE_DIMENSIONS, TileComponent, TileSize, clearStatusBar, createAvatarMenu, createBlade, createCommand, createDataBlade, createDetailCommands, createNavItem, createNotificationPanel, createPanorama, createTile, executeDeleteItem, executeLoadItem, executeLoadItems, executeSaveItem, filterItems, getUserDisplayName, layoutTiles, nextBladeUid, provideBladeRouter, providePortalAzure, registerLanguagePreset, statusBarError, statusBarInfo, statusBarSuccess };
|
|
1122
|
+
export type { AddBladeEventArgs, ApiException, AvatarMenuDefinition, AvatarMenuItem, BladeCommand, BladeDataDefinition, BladeDataLifecycle, BladeDefinition, BladeNavItem, BladeParameter, BladeRegistryEntry, BladeRouterConfig, LanguagePreset, NotificationDefinition, NotificationLifecycle, PanoramaDefinition, PortalConfig, PortalLabels, PositionedTile, StandardCommandKey, StatusBarState, StatusBarStyle, TileDefinition, UserAccount };
|