@yuuvis/client-framework 3.20.0 → 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-datepicker.mjs +90 -34
- package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +14 -5
- package/fesm2022/yuuvis-client-framework-forms.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 +5 -5
- package/package.json +6 -6
- package/types/yuuvis-client-framework-badges.d.ts +32 -2
- package/types/yuuvis-client-framework-datepicker.d.ts +16 -1
- 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",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"yuv.form.element.datetime.calendar.today": "Today",
|
|
54
54
|
"yuv.form.element.organization-set.classify.icon.title": "Group",
|
|
55
55
|
"yuv.form.element.organization.classify.icon.title": "User",
|
|
56
|
-
"yuv.form.element.organization.freetext.tooltip": "Free text –
|
|
56
|
+
"yuv.form.element.organization.freetext.tooltip": "Free text – no resolved user or group",
|
|
57
57
|
"yuv.form.element.range-select-date.custom.overlay.button.apply": "Apply",
|
|
58
58
|
"yuv.form.element.range-select-date.custom.overlay.title": "User-defined time period",
|
|
59
59
|
"yuv.form.element.range-select-date.option.any": "Any date",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"yuv.object-metadata.tabs.indexdata.title": "Metadata",
|
|
93
93
|
"yuv.object-flavor.apply-flavor.button.apply": "Apply",
|
|
94
94
|
"yuv.object-flavor.apply-flavor.button.cancel": "Cancel",
|
|
95
|
-
"yuv.object-flavor.apply-flavor.error": "
|
|
95
|
+
"yuv.object-flavor.apply-flavor.error": "Unable to add type.",
|
|
96
96
|
"yuv.object-flavor.apply-flavor.headline": "Add type '{{name}}'",
|
|
97
97
|
"yuv.object-flavor.button.add": "Add type",
|
|
98
98
|
"yuv.object-flavor.button.clear-selection": "Unselect",
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
"yuv.smart-search.fulltext.types.all": "All types",
|
|
196
196
|
"yuv.smart-search.fulltext.types.label": "Limit to types",
|
|
197
197
|
"yuv.smart-search.mode.empty": "No input fields available. Mark conditions with the lightning icon to add them here.",
|
|
198
|
-
"yuv.smart-search.mode.essentials": "
|
|
198
|
+
"yuv.smart-search.mode.essentials": "Compact",
|
|
199
199
|
"yuv.smart-search.mode.full": "Full search",
|
|
200
200
|
"yuv.smart-search.mode.label": "Search mode",
|
|
201
201
|
"yuv.smart-search.operator.change": "Modify operator",
|
|
@@ -217,7 +217,7 @@
|
|
|
217
217
|
"yuv.tile-config.button.close": "Close",
|
|
218
218
|
"yuv.tile-config.button.reset": "Reset",
|
|
219
219
|
"yuv.tile-config.button.save": "Save changes",
|
|
220
|
-
"yuv.tile-config.error.title-required": "A title attribute is required. Select an attribute for the title
|
|
220
|
+
"yuv.tile-config.error.title-required": "A title attribute is required. Select an attribute for the title.",
|
|
221
221
|
"yuv.tile-config.icon-select.pick": "Select icon",
|
|
222
222
|
"yuv.tile-config.icon-select.reset": "Reset",
|
|
223
223
|
"yuv.tile-config.slot.action.headline": "Actions",
|
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,17 +8,17 @@
|
|
|
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.
|
|
21
|
-
"@yuuvis/media-viewer": "^4.
|
|
20
|
+
"@yuuvis/material": "^3.21.0",
|
|
21
|
+
"@yuuvis/media-viewer": "^4.1.0",
|
|
22
22
|
"angular-split": "^20.0.0",
|
|
23
23
|
"vis-network": "^10.0.2",
|
|
24
24
|
"tslib": "^2.3.0"
|
|
@@ -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 };
|
|
@@ -172,6 +172,7 @@ declare class DateInputComponent implements OnInit, OnDestroy {
|
|
|
172
172
|
set disabled(d: boolean);
|
|
173
173
|
private _disabled;
|
|
174
174
|
invalid: _angular_core.WritableSignal<boolean>;
|
|
175
|
+
private _dateInvalid;
|
|
175
176
|
private _refreshPlaceholder;
|
|
176
177
|
_placeholder?: string;
|
|
177
178
|
set placeholder(p: string);
|
|
@@ -189,9 +190,23 @@ declare class DateInputComponent implements OnInit, OnDestroy {
|
|
|
189
190
|
dayPeriodLabels: DayPeriodLabels;
|
|
190
191
|
constructor(datepickerService: DatepickerService, fb: FormBuilder, elRef: ElementRef);
|
|
191
192
|
private _setupForm;
|
|
192
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Reflects both sources of invalidity: a structurally incomplete/invalid form
|
|
195
|
+
* (missing or out of range parts) and input that does not describe a real
|
|
196
|
+
* calendar date (e.g. 31st of February). Both have to be taken into account
|
|
197
|
+
* here because the form group may well be VALID while the entered parts still
|
|
198
|
+
* do not add up to an existing date.
|
|
199
|
+
*/
|
|
200
|
+
private _updateInvalidState;
|
|
193
201
|
private _checkAndPropagateForm;
|
|
194
202
|
private _formToDate;
|
|
203
|
+
private _formToTime;
|
|
204
|
+
/**
|
|
205
|
+
* Strict integer parse - unlike parseInt it rejects values with trailing
|
|
206
|
+
* garbage ('1x') so those cannot slip through as a valid date part.
|
|
207
|
+
*/
|
|
208
|
+
private _toInt;
|
|
209
|
+
private _daysInMonth;
|
|
195
210
|
private _focusInput;
|
|
196
211
|
onFormClick(event: MouseEvent): void;
|
|
197
212
|
onDateInputBlur(): void;
|
|
@@ -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 {
|