@yuuvis/client-framework 2.0.4 → 2.0.5

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.
Files changed (33) hide show
  1. package/README.md +1 -48
  2. package/actions/lib/actions.module.d.ts +3 -0
  3. package/actions/lib/actions.service.d.ts +10 -0
  4. package/fesm2022/yuuvis-client-framework-actions.mjs +13 -0
  5. package/fesm2022/yuuvis-client-framework-actions.mjs.map +1 -1
  6. package/fesm2022/yuuvis-client-framework-forms.mjs +146 -5
  7. package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
  8. package/fesm2022/yuuvis-client-framework-icons.mjs +4 -0
  9. package/fesm2022/yuuvis-client-framework-icons.mjs.map +1 -1
  10. package/fesm2022/yuuvis-client-framework-list.mjs +42 -2
  11. package/fesm2022/yuuvis-client-framework-list.mjs.map +1 -1
  12. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +4 -3
  13. package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
  14. package/fesm2022/yuuvis-client-framework-metadata-form.mjs +31 -2
  15. package/fesm2022/yuuvis-client-framework-metadata-form.mjs.map +1 -1
  16. package/fesm2022/yuuvis-client-framework-object-summary.mjs +6 -6
  17. package/fesm2022/yuuvis-client-framework-object-summary.mjs.map +1 -1
  18. package/fesm2022/yuuvis-client-framework-simple-search.mjs +18 -13
  19. package/fesm2022/yuuvis-client-framework-simple-search.mjs.map +1 -1
  20. package/forms/lib/elements/index.d.ts +1 -0
  21. package/forms/lib/elements/organization-set/organization-set.component.d.ts +62 -0
  22. package/forms/lib/forms.module.d.ts +3 -0
  23. package/icons/lib/icon.component.d.ts +4 -0
  24. package/lib/assets/i18n/de.json +3 -0
  25. package/lib/assets/i18n/en.json +3 -0
  26. package/list/lib/list-item.directive.d.ts +18 -0
  27. package/list/lib/list.component.d.ts +24 -2
  28. package/metadata-form/lib/metadata-form-element-registry.service.d.ts +13 -1
  29. package/metadata-form/lib/metadata-form-field/metadata-form-field.component.d.ts +5 -0
  30. package/metadata-form/lib/object-metadata-element-error.directive.d.ts +5 -1
  31. package/metadata-form/lib/object-metadata-element-label.directive.d.ts +8 -0
  32. package/package.json +4 -4
  33. package/simple-search/lib/simple-search/simple-search.component.d.ts +3 -4
