@yuuvis/client-framework 3.4.1 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef, OnDestroy, PipeTransform } from '@angular/core';
3
3
  import * as _yuuvis_client_core from '@yuuvis/client-core';
4
- import { AuditQueryResult, AuditEntry, DmsObject, AuditService, EventService, SystemService, TranslateService, VirtualObjectType, RetentionState, ObjectTypeFlavor, Situation, FlavoredDmsObject, ObjectTypeField } from '@yuuvis/client-core';
4
+ import { AuditQueryResult, AuditEntry, DmsObject, VirtualObjectType, RetentionState, TranslateService, ObjectTypeFlavor, Situation, FlavoredDmsObject, ObjectTypeField } from '@yuuvis/client-core';
5
5
  import { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';
6
6
  import { ObjectFormComponent, IObjectFormElementExtension, ObjectFormOptions, FormStatusChangedEvent } from '@yuuvis/client-framework/object-form';
7
7
  import * as i7 from '@yuuvis/client-framework/common';
@@ -9,13 +9,6 @@ import { FormGroup } from '@angular/forms';
9
9
 
10
10
  declare class ObjectAuditComponent {
11
11
  #private;
12
- private auditService;
13
- private eventService;
14
- private system;
15
- private translate;
16
- private FILTER_CACHE_KEY;
17
- private _objectID?;
18
- private _objectTypeID?;
19
12
  icons: {
20
13
  filter: any;
21
14
  arrowNext: any;
@@ -28,7 +21,7 @@ declare class ObjectAuditComponent {
28
21
  label: string;
29
22
  actions: string[];
30
23
  }[];
31
- auditLabels: any;
24
+ auditLabels: Record<string, string>;
32
25
  dmsObject: _angular_core.InputSignal<DmsObject | undefined>;
33
26
  /**
34
27
  * A list of audits that should not be shown. Use the audit codes (like 100, 301, etc.).
@@ -40,13 +33,12 @@ declare class ObjectAuditComponent {
40
33
  */
41
34
  allActions: _angular_core.InputSignal<boolean>;
42
35
  get objectID(): string | undefined;
43
- constructor(auditService: AuditService, eventService: EventService, system: SystemService, translate: TranslateService);
36
+ constructor();
44
37
  /**
45
38
  * Execute a query from the search panel.
46
39
  */
47
40
  query(): void;
48
41
  goToPage(page: number): void;
49
- private onError;
50
42
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ObjectAuditComponent, never>;
51
43
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ObjectAuditComponent, "yuv-object-audit", never, { "dmsObject": { "alias": "dmsObject"; "required": false; "isSignal": true; }; "skipActions": { "alias": "skipActions"; "required": false; "isSignal": true; }; "allActions": { "alias": "allActions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
52
44
  }
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Type, ComponentRef } from '@angular/core';
3
- import { SchemaResponseFieldDefinition, TranslateService, ResolvedObjectConfigItem, RendererType } from '@yuuvis/client-core';
4
3
  import * as dist_libs_yuuvis_client_core_types_yuuvis_client_core from 'dist/libs/yuuvis/client-core/types/yuuvis-client-core';
4
+ import { SchemaResponseFieldDefinition, TranslateService, ResolvedObjectConfigItem, RendererType } from '@yuuvis/client-core';
5
5
 
6
6
  /**
7
7
  * Abstract class to be extended by property renderers
@@ -31,6 +31,12 @@ declare class DecimalRendererComponent extends AbstractRendererComponent<number>
31
31
  static ɵcmp: i0.ɵɵComponentDeclaration<DecimalRendererComponent, "yuv-decimal-renderer", never, {}, {}, never, never, true, never>;
32
32
  }
33
33
 
34
+ declare class FileSizeRendererComponent extends AbstractRendererComponent {
35
+ parsedValue: i0.Signal<number>;
36
+ static ɵfac: i0.ɵɵFactoryDeclaration<FileSizeRendererComponent, never>;
37
+ static ɵcmp: i0.ɵɵComponentDeclaration<FileSizeRendererComponent, "yuv-string-renderer", never, {}, {}, never, never, true, never>;
38
+ }
39
+
34
40
  declare class IconRendererComponent extends AbstractRendererComponent {
35
41
  #private;
36
42
  protected readonly customId: `${string}-${string}-${string}-${string}-${string}`;
@@ -43,6 +49,18 @@ declare class IntegerRendererComponent extends AbstractRendererComponent<number>
43
49
  static ɵcmp: i0.ɵɵComponentDeclaration<IntegerRendererComponent, "yuv-integer-renderer", never, {}, {}, never, never, true, never>;
44
50
  }
45
51
 
52
+ declare class OrganizationRendererComponent extends AbstractRendererComponent {
53
+ #private;
54
+ resolvedValue: i0.Signal<string[]>;
55
+ userAndRole: i0.WritableSignal<{
56
+ type: string;
57
+ label: string | undefined;
58
+ }[]>;
59
+ userAndRoleLoading: i0.Signal<boolean>;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationRendererComponent, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationRendererComponent, "yuv-organization-renderer", never, {}, {}, never, never, true, never>;
62
+ }
63
+
46
64
  declare class StringRendererComponent extends AbstractRendererComponent {
47
65
  static ɵfac: i0.ɵɵFactoryDeclaration<StringRendererComponent, never>;
48
66
  static ɵcmp: i0.ɵɵComponentDeclaration<StringRendererComponent, "yuv-string-renderer", never, {}, {}, never, never, true, never>;
@@ -58,7 +76,7 @@ declare class TableRendererComponent extends AbstractRendererComponent<any[]> {
58
76
  }[]>;
59
77
  protected tableData: i0.Signal<any[]>;
60
78
  protected reducedData: i0.Signal<boolean>;
61
- protected getCellValue(row: any[], key: string): any;
79
+ protected getCellValue(row: any[], key: string): string;
62
80
  static ɵfac: i0.ɵɵFactoryDeclaration<TableRendererComponent, never>;
63
81
  static ɵcmp: i0.ɵɵComponentDeclaration<TableRendererComponent, "yuv-table-renderer", never, {}, {}, never, never, true, never>;
64
82
  }
@@ -113,5 +131,5 @@ declare class RendererDirective {
113
131
  static ɵdir: i0.ɵɵDirectiveDeclaration<RendererDirective, "[yuvRenderer]", never, { "yuvRenderer": { "alias": "yuvRenderer"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
114
132
  }
115
133
 
116
- export { AbstractRendererComponent, DateTimeRendererComponent, DecimalRendererComponent, IconRendererComponent, IntegerRendererComponent, RendererDirective, RendererService, StringRendererComponent, UnknownRendererComponent };
134
+ export { AbstractRendererComponent, BooleanRendererComponent, DateTimeRendererComponent, DecimalRendererComponent, FileSizeRendererComponent, IconRendererComponent, IntegerRendererComponent, OrganizationRendererComponent, RendererDirective, RendererService, StringRendererComponent, TableRendererComponent, UnknownRendererComponent };
117
135
  export type { RendererComponent, RendererDirectiveInput };
@@ -109,6 +109,22 @@ declare const defaultHaloFocusOffset = 3;
109
109
  */
110
110
  declare const haloFocusStyles: Partial<CSSStyleDeclaration>;
111
111
 
112
+ /**
113
+ * Default interval (in milliseconds) for periodic PWA update checks.
114
+ *
115
+ * After the application stabilizes, {@link PwaUpdateService} polls the service
116
+ * worker for a newer deployed version on this interval. This complements the
117
+ * `VERSION_READY` event, which only fires while the tab is open and the service
118
+ * worker happens to detect a change — long-running sessions would otherwise
119
+ * never learn about a new release.
120
+ *
121
+ * Override via `providePwaUpdate({ checkInterval })`. Set `checkInterval` to `0`
122
+ * to disable polling and rely solely on `VERSION_READY`.
123
+ *
124
+ * @default 6 hours (21600000 milliseconds)
125
+ */
126
+ declare const pwaUpdateDefaultCheckInterval: number;
127
+
112
128
  /**
113
129
  * Default session duration (in milliseconds) when no explicit duration is provided.
114
130
  *
@@ -303,6 +319,35 @@ interface HaloFocusConfig {
303
319
  outerColor?: string;
304
320
  }
305
321
 
322
+ /**
323
+ * Configuration for the PWA update feature wired up by `providePwaUpdate()`.
324
+ *
325
+ * All label/message fields are passed through `TranslateService.instant()`, so
326
+ * you may supply either an i18n key or a literal string. When omitted, the
327
+ * built-in `yuv.pwa.update.*` keys are used.
328
+ */
329
+ interface PwaUpdateConfig {
330
+ /**
331
+ * Interval (in milliseconds) for periodic update checks after the app becomes
332
+ * stable. Defaults to {@link pwaUpdateDefaultCheckInterval} (6 hours).
333
+ * Set to `0` to disable polling and rely solely on the `VERSION_READY` event.
334
+ */
335
+ checkInterval?: number;
336
+ /** Title shown in the update confirm dialog. @default 'yuv.pwa.update.title' */
337
+ title?: string;
338
+ /** Message shown when a new version is ready to activate. @default 'yuv.pwa.update.message' */
339
+ message?: string;
340
+ /**
341
+ * Message shown when the service worker enters an unrecoverable state and the
342
+ * page must be reloaded. @default 'yuv.pwa.update.unrecoverable.message'
343
+ */
344
+ unrecoverableMessage?: string;
345
+ /** Confirm button label. @default 'yuv.pwa.update.confirm' */
346
+ confirmLabel?: string;
347
+ /** Cancel button label. @default 'yuv.pwa.update.cancel' */
348
+ cancelLabel?: string;
349
+ }
350
+
306
351
  type ChannelPayload = {
307
352
  type: ChannelMessage;
308
353
  expiresAt?: number;
@@ -389,6 +434,42 @@ interface SnackBarData {
389
434
  */
390
435
  declare function provideHaloFocus(config?: HaloFocusConfig): EnvironmentProviders;
391
436
 
437
+ /**
438
+ * Provides and initializes PWA update detection for the application.
439
+ *
440
+ * On startup it boots {@link PwaUpdateService}, which watches for newly deployed
441
+ * versions of the app and, instead of reloading silently, asks the user to
442
+ * confirm before activating the update and reloading the page.
443
+ *
444
+ * **Detection:** reacts to the service worker `VERSION_READY` event and also
445
+ * polls `checkForUpdate()` on an interval (default 6 hours) once the app is
446
+ * stable, so long-running sessions still pick up new releases.
447
+ *
448
+ * **Prerequisite:** the service worker must be registered separately via
449
+ * `provideServiceWorker('ngsw-worker.js', { enabled: !isDevMode() })`. When the
450
+ * service worker is disabled (e.g. dev mode) this provider is a harmless no-op.
451
+ *
452
+ * @param config - Optional configuration (check interval, custom dialog labels/messages).
453
+ * @returns EnvironmentProviders for the PWA update feature.
454
+ *
455
+ * @example
456
+ * // app.config.ts
457
+ * export const appConfig: ApplicationConfig = {
458
+ * providers: [
459
+ * provideServiceWorker('ngsw-worker.js', { enabled: !isDevMode() }),
460
+ * providePwaUpdate()
461
+ * ]
462
+ * };
463
+ *
464
+ * @example
465
+ * // Custom check interval (1 hour) and labels
466
+ * providePwaUpdate({
467
+ * checkInterval: 60 * 60 * 1000,
468
+ * message: 'A new version is available. Reload now?'
469
+ * });
470
+ */
471
+ declare function providePwaUpdate(config?: PwaUpdateConfig): EnvironmentProviders;
472
+
392
473
  /**
393
474
  * Provides and initializes the SessionService at application startup.
394
475
  *
@@ -770,6 +851,44 @@ declare class HaloUtilityService {
770
851
  static ɵprov: i0.ɵɵInjectableDeclaration<HaloUtilityService>;
771
852
  }
772
853
 
854
+ /**
855
+ * Detects newly deployed versions of the application (PWA) and lets the user
856
+ * decide when to apply them.
857
+ *
858
+ * **Flow (per the Angular `SwUpdate` documentation):**
859
+ * 1. **Check** — listens for the `VERSION_READY` event and, additionally, polls
860
+ * `checkForUpdate()` on an interval once the app is stable. The update is
861
+ * *not* applied automatically.
862
+ * 2. **Ask** — when a new version is ready, prompts the user via the framework
863
+ * {@link ConfirmService} dialog instead of reloading silently.
864
+ * 3. **Apply** — only after the user confirms, calls `activateUpdate()` and then
865
+ * reloads the page so the new version takes effect.
866
+ *
867
+ * The service is a no-op when the service worker is disabled (e.g. dev mode),
868
+ * so it is safe to provide unconditionally.
869
+ *
870
+ * Wire it up via `providePwaUpdate()` in `app.config.ts`. The service worker
871
+ * itself must still be registered separately via `provideServiceWorker(...)`.
872
+ *
873
+ * @see https://angular.dev/ecosystem/service-workers/communications
874
+ */
875
+ declare class PwaUpdateService {
876
+ #private;
877
+ /**
878
+ * Starts listening for updates. Called automatically by `providePwaUpdate()`.
879
+ * Does nothing when the service worker is not enabled.
880
+ */
881
+ init(config?: PwaUpdateConfig): void;
882
+ /**
883
+ * Manually triggers an update check (e.g. from a "check for updates" button).
884
+ * Resolves to `true` when a new version was found. Network errors are swallowed
885
+ * and resolve to `false`.
886
+ */
887
+ checkForUpdate(): Promise<boolean>;
888
+ static ɵfac: i0.ɵɵFactoryDeclaration<PwaUpdateService, never>;
889
+ static ɵprov: i0.ɵɵInjectableDeclaration<PwaUpdateService>;
890
+ }
891
+
773
892
  /**
774
893
  * Manages client-side session expiry: persists expiration, tracks user and HTTP activity,
775
894
  * shows a pre-expiry popup with an extend CTA, and syncs state across tabs via BroadcastChannel.
@@ -924,5 +1043,5 @@ declare class YuuvisClientFrameworkModule {
924
1043
  static ɵinj: i0.ɵɵInjectorDeclaration<YuuvisClientFrameworkModule>;
925
1044
  }
926
1045
 
927
- export { ChannelMessage, HaloFocusService, HaloUtilityService, SessionService, SnackBarComponent, SnackBarService, YuuvisClientFrameworkModule, defaultHaloFocusOffset, haloExcludedElementsInMatFormField, haloFocusNavigationKeys, haloFocusStyles, provideHaloFocus, provideSession, sessionActivityWindowBeforeEnd, sessionDefaultDuration, sessionPopupBeforeEnd };
928
- export type { ChannelPayload, HaloFocusConfig, SnackBarData, SnackBarLevel, SnackBarMessage, SnackBarOptions };
1046
+ export { ChannelMessage, HaloFocusService, HaloUtilityService, PwaUpdateService, SessionService, SnackBarComponent, SnackBarService, YuuvisClientFrameworkModule, defaultHaloFocusOffset, haloExcludedElementsInMatFormField, haloFocusNavigationKeys, haloFocusStyles, provideHaloFocus, providePwaUpdate, provideSession, pwaUpdateDefaultCheckInterval, sessionActivityWindowBeforeEnd, sessionDefaultDuration, sessionPopupBeforeEnd };
1047
+ export type { ChannelPayload, HaloFocusConfig, PwaUpdateConfig, SnackBarData, SnackBarLevel, SnackBarMessage, SnackBarOptions };