@yuuvis/client-framework 3.20.1 → 3.21.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/fesm2022/yuuvis-client-framework-badges.mjs +80 -39
- package/fesm2022/yuuvis-client-framework-badges.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +25 -42
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-smart-search.mjs +22 -3
- package/fesm2022/yuuvis-client-framework-smart-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/lib/assets/i18n/de.json +1 -1
- package/lib/assets/i18n/en.json +1 -1
- package/package.json +5 -5
- package/types/yuuvis-client-framework-badges.d.ts +32 -2
- package/types/yuuvis-client-framework-smart-search.d.ts +16 -1
package/lib/assets/i18n/de.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"yuv.action-menu.action.unlock.description-locked-by-other": "Das Objekt ist von {{ user }} gesperrt.",
|
|
25
25
|
"yuv.action-menu.action.unlock.description-locked-by-unknown-user": " Das Objekt ist von einem Benutzer gesperrt.",
|
|
26
26
|
"yuv.badge.empty.selection": "Derzeit gibt es keine Badges zur Auswahl.",
|
|
27
|
-
"yuv.badge.lock.description": "Dieses Objekt ist
|
|
27
|
+
"yuv.badge.lock.description": "Dieses Objekt ist von {{ user }} gesperrt.",
|
|
28
28
|
"yuv.badge.lock.label": "Gesperrt",
|
|
29
29
|
"yuv.badge.lock.self.description": "Dieses Objekt ist von Ihnen gesperrt.",
|
|
30
30
|
"yuv.badge.lock.self.label": "Von Ihnen gesperrt",
|
package/lib/assets/i18n/en.json
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"yuv.action-menu.action.unlock.description-locked-by-other": "The object is locked by {{ user }}.",
|
|
25
25
|
"yuv.action-menu.action.unlock.description-locked-by-unknown-user": " The object is locked by a user.",
|
|
26
26
|
"yuv.badge.empty.selection": "No badges currently available for selection.",
|
|
27
|
-
"yuv.badge.lock.description": "This object is locked
|
|
27
|
+
"yuv.badge.lock.description": "This object is locked by {{ user }}.",
|
|
28
28
|
"yuv.badge.lock.label": "Locked",
|
|
29
29
|
"yuv.badge.lock.self.description": "This object is locked by you.",
|
|
30
30
|
"yuv.badge.lock.self.label": "Locked by you",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-framework",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.0",
|
|
4
4
|
"author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
"@angular/common": "^21.2.19",
|
|
9
9
|
"@angular/core": "^21.2.19",
|
|
10
10
|
"angular-gridster2": "^21.0.1",
|
|
11
|
-
"@yuuvis/client-core": "^3.
|
|
12
|
-
"@yuuvis/client-shell-core": "^3.
|
|
13
|
-
"@yuuvis/client-components": "^3.
|
|
11
|
+
"@yuuvis/client-core": "^3.21.0",
|
|
12
|
+
"@yuuvis/client-shell-core": "^3.21.0",
|
|
13
|
+
"@yuuvis/client-components": "^3.21.0",
|
|
14
14
|
"ng-dynamic-component": "^10.8.2",
|
|
15
15
|
"modern-normalize": "^3.0.1"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@angular/material": "^21.2.14",
|
|
19
19
|
"@ngrx/signals": "^21.1.0",
|
|
20
|
-
"@yuuvis/material": "^3.
|
|
20
|
+
"@yuuvis/material": "^3.21.0",
|
|
21
21
|
"@yuuvis/media-viewer": "^4.1.0",
|
|
22
22
|
"angular-split": "^20.0.0",
|
|
23
23
|
"vis-network": "^10.0.2",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Signal } from '@angular/core';
|
|
3
3
|
import { DmsObject, YuvUser, LockState, VirtualObjectType } from '@yuuvis/client-core';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
4
5
|
import { Severity } from '@yuuvis/material/badge';
|
|
5
6
|
|
|
6
7
|
type BadgeSeverity = Severity;
|
|
@@ -8,7 +9,14 @@ type BadgeSeverity = Severity;
|
|
|
8
9
|
interface BadgeContext {
|
|
9
10
|
currentUser?: YuvUser;
|
|
10
11
|
lockState?: LockState;
|
|
12
|
+
/**
|
|
13
|
+
* Resolves a user id to a user (cached IDM lookup). Emits `null` when the
|
|
14
|
+
* user is unknown or the lookup fails.
|
|
15
|
+
*/
|
|
16
|
+
resolveUser: (userId: string) => Observable<YuvUser | null>;
|
|
11
17
|
}
|
|
18
|
+
/** Interpolation params for a translated badge description (`{{ placeholder }}` syntax). */
|
|
19
|
+
type BadgeDescriptionParams = Record<string, unknown>;
|
|
12
20
|
interface BadgeRule {
|
|
13
21
|
field: string;
|
|
14
22
|
op: 'isSet' | 'equals' | 'tagPresent';
|
|
@@ -35,6 +43,13 @@ interface Badge {
|
|
|
35
43
|
id: string;
|
|
36
44
|
labelKey: string;
|
|
37
45
|
descriptionKey?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional interpolation params for `descriptionKey`. May resolve asynchronously
|
|
48
|
+
* (e.g. a user name looked up from an id). Only evaluated by `yuv-badge-chip`
|
|
49
|
+
* when a `dmsObject` is bound; until the params resolve, the description is
|
|
50
|
+
* rendered without them.
|
|
51
|
+
*/
|
|
52
|
+
descriptionParams?: (dmsObject: DmsObject, ctx: BadgeContext) => Observable<BadgeDescriptionParams> | BadgeDescriptionParams;
|
|
38
53
|
icon: string;
|
|
39
54
|
svgIcon?: boolean;
|
|
40
55
|
severity?: BadgeSeverity;
|
|
@@ -60,6 +75,16 @@ declare class BadgeChipComponent {
|
|
|
60
75
|
#private;
|
|
61
76
|
badge: _angular_core.InputSignal<Badge>;
|
|
62
77
|
showLabel: _angular_core.InputSignal<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* The object the badge is shown for. Required to resolve {@link Badge.descriptionParams}
|
|
80
|
+
* (e.g. the name of the user holding a lock); without it the description renders as-is.
|
|
81
|
+
*/
|
|
82
|
+
dmsObject: _angular_core.InputSignal<DmsObject | undefined>;
|
|
83
|
+
/**
|
|
84
|
+
* Translated tooltip. Uses `descriptionKey` (interpolated with the badge's resolved
|
|
85
|
+
* `descriptionParams`) and falls back to `labelKey` when no description is available.
|
|
86
|
+
* While async params are pending, the description is shown without them.
|
|
87
|
+
*/
|
|
63
88
|
readonly tooltip: _angular_core.Signal<string>;
|
|
64
89
|
/**
|
|
65
90
|
* Accessible name for the icon-only variant. Without a label the chip renders nothing
|
|
@@ -69,7 +94,7 @@ declare class BadgeChipComponent {
|
|
|
69
94
|
*/
|
|
70
95
|
readonly ariaLabel: _angular_core.Signal<string | null>;
|
|
71
96
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeChipComponent, never>;
|
|
72
|
-
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>;
|
|
97
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeChipComponent, "yuv-badge-chip", never, { "badge": { "alias": "badge"; "required": true; "isSignal": true; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "dmsObject": { "alias": "dmsObject"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
73
98
|
}
|
|
74
99
|
|
|
75
100
|
declare class BadgeSelectComponent {
|
|
@@ -201,6 +226,11 @@ declare class BadgeRegistryService {
|
|
|
201
226
|
bucket?: string;
|
|
202
227
|
idFilter?: string[];
|
|
203
228
|
}): Badge[];
|
|
229
|
+
/**
|
|
230
|
+
* Builds the evaluation context for a badge against the given object. Used both
|
|
231
|
+
* for `applies` evaluation and for resolving {@link Badge.descriptionParams}.
|
|
232
|
+
*/
|
|
233
|
+
createContext(dmsObject: DmsObject): BadgeContext;
|
|
204
234
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeRegistryService, never>;
|
|
205
235
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<BadgeRegistryService>;
|
|
206
236
|
}
|
|
@@ -245,4 +275,4 @@ declare function evaluateRule(rule: BadgeRule, dmsObject: DmsObject): boolean;
|
|
|
245
275
|
declare function badgeSupportsType(badge: Badge, objectType?: VirtualObjectType): boolean;
|
|
246
276
|
|
|
247
277
|
export { BadgeChipComponent, BadgeRegistryService, BadgeSelectComponent, LOCK_BADGE, LOCK_SELF_BADGE, RETENTION_BADGE, TileBadgesComponent, badgeSupportsType, evaluateRule };
|
|
248
|
-
export type { Badge, BadgeContext, BadgeRule, BadgeSeverity, BadgeSupport };
|
|
278
|
+
export type { Badge, BadgeContext, BadgeDescriptionParams, BadgeRule, BadgeSeverity, BadgeSupport };
|
|
@@ -165,6 +165,12 @@ declare class SmartSearchEditController {
|
|
|
165
165
|
* searchable type of the schema is a candidate and nothing is restricted.
|
|
166
166
|
*/
|
|
167
167
|
allowedTypes: _angular_core.WritableSignal<string[]>;
|
|
168
|
+
/**
|
|
169
|
+
* Whether to bypass the user's object-type read permissions when offering types
|
|
170
|
+
* (mirrors the host `ignoreTypePermissions` input). Off by default: only types the
|
|
171
|
+
* user may search are offered.
|
|
172
|
+
*/
|
|
173
|
+
ignoreTypePermissions: _angular_core.WritableSignal<boolean>;
|
|
168
174
|
/** ObjectTypeField IDs to exclude from the field-step autocomplete suggestions. */
|
|
169
175
|
skipProperties: _angular_core.WritableSignal<string[]>;
|
|
170
176
|
fieldCtrl: FormControl<string | null>;
|
|
@@ -516,6 +522,15 @@ declare class SmartSearchComponent {
|
|
|
516
522
|
* is offered in the picker, so only a full-text search can be built.
|
|
517
523
|
*/
|
|
518
524
|
types: _angular_core.InputSignal<string[]>;
|
|
525
|
+
/**
|
|
526
|
+
* Offers every object type of the schema in the type picker, not only those the user
|
|
527
|
+
* has READ permission for. Off by default.
|
|
528
|
+
*
|
|
529
|
+
* Meant for surfaces that *author* a query rather than execute it as the current user
|
|
530
|
+
* (admin/configuration screens, stored-search templates). {@link types} still applies
|
|
531
|
+
* on top: this widens what the permissions allow, never what the consumer scoped.
|
|
532
|
+
*/
|
|
533
|
+
ignoreTypePermissions: _angular_core.InputSignal<boolean>;
|
|
519
534
|
/**
|
|
520
535
|
* Field ids to hide from the field-step autocomplete (e.g. internal/system
|
|
521
536
|
* properties that should not be user-queryable). Applies to block fields and
|
|
@@ -788,7 +803,7 @@ declare class SmartSearchComponent {
|
|
|
788
803
|
*/
|
|
789
804
|
getObjectTypeField(item: SuggestionItem | null): ObjectTypeField | null;
|
|
790
805
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartSearchComponent, never>;
|
|
791
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartSearchComponent, "yuv-smart-search", never, { "types": { "alias": "types"; "required": false; "isSignal": true; }; "skipProperties": { "alias": "skipProperties"; "required": false; "isSignal": true; }; "fulltextOnly": { "alias": "fulltextOnly"; "required": false; "isSignal": true; }; "supportDynamicConditions": { "alias": "supportDynamicConditions"; "required": false; "isSignal": true; }; }, { "queryChange": "queryChange"; "querySubmit": "querySubmit"; }, never, never, true, never>;
|
|
806
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartSearchComponent, "yuv-smart-search", never, { "types": { "alias": "types"; "required": false; "isSignal": true; }; "ignoreTypePermissions": { "alias": "ignoreTypePermissions"; "required": false; "isSignal": true; }; "skipProperties": { "alias": "skipProperties"; "required": false; "isSignal": true; }; "fulltextOnly": { "alias": "fulltextOnly"; "required": false; "isSignal": true; }; "supportDynamicConditions": { "alias": "supportDynamicConditions"; "required": false; "isSignal": true; }; }, { "queryChange": "queryChange"; "querySubmit": "querySubmit"; }, never, never, true, never>;
|
|
792
807
|
}
|
|
793
808
|
|
|
794
809
|
declare class YuvSmartSearchModule {
|