@yuuvis/client-framework 3.1.0 → 3.2.1
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/fesm2022/yuuvis-client-framework-actions.mjs +209 -126
- package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-app-bar.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-app-bar.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-badges.mjs +379 -0
- package/fesm2022/yuuvis-client-framework-badges.mjs.map +1 -0
- package/fesm2022/yuuvis-client-framework-breadcrumb.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-breadcrumb.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-clipboard.mjs +8 -8
- package/fesm2022/yuuvis-client-framework-clipboard.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-datepicker.mjs +31 -31
- package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +65 -66
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-icons.mjs +9 -9
- package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +7 -7
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs +15 -15
- package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +53 -46
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs +18 -18
- package/fesm2022/yuuvis-client-framework-object-flavor.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-form.mjs +32 -32
- package/fesm2022/yuuvis-client-framework-object-form.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +9 -9
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs +28 -28
- package/fesm2022/yuuvis-client-framework-object-relationship.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-summary.mjs +14 -14
- package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-versions.mjs +18 -12
- package/fesm2022/yuuvis-client-framework-object-versions.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-pagination.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-pagination.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-query-list.mjs +7 -7
- package/fesm2022/yuuvis-client-framework-query-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-renderer.mjs +39 -39
- package/fesm2022/yuuvis-client-framework-renderer.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-simple-search.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sort.mjs +3 -3
- package/fesm2022/yuuvis-client-framework-sort.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +163 -125
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-token-search.mjs +7 -7
- package/fesm2022/yuuvis-client-framework-token-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tree.mjs +9 -9
- package/fesm2022/yuuvis-client-framework-tree.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs +10 -10
- package/fesm2022/yuuvis-client-framework-upload-progress.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework.mjs +96 -51
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
- package/lib/assets/i18n/de.json +12 -1
- package/lib/assets/i18n/en.json +12 -1
- package/package.json +9 -5
- package/types/yuuvis-client-framework-actions.d.ts +81 -52
- package/types/yuuvis-client-framework-badges.d.ts +194 -0
- package/types/yuuvis-client-framework-object-details.d.ts +5 -5
- package/types/yuuvis-client-framework-object-versions.d.ts +1 -0
- package/types/yuuvis-client-framework-tile-list.d.ts +10 -6
- package/types/yuuvis-client-framework.d.ts +13 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injector, Signal,
|
|
2
|
+
import { TemplateRef, Injector, Signal, InjectionToken } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ngx-translate/core';
|
|
4
|
-
import {
|
|
4
|
+
import { CdkMenu, CdkMenuItem, CdkContextMenuTrigger } from '@angular/cdk/menu';
|
|
5
5
|
import { DmsObject } from '@yuuvis/client-core';
|
|
6
6
|
import { Observable } from 'rxjs';
|
|
7
|
-
import {
|
|
7
|
+
import { MatIconRegistry } from '@angular/material/icon';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Module for the actions library.
|
|
@@ -15,6 +15,14 @@ declare class ActionsModule {
|
|
|
15
15
|
static ɵinj: i0.ɵɵInjectorDeclaration<ActionsModule>;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
declare const ACTION_ICON: {
|
|
19
|
+
download: string;
|
|
20
|
+
delete: string;
|
|
21
|
+
copy: string;
|
|
22
|
+
cut: string;
|
|
23
|
+
manageFlavor: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
18
26
|
type ActionClass = {
|
|
19
27
|
new (...args: any[]): any;
|
|
20
28
|
};
|
|
@@ -120,6 +128,69 @@ declare const BASE_ACTION: {
|
|
|
120
128
|
delete: string;
|
|
121
129
|
};
|
|
122
130
|
|
|
131
|
+
interface ContextMenuAction extends Action {
|
|
132
|
+
iconName?: string;
|
|
133
|
+
disabled?: boolean;
|
|
134
|
+
executeFn?: (...args: any[]) => void;
|
|
135
|
+
}
|
|
136
|
+
interface ContextMenuItemSelectEvent {
|
|
137
|
+
action: ContextMenuAction;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
declare class ContextmenuComponent {
|
|
141
|
+
actions: i0.InputSignal<ContextMenuAction[]>;
|
|
142
|
+
selection: i0.InputSignal<unknown[]>;
|
|
143
|
+
itemSelect: i0.OutputEmitterRef<ContextMenuItemSelectEvent>;
|
|
144
|
+
private translate;
|
|
145
|
+
cdkMenu: i0.Signal<CdkMenu>;
|
|
146
|
+
menuItems: i0.Signal<readonly (CdkMenuItem | null)[]>;
|
|
147
|
+
sortedActions: i0.Signal<ContextMenuAction[]>;
|
|
148
|
+
constructor();
|
|
149
|
+
onItemTrigger({ action }: ContextMenuItemSelectEvent): void;
|
|
150
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ContextmenuComponent, never>;
|
|
151
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ContextmenuComponent, "yuv-contextmenu", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
declare class YuvContextMenuTriggerDirective extends CdkContextMenuTrigger {
|
|
155
|
+
#private;
|
|
156
|
+
menuTemplateRef: TemplateRef<unknown>;
|
|
157
|
+
triggerWhen: i0.InputSignal<boolean | null>;
|
|
158
|
+
constructor();
|
|
159
|
+
_openOnContextMenu(event: MouseEvent): void;
|
|
160
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<YuvContextMenuTriggerDirective, never>;
|
|
161
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<YuvContextMenuTriggerDirective, "[yuvContextMenuTrigger]", ["yuvContextMenuTrigger"], { "menuTemplateRef": { "alias": "yuvContextMenuTrigger"; "required": false; }; "triggerWhen": { "alias": "yuvContextMenuTriggerWhen"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
declare const ActionPriorityLevel: {
|
|
165
|
+
readonly LEVEL_1: 1;
|
|
166
|
+
readonly LEVEL_2: 2;
|
|
167
|
+
readonly LEVEL_3: 3;
|
|
168
|
+
readonly LEVEL_4: 4;
|
|
169
|
+
readonly LEVEL_5: 5;
|
|
170
|
+
readonly LEVEL_6: 6;
|
|
171
|
+
readonly LEVEL_7: 7;
|
|
172
|
+
readonly LEVEL_8: 8;
|
|
173
|
+
readonly LEVEL_9: 9;
|
|
174
|
+
readonly LEVEL_10: 10;
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Service responsible for validating actions on DMS objects.
|
|
179
|
+
* Provides checks for document lock states and related user information.
|
|
180
|
+
*/
|
|
181
|
+
/** @deprecated */
|
|
182
|
+
declare class ActionsValidationService {
|
|
183
|
+
#private;
|
|
184
|
+
private readonly translate;
|
|
185
|
+
/** @deprecated */
|
|
186
|
+
checkDocumentLock(dmsObject: DmsObject): Observable<{
|
|
187
|
+
state: boolean;
|
|
188
|
+
description?: string;
|
|
189
|
+
}>;
|
|
190
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ActionsValidationService, never>;
|
|
191
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ActionsValidationService>;
|
|
192
|
+
}
|
|
193
|
+
|
|
123
194
|
declare class ActionsService {
|
|
124
195
|
#private;
|
|
125
196
|
readonly injector: Injector;
|
|
@@ -176,34 +247,33 @@ declare class ActionsService {
|
|
|
176
247
|
* are available for use.
|
|
177
248
|
*/
|
|
178
249
|
registerDefaultActions(): void;
|
|
179
|
-
private _actionsSupportsType;
|
|
180
250
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActionsService, never>;
|
|
181
251
|
static ɵprov: i0.ɵɵInjectableDeclaration<ActionsService>;
|
|
182
252
|
}
|
|
183
253
|
|
|
254
|
+
declare const ACTION_CONTEXT_TOKEN: InjectionToken<ActionContext>;
|
|
255
|
+
|
|
184
256
|
declare class DeleteAction extends AbstractContextAction implements Action {
|
|
185
257
|
#private;
|
|
186
|
-
private translate;
|
|
187
|
-
private retention;
|
|
188
258
|
id: string;
|
|
189
259
|
label: any;
|
|
190
260
|
description: any;
|
|
191
|
-
priority:
|
|
261
|
+
priority: 8;
|
|
192
262
|
icon: string;
|
|
193
263
|
group: string;
|
|
194
264
|
range: SelectionRange;
|
|
195
265
|
supports: ActionSupport;
|
|
266
|
+
isDisabled(items: DmsObject[]): Observable<boolean>;
|
|
196
267
|
isExecutable(items: DmsObject[]): Observable<boolean>;
|
|
197
268
|
run(items: DmsObject[]): Observable<boolean>;
|
|
198
269
|
}
|
|
199
270
|
|
|
200
271
|
declare class DownloadAction extends AbstractContextAction implements Action {
|
|
201
|
-
private
|
|
202
|
-
private dmsService;
|
|
272
|
+
#private;
|
|
203
273
|
id: string;
|
|
204
274
|
label: any;
|
|
205
275
|
description: any;
|
|
206
|
-
priority:
|
|
276
|
+
priority: 2;
|
|
207
277
|
icon: string;
|
|
208
278
|
group: string;
|
|
209
279
|
range: SelectionRange;
|
|
@@ -212,46 +282,5 @@ declare class DownloadAction extends AbstractContextAction implements Action {
|
|
|
212
282
|
run(selection: DmsObject[]): Observable<boolean>;
|
|
213
283
|
}
|
|
214
284
|
|
|
215
|
-
|
|
216
|
-
download: string;
|
|
217
|
-
delete: string;
|
|
218
|
-
copy: string;
|
|
219
|
-
cut: string;
|
|
220
|
-
manageFlavor: string;
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
interface ContextMenuAction extends Action {
|
|
224
|
-
iconName?: string;
|
|
225
|
-
disabled?: boolean;
|
|
226
|
-
executeFn?: (...args: any[]) => void;
|
|
227
|
-
}
|
|
228
|
-
interface ContextMenuItemSelectEvent {
|
|
229
|
-
action: ContextMenuAction;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
declare class ContextmenuComponent {
|
|
233
|
-
actions: i0.InputSignal<ContextMenuAction[]>;
|
|
234
|
-
selection: i0.InputSignal<unknown[]>;
|
|
235
|
-
itemSelect: i0.OutputEmitterRef<ContextMenuItemSelectEvent>;
|
|
236
|
-
private translate;
|
|
237
|
-
cdkMenu: i0.Signal<CdkMenu>;
|
|
238
|
-
menuItems: i0.Signal<readonly (CdkMenuItem | null)[]>;
|
|
239
|
-
sortedActions: i0.Signal<ContextMenuAction[]>;
|
|
240
|
-
constructor();
|
|
241
|
-
onItemTrigger({ action }: ContextMenuItemSelectEvent): void;
|
|
242
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ContextmenuComponent, never>;
|
|
243
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ContextmenuComponent, "yuv-contextmenu", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
declare class YuvContextMenuTriggerDirective extends CdkContextMenuTrigger {
|
|
247
|
-
#private;
|
|
248
|
-
menuTemplateRef: TemplateRef<unknown>;
|
|
249
|
-
triggerWhen: i0.InputSignal<boolean | null>;
|
|
250
|
-
constructor();
|
|
251
|
-
_openOnContextMenu(event: MouseEvent): void;
|
|
252
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<YuvContextMenuTriggerDirective, never>;
|
|
253
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<YuvContextMenuTriggerDirective, "[yuvContextMenuTrigger]", ["yuvContextMenuTrigger"], { "menuTemplateRef": { "alias": "yuvContextMenuTrigger"; "required": false; }; "triggerWhen": { "alias": "yuvContextMenuTriggerWhen"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
export { ACTION_ICON, AbstractContextAction, ActionsModule, ActionsService, BASE_ACTION, ContextmenuComponent, DeleteAction, DownloadAction, SelectionRange, YuvContextMenuTriggerDirective };
|
|
285
|
+
export { ACTION_CONTEXT_TOKEN, ACTION_ICON, AbstractContextAction, ActionPriorityLevel, ActionsModule, ActionsService, ActionsValidationService, BASE_ACTION, ContextmenuComponent, DeleteAction, DownloadAction, SelectionRange, YuvContextMenuTriggerDirective };
|
|
257
286
|
export type { Action, ActionClass, ActionContext, ActionOptions, ActionSupport, BaseAction, ContextMenuAction, ContextMenuItemSelectEvent };
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Signal } from '@angular/core';
|
|
3
|
+
import { DmsObject, YuvUser, LockState } from '@yuuvis/client-core';
|
|
4
|
+
import { Severity } from '@yuuvis/material/badge';
|
|
5
|
+
|
|
6
|
+
type BadgeSeverity = Severity;
|
|
7
|
+
|
|
8
|
+
interface BadgeContext {
|
|
9
|
+
currentUser?: YuvUser;
|
|
10
|
+
lockState?: LockState;
|
|
11
|
+
}
|
|
12
|
+
interface BadgeRule {
|
|
13
|
+
field: string;
|
|
14
|
+
op: 'isSet' | 'equals' | 'tagPresent';
|
|
15
|
+
value?: unknown;
|
|
16
|
+
}
|
|
17
|
+
interface Badge {
|
|
18
|
+
id: string;
|
|
19
|
+
labelKey: string;
|
|
20
|
+
descriptionKey?: string;
|
|
21
|
+
icon: string;
|
|
22
|
+
svgIcon?: boolean;
|
|
23
|
+
severity?: BadgeSeverity;
|
|
24
|
+
priority?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Marks this badge as a context-specific variant of another badge id.
|
|
27
|
+
* The parent badge id alone is configured (e.g. in tile-config); the
|
|
28
|
+
* registry implicitly evaluates variants whenever their parent is in
|
|
29
|
+
* the id filter. Variants are hidden from selection UIs.
|
|
30
|
+
*/
|
|
31
|
+
variantOf?: string;
|
|
32
|
+
applies?: (dmsObject: DmsObject, ctx: BadgeContext) => boolean;
|
|
33
|
+
rule?: BadgeRule;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
declare class BadgeChipComponent {
|
|
37
|
+
#private;
|
|
38
|
+
badge: _angular_core.InputSignal<Badge>;
|
|
39
|
+
showLabel: _angular_core.InputSignal<boolean>;
|
|
40
|
+
readonly tooltip: _angular_core.Signal<string>;
|
|
41
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeChipComponent, never>;
|
|
42
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeChipComponent, "yuv-badge-chip", never, { "badge": { "alias": "badge"; "required": true; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
declare class BadgeSelectComponent {
|
|
46
|
+
#private;
|
|
47
|
+
selectedBadgeIds: _angular_core.InputSignal<string[]>;
|
|
48
|
+
bucket: _angular_core.InputSignal<string | undefined>;
|
|
49
|
+
badgeSelect: _angular_core.OutputEmitterRef<Badge>;
|
|
50
|
+
readonly badges: Signal<Badge[]>;
|
|
51
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeSelectComponent, never>;
|
|
52
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeSelectComponent, "yuv-tile-badge-select", never, { "selectedBadgeIds": { "alias": "selectedBadgeIds"; "required": false; "isSignal": true; }; "bucket": { "alias": "bucket"; "required": false; "isSignal": true; }; }, { "badgeSelect": "badgeSelect"; }, never, never, true, never>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Badge shown when an object is locked by another user.
|
|
57
|
+
*/
|
|
58
|
+
declare const LOCK_BADGE: Badge;
|
|
59
|
+
/**
|
|
60
|
+
* Badge shown when an object is locked by the current user.
|
|
61
|
+
*/
|
|
62
|
+
declare const LOCK_SELF_BADGE: Badge;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Badge definition for DMS objects that are subject to a destruction retention policy.
|
|
66
|
+
*
|
|
67
|
+
* This badge is displayed when a DMS object has the `DESTRUCTION_RETENTION` secondary object type
|
|
68
|
+
* assigned and an active or ongoing retention period. It helps users identify objects that are
|
|
69
|
+
* legally or organizationally protected from deletion during their retention period.
|
|
70
|
+
*
|
|
71
|
+
* **Applies when:**
|
|
72
|
+
* - The object includes the `SystemSOT.DESTRUCTION_RETENTION` secondary object type.
|
|
73
|
+
* - A retention start date (`RetentionField.RETENTION_START`) is present.
|
|
74
|
+
* - The retention period has started (start date is in the past), or an end date is set and
|
|
75
|
+
* still lies in the future.
|
|
76
|
+
*
|
|
77
|
+
* @remarks
|
|
78
|
+
* - `severity` is set to `'danger'` to visually emphasize the retention constraint.
|
|
79
|
+
* - `priority` is `20`, which controls the display order relative to other badges.
|
|
80
|
+
*/ declare const RETENTION_BADGE: Badge;
|
|
81
|
+
|
|
82
|
+
declare class BadgeRegistryService {
|
|
83
|
+
#private;
|
|
84
|
+
/**
|
|
85
|
+
* Registers one or multiple badges in the registry.
|
|
86
|
+
*
|
|
87
|
+
* If a badge with the same id already exists in the same scope, it is replaced.
|
|
88
|
+
* Otherwise, the badge is added to the scope.
|
|
89
|
+
*
|
|
90
|
+
* @param badges An array of badges to register.
|
|
91
|
+
* @param bucket Optional bucket id (typically an APP_ID). If omitted, badges are
|
|
92
|
+
* registered globally and visible to every consumer. If provided,
|
|
93
|
+
* badges are scoped to that bucket and only visible when consumers
|
|
94
|
+
* query with the matching bucket.
|
|
95
|
+
*
|
|
96
|
+
* @see {@link Badge}
|
|
97
|
+
*/
|
|
98
|
+
registerBadges(badges: Badge[], bucket?: string): void;
|
|
99
|
+
/**
|
|
100
|
+
* Registers the default badges into the registry.
|
|
101
|
+
*
|
|
102
|
+
* Initializes three built-in badge types:
|
|
103
|
+
* - LOCK_BADGE: Indicates objects locked by other users
|
|
104
|
+
* - LOCK_SELF_BADGE: Indicates objects locked by the current user
|
|
105
|
+
* - RETENTION_BADGE: Indicates objects under retention hold
|
|
106
|
+
*
|
|
107
|
+
* @param bucket Optional bucket id. If omitted, defaults are registered globally.
|
|
108
|
+
*
|
|
109
|
+
* @see {@link Badge}
|
|
110
|
+
*/
|
|
111
|
+
registerDefaultBadges(bucket?: string): void;
|
|
112
|
+
/**
|
|
113
|
+
* Unregisters one or multiple badges from the registry by id.
|
|
114
|
+
*
|
|
115
|
+
* Operates only on the specified scope: omitting `bucket` removes from the global
|
|
116
|
+
* scope only, providing `bucket` removes from that bucket only.
|
|
117
|
+
*
|
|
118
|
+
* @param id A single badge id or an array of badge ids to remove.
|
|
119
|
+
* @param bucket Optional bucket id.
|
|
120
|
+
*/
|
|
121
|
+
unregister(id: string | string[], bucket?: string): void;
|
|
122
|
+
/**
|
|
123
|
+
* Returns a registered badge by id.
|
|
124
|
+
*
|
|
125
|
+
* Looks first in the given bucket (if any), then in the global scope.
|
|
126
|
+
*
|
|
127
|
+
* @param id The badge id.
|
|
128
|
+
* @param bucket Optional bucket id.
|
|
129
|
+
* @returns The matching badge, or undefined if no badge is registered with that id.
|
|
130
|
+
*/
|
|
131
|
+
get(id: string, bucket?: string): Badge | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Returns all registered badges across the global scope and every bucket.
|
|
134
|
+
*
|
|
135
|
+
* Bucket entries override globals with the same id; remaining duplicates between
|
|
136
|
+
* buckets keep the first occurrence. Useful for tests and debug inspection.
|
|
137
|
+
*/
|
|
138
|
+
all(): Badge[];
|
|
139
|
+
/**
|
|
140
|
+
* Returns a reactive list of badges visible in the given scope.
|
|
141
|
+
*
|
|
142
|
+
* The returned signal recomputes whenever the registry changes. The list contains
|
|
143
|
+
* the global badges merged with the named bucket's badges (bucket entries override
|
|
144
|
+
* globals with the same id), sorted by ascending priority. At equal priority,
|
|
145
|
+
* globals come first, then bucket-local badges.
|
|
146
|
+
*
|
|
147
|
+
* @param bucket Optional bucket id.
|
|
148
|
+
*/
|
|
149
|
+
getBadgesForBucket(bucket?: string): Signal<Badge[]>;
|
|
150
|
+
/**
|
|
151
|
+
* Resolves all active badges for a given object in the given scope.
|
|
152
|
+
*
|
|
153
|
+
* The visible scope is `main ∪ bucket`. Variants only resolve when their parent id
|
|
154
|
+
* is present in the visible scope. If `idFilter` is provided, only badges whose id
|
|
155
|
+
* (or whose variant's parent id) is in the filter are considered. The resulting
|
|
156
|
+
* list is sorted by ascending priority.
|
|
157
|
+
*
|
|
158
|
+
* @param dmsObject The object to evaluate badges against.
|
|
159
|
+
* @param options Optional bucket and id filter.
|
|
160
|
+
*/
|
|
161
|
+
getActiveBadges(dmsObject: DmsObject, options?: {
|
|
162
|
+
bucket?: string;
|
|
163
|
+
idFilter?: string[];
|
|
164
|
+
}): Badge[];
|
|
165
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeRegistryService, never>;
|
|
166
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<BadgeRegistryService>;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
declare class TileBadgesComponent {
|
|
170
|
+
#private;
|
|
171
|
+
dmsObject: _angular_core.InputSignal<DmsObject>;
|
|
172
|
+
badgeIds: _angular_core.InputSignal<string[] | undefined>;
|
|
173
|
+
bucket: _angular_core.InputSignal<string | undefined>;
|
|
174
|
+
readonly activeBadges: _angular_core.Signal<Badge[]>;
|
|
175
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TileBadgesComponent, never>;
|
|
176
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TileBadgesComponent, "yuv-tile-badges", never, { "dmsObject": { "alias": "dmsObject"; "required": true; "isSignal": true; }; "badgeIds": { "alias": "badgeIds"; "required": false; "isSignal": true; }; "bucket": { "alias": "bucket"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Evaluates a single badge rule against a given DMS object.
|
|
181
|
+
*
|
|
182
|
+
* Supported operations:
|
|
183
|
+
* - `isSet`: returns `true` when the field value is not `undefined`, `null`, or an empty string.
|
|
184
|
+
* - `equals`: returns `true` when the field value strictly equals `rule.value`.
|
|
185
|
+
* - `tagPresent`: returns `true` when the configured tags field contains a tag whose first element equals `rule.value`.
|
|
186
|
+
*
|
|
187
|
+
* @param rule Badge rule definition to evaluate.
|
|
188
|
+
* @param dmsObject Source object containing field data.
|
|
189
|
+
* @returns `true` if the rule matches; otherwise `false`.
|
|
190
|
+
*/
|
|
191
|
+
declare function evaluateRule(rule: BadgeRule, dmsObject: DmsObject): boolean;
|
|
192
|
+
|
|
193
|
+
export { BadgeChipComponent, BadgeRegistryService, BadgeSelectComponent, LOCK_BADGE, LOCK_SELF_BADGE, RETENTION_BADGE, TileBadgesComponent, evaluateRule };
|
|
194
|
+
export type { Badge, BadgeContext, BadgeRule, BadgeSeverity };
|
|
@@ -4,7 +4,7 @@ import * as _yuuvis_client_core from '@yuuvis/client-core';
|
|
|
4
4
|
import { AuditQueryResult, AuditEntry, DmsObject, AuditService, EventService, SystemService, TranslateService, VirtualObjectType, RetentionState, 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
|
-
import * as
|
|
7
|
+
import * as i7 from '@yuuvis/client-framework/common';
|
|
8
8
|
import { FormGroup } from '@angular/forms';
|
|
9
9
|
|
|
10
10
|
declare class ObjectAuditComponent {
|
|
@@ -240,8 +240,8 @@ declare class ObjectMetadataComponent implements OnDestroy {
|
|
|
240
240
|
* Set to 'true' to prevent all metadata from being edited
|
|
241
241
|
*/
|
|
242
242
|
formDisabled: _angular_core.WritableSignal<boolean>;
|
|
243
|
-
|
|
244
|
-
|
|
243
|
+
dmsObjectInput: _angular_core.InputSignal<DmsObject | undefined>;
|
|
244
|
+
dmsObject: _angular_core.WritableSignal<DmsObject | undefined>;
|
|
245
245
|
/**
|
|
246
246
|
* @deprecated This input will be removed in the future.
|
|
247
247
|
* Please migrate to using `dmsObject` and `flavors` inputs instead.
|
|
@@ -276,12 +276,12 @@ declare class ObjectMetadataComponent implements OnDestroy {
|
|
|
276
276
|
setFormPristine(): void;
|
|
277
277
|
ngOnDestroy(): void;
|
|
278
278
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ObjectMetadataComponent, never>;
|
|
279
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ObjectMetadataComponent, "yuv-object-metadata", never, { "disableControls": { "alias": "disableControls"; "required": false; "isSignal": true; }; "disableBasicMetadata": { "alias": "disableBasicMetadata"; "required": false; "isSignal": true; }; "elementExtensions": { "alias": "elementExtensions"; "required": false; "isSignal": true; }; "situation": { "alias": "situation"; "required": false; "isSignal": true; }; "
|
|
279
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ObjectMetadataComponent, "yuv-object-metadata", never, { "disableControls": { "alias": "disableControls"; "required": false; "isSignal": true; }; "disableBasicMetadata": { "alias": "disableBasicMetadata"; "required": false; "isSignal": true; }; "elementExtensions": { "alias": "elementExtensions"; "required": false; "isSignal": true; }; "situation": { "alias": "situation"; "required": false; "isSignal": true; }; "dmsObjectInput": { "alias": "dmsObject"; "required": false; "isSignal": true; }; "flavoredDmsObject": { "alias": "flavoredDmsObject"; "required": false; "isSignal": true; }; "flavors": { "alias": "flavors"; "required": false; "isSignal": true; }; }, { "indexDataSaved": "indexDataSaved"; "statusChanged": "statusChanged"; }, never, never, true, never>;
|
|
280
280
|
}
|
|
281
281
|
|
|
282
282
|
declare class YuvObjectDetailsModule {
|
|
283
283
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuvObjectDetailsModule, never>;
|
|
284
|
-
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<YuvObjectDetailsModule, never, [typeof ObjectDetailsComponent, typeof ObjectDetailsHeaderComponent, typeof ObjectDetailsShellComponent, typeof ObjectMetadataComponent, typeof ObjectAuditComponent, typeof
|
|
284
|
+
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<YuvObjectDetailsModule, never, [typeof ObjectDetailsComponent, typeof ObjectDetailsHeaderComponent, typeof ObjectDetailsShellComponent, typeof ObjectMetadataComponent, typeof ObjectMetadataSectionComponent, typeof ObjectAuditComponent, typeof i7.RetentionBadgeComponent], [typeof ObjectDetailsComponent, typeof ObjectDetailsHeaderComponent, typeof ObjectDetailsShellComponent, typeof ObjectMetadataComponent, typeof ObjectMetadataSectionComponent, typeof ObjectAuditComponent, typeof i7.RetentionBadgeComponent]>;
|
|
285
285
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<YuvObjectDetailsModule>;
|
|
286
286
|
}
|
|
287
287
|
|
|
@@ -26,6 +26,7 @@ declare class ObjectVersionsComponent {
|
|
|
26
26
|
error: _angular_core.WritableSignal<string | undefined>;
|
|
27
27
|
selectedIndex: _angular_core.WritableSignal<number | null>;
|
|
28
28
|
isCurrentVersion: _angular_core.Signal<boolean>;
|
|
29
|
+
documentLockedByOther: _angular_core.Signal<boolean>;
|
|
29
30
|
metadata: Partial<Metadata>;
|
|
30
31
|
itemSelected(selectedIndex: number[]): void;
|
|
31
32
|
downloadCurrentVersion(): void;
|
|
@@ -7,6 +7,7 @@ import { VirtualObjectType, ResolvedObjectConfig, DmsObject, SearchQuery, Search
|
|
|
7
7
|
import { BooleanInput } from '@angular/cdk/coercion';
|
|
8
8
|
import { QueryListComponent } from '@yuuvis/client-framework/query-list';
|
|
9
9
|
import { ObjectFlavor, TileExtensionComponent, TileExtensionDirectiveInput, TileExtension } from '@yuuvis/client-shell-core';
|
|
10
|
+
import { Badge } from '@yuuvis/client-framework/badges';
|
|
10
11
|
|
|
11
12
|
declare class TileActionsMenuComponent {
|
|
12
13
|
actions: _angular_core.InputSignal<Action[]>;
|
|
@@ -492,7 +493,8 @@ declare class TileListComponent implements OnInit {
|
|
|
492
493
|
* @param event The originating mouse event (used to suppress default and for positioning).
|
|
493
494
|
* @param _index Zero-based index of the right-clicked tile.
|
|
494
495
|
*/
|
|
495
|
-
|
|
496
|
+
badgeIdsFor(item: TileData): string[] | undefined;
|
|
497
|
+
contextMenuHandler(event: MouseEvent, index: number): void;
|
|
496
498
|
/**
|
|
497
499
|
* Executes a tile inline action against the appropriate set of DMS objects.
|
|
498
500
|
*
|
|
@@ -662,11 +664,11 @@ declare class TileListComponent implements OnInit {
|
|
|
662
664
|
}
|
|
663
665
|
|
|
664
666
|
declare class ActionSelectComponent {
|
|
665
|
-
private
|
|
667
|
+
#private;
|
|
666
668
|
objectType: _angular_core.InputSignal<VirtualObjectType>;
|
|
667
|
-
actions: Signal<Action[]>;
|
|
668
669
|
selectedActionIds: _angular_core.InputSignal<string[]>;
|
|
669
670
|
actionSelect: _angular_core.OutputEmitterRef<Action>;
|
|
671
|
+
actions: Signal<Action[]>;
|
|
670
672
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionSelectComponent, never>;
|
|
671
673
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionSelectComponent, "yuv-tile-action-select", never, { "objectType": { "alias": "objectType"; "required": true; "isSignal": true; }; "selectedActionIds": { "alias": "selectedActionIds"; "required": false; "isSignal": true; }; }, { "actionSelect": "actionSelect"; }, never, never, true, never>;
|
|
672
674
|
}
|
|
@@ -738,14 +740,16 @@ declare class TileConfigComponent {
|
|
|
738
740
|
selectedSlot?: string;
|
|
739
741
|
flavors: ObjectFlavor[];
|
|
740
742
|
changes: Record<string, ObjectConfig | undefined>;
|
|
741
|
-
getConfigValue(
|
|
742
|
-
getConfigProperty(
|
|
743
|
+
getConfigValue(value: string): ObjectConfigIcon | ObjectConfigProperty | ObjectConfigAction | ObjectConfigBadge | undefined;
|
|
744
|
+
getConfigProperty(value: string): ObjectConfigProperty | undefined;
|
|
743
745
|
getSelectedActions(): string[];
|
|
746
|
+
getSelectedBadges(): string[];
|
|
744
747
|
slotSelect(item: string): void;
|
|
745
|
-
typeSelected(
|
|
748
|
+
typeSelected(innerType: InnerType): void;
|
|
746
749
|
iconSelected(icon: string | null): void;
|
|
747
750
|
propertySelected(tileSlot: string, field?: Partial<ObjectTypeField>): void;
|
|
748
751
|
actionSelected(action: Action): void;
|
|
752
|
+
badgeSelected(badge: Badge): void;
|
|
749
753
|
saveConfig(): void;
|
|
750
754
|
resetConfig(): void;
|
|
751
755
|
cancelConfig(): void;
|
|
@@ -869,6 +869,19 @@ declare class SessionService {
|
|
|
869
869
|
*/
|
|
870
870
|
extendSession(broadcast?: boolean, expiresAt?: number, skipBackendCall?: boolean): void;
|
|
871
871
|
private listenToChannel;
|
|
872
|
+
/**
|
|
873
|
+
* Listens to the global LOGOUT event emitted by AuthService.
|
|
874
|
+
*
|
|
875
|
+
* Covers logout paths that bypass SessionService.performLogout — e.g.,
|
|
876
|
+
* 401 caught by AuthInterceptor or any manual `AuthService.logout()` call.
|
|
877
|
+
* Without this, other tabs would not receive a SessionLogout broadcast and
|
|
878
|
+
* the HTTP activity subscription would briefly stay alive after auth dies.
|
|
879
|
+
*
|
|
880
|
+
* Note: UI buttons that call only `UserService.logout()` (e.g. sidebar-nav)
|
|
881
|
+
* do not emit this event — for those, the system still converges via the
|
|
882
|
+
* 401 interceptor or local expiry.
|
|
883
|
+
*/
|
|
884
|
+
private listenToGlobalLogout;
|
|
872
885
|
private scheduleActivityWindow;
|
|
873
886
|
private showPopup;
|
|
874
887
|
private scheduleLogout;
|