@yuuvis/client-framework 2.10.3 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/lib/autocomplete.component.d.ts +4 -4
- package/autocomplete/lib/autocomplete.interface.d.ts +2 -2
- package/common/lib/services/index.d.ts +1 -0
- package/common/lib/services/layout-settings/layout-settings.service.d.ts +15 -0
- package/common/lib/services/theme/index.d.ts +3 -0
- package/common/lib/services/theme/theme.models.d.ts +16 -0
- package/common/lib/services/theme/theme.provider.d.ts +4 -0
- package/common/lib/services/theme/theme.service.d.ts +16 -0
- package/fesm2022/yuuvis-client-framework-common.mjs +213 -4
- package/fesm2022/yuuvis-client-framework-common.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-datepicker.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +46 -21
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs +135 -52
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +4 -3
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-query-list.mjs +5 -4
- package/fesm2022/yuuvis-client-framework-query-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +20 -4
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework.mjs +616 -98
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
- package/forms/lib/elements/datetime/datetime.component.d.ts +0 -1
- package/forms/lib/elements/organization/organization.component.d.ts +1 -1
- package/forms/lib/elements/organization-set/organization-set.component.d.ts +1 -1
- package/index.d.ts +5 -2
- package/lib/config/index.d.ts +1 -0
- package/lib/config/session/index.d.ts +3 -0
- package/lib/config/session/session-activity-window-before-end.const.d.ts +43 -0
- package/lib/config/session/session-default-duration.const.d.ts +47 -0
- package/lib/config/session/session-popup-before-end.const.d.ts +47 -0
- package/lib/enums/channel-message.enum.d.ts +4 -0
- package/lib/enums/index.d.ts +1 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/session/channel-payload.model.d.ts +5 -0
- package/lib/models/session/index.d.ts +1 -0
- package/lib/models/snack-bar/index.d.ts +3 -0
- package/lib/models/snack-bar/snack-bar-data.model.d.ts +6 -0
- package/lib/models/snack-bar/snack-bar-level.model.d.ts +1 -0
- package/lib/{services/snack-bar/snack-bar.interface.d.ts → models/snack-bar/snack-bar-options.model.d.ts} +1 -6
- package/lib/providers/index.d.ts +1 -0
- package/lib/providers/session/index.d.ts +1 -0
- package/lib/providers/session/provide-session.provider.d.ts +43 -0
- package/lib/services/index.d.ts +2 -2
- package/lib/services/session/session.service.d.ts +113 -0
- package/lib/services/snack-bar/snack-bar.service.d.ts +5 -5
- package/object-relationship/index.d.ts +1 -0
- package/object-relationship/lib/actions/add-relationship/add-relationship.component.d.ts +10 -0
- package/object-relationship/lib/actions/relationship-target-search/relationship-target-search.component.d.ts +17 -4
- package/object-relationship/lib/object-relationship.const.d.ts +0 -1
- package/object-versions/lib/object-versions.component.d.ts +1 -0
- package/package.json +8 -8
- package/query-list/lib/query-list.component.d.ts +8 -7
- package/tile-list/lib/tile-list/tile-list.component.d.ts +4 -2
- package/lib/assets/i18n/de.json +0 -202
- package/lib/assets/i18n/en.json +0 -202
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { EnvironmentProviders } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* Provides and initializes the SessionService at application startup.
|
|
4
|
+
*
|
|
5
|
+
* What it does
|
|
6
|
+
* - Registers SessionService as a singleton to manage session expiry across the app
|
|
7
|
+
* - Runs `session.init()` via APP_INITIALIZER when the app boots
|
|
8
|
+
* - Initializes cross-tab BroadcastChannel sync, HTTP debounce hooks, and user-activity listeners
|
|
9
|
+
* - Automatically tracks HTTP activity and user interactions to extend sessions
|
|
10
|
+
*
|
|
11
|
+
* Usage scenarios
|
|
12
|
+
*
|
|
13
|
+
* Scenario 1: Known session duration at startup
|
|
14
|
+
* When the session duration is predetermined and constant, provide it here.
|
|
15
|
+
* ```ts
|
|
16
|
+
* // app.config.ts
|
|
17
|
+
* export const appConfig: ApplicationConfig = {
|
|
18
|
+
* providers: [
|
|
19
|
+
* provideSession(30 * 60 * 1000), // 30 minutes
|
|
20
|
+
* ]
|
|
21
|
+
* };
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Scenario 2: Dynamic session duration from backend
|
|
25
|
+
* When the session duration is determined after login (e.g., from backend response),
|
|
26
|
+
* omit the parameter here and call `startSession()` after receiving the duration.
|
|
27
|
+
* ```ts
|
|
28
|
+
* // app.config.ts
|
|
29
|
+
* export const appConfig: ApplicationConfig = {
|
|
30
|
+
* providers: [
|
|
31
|
+
* provideSession(), // Defaults to 30 minutes until startSession() is called
|
|
32
|
+
* ]
|
|
33
|
+
* };
|
|
34
|
+
*
|
|
35
|
+
* // After login in AuthService:
|
|
36
|
+
* login().subscribe(response => {
|
|
37
|
+
* sessionService.startSession(response.sessionExpiresIn); // Set actual duration
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @param sessionDuration Optional session duration in milliseconds. If omitted, defaults to 30 minutes (1800000ms).
|
|
42
|
+
*/
|
|
43
|
+
export declare function provideSession(sessionDuration?: number): EnvironmentProviders;
|
package/lib/services/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export * from './halo-focus/halo-focus.service';
|
|
2
|
-
export * from './snack-bar/snack-bar.interface';
|
|
3
|
-
export * from './snack-bar/snack-bar.service';
|
|
4
2
|
export * from './halo-utility/halo-utility.service';
|
|
3
|
+
export * from './session/session.service';
|
|
4
|
+
export * from './snack-bar/snack-bar.service';
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Manages client-side session expiry: persists expiration, tracks user and HTTP activity,
|
|
4
|
+
* shows a pre-expiry popup with an extend CTA, and syncs state across tabs via BroadcastChannel.
|
|
5
|
+
*
|
|
6
|
+
* Key behaviors
|
|
7
|
+
* - Persists `expiresAt` in AppCacheService so multiple tabs share the same deadline
|
|
8
|
+
* - Automatically listens to BackendService HTTP activity (debounced) to extend sessions
|
|
9
|
+
* - Extends backend session by calling `/api-web/api/idm/whoami` endpoint (skipped when triggered by HTTP activity)
|
|
10
|
+
* - User activity (mouse, keyboard, scroll) inside a defined window will auto-extend the session
|
|
11
|
+
* - Displays a snack popup shortly before expiry; user can extend from the popup
|
|
12
|
+
* - Broadcasts `SessionExtended` / `SessionLogout` to keep tabs in sync
|
|
13
|
+
*
|
|
14
|
+
* Setup options
|
|
15
|
+
*
|
|
16
|
+
* Option 1: Known session duration at startup
|
|
17
|
+
* Use when the session duration is known in advance and remains constant.
|
|
18
|
+
* ```ts
|
|
19
|
+
* // app.config.ts
|
|
20
|
+
* export const appConfig: ApplicationConfig = {
|
|
21
|
+
* providers: [
|
|
22
|
+
* provideSession(30 * 60 * 1000), // 30 minutes - set at app startup
|
|
23
|
+
* ]
|
|
24
|
+
* };
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* Option 2: Dynamic session duration from backend
|
|
28
|
+
* Use when the session duration is determined after login (e.g., from backend response).
|
|
29
|
+
* ```ts
|
|
30
|
+
* // app.config.ts
|
|
31
|
+
* export const appConfig: ApplicationConfig = {
|
|
32
|
+
* providers: [
|
|
33
|
+
* provideSession(), // Initialize without duration (defaults to 30 minutes)
|
|
34
|
+
* ]
|
|
35
|
+
* };
|
|
36
|
+
*
|
|
37
|
+
* // After login in AuthService:
|
|
38
|
+
* login().subscribe(response => {
|
|
39
|
+
* const sessionDuration = response.sessionExpiresIn; // from backend
|
|
40
|
+
* sessionService.startSession(sessionDuration);
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
* Note: If no duration is provided to provideSession(), a default of 30 minutes is used until startSession() is called.
|
|
44
|
+
*
|
|
45
|
+
* Lifecycle notes
|
|
46
|
+
* - HTTP activity is automatically tracked via BackendService.httpCommunicationOccurred$
|
|
47
|
+
* - Backend session is extended via whoami endpoint, except when triggered by HTTP activity or cross-tab sync
|
|
48
|
+
* - Internal flag prevents recursive whoami calls when the endpoint itself triggers httpCommunicationOccurred$
|
|
49
|
+
* - Warning and logout timers are reset on every extend
|
|
50
|
+
* - All timers and the popup are cleared on logout
|
|
51
|
+
* - Broadcast messages are listened for and mirrored across tabs
|
|
52
|
+
* - For UI activity, this service listens to DOM events (mousemove, keydown, click, scroll)
|
|
53
|
+
*/
|
|
54
|
+
export declare class SessionService {
|
|
55
|
+
#private;
|
|
56
|
+
private translate;
|
|
57
|
+
/**
|
|
58
|
+
* Initializes cross-tab listeners and activity hooks.
|
|
59
|
+
*
|
|
60
|
+
* IMPORTANT: This is automatically called by `provideSession()` via APP_INITIALIZER.
|
|
61
|
+
* You should NOT call this manually - just add `provideSession()` to your app providers.
|
|
62
|
+
*
|
|
63
|
+
* What it does:
|
|
64
|
+
* - Initializes session with provided or default duration value
|
|
65
|
+
* - Wires BroadcastChannel subscriptions for cross-tab sync
|
|
66
|
+
* - Subscribes to BackendService.httpCommunicationOccurred$ for automatic HTTP activity tracking
|
|
67
|
+
* - Attaches DOM event listeners (mousemove, keydown, click, scroll) for the activity window
|
|
68
|
+
*/
|
|
69
|
+
init(sessionDuration?: number): void;
|
|
70
|
+
/**
|
|
71
|
+
* Sets the session duration and starts the session lifecycle.
|
|
72
|
+
*
|
|
73
|
+
* Use this method when you need to set or update the session duration dynamically,
|
|
74
|
+
* typically after receiving authentication/session information from the backend.
|
|
75
|
+
*
|
|
76
|
+
* This is the correct approach when:
|
|
77
|
+
* - Session duration is not known at application startup
|
|
78
|
+
* - Duration comes from a backend API response after login
|
|
79
|
+
* - You need to manually override the duration set via provideSession()
|
|
80
|
+
*
|
|
81
|
+
* Example:
|
|
82
|
+
* ```ts
|
|
83
|
+
* // After login in AuthService
|
|
84
|
+
* login().subscribe(response => {
|
|
85
|
+
* this.sessionService.startSession(response.sessionExpiresIn);
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* @param duration Total session length in milliseconds
|
|
90
|
+
*/
|
|
91
|
+
startSession(duration: number): void;
|
|
92
|
+
/**
|
|
93
|
+
* Extends the session expiry, resets all timers, and optionally broadcasts to other tabs.
|
|
94
|
+
*
|
|
95
|
+
* @param broadcast When true (default), posts a BroadcastChannel message so other tabs sync
|
|
96
|
+
* @param expiresAt Optional custom expiry timestamp; if not provided, calculates based on session duration
|
|
97
|
+
* @param skipBackendCall When true, skips the whoami backend call (used when already triggered by HTTP activity)
|
|
98
|
+
*/
|
|
99
|
+
extendSession(broadcast?: boolean, expiresAt?: number, skipBackendCall?: boolean): void;
|
|
100
|
+
private listenToChannel;
|
|
101
|
+
private scheduleActivityWindow;
|
|
102
|
+
private showPopup;
|
|
103
|
+
private scheduleLogout;
|
|
104
|
+
private performLogout;
|
|
105
|
+
private setupHttpDebounce;
|
|
106
|
+
private setupUserActivityTracking;
|
|
107
|
+
private resetAllTimers;
|
|
108
|
+
private getExpiresAt;
|
|
109
|
+
private setExpiresAt;
|
|
110
|
+
private clearTimers;
|
|
111
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
|
|
112
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
|
|
113
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { MatSnackBarRef } from '@angular/material/snack-bar';
|
|
2
|
-
import { SnackBarLevel, SnackBarOptions } from '
|
|
2
|
+
import { SnackBarLevel, SnackBarOptions } from '../../models';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SnackBarService {
|
|
5
5
|
#private;
|
|
6
|
-
info(message: string, action?: string): MatSnackBarRef<SnackBarComponent>;
|
|
7
|
-
success(message: string, action?: string): MatSnackBarRef<SnackBarComponent>;
|
|
8
|
-
warning(message: string, action?: string): MatSnackBarRef<SnackBarComponent>;
|
|
9
|
-
danger(message: string, action?: string): MatSnackBarRef<SnackBarComponent>;
|
|
6
|
+
info(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
7
|
+
success(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
8
|
+
warning(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
9
|
+
danger(message: string, action?: string, duration?: number): MatSnackBarRef<SnackBarComponent>;
|
|
10
10
|
snack(message: string, options: SnackBarOptions): MatSnackBarRef<SnackBarComponent>;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<SnackBarService, never>;
|
|
12
12
|
static ɵprov: i0.ɵɵInjectableDeclaration<SnackBarService>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './lib/object-relationship.module';
|
|
2
2
|
export * from './lib/object-relationship.component';
|
|
3
|
+
export * from './lib/object-relationship.const';
|
|
3
4
|
export * from './lib/object-relationship.interface';
|
|
4
5
|
export * from './lib/actions/add-relationship/add-relationship.component';
|
|
@@ -5,13 +5,22 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
export declare class AddRelationshipComponent {
|
|
6
6
|
#private;
|
|
7
7
|
readonly translate: TranslateService;
|
|
8
|
+
targetTypeLabels: Record<string, string>;
|
|
9
|
+
targetTypeFilterControl: FormControl<string[] | null>;
|
|
10
|
+
targetTypeFilterValue: import("@angular/core").Signal<string[] | null>;
|
|
8
11
|
object: import("@angular/core").InputSignal<DmsObject>;
|
|
9
12
|
config: import("@angular/core").InputSignal<RelationshipComponentConfig>;
|
|
10
13
|
supportedRelationships: import("@angular/core").Signal<Relationship[]>;
|
|
14
|
+
filteredRelationships: import("@angular/core").Signal<Relationship[]>;
|
|
11
15
|
availableTargetTypes: import("@angular/core").Signal<string[]>;
|
|
16
|
+
labeledTargetTypes: import("@angular/core").Signal<{
|
|
17
|
+
id: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}[]>;
|
|
12
20
|
sourceNode: import("@angular/core").Signal<{
|
|
13
21
|
title: string;
|
|
14
22
|
description: string | undefined;
|
|
23
|
+
icon: string | undefined;
|
|
15
24
|
}>;
|
|
16
25
|
form: FormGroup<{
|
|
17
26
|
relation: FormControl<Relationship | null>;
|
|
@@ -20,6 +29,7 @@ export declare class AddRelationshipComponent {
|
|
|
20
29
|
busy: import("@angular/core").WritableSignal<boolean>;
|
|
21
30
|
error: import("@angular/core").WritableSignal<string | null>;
|
|
22
31
|
optionCompareWith(o1: Relationship | undefined, o2: Relationship | undefined): boolean;
|
|
32
|
+
onRelationSelect(idx: number[]): void;
|
|
23
33
|
submit(): void;
|
|
24
34
|
close(): void;
|
|
25
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<AddRelationshipComponent, never>;
|
|
@@ -3,21 +3,34 @@ import { Relationship } from '@yuuvis/client-core';
|
|
|
3
3
|
import { AutocompleteItem } from '@yuuvis/client-framework/autocomplete';
|
|
4
4
|
import { RelationshipComponentConfig } from '../../object-relationship.interface';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
interface AutocompleteItemValue {
|
|
7
|
+
description?: string;
|
|
8
|
+
data: Record<string, unknown>;
|
|
9
|
+
}
|
|
6
10
|
export declare class RelationshipTargetSearchComponent implements ControlValueAccessor {
|
|
7
11
|
#private;
|
|
8
12
|
supportedRelationships: import("@angular/core").InputSignal<Relationship[]>;
|
|
9
|
-
|
|
13
|
+
sourceNode: import("@angular/core").InputSignal<string>;
|
|
14
|
+
targetTypes: import("@angular/core").InputSignal<string[]>;
|
|
10
15
|
config: import("@angular/core").InputSignal<RelationshipComponentConfig>;
|
|
11
|
-
autocompleteRes: AutocompleteItem[];
|
|
16
|
+
autocompleteRes: AutocompleteItem<AutocompleteItemValue>[];
|
|
17
|
+
innerValue: import("@angular/core").WritableSignal<AutocompleteItem<AutocompleteItemValue> | undefined>;
|
|
18
|
+
mappedValue: import("@angular/core").Signal<{
|
|
19
|
+
title: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
icon?: string;
|
|
22
|
+
} | undefined>;
|
|
12
23
|
busy: import("@angular/core").WritableSignal<boolean>;
|
|
13
|
-
acFormControl: FormControl<AutocompleteItem
|
|
24
|
+
acFormControl: FormControl<AutocompleteItem<AutocompleteItemValue> | null>;
|
|
14
25
|
constructor();
|
|
15
26
|
autocompleteFn(term: string): void;
|
|
27
|
+
reset(): void;
|
|
16
28
|
propagateChange: (_: any) => void;
|
|
17
29
|
writeValue(value: any): void;
|
|
18
30
|
registerOnChange(fn: any): void;
|
|
19
31
|
registerOnTouched(fn: any): void;
|
|
20
32
|
setDisabledState?(isDisabled: boolean): void;
|
|
21
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<RelationshipTargetSearchComponent, never>;
|
|
22
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RelationshipTargetSearchComponent, "yuv-relationship-target-search", never, { "supportedRelationships": { "alias": "supportedRelationships"; "required": true; "isSignal": true; }; "
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RelationshipTargetSearchComponent, "yuv-relationship-target-search", never, { "supportedRelationships": { "alias": "supportedRelationships"; "required": true; "isSignal": true; }; "sourceNode": { "alias": "sourceNode"; "required": true; "isSignal": true; }; "targetTypes": { "alias": "targetTypes"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
23
35
|
}
|
|
36
|
+
export {};
|
|
@@ -23,6 +23,7 @@ export declare class ObjectVersionsComponent {
|
|
|
23
23
|
versions: import("@angular/core").WritableSignal<DmsObject[]>;
|
|
24
24
|
selectedVersion: import("@angular/core").WritableSignal<DmsObject | undefined>;
|
|
25
25
|
error: import("@angular/core").WritableSignal<string | undefined>;
|
|
26
|
+
selectedIndex: import("@angular/core").WritableSignal<number | null>;
|
|
26
27
|
isCurrentVersion: import("@angular/core").Signal<boolean>;
|
|
27
28
|
metadata: Partial<Metadata>;
|
|
28
29
|
itemSelected(selectedIndex: number[]): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-framework",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.11.0",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
"@angular/common": "^19.2.1",
|
|
9
9
|
"@angular/core": "^19.2.1",
|
|
10
10
|
"angular-gridster2": "^19.0.0",
|
|
11
|
-
"@yuuvis/client-core": "^2.
|
|
12
|
-
"@yuuvis/client-shell-core": "^2.
|
|
11
|
+
"@yuuvis/client-core": "^2.11.0",
|
|
12
|
+
"@yuuvis/client-shell-core": "^2.11.0",
|
|
13
13
|
"ng-dynamic-component": "^10.8.2",
|
|
14
14
|
"modern-normalize": "^3.0.1"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@angular/material": "^19.2.15",
|
|
18
18
|
"@ngrx/signals": "^19.2.0",
|
|
19
|
-
"@yuuvis/material": "2.
|
|
19
|
+
"@yuuvis/material": "2.11.0",
|
|
20
20
|
"@yuuvis/media-viewer": "^2.0.12",
|
|
21
21
|
"angular-split": "^19.0.0",
|
|
22
22
|
"vis-network": "^10.0.2",
|
|
@@ -68,14 +68,14 @@
|
|
|
68
68
|
"types": "./list/index.d.ts",
|
|
69
69
|
"default": "./fesm2022/yuuvis-client-framework-list.mjs"
|
|
70
70
|
},
|
|
71
|
-
"./metadata-form": {
|
|
72
|
-
"types": "./metadata-form/index.d.ts",
|
|
73
|
-
"default": "./fesm2022/yuuvis-client-framework-metadata-form.mjs"
|
|
74
|
-
},
|
|
75
71
|
"./master-details": {
|
|
76
72
|
"types": "./master-details/index.d.ts",
|
|
77
73
|
"default": "./fesm2022/yuuvis-client-framework-master-details.mjs"
|
|
78
74
|
},
|
|
75
|
+
"./metadata-form": {
|
|
76
|
+
"types": "./metadata-form/index.d.ts",
|
|
77
|
+
"default": "./fesm2022/yuuvis-client-framework-metadata-form.mjs"
|
|
78
|
+
},
|
|
79
79
|
"./metadata-form-defaults": {
|
|
80
80
|
"types": "./metadata-form-defaults/index.d.ts",
|
|
81
81
|
"default": "./fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs"
|
|
@@ -48,7 +48,7 @@ import * as i0 from "@angular/core";
|
|
|
48
48
|
* } *
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
|
-
export declare class QueryListComponent {
|
|
51
|
+
export declare class QueryListComponent<T = any> {
|
|
52
52
|
#private;
|
|
53
53
|
list: import("@angular/core").Signal<ListComponent>;
|
|
54
54
|
itemTemplate: import("@angular/core").Signal<TemplateRef<any> | undefined>;
|
|
@@ -66,7 +66,7 @@ export declare class QueryListComponent {
|
|
|
66
66
|
/**
|
|
67
67
|
* Optional transformer function to map SearchResultItem to a custom format.
|
|
68
68
|
*/
|
|
69
|
-
transformer: import("@angular/core").InputSignal<((items: SearchResultItem[]) =>
|
|
69
|
+
transformer: import("@angular/core").InputSignal<((items: SearchResultItem[]) => T[]) | null | undefined>;
|
|
70
70
|
/**
|
|
71
71
|
* Function that returns `true` if selection changes should be prevented.
|
|
72
72
|
* This can be used to temporarily block selection changes, e.g. while
|
|
@@ -103,7 +103,7 @@ export declare class QueryListComponent {
|
|
|
103
103
|
/**
|
|
104
104
|
* The list of result items after applying the optional transformer.
|
|
105
105
|
*/
|
|
106
|
-
resultItems: import("@angular/core").Signal<
|
|
106
|
+
resultItems: import("@angular/core").Signal<T[]>;
|
|
107
107
|
/**
|
|
108
108
|
* Number of items to fetch per page when executing the query.
|
|
109
109
|
* @default SearchService.DEFAULT_QUERY_SIZE
|
|
@@ -150,7 +150,7 @@ export declare class QueryListComponent {
|
|
|
150
150
|
*/
|
|
151
151
|
updateListItems(updates: {
|
|
152
152
|
index: number;
|
|
153
|
-
value:
|
|
153
|
+
value: T;
|
|
154
154
|
}[]): void;
|
|
155
155
|
/**
|
|
156
156
|
* Optional array of items to be shown in addition to the query results.
|
|
@@ -168,11 +168,12 @@ export declare class QueryListComponent {
|
|
|
168
168
|
* @param scrollTo If `true`, the list will scroll to the top after dropping
|
|
169
169
|
* in the items. Default is `true`.
|
|
170
170
|
*/
|
|
171
|
-
dropItems(items:
|
|
171
|
+
dropItems(items: T[], scrollTo?: boolean): void;
|
|
172
172
|
/**
|
|
173
173
|
* Selects multiple items in the list.
|
|
174
174
|
*/
|
|
175
175
|
multiSelect(index: number[]): void;
|
|
176
|
+
select(index: number): void;
|
|
176
177
|
/**
|
|
177
178
|
* Clear the current selection.
|
|
178
179
|
* @param silent If `true`, the `itemSelect` event will not be emitted.
|
|
@@ -185,6 +186,6 @@ export declare class QueryListComponent {
|
|
|
185
186
|
runTransformerAgain(): void;
|
|
186
187
|
changePage(pe: PageEvent): void;
|
|
187
188
|
goToPage(page: number): void;
|
|
188
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<QueryListComponent
|
|
189
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<QueryListComponent
|
|
189
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<QueryListComponent<any>, never>;
|
|
190
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<QueryListComponent<any>, "yuv-query-list", never, { "query": { "alias": "query"; "required": false; "isSignal": true; }; "idProperty": { "alias": "idProperty"; "required": false; "isSignal": true; }; "transformer": { "alias": "transformer"; "required": false; "isSignal": true; }; "preventChangeUntil": { "alias": "preventChangeUntil"; "required": false; "isSignal": true; }; "autoSelect": { "alias": "autoSelect"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "enableDragSelect": { "alias": "enableDragSelect"; "required": false; "isSignal": true; }; "multiselect": { "alias": "multiselect"; "required": false; "isSignal": true; }; "selfHandleSelection": { "alias": "selfHandleSelection"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; "dragSelectChange": "dragSelectChange"; "itemDoubleClick": "itemDoubleClick"; "queryResult": "queryResult"; }, ["itemTemplate", "emptyTemplate"], never, true, never>;
|
|
190
191
|
}
|
|
@@ -16,7 +16,7 @@ export declare class TileListComponent implements OnInit {
|
|
|
16
16
|
menuComponent: Signal<TileActionsMenuComponent | undefined>;
|
|
17
17
|
menu: Signal<import("@angular/material/menu").MatMenu | null>;
|
|
18
18
|
emptyContent: Signal<ElementRef<any> | undefined>;
|
|
19
|
-
list: Signal<QueryListComponent
|
|
19
|
+
list: Signal<QueryListComponent<TileData>>;
|
|
20
20
|
menuTriggers: Signal<readonly MatMenuTrigger[]>;
|
|
21
21
|
transformer: (res: SearchResultItem[]) => {
|
|
22
22
|
actions: Action[];
|
|
@@ -125,12 +125,14 @@ export declare class TileListComponent implements OnInit {
|
|
|
125
125
|
contextMenuHandler(event: MouseEvent, index: number): void;
|
|
126
126
|
executeAction(t: InnerTileData, a: Action, evt: Event): void;
|
|
127
127
|
selectById(ids: string[]): void;
|
|
128
|
-
|
|
128
|
+
multiSelect(index: number[]): void;
|
|
129
|
+
select(index: number): void;
|
|
129
130
|
onQueryResult(e: {
|
|
130
131
|
totalCount: number;
|
|
131
132
|
}): void;
|
|
132
133
|
onListItemsSelect(sel: number[]): void;
|
|
133
134
|
refresh(): void;
|
|
135
|
+
dropItems(objects: DmsObject[]): void;
|
|
134
136
|
applyFlavor(flavor: ObjectFlavor): void;
|
|
135
137
|
/**
|
|
136
138
|
* Updates an item in the list at the specified index with the provided value.
|
package/lib/assets/i18n/de.json
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"yuv.action-menu.action.copy.dms.object.description": "",
|
|
3
|
-
"yuv.action-menu.action.copy.dms.object.label": "Kopieren",
|
|
4
|
-
"yuv.action-menu.action.cut.dms.object.description": "",
|
|
5
|
-
"yuv.action-menu.action.cut.dms.object.label": "Ausschneiden",
|
|
6
|
-
"yuv.action-menu.action.delete.dms.object.confirm.cancel": "Abbrechen",
|
|
7
|
-
"yuv.action-menu.action.delete.dms.object.confirm.message": "Möchten Sie die ausgewählen Objekte wirklich löschen?",
|
|
8
|
-
"yuv.action-menu.action.delete.dms.object.confirm.ok": "Löschen",
|
|
9
|
-
"yuv.action-menu.action.delete.dms.object.description": "Löscht das Objekt.",
|
|
10
|
-
"yuv.action-menu.action.delete.dms.object.label": "Löschen",
|
|
11
|
-
"yuv.action-menu.action.delete.error.403": "Sie haben keine Berechtigung, das Objekt zu löschen.",
|
|
12
|
-
"yuv.action-menu.action.delete.error.404": "Das Objekt konnte nicht gefunden werden.",
|
|
13
|
-
"yuv.action-menu.action.delete.error.default": "Das Objekt konnte nicht gelöscht werden.",
|
|
14
|
-
"yuv.action-menu.action.download.dms.object.content.description": "Lädt die Dokumentdatei des Objekts herunter.",
|
|
15
|
-
"yuv.action-menu.action.download.dms.object.content.label": "Dokumentdatei herunterladen",
|
|
16
|
-
"yuv.clipboard.button.cancel": "Abbrechen",
|
|
17
|
-
"yuv.clipboard.button.paste": "Einfügen",
|
|
18
|
-
"yuv.clipboard.text.copy.multiple": "{{count}} Elemente kopiert",
|
|
19
|
-
"yuv.clipboard.text.copy.single": "1 Element kopiert",
|
|
20
|
-
"yuv.clipboard.text.cut.multiple": "{{count}} Elemente ausgeschnitten",
|
|
21
|
-
"yuv.clipboard.text.cut.single": "1 Element ausgeschnitten",
|
|
22
|
-
"yuv.confirm.cancel": "Abbrechen",
|
|
23
|
-
"yuv.confirm.confirm": "Bestätigen",
|
|
24
|
-
"yuv.object-form-element.error.date.invalid": "Bitte geben Sie ein gültiges Datum ein.",
|
|
25
|
-
"yuv.object-form-element.error.daterange.invalid": "Bitte geben Sie einen gültigen Datumsbereich an.",
|
|
26
|
-
"yuv.object-form-element.error.daterangeorder.invalid": "Das Von-Datum ist später als das Bis-Datum.",
|
|
27
|
-
"yuv.object-form-element.error.maxlength": "Die Eingabe darf max. {{maxLength}} Zeichen enthalten.",
|
|
28
|
-
"yuv.object-form-element.error.maxvalue": "Die Eingabe darf nicht mehr als {{maxValue}} sein.",
|
|
29
|
-
"yuv.object-form-element.error.minlength": "Die Eingabe muss min. {{minLength}} Zeichen enthalten.",
|
|
30
|
-
"yuv.object-form-element.error.minmax": "Die Eingabe muss zwischen {{minValue}} und {{maxValue}} liegen.",
|
|
31
|
-
"yuv.object-form-element.error.minvalue": "Die Eingabe darf nicht weniger als {{minValue}} sein.",
|
|
32
|
-
"yuv.object-form-element.error.number": "Bitte geben Sie einen numerischen Wert ein.",
|
|
33
|
-
"yuv.object-form-element.error.number.precision": "Die Anzahl der Vorkommastellen ist nicht korrekt: max. {{prePointDigits}}.",
|
|
34
|
-
"yuv.object-form-element.error.number.scale": "Die Anzahl der Nachkommastellen ist nicht korrekt: max. {{scale}}.",
|
|
35
|
-
"yuv.object-form-element.error.numberrange.invalid": "Bitte geben Sie einen gültigen Zahlenbereich an.",
|
|
36
|
-
"yuv.object-form-element.error.numberrangeorder.invalid": "Der Von-Wert ist größer als der Bis-Wert.",
|
|
37
|
-
"yuv.object-form-element.error.required": "Pflichtfeld",
|
|
38
|
-
"yuv.object-form-element.error.string.classification.email": "Bitte geben Sie eine gültige E-Mail-Adresse ein.",
|
|
39
|
-
"yuv.object-form-element.error.string.classification.phone": "Bitte geben Sie eine gültige Telefonnummer ein.",
|
|
40
|
-
"yuv.object-form-element.error.string.classification.url": "Bitte geben Sie eine gültige URL ein.",
|
|
41
|
-
"yuv.object-form-element.error.string.regex.nomatch": "Die Eingabe entspricht nicht den Vorgaben.",
|
|
42
|
-
"yuv.object-form-element.error.string.whitespaces": "Die Eingabe enthält nur Leerzeichen.",
|
|
43
|
-
"yuv.retention-badge.retain": "Aufbewahrung {{from}} - {{until}}",
|
|
44
|
-
"yuv.calendar.time.label": "Uhrzeit",
|
|
45
|
-
"yuv.form.element.data.grid.add-row.button.tooltip": "Zeile hinzufügen",
|
|
46
|
-
"yuv.form.element.data.grid.copy": "Kopieren",
|
|
47
|
-
"yuv.form.element.data.grid.edit": "Bearbeiten",
|
|
48
|
-
"yuv.form.element.data.grid.edit.add": "Hinzufügen",
|
|
49
|
-
"yuv.form.element.data.grid.edit.cancel": "Abbrechen",
|
|
50
|
-
"yuv.form.element.data.grid.edit.headline": "Bearbeiten Sie die Tabellenzeile '{{headline}}'.",
|
|
51
|
-
"yuv.form.element.data.grid.noData": "Keine Daten verfügbar",
|
|
52
|
-
"yuv.form.element.data.grid.remove": "Entfernen",
|
|
53
|
-
"yuv.form.element.data.grid.row.button.actions.tooltip": "Aktionsmenü öffnen",
|
|
54
|
-
"yuv.form.element.datetime.calendar.cancel": "Abbrechen",
|
|
55
|
-
"yuv.form.element.datetime.calendar.select": "Auswählen",
|
|
56
|
-
"yuv.form.element.datetime.calendar.today": "Heute",
|
|
57
|
-
"yuv.form.element.organization-set.classify.icon.title": "Gruppe",
|
|
58
|
-
"yuv.form.element.organization.classify.icon.title": "Benutzer",
|
|
59
|
-
"yuv.form.element.organization.user.not-found": "Benutzer nicht gefunden",
|
|
60
|
-
"yuv.form.element.range-select-date.custom.overlay.button.apply": "Anwenden",
|
|
61
|
-
"yuv.form.element.range-select-date.custom.overlay.title": "Benutzerdefinierter Zeitraum",
|
|
62
|
-
"yuv.form.element.range-select-date.option.any": "Beliebiges Datum",
|
|
63
|
-
"yuv.form.element.range-select-date.option.custom": "Zeitraum festlegen",
|
|
64
|
-
"yuv.form.element.range-select-date.option.lastMonth": "Letzter Monat",
|
|
65
|
-
"yuv.form.element.range-select-date.option.lastWeek": "Letzte Woche",
|
|
66
|
-
"yuv.form.element.range-select-date.option.lastYear": "Letztes Jahr",
|
|
67
|
-
"yuv.form.element.range-select-date.option.thisMonth": "Dieser Monat",
|
|
68
|
-
"yuv.form.element.range-select-date.option.thisWeek": "Diese Woche",
|
|
69
|
-
"yuv.form.element.range-select-date.option.thisYear": "Dieses Jahr",
|
|
70
|
-
"yuv.form.element.range-select-date.option.today": "Heute",
|
|
71
|
-
"yuv.form.element.range-select-date.option.yesterday": "Gestern",
|
|
72
|
-
"yuv.form.element.range-select-filesize.option.any": "Beliebige Größe",
|
|
73
|
-
"yuv.form.element.range-select-filesize.option.large": "Groß (10-100 MB)",
|
|
74
|
-
"yuv.form.element.range-select-filesize.option.medium": "Mittel (1-10 MB)",
|
|
75
|
-
"yuv.form.element.range-select-filesize.option.small": "Klein (<1 MB)",
|
|
76
|
-
"yuv.form.element.range-select-filesize.option.verylarge": "Sehr groß (>100 MB)",
|
|
77
|
-
"yuv.object-metadata.button.save": "Speichern",
|
|
78
|
-
"yuv.audit.fetch.error": "Historieneinträge konnten nicht geladen werden",
|
|
79
|
-
"yuv.audit.label.create.metadata": "Objekt wurde erstellt",
|
|
80
|
-
"yuv.audit.label.create.metadata.withcontent": "Objekt wurde mit Dokumentdatei erstellt",
|
|
81
|
-
"yuv.audit.label.create.tag": "Tag wurde erstellt",
|
|
82
|
-
"yuv.audit.label.delete": "Objekt wurde gelöscht",
|
|
83
|
-
"yuv.audit.label.delete.content": "Dokumentdatei wurde gelöscht",
|
|
84
|
-
"yuv.audit.label.delete.marked": "Objekt wurde zur Löschung vorgesehen",
|
|
85
|
-
"yuv.audit.label.delete.tag": "Tag wurde gelöscht",
|
|
86
|
-
"yuv.audit.label.delete.version": "Dokumentversion wurde gelöscht",
|
|
87
|
-
"yuv.audit.label.get.content": "Dokumentdatei wurde gelesen",
|
|
88
|
-
"yuv.audit.label.get.custom": "Alle sonstigen Ereignisse",
|
|
89
|
-
"yuv.audit.label.get.metadata": "Metadaten wurden gelesen",
|
|
90
|
-
"yuv.audit.label.get.rendition.pdf": "PDF-Rendition wurde angefordert",
|
|
91
|
-
"yuv.audit.label.get.rendition.text": "Text-Rendition wurde angefordert",
|
|
92
|
-
"yuv.audit.label.get.rendition.thumbnail": "Minituransicht wurde angefordert",
|
|
93
|
-
"yuv.audit.label.paging.next": "zur nächsten Seite",
|
|
94
|
-
"yuv.audit.label.paging.prev": "zur vorherigen Seite",
|
|
95
|
-
"yuv.audit.label.update.content": "Dokumentdatei wurde geändert",
|
|
96
|
-
"yuv.audit.label.update.metadata": "Metadaten wurden geändert",
|
|
97
|
-
"yuv.audit.label.update.metadata.withcontent": "Metadaten und Dokumentdatei wurden geändert",
|
|
98
|
-
"yuv.audit.label.update.move": "Objekt wurde verschoben",
|
|
99
|
-
"yuv.audit.label.update.move.content": "Dokumentdatei wurde verschoben",
|
|
100
|
-
"yuv.audit.label.update.restore": "Alte Version wurde wiederhergestellt",
|
|
101
|
-
"yuv.audit.label.update.restore.more": "Wiederhergestellt aus Version {{version}}",
|
|
102
|
-
"yuv.audit.label.update.tag": "Tag wurde geändert",
|
|
103
|
-
"yuv.audit.result.empty": "Es wurden keine Historieneinträge gefunden",
|
|
104
|
-
"yuv.audit.timeline": "Historienzeitleiste",
|
|
105
|
-
"yuv.object-details.tabs.content.title": "Inhalt",
|
|
106
|
-
"yuv.object-metadata.button.reset": "Änderungen verwerfen",
|
|
107
|
-
"yuv.object-metadata.context.load.error": "Das Objekt ist nicht verfügbar. Entweder wurde das Objekt gelöscht oder die Zugriffsrechte haben sich geändert.",
|
|
108
|
-
"yuv.object-metadata.empty.message": "Das Objekt hat keine Metadaten.",
|
|
109
|
-
"yuv.object-metadata.pending-changes.alert": "Sie bearbeiten gerade die Metadaten eines ungespeicherten Formulars. Ungespeicherte Daten gehen verloren.",
|
|
110
|
-
"yuv.object-metadata.save.error": "Das Dokument kann im Moment nicht gespeichert werden.",
|
|
111
|
-
"yuv.object-metadata.tabs.history.title": "Historie",
|
|
112
|
-
"yuv.object-metadata.tabs.indexdata.title": "Metadaten",
|
|
113
|
-
"yuv.object-flavor.apply-flavor.button.apply": "Anwenden",
|
|
114
|
-
"yuv.object-flavor.apply-flavor.button.cancel": "Abbrechen",
|
|
115
|
-
"yuv.object-flavor.apply-flavor.headline": "Typ '{{name}}' hinzufügen",
|
|
116
|
-
"yuv.object-flavor.button.add": "Typ hinzufügen",
|
|
117
|
-
"yuv.object-flavor.button.clear-selection": "Auswahl aufheben",
|
|
118
|
-
"yuv.object-flavor.flavor.remove.confirm.message": "Möchten Sie den Typ '{{flavor}}' wirklich entfernen?",
|
|
119
|
-
"yuv.object-flavor.label": "Typen",
|
|
120
|
-
"yuv.object-flavor.picker.button.cancel": "Abbrechen",
|
|
121
|
-
"yuv.object-flavor.picker.text": "Typen sind Erweiterungen für Dateien, die zusätzliche Informationen zu deren Inhalt/Bedeutung bereitstellen.",
|
|
122
|
-
"yuv.object-flavor.picker.title": "Typ hinzufügen",
|
|
123
|
-
"yuv.object-preview.tiff-warning": "Dieses Dokument ist nicht die Original-TIFF-Datei, sondern nur eine Repräsentation. TIFF-Dateien werden nicht für die Vorschau unterstützt. Bitte laden Sie das Dokument herunter, um das Original anzuzeigen.",
|
|
124
|
-
"cm.app.cases.action.add-link.search.relation.label": "Verweistyp",
|
|
125
|
-
"yuv.object-relationship.action.add-relationship.description": "",
|
|
126
|
-
"yuv.object-relationship.action.add-relationship.label": "Verweis hinzufügen",
|
|
127
|
-
"yuv.object-relationship.add-relation.error-message": "Fehler beim Hinzufügen des Verweises.",
|
|
128
|
-
"yuv.object-relationship.add-relationship.action.cancel": "Abbrechen",
|
|
129
|
-
"yuv.object-relationship.add-relationship.action.submit": "Verweis hinzufügen",
|
|
130
|
-
"yuv.object-relationship.add-relationship.error.invalidRelationTargetCombination": "Der ausgewählte Verweistyp ist für das gewählte Zielobjekt nicht gültig.",
|
|
131
|
-
"yuv.object-relationship.add-relationship.headline": "Neuen Verweis hinzufügen",
|
|
132
|
-
"yuv.object-relationship.add-relationship.target-search.label": "Zielobjekt",
|
|
133
|
-
"yuv.object-relationship.add.tooltip": "Fügt einen neuen Verweis hinzu",
|
|
134
|
-
"yuv.object-relationship.delete-relation.confirm-message": "Sind Sie sicher, dass Sie den ausgewählten Verweis löschen möchten?",
|
|
135
|
-
"yuv.object-relationship.delete-relation.error-message": "Fehler beim Löschen des ausgewählten Verweises.",
|
|
136
|
-
"yuv.object-relationship.delete-relation.tooltip": "Löscht den ausgewählten Verweis",
|
|
137
|
-
"yuv.object-relationship.download.tooltip": "Als Bild herunterladen",
|
|
138
|
-
"yuv.object-relationship.list.incoming": "Eingehende Verweise",
|
|
139
|
-
"yuv.object-relationship.list.outgoing": "Ausgehende Verweise",
|
|
140
|
-
"yuv.object-relationship.mode.graph.tooltip": "Graphansicht",
|
|
141
|
-
"yuv.object-relationship.mode.list.tooltip": "Listenansicht",
|
|
142
|
-
"yuv.object-relationship.no-relations": "Keine Verweise gefunden.",
|
|
143
|
-
"yuv.object-relationship.node-summary.open-object.button": "Öffnen",
|
|
144
|
-
"yuv.object-relationship.selected.add-relationship.tooltip": "Fügt einen neuen Verweis hinzu",
|
|
145
|
-
"yuv.object-relationship.selected.expand.tooltip": "Erweitert den ausgewählten Verweis",
|
|
146
|
-
"yuv.object-summary-data.base.headline": "Basismetadaten",
|
|
147
|
-
"yuv.object-summary.load.error": "Fehler beim Laden der Zusammenfassung",
|
|
148
|
-
"yuv.object-versions.actions.download": "Version herunterladen",
|
|
149
|
-
"yuv.object-versions.actions.restore": "Version wiederherstellen",
|
|
150
|
-
"yuv.object-versions.actions.restore.confirm.message": "Möchten Sie die Version {{version}} wirklich wiederherstellen?",
|
|
151
|
-
"yuv.object-versions.error.fetch-versions": "Versionen konnten nicht geladen werden",
|
|
152
|
-
"yuv.object-versions.list.version": "Version {{version}}",
|
|
153
|
-
"yuv.object-versions.tabs.content.title": "Inhalt",
|
|
154
|
-
"yuv.object-versions.tabs.indexdata.title": "Metadaten",
|
|
155
|
-
"yuv.table.renderer.moreEntries": "Es werden nur die ersten 10 Einträge angezeigt. Insgesamt: {{ count }}",
|
|
156
|
-
"yuv.sequence-list.form.nextAssignee": "Empfänger",
|
|
157
|
-
"yuv.sequence-list.form.task": "Aufgabe",
|
|
158
|
-
"yuv.simple-search.clear": "Löschen",
|
|
159
|
-
"yuv.simple-search.label": "Suchen",
|
|
160
|
-
"yuv.simple-search.submit": "Suche starten",
|
|
161
|
-
"yuv.sort.ascending": "Aufsteigend",
|
|
162
|
-
"yuv.sort.descending": "Absteigend",
|
|
163
|
-
"yuv.sort.tooltip": "Sortieren",
|
|
164
|
-
"yuv.tile-config.button.close": "Schließen",
|
|
165
|
-
"yuv.tile-config.button.reset": "Zurücksetzen",
|
|
166
|
-
"yuv.tile-config.button.save": "Änderungen speichern",
|
|
167
|
-
"yuv.tile-config.icon-select.pick": "Icon auswählen",
|
|
168
|
-
"yuv.tile-config.icon-select.reset": "Zurücksetzen",
|
|
169
|
-
"yuv.tile-config.slot.action.headline": "Aktionen",
|
|
170
|
-
"yuv.tile-config.slot.icon.headline": "Icon",
|
|
171
|
-
"yuv.tile-config.slot.property.headline": "Attribut",
|
|
172
|
-
"yuv.tile-config.title": "Trefferlistenkonfiguration für {{bucket}}",
|
|
173
|
-
"yuv.tile-config.trigger.tooltip": "Trefferlistenkonfiguration",
|
|
174
|
-
"yuv.tile-list.item.actions-menu.button.tooltip": "Aktionsmenü öffnen",
|
|
175
|
-
"yuv.upload-progress-overlay.error.403": "Sie haben nicht die erforderlichen Berechtigungen, um die Datei hochzuladen.",
|
|
176
|
-
"yuv.upload-progress-overlay.error.default": "Die Datei konnte nicht hochgeladen werden.",
|
|
177
|
-
"yuv.upload-progress.header.uploaded": "{{count}} Datei(en) hochgeladen",
|
|
178
|
-
"yuv.upload-progress.header.uploading": "Hochladen von {{count}} Datei(en)",
|
|
179
|
-
"yuv.widget-grid.button.cancel": "Abbrechen",
|
|
180
|
-
"yuv.widget-grid.button.save": "Speichern",
|
|
181
|
-
"yuv.widget-grid.empty": "Es wurden noch keine Widgets zu diesem Workspace hinzugefügt.",
|
|
182
|
-
"yuv.widget-grid.empty.create": "Workspace bearbeiten",
|
|
183
|
-
"yuv.widget-grid.widget-picker.empty": "Es sind keine Widgets verfügbar.",
|
|
184
|
-
"yuv.widget-grid.widget-picker.title": "Widgets",
|
|
185
|
-
"yuv.widget-grid.widget.add.label": "Widget hinzufügen",
|
|
186
|
-
"yuv.widget-grid.widget.add.tooltip": "Widget hinzufügen",
|
|
187
|
-
"yuv.widget-grid.widget.edit.tooltip": "Widget bearbeiten",
|
|
188
|
-
"yuv.widget-grid.widget.noop.label": "Nicht gefunden",
|
|
189
|
-
"yuv.widget-grid.widget.remove.tooltip": "Widget entfernen",
|
|
190
|
-
"yuv.widget-grid.workspaces.edit.cancel": "Abbrechen",
|
|
191
|
-
"yuv.widget-grid.workspaces.edit.save": "Speichern",
|
|
192
|
-
"yuv.widget-grid.workspaces.edit.title": "Workspace",
|
|
193
|
-
"yuv.widget-grid.workspaces.editMode.cancel": "Verwerfen",
|
|
194
|
-
"yuv.widget-grid.workspaces.editMode.save": "Änderungen speichern",
|
|
195
|
-
"yuv.widget-grid.workspaces.empty": "Keine Workspaces gefunden",
|
|
196
|
-
"yuv.widget-grid.workspaces.empty.button.create": "Workspace erstellen",
|
|
197
|
-
"yuv.widget-grid.workspaces.workspace.delete.confirm.message": "Möchten Sie den Workspace '{{label}}' wirklich löschen?",
|
|
198
|
-
"yuv.widget-grid.workspaces.workspace.label": "Workspace",
|
|
199
|
-
"yuv.widget-grid.workspaces.workspace.menu.create": "Workspace erstellen",
|
|
200
|
-
"yuv.widget-grid.workspaces.workspace.menu.delete": "Workspace löschen",
|
|
201
|
-
"yuv.widget-grid.workspaces.workspace.menu.edit": "Workspace bearbeiten"
|
|
202
|
-
}
|