@@ -1 +1 @@
1
- {"version":3,"file":"yuuvis-client-framework-simple-search.mjs","sources":["../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.ts","../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.html","../../../../../libs/yuuvis/client-framework/simple-search/src/yuuvis-client-framework-simple-search.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AggregateResult, BaseObjectTypeField, SearchQuery, SearchService, SystemService, Utils } from '@yuuvis/client-core';\nimport { debounceTime, tap } from 'rxjs';\nimport { MatFormField, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nexport interface ObjectTypeAggregation {\n /**\n * id of a found object type\n */\n objectTypeId: string;\n /**\n * label of an object\n */\n label: string;\n /**\n * number of objects found\n */\n count: number;\n}\n\n@Component({\n selector: 'yuv-simple-search',\n standalone: true,\n imports: [ReactiveFormsModule, MatIconModule, MatButtonModule, MatFormField, MatInputModule],\n templateUrl: './simple-search.component.html',\n styleUrls: ['./simple-search.component.scss'],\n providers: [\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n subscriptSizing: 'dynamic'\n }\n }\n ]\n})\nexport class SimpleSearchComponent {\n private fb = inject(FormBuilder);\n private searchService = inject(SearchService);\n private systemService = inject(SystemService);\n\n private _query: SearchQuery = {};\n /**\n * The search query\n */\n @Input() set query(q: SearchQuery | null) {\n this._query = structuredClone(q) || {};\n if (this._query.term) {\n this.form.patchValue({ term: this._query.term });\n // this.aggregate();\n } else this.form.reset();\n }\n get query() {\n return this._query;\n }\n\n form: FormGroup = this.fb.group({\n term: [''],\n targets: []\n });\n\n /**\n * Emitted once the user submits the search\n */\n @Output() querySubmit = new EventEmitter<SearchQuery>();\n\n /**\n * Emitted once the user hits clear input button\n */\n @Output() clearInput = new EventEmitter<void>();\n /**\n * Emitted once selected targets change\n */\n @Output() targetSelectionChanged = new EventEmitter<(string | number)[]>();\n @Output() queryChange = new EventEmitter<SearchQuery>();\n @Output() typeAggregation = new EventEmitter<ObjectTypeAggregation[]>();\n\n constructor() {\n this.form.controls['targets'].valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => {\n this._query.types = v;\n this.targetSelectionChanged.emit(v);\n });\n this.form.valueChanges\n .pipe(\n debounceTime(500),\n takeUntilDestroyed(),\n tap((v: any) => {\n this._query.term = v.term;\n this.queryChange.emit(this._query);\n if (this.typeAggregation.observed) this.aggregate();\n })\n )\n .subscribe();\n }\n\n search() {\n if (this.form.valid) {\n this._query.term = this.form.value.term;\n this.querySubmit.emit(this._query);\n }\n }\n\n aggregate(all?: boolean) {\n if (all || this._query.term) {\n this.searchService.aggregate(structuredClone(this._query), [BaseObjectTypeField.OBJECT_TYPE_ID]).subscribe((res: AggregateResult) => {\n this._processAggregateResult(res);\n });\n }\n }\n\n clear($event: Event) {\n if (this.form.value.term) {\n this.form.controls['term'].setValue(null);\n this.clearInput.emit();\n }\n $event.stopPropagation();\n }\n\n private _processAggregateResult(res: AggregateResult) {\n if (res.aggregations && res.aggregations.length) {\n this.typeAggregation.emit(\n res.aggregations[0].entries\n .map((r) => ({ objectTypeId: r.key, label: this.systemService.getLocalizedLabel(r.key) || r.key, count: r.count }))\n .sort(Utils.sortValues('label'))\n );\n } else {\n this.typeAggregation.emit([]);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">Search App</span>\n <input matInput type=\"text\" placeholder=\"Search App\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'Submit Search'\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yuuvis-client-framework-simple-search.mjs","sources":["../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.ts","../../../../../libs/yuuvis/client-framework/simple-search/src/lib/simple-search/simple-search.component.html","../../../../../libs/yuuvis/client-framework/simple-search/src/yuuvis-client-framework-simple-search.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { AggregateResult, BaseObjectTypeField, SearchQuery, SearchService, SystemService, TranslateModule, TranslateService, Utils } from '@yuuvis/client-core';\nimport { debounceTime, tap } from 'rxjs';\nimport { MatFormField, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nexport interface ObjectTypeAggregation {\n /**\n * id of a found object type\n */\n objectTypeId: string;\n /**\n * label of an object\n */\n label: string;\n /**\n * number of objects found\n */\n count: number;\n}\n\n@Component({\n selector: 'yuv-simple-search',\n standalone: true,\n imports: [ReactiveFormsModule, TranslateModule, MatIconModule, MatButtonModule, MatFormField, MatInputModule],\n templateUrl: './simple-search.component.html',\n styleUrls: ['./simple-search.component.scss'],\n providers: [\n {\n provide: MAT_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: {\n subscriptSizing: 'dynamic'\n }\n }\n ]\n})\nexport class SimpleSearchComponent {\n #fb = inject(FormBuilder);\n readonly translate = inject(TranslateService);\n #searchService = inject(SearchService);\n #systemService = inject(SystemService);\n\n private _query: SearchQuery = {};\n /**\n * The search query\n */\n @Input() set query(q: SearchQuery | null) {\n this._query = structuredClone(q) || {};\n if (this._query.term) {\n this.form.patchValue({ term: this._query.term });\n // this.aggregate();\n } else this.form.reset();\n }\n get query() {\n return this._query;\n }\n\n form: FormGroup = this.#fb.group({\n term: [''],\n targets: []\n });\n\n /**\n * Emitted once the user submits the search\n */\n @Output() querySubmit = new EventEmitter<SearchQuery>();\n\n /**\n * Emitted once the user hits clear input button\n */\n @Output() clearInput = new EventEmitter<void>();\n /**\n * Emitted once selected targets change\n */\n @Output() targetSelectionChanged = new EventEmitter<(string | number)[]>();\n @Output() queryChange = new EventEmitter<SearchQuery>();\n @Output() typeAggregation = new EventEmitter<ObjectTypeAggregation[]>();\n\n constructor() {\n this.form.controls['targets'].valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => {\n this._query.types = v;\n this.targetSelectionChanged.emit(v);\n });\n this.form.valueChanges\n .pipe(\n debounceTime(500),\n takeUntilDestroyed(),\n tap((v: any) => {\n this._query.term = v.term;\n this.queryChange.emit(this._query);\n if (this.typeAggregation.observed) this.aggregate();\n })\n )\n .subscribe();\n }\n\n search() {\n if (this.form.valid) {\n this._query.term = this.form.value.term;\n this.querySubmit.emit(this._query);\n }\n }\n\n aggregate(all?: boolean) {\n if (all || this._query.term) {\n this.#searchService.aggregate(structuredClone(this._query), [BaseObjectTypeField.OBJECT_TYPE_ID]).subscribe((res: AggregateResult) => {\n this._processAggregateResult(res);\n });\n }\n }\n\n clear($event: Event) {\n if (this.form.value.term) {\n this.form.controls['term'].setValue(null);\n this.clearInput.emit();\n }\n $event.stopPropagation();\n }\n\n private _processAggregateResult(res: AggregateResult) {\n if (res.aggregations && res.aggregations.length) {\n this.typeAggregation.emit(\n res.aggregations[0].entries\n .map((r) => ({ objectTypeId: r.key, label: this.#systemService.getLocalizedLabel(r.key) || r.key, count: r.count }))\n .sort(Utils.sortValues('label'))\n );\n } else {\n this.typeAggregation.emit([]);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <!-- Todo: String Translations-->\n <mat-form-field appearance=\"outline\">\n <label>\n <span class=\"ymt-hide-sr\">{{'yuv.simple-search.label'|translate}}</span>\n <input matInput type=\"text\" [placeholder]=\"'yuv.simple-search.label'|translate\" formControlName=\"term\" />\n </label>\n <mat-icon matPrefix>search</mat-icon>\n <button type=\"button\"\n mat-icon-button\n matSuffix\n [disabled]=\"!!!form.value.term\"\n class=\"clear-input-action ymt-icon-button--size-s\"\n (click)=\"clear($event)\">\n @if(form.value.term){ <mat-icon>close</mat-icon>}\n </button>\n </mat-form-field>\n <button class=\"ymt-hide-sr\" mat-icon-button (click)=\"search()\" [attr.aria-label]=\"'yuv.simple-search.submit'|translate\" [disabled]=\"form.invalid\">\n <mat-icon>search</mat-icon>\n </button>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export * from './datetime-range/datetime-range.component';
4
4
  export * from './number/number.component';
5
5
  export * from './number-range/number-range.component';
6
6
  export * from './organization/organization.component';
7
+ export * from './organization-set/organization-set.component';
7
8
  export * from './range-select-date/range-select-date.component';
8
9
  export * from './range-select-filesize/range-select-filesize.component';
9
10
  export * from './string/string.component';
@@ -0,0 +1,62 @@
1
+ import { OnDestroy, OnInit } from '@angular/core';
2
+ import { ControlValueAccessor, FormControl } from '@angular/forms';
3
+ import { OrganizationSetEntry } from '@yuuvis/client-core';
4
+ import { AutocompleteItem } from '@yuuvis/client-framework/autocomplete';
5
+ import { AbstractMatFormField } from '@yuuvis/client-framework/common';
6
+ import * as i0 from "@angular/core";
7
+ /**
8
+ * Creates form input for organization set values. An organization set is
9
+ * either a user or a role. This control will emit a stringified JSON object of
10
+ * a OrganizationSetEntry object.
11
+ *
12
+ * ```json
13
+ * {
14
+ * "id:organization:set": [
15
+ * "{\"id\":\"YUUVIS_AI_PREDICT\",\"title\":\"YUUVIS_AI_PREDICT\",\"type\":\"role\"}"
16
+ * ]
17
+ * }
18
+ * ```
19
+ */
20
+ export declare class OrganizationSetComponent extends AbstractMatFormField<string | string[] | undefined> implements ControlValueAccessor, OnDestroy, OnInit {
21
+ #private;
22
+ types: import("@angular/core").InputSignal<string[] | undefined>;
23
+ /**
24
+ * Possibles values are `EDIT` (default),`SEARCH`,`CREATE`. In search situation validation of the form element will be turned off, so you are able to enter search terms that do not meet the elements validators.
25
+ */
26
+ situation: import("@angular/core").InputSignal<string | undefined>;
27
+ /**
28
+ * Indicator that multiple strings could be inserted, they will be rendered as chips (default: false).
29
+ */
30
+ multiselect: import("@angular/core").InputSignal<boolean>;
31
+ /**
32
+ * Will prevent the input from being changed (default: false)
33
+ */
34
+ readonly: import("@angular/core").InputSignal<boolean>;
35
+ /**
36
+ * Whether or not the emitted value should be an object containing id and title
37
+ * or, if set to false only the ID
38
+ */
39
+ withMetadata: import("@angular/core").InputSignal<boolean>;
40
+ /**
41
+ * Minimum length of the autocomplete input before a query is sent to the server.
42
+ */
43
+ autocompleteMinLength: import("@angular/core").InputSignal<number>;
44
+ private _classifications?;
45
+ set classifications(c: string[] | undefined);
46
+ get classifications(): string[] | undefined;
47
+ busy: import("@angular/core").WritableSignal<boolean>;
48
+ acFormControl: FormControl<AutocompleteItem | AutocompleteItem[] | null | undefined>;
49
+ ngControl: import("@angular/forms").NgControl | null;
50
+ innerValue: OrganizationSetEntry[];
51
+ autocompleteRes: AutocompleteItem[];
52
+ propagateChange: (_: any) => void;
53
+ writeValue(value: string | string[]): void;
54
+ registerOnChange(fn: any): void;
55
+ registerOnTouched(fn: any): void;
56
+ private propagate;
57
+ autocompleteFn(query: string): void;
58
+ ngOnInit(): void;
59
+ ngOnDestroy(): void;
60
+ static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationSetComponent, never>;
61
+ static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationSetComponent, "yuv-organization-set", never, { "types": { "alias": "types"; "required": false; "isSignal": true; }; "situation": { "alias": "situation"; "required": false; "isSignal": true; }; "multiselect": { "alias": "multiselect"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "withMetadata": { "alias": "withMetadata"; "required": false; "isSignal": true; }; "autocompleteMinLength": { "alias": "autocompleteMinLength"; "required": false; "isSignal": true; }; "classifications": { "alias": "classifications"; "required": false; }; }, {}, never, never, true, never>;
62
+ }
@@ -6,6 +6,9 @@ import * as i4 from "./elements/datetime/datetime.component";
6
6
  import * as i5 from "./elements/datetime-range/datetime-range.component";
7
7
  import * as i6 from "./elements/organization/organization.component";
8
8
  import * as i7 from "./elements/catalog/catalog.component";
9
+ /**
10
+ * Module for the forms library.
11
+ */
9
12
  export declare class YuvFormsModule {
10
13
  static ɵfac: i0.ɵɵFactoryDeclaration<YuvFormsModule, never>;
11
14
  static ɵmod: i0.ɵɵNgModuleDeclaration<YuvFormsModule, never, [typeof i1.StringComponent, typeof i2.NumberComponent, typeof i3.NumberRangeComponent, typeof i4.DatetimeComponent, typeof i5.DatetimeRangeComponent, typeof i6.OrganizationComponent, typeof i1.StringComponent, typeof i7.CatalogComponent], [typeof i1.StringComponent, typeof i2.NumberComponent, typeof i3.NumberRangeComponent, typeof i4.DatetimeComponent, typeof i5.DatetimeRangeComponent, typeof i6.OrganizationComponent, typeof i1.StringComponent, typeof i7.CatalogComponent]>;
@@ -1,6 +1,10 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { ElementRef, OnInit } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Component to display an SVG icon.
6
+ * @deprecated Deprecated description
7
+ */
4
8
  export declare class YuvIconComponent implements OnInit {
5
9
  #private;
6
10
  private element;
@@ -28,6 +28,7 @@
28
28
  "yuv.form.element.datetime.calendar.cancel": "Abbrechen",
29
29
  "yuv.form.element.datetime.calendar.select": "Auswählen",
30
30
  "yuv.form.element.datetime.calendar.today": "Heute",
31
+ "yuv.form.element.organization-set.classify.icon.title": "",
31
32
  "yuv.form.element.organization.classify.icon.title": "",
32
33
  "yuv.form.element.organization.user.not-found": "Benutzer nicht gefunden",
33
34
  "yuv.form.element.range-select-date.custom.overlay.button.apply": "Anwenden",
@@ -97,6 +98,8 @@
97
98
  "yuv.object-summary.load.error": "",
98
99
  "yuv.sequence-list.form.nextAssignee": "Empfänger",
99
100
  "yuv.sequence-list.form.task": "Aufgabe",
101
+ "yuv.simple-search.label": "Suchen",
102
+ "yuv.simple-search.submit": "Suche absenden",
100
103
  "yuv.tile-config.button.close": "Schließen",
101
104
  "yuv.tile-config.button.save": "Speichern",
102
105
  "yuv.tile-config.details.empty.description": "",
@@ -28,6 +28,7 @@
28
28
  "yuv.form.element.datetime.calendar.cancel": "Cancel",
29
29
  "yuv.form.element.datetime.calendar.select": "Select",
30
30
  "yuv.form.element.datetime.calendar.today": "Today",
31
+ "yuv.form.element.organization-set.classify.icon.title": "",
31
32
  "yuv.form.element.organization.classify.icon.title": "",
32
33
  "yuv.form.element.organization.user.not-found": "User not found",
33
34
  "yuv.form.element.range-select-date.custom.overlay.button.apply": "Apply",
@@ -97,6 +98,8 @@
97
98
  "yuv.object-summary.load.error": "",
98
99
  "yuv.sequence-list.form.nextAssignee": "Recipient",
99
100
  "yuv.sequence-list.form.task": "Task",
101
+ "yuv.simple-search.label": "Search",
102
+ "yuv.simple-search.submit": "Submit search",
100
103
  "yuv.tile-config.button.close": "Close",
101
104
  "yuv.tile-config.button.save": "Save",
102
105
  "yuv.tile-config.details.empty.description": "",
@@ -1,10 +1,28 @@
1
1
  import { Highlightable } from '@angular/cdk/a11y';
2
2
  import * as i0 from "@angular/core";
3
+ /**
4
+ * Directive for list items. It is used in the `yuvList` component
5
+ * to keep track of active and selected items. Every element with this
6
+ * directive will be treated as a list item and can be selected and focused.
7
+ *
8
+ *```html
9
+ * <yuv-list (itemSelect)="itemSelected($event)">
10
+ * <div yuvListItem>Entry #1</div>
11
+ * <div yuvListItem>Entry #2</div>
12
+ * </yuv-list>
13
+ * ```
14
+ */
3
15
  export declare class ListItemDirective implements Highlightable {
4
16
  #private;
5
17
  onClick?: (evt: MouseEvent) => void;
6
18
  disabled?: boolean | undefined;
19
+ /**
20
+ * Whether the item is active or not.
21
+ */
7
22
  active: import("@angular/core").InputSignal<boolean>;
23
+ /**
24
+ * Whether the item is selected or not.
25
+ */
8
26
  selected: import("@angular/core").InputSignal<boolean>;
9
27
  selectedInput: import("@angular/core").WritableSignal<any>;
10
28
  activeInput: import("@angular/core").WritableSignal<any>;
@@ -3,10 +3,10 @@ import { ListItemDirective } from './list-item.directive';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
5
  * Component rendering a simple list of items. It supports keyboard
6
- * navigation as well as accessability. To create a list just wrapp
6
+ * navigation as well as accessibility. To create a list just wrap
7
7
  * `yuvListItem` elements into this component:
8
8
  *
9
- * ```ts
9
+ * ```html
10
10
  * <yuv-list (itemSelect)="itemSelected($event)">
11
11
  * <div yuvListItem>Entry #1</div>
12
12
  * <div yuvListItem>Entry #2</div>
@@ -21,12 +21,34 @@ export declare class ListComponent implements OnDestroy {
21
21
  private _keyManager;
22
22
  private _selection;
23
23
  private _lastSelection?;
24
+ /**
25
+ * If `true`, multiple items can be selected at once.
26
+ */
24
27
  multiselect: import("@angular/core").InputSignal<boolean>;
28
+ /**
29
+ * If `true`, the component will handle selection itself. This means that
30
+ * the parent component will be responsible for styling the selected and
31
+ * focused items. If `false`, the component will take care of visualizing
32
+ * the selection and focus states.
33
+ * @default false
34
+ */
25
35
  selfHandleSelection: import("@angular/core").InputSignal<boolean>;
36
+ /**
37
+ * Emits the selected items indices.
38
+ * @type {output<number[]>}
39
+ */
26
40
  itemSelect: import("@angular/core").OutputEmitterRef<number[]>;
41
+ /**
42
+ * Emits the index of the item that has focus.
43
+ * @type {output<number>}
44
+ */
27
45
  itemFocus: import("@angular/core").OutputEmitterRef<number>;
28
46
  selectOnEnter: boolean;
29
47
  horizontal: boolean;
48
+ /**
49
+ * If `true`, the list will not allow selection of items.
50
+ * This is useful for lists that are used for display purposes only.
51
+ */
30
52
  disableSelection: import("@angular/core").InputSignal<boolean>;
31
53
  select(index: number, shiftKey?: boolean, ctrlKey?: boolean): void;
32
54
  /**
@@ -2,7 +2,19 @@ import { TemplateRef } from '@angular/core';
2
2
  import { Situation } from '@yuuvis/client-core';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
- * Registration service for form elements rendered within an object form.
5
+ * Object forms are used to render and edit metadata of DMS objects. Each property
6
+ * of an object can be rendered in a diffenrent way, depending on the type of the property.
7
+ * This service allows to register and retrieve templates for rendering these form elements.
8
+ *
9
+ * You can register templates for different situations like EDIT, SEARCH, and CREATE.
10
+ * The templates will then be used to render the form elements in the object form component.
11
+ *
12
+ * So based on the property type you can register custom templates for rendering certain
13
+ * form elements. This is useful if you want to render a property in a different way.
14
+ *
15
+ * Example:
16
+ * Having a number property representing a rating, you might want to render it as
17
+ * a list of stars instead of a simple input field.
6
18
  */
7
19
  export declare class MetadataFormElementRegistry {
8
20
  private _defaults;
@@ -3,6 +3,11 @@ import { ObjectTypeField } from '@yuuvis/client-core';
3
3
  import { MetadataFormFieldContext } from './metadata-form-field.interface';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@yuuvis/client-framework/common";
6
+ /**
7
+ * Component to render a metadata form field within an object form. These forms are
8
+ * created to render and edit metadata of DMS objects. This component is used as a wrapper
9
+ * for the actual form element, which is defined by the `formField` input.
10
+ */
6
11
  export declare class MetadataFormFieldComponent {
7
12
  #private;
8
13
  elementTemplate: import("@angular/core").WritableSignal<TemplateRef<any> | undefined>;
@@ -2,7 +2,11 @@ import { OnInit } from '@angular/core';
2
2
  import { ObjectFormControl } from '@yuuvis/client-core';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
5
- * Directive to apply an object-form related error to a mat-label element.
5
+ * Directive to apply an object-form related error to as inner text to an element.
6
+ * This could be used to render objec tform related errors in a custom element like <mat-error>.
7
+ *
8
+ * @example
9
+ * <mat-error [yuvObjectMetadataElementError]="myControl"></mat-error>
6
10
  */
7
11
  export declare class ObjectMetadataElementErrorDirective implements OnInit {
8
12
  #private;
@@ -1,6 +1,14 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { AbstractControl } from '@angular/forms';
3
3
  import * as i0 from "@angular/core";
4
+ /**
5
+ * Directive to apply styles to an object metadata element label based on its control status.
6
+ * Depending on the state of the control (dirty, error), it will add or remove specific classes
7
+ * to the label element. Thes clases could then be used to style the label accordingly.
8
+ *
9
+ * @example
10
+ * <mat-label [yuvObjectMetadataElementLabel]="myControl">My Label</mat-label>
11
+ */
4
12
  export declare class ObjectMetadataElementLabelDirective implements OnInit {
5
13
  #private;
6
14
  yuvObjectMetadataElementLabel: import("@angular/core").InputSignal<AbstractControl<any, any> | undefined>;
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@yuuvis/client-framework",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "author": "OPTIMAL SYSTEMS GmbH <npm@optimal-systems.de>",
5
5
  "license": "MIT",
6
6
  "peerDependencies": {
7
7
  "@angular/cdk": "^19.2.15",
8
8
  "@angular/common": "^19.2.1",
9
9
  "@angular/core": "^19.2.1",
10
- "@yuuvis/client-core": "^2.0.4",
10
+ "@yuuvis/client-core": "^2.0.5",
11
11
  "modern-normalize": "^3.0.1"
12
12
  },
13
13
  "dependencies": {
14
14
  "@angular/material": "^19.2.15",
15
15
  "@ngrx/signals": "^19.2.0",
16
- "@yuuvis/client-shell-core": "2.0.4",
17
- "@yuuvis/material": "2.0.4",
16
+ "@yuuvis/client-shell-core": "2.0.5",
17
+ "@yuuvis/material": "2.0.5",
18
18
  "@yuuvis/media-viewer": "^1.0.0",
19
19
  "angular-split": "^19.0.0",
20
20
  "tslib": "^2.3.0"
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
- import { SearchQuery } from '@yuuvis/client-core';
3
+ import { SearchQuery, TranslateService } from '@yuuvis/client-core';
4
4
  import * as i0 from "@angular/core";
5
5
  export interface ObjectTypeAggregation {
6
6
  /**
@@ -17,9 +17,8 @@ export interface ObjectTypeAggregation {
17
17
  count: number;
18
18
  }
19
19
  export declare class SimpleSearchComponent {
20
- private fb;
21
- private searchService;
22
- private systemService;
20
+ #private;
21
+ readonly translate: TranslateService;
23
22
  private _query;
24
23
  /**
25
24
  * The search query