@yuuvis/client-framework 3.8.0 → 3.8.2
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-forms.mjs +5 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs +2 -2
- package/fesm2022/yuuvis-client-framework-metadata-form-defaults.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +47 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-smart-search.mjs +233 -19
- package/fesm2022/yuuvis-client-framework-smart-search.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-tile-list.mjs +4 -0
- package/fesm2022/yuuvis-client-framework-tile-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework.mjs +245 -227
- package/fesm2022/yuuvis-client-framework.mjs.map +1 -1
- package/lib/assets/i18n/de.json +31 -24
- package/lib/assets/i18n/en.json +31 -24
- package/package.json +5 -5
- package/types/yuuvis-client-framework-smart-search.d.ts +114 -5
- package/types/yuuvis-client-framework.d.ts +1 -3
package/lib/assets/i18n/de.json
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
"yuv.pwa.update.message": "Eine neue Version der Anwendung ist verfügbar. Jetzt neu laden, um zu aktualisieren?",
|
|
5
5
|
"yuv.pwa.update.title": "Update verfügbar",
|
|
6
6
|
"yuv.pwa.update.unrecoverable.message": "Die Anwendung muss neu geladen werden, um fortzufahren.",
|
|
7
|
-
"yuv.session.expires.message": "Ihre Sitzung läuft in
|
|
7
|
+
"yuv.session.expires.message": "Ihre Sitzung läuft in {{seconds}} Sekunden ab.",
|
|
8
|
+
"yuv.session.expires.title": "Sitzung läuft ab",
|
|
8
9
|
"yuv.session.extend.action": "Sitzung verlängern",
|
|
9
10
|
"yuv.action-menu.action.copy.dms.object.description": "",
|
|
10
11
|
"yuv.action-menu.action.copy.dms.object.label": "Kopieren",
|
|
@@ -70,32 +71,10 @@
|
|
|
70
71
|
"yuv.form.element.range-select-filesize.option.verylarge": "Sehr groß (>100 MB)",
|
|
71
72
|
"yuv.object-metadata.button.save": "Speichern",
|
|
72
73
|
"yuv.audit.fetch.error": "Historieneinträge konnten nicht geladen werden",
|
|
73
|
-
"yuv.audit.label.create.metadata": "Objekt wurde erstellt",
|
|
74
|
-
"yuv.audit.label.create.metadata.withcontent": "Objekt wurde mit Dokumentdatei erstellt",
|
|
75
|
-
"yuv.audit.label.create.tag": "Tag wurde erstellt",
|
|
76
|
-
"yuv.audit.label.delete": "Objekt wurde gelöscht",
|
|
77
|
-
"yuv.audit.label.delete.content": "Dokumentdatei wurde gelöscht",
|
|
78
|
-
"yuv.audit.label.delete.marked": "Objekt wurde zur Löschung vorgesehen",
|
|
79
|
-
"yuv.audit.label.delete.tag": "Tag wurde gelöscht",
|
|
80
|
-
"yuv.audit.label.delete.version": "Dokumentversion wurde gelöscht",
|
|
81
|
-
"yuv.audit.label.get.content": "Dokumentdatei wurde gelesen",
|
|
82
|
-
"yuv.audit.label.get.custom": "Alle sonstigen Ereignisse",
|
|
83
|
-
"yuv.audit.label.get.metadata": "Metadaten wurden gelesen",
|
|
84
|
-
"yuv.audit.label.get.rendition.pdf": "PDF-Rendition wurde angefordert",
|
|
85
|
-
"yuv.audit.label.get.rendition.text": "Text-Rendition wurde angefordert",
|
|
86
|
-
"yuv.audit.label.get.rendition.thumbnail": "Miniaturansicht wurde angefordert",
|
|
87
74
|
"yuv.audit.label.paging": "Seitennavigation",
|
|
88
75
|
"yuv.audit.label.paging.current": "Seite {{page}}",
|
|
89
76
|
"yuv.audit.label.paging.next": "zur nächsten Seite",
|
|
90
77
|
"yuv.audit.label.paging.prev": "zur vorherigen Seite",
|
|
91
|
-
"yuv.audit.label.update.content": "Dokumentdatei wurde geändert",
|
|
92
|
-
"yuv.audit.label.update.metadata": "Metadaten wurden geändert",
|
|
93
|
-
"yuv.audit.label.update.metadata.withcontent": "Metadaten und Dokumentdatei wurden geändert",
|
|
94
|
-
"yuv.audit.label.update.move": "Objekt wurde verschoben",
|
|
95
|
-
"yuv.audit.label.update.move.content": "Dokumentdatei wurde verschoben",
|
|
96
|
-
"yuv.audit.label.update.restore": "Alte Version wurde wiederhergestellt",
|
|
97
|
-
"yuv.audit.label.update.restore.more": "Wiederhergestellt aus Version {{version}}",
|
|
98
|
-
"yuv.audit.label.update.tag": "Tag wurde geändert",
|
|
99
78
|
"yuv.audit.label.version": "Version {{version}}",
|
|
100
79
|
"yuv.audit.result.empty": "Es wurden keine Historieneinträge gefunden",
|
|
101
80
|
"yuv.audit.timeline": "Historienzeitleiste",
|
|
@@ -153,6 +132,28 @@
|
|
|
153
132
|
"yuv.object-versions.list.version": "Version {{version}}",
|
|
154
133
|
"yuv.object-versions.tabs.content.title": "Inhalt",
|
|
155
134
|
"yuv.object-versions.tabs.indexdata.title": "Metadaten",
|
|
135
|
+
"yuv.audit.label.create.metadata": "Objekt wurde erstellt",
|
|
136
|
+
"yuv.audit.label.create.metadata.withcontent": "Objekt wurde mit Dokumentdatei erstellt",
|
|
137
|
+
"yuv.audit.label.create.tag": "Tag wurde erstellt",
|
|
138
|
+
"yuv.audit.label.delete": "Objekt wurde gelöscht",
|
|
139
|
+
"yuv.audit.label.delete.content": "Dokumentdatei wurde gelöscht",
|
|
140
|
+
"yuv.audit.label.delete.marked": "Objekt wurde zur Löschung vorgesehen",
|
|
141
|
+
"yuv.audit.label.delete.tag": "Tag wurde gelöscht",
|
|
142
|
+
"yuv.audit.label.delete.version": "Dokumentversion wurde gelöscht",
|
|
143
|
+
"yuv.audit.label.get.content": "Dokumentdatei wurde gelesen",
|
|
144
|
+
"yuv.audit.label.get.custom": "Alle sonstigen Ereignisse",
|
|
145
|
+
"yuv.audit.label.get.metadata": "Metadaten wurden gelesen",
|
|
146
|
+
"yuv.audit.label.get.rendition.pdf": "PDF-Rendition wurde angefordert",
|
|
147
|
+
"yuv.audit.label.get.rendition.text": "Text-Rendition wurde angefordert",
|
|
148
|
+
"yuv.audit.label.get.rendition.thumbnail": "Miniaturansicht wurde angefordert",
|
|
149
|
+
"yuv.audit.label.update.content": "Dokumentdatei wurde geändert",
|
|
150
|
+
"yuv.audit.label.update.metadata": "Metadaten wurden geändert",
|
|
151
|
+
"yuv.audit.label.update.metadata.withcontent": "Metadaten und Dokumentdatei wurden geändert",
|
|
152
|
+
"yuv.audit.label.update.move": "Objekt wurde verschoben",
|
|
153
|
+
"yuv.audit.label.update.move.content": "Dokumentdatei wurde verschoben",
|
|
154
|
+
"yuv.audit.label.update.restore": "Alte Version wurde wiederhergestellt",
|
|
155
|
+
"yuv.audit.label.update.restore.more": "Wiederhergestellt aus Version {{version}}",
|
|
156
|
+
"yuv.audit.label.update.tag": "Tag wurde geändert",
|
|
156
157
|
"yuv.table.renderer.moreEntries": "Es werden nur die ersten 10 Einträge angezeigt. Insgesamt: {{ count }}",
|
|
157
158
|
"yuv.sequence-list.form.nextAssignee": "Empfänger",
|
|
158
159
|
"yuv.sequence-list.form.task": "Aufgabe",
|
|
@@ -167,8 +168,15 @@
|
|
|
167
168
|
"yuv.smart-search.combinator.or": "ODER",
|
|
168
169
|
"yuv.smart-search.combinator.as-well-as": "sowie",
|
|
169
170
|
"yuv.smart-search.condition.edit-aria": "Bedingung bearbeiten: {{label}}",
|
|
171
|
+
"yuv.smart-search.condition.mark-dynamic": "Als auszufüllendes Feld festlegen",
|
|
170
172
|
"yuv.smart-search.condition.remove": "Bedingung entfernen",
|
|
173
|
+
"yuv.smart-search.condition.unmark-dynamic": "Aus auszufüllenden Feldern entfernen",
|
|
174
|
+
"yuv.smart-search.condition.unset-value": "Wert fehlt",
|
|
171
175
|
"yuv.smart-search.confirm": "Bestätigen",
|
|
176
|
+
"yuv.smart-search.mode.empty": "Keine auszufüllenden Felder. Markiere Bedingungen mit dem Blitz-Symbol, um sie hier hinzuzufügen.",
|
|
177
|
+
"yuv.smart-search.mode.essentials": "Wesentliches",
|
|
178
|
+
"yuv.smart-search.mode.full": "Vollständige Suche",
|
|
179
|
+
"yuv.smart-search.mode.label": "Suchmodus",
|
|
172
180
|
"yuv.smart-search.date-preset.this-month": "Dieser Monat",
|
|
173
181
|
"yuv.smart-search.date-preset.this-week": "Diese Woche",
|
|
174
182
|
"yuv.smart-search.date-preset.this-year": "Dieses Jahr",
|
|
@@ -183,7 +191,6 @@
|
|
|
183
191
|
"yuv.smart-search.fulltext.types.all": "Alle Typen",
|
|
184
192
|
"yuv.smart-search.fulltext.types.label": "Auf Typen einschränken",
|
|
185
193
|
"yuv.smart-search.operator.change": "Operator ändern",
|
|
186
|
-
"yuv.smart-search.operator.contains": "enthält",
|
|
187
194
|
"yuv.smart-search.operator.empty": "ist leer",
|
|
188
195
|
"yuv.smart-search.operator.eq-false": "= falsch",
|
|
189
196
|
"yuv.smart-search.operator.eq-true": "= wahr",
|
package/lib/assets/i18n/en.json
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
"yuv.pwa.update.message": "A new version of the application is available. Reload now to update?",
|
|
5
5
|
"yuv.pwa.update.title": "Update available",
|
|
6
6
|
"yuv.pwa.update.unrecoverable.message": "The application needs to be reloaded to continue.",
|
|
7
|
-
"yuv.session.expires.message": "Your session will expire in
|
|
7
|
+
"yuv.session.expires.message": "Your session will expire in {{seconds}} seconds.",
|
|
8
|
+
"yuv.session.expires.title": "Session expiring",
|
|
8
9
|
"yuv.session.extend.action": "Extend session",
|
|
9
10
|
"yuv.action-menu.action.copy.dms.object.description": "",
|
|
10
11
|
"yuv.action-menu.action.copy.dms.object.label": "Copy",
|
|
@@ -70,32 +71,10 @@
|
|
|
70
71
|
"yuv.form.element.range-select-filesize.option.verylarge": "Very large (>100 MB)",
|
|
71
72
|
"yuv.object-metadata.button.save": "Save",
|
|
72
73
|
"yuv.audit.fetch.error": "Unable to load history entries",
|
|
73
|
-
"yuv.audit.label.create.metadata": "Object was created",
|
|
74
|
-
"yuv.audit.label.create.metadata.withcontent": "Object was created with document file",
|
|
75
|
-
"yuv.audit.label.create.tag": "Tag was created",
|
|
76
|
-
"yuv.audit.label.delete": "Object was deleted",
|
|
77
|
-
"yuv.audit.label.delete.content": "Document file was deleted",
|
|
78
|
-
"yuv.audit.label.delete.marked": "Object was marked for deletion",
|
|
79
|
-
"yuv.audit.label.delete.tag": "Tag was deleted",
|
|
80
|
-
"yuv.audit.label.delete.version": "Document version was deleted",
|
|
81
|
-
"yuv.audit.label.get.content": "Document file was read",
|
|
82
|
-
"yuv.audit.label.get.custom": "All other events",
|
|
83
|
-
"yuv.audit.label.get.metadata": "Metadata was read",
|
|
84
|
-
"yuv.audit.label.get.rendition.pdf": "PDF rendition was requested",
|
|
85
|
-
"yuv.audit.label.get.rendition.text": "Text rendition was requested",
|
|
86
|
-
"yuv.audit.label.get.rendition.thumbnail": "Thumbnail view was requested",
|
|
87
74
|
"yuv.audit.label.paging": "Pagination",
|
|
88
75
|
"yuv.audit.label.paging.current": "Page {{page}}",
|
|
89
76
|
"yuv.audit.label.paging.next": "jump to next page",
|
|
90
77
|
"yuv.audit.label.paging.prev": "jump to previous page",
|
|
91
|
-
"yuv.audit.label.update.content": "Document file was changed",
|
|
92
|
-
"yuv.audit.label.update.metadata": "Metadata was changed",
|
|
93
|
-
"yuv.audit.label.update.metadata.withcontent": "Metadata and document file were changed",
|
|
94
|
-
"yuv.audit.label.update.move": "Object was moved",
|
|
95
|
-
"yuv.audit.label.update.move.content": "Document file was moved",
|
|
96
|
-
"yuv.audit.label.update.restore": "An old version was restored",
|
|
97
|
-
"yuv.audit.label.update.restore.more": "Restored from version {{version}}",
|
|
98
|
-
"yuv.audit.label.update.tag": "Tag was changed",
|
|
99
78
|
"yuv.audit.label.version": "Version {{version}}",
|
|
100
79
|
"yuv.audit.result.empty": "No history entries were found",
|
|
101
80
|
"yuv.audit.timeline": "History timeline",
|
|
@@ -153,6 +132,28 @@
|
|
|
153
132
|
"yuv.object-versions.list.version": "Version {{version}}",
|
|
154
133
|
"yuv.object-versions.tabs.content.title": "Content",
|
|
155
134
|
"yuv.object-versions.tabs.indexdata.title": "Metadata",
|
|
135
|
+
"yuv.audit.label.create.metadata": "Object was created",
|
|
136
|
+
"yuv.audit.label.create.metadata.withcontent": "Object was created with document file",
|
|
137
|
+
"yuv.audit.label.create.tag": "Tag was created",
|
|
138
|
+
"yuv.audit.label.delete": "Object was deleted",
|
|
139
|
+
"yuv.audit.label.delete.content": "Document file was deleted",
|
|
140
|
+
"yuv.audit.label.delete.marked": "Object was marked for deletion",
|
|
141
|
+
"yuv.audit.label.delete.tag": "Tag was deleted",
|
|
142
|
+
"yuv.audit.label.delete.version": "Document version was deleted",
|
|
143
|
+
"yuv.audit.label.get.content": "Document file was read",
|
|
144
|
+
"yuv.audit.label.get.custom": "All other events",
|
|
145
|
+
"yuv.audit.label.get.metadata": "Metadata was read",
|
|
146
|
+
"yuv.audit.label.get.rendition.pdf": "PDF rendition was requested",
|
|
147
|
+
"yuv.audit.label.get.rendition.text": "Text rendition was requested",
|
|
148
|
+
"yuv.audit.label.get.rendition.thumbnail": "Thumbnail view was requested",
|
|
149
|
+
"yuv.audit.label.update.content": "Document file was changed",
|
|
150
|
+
"yuv.audit.label.update.metadata": "Metadata was changed",
|
|
151
|
+
"yuv.audit.label.update.metadata.withcontent": "Metadata and document file were changed",
|
|
152
|
+
"yuv.audit.label.update.move": "Object was moved",
|
|
153
|
+
"yuv.audit.label.update.move.content": "Document file was moved",
|
|
154
|
+
"yuv.audit.label.update.restore": "An old version was restored",
|
|
155
|
+
"yuv.audit.label.update.restore.more": "Restored from version {{version}}",
|
|
156
|
+
"yuv.audit.label.update.tag": "Tag was changed",
|
|
156
157
|
"yuv.table.renderer.moreEntries": "Only the first ten entries are shown. Total: {{ count }}",
|
|
157
158
|
"yuv.sequence-list.form.nextAssignee": "Recipient",
|
|
158
159
|
"yuv.sequence-list.form.task": "Task",
|
|
@@ -167,8 +168,15 @@
|
|
|
167
168
|
"yuv.smart-search.combinator.or": "OR",
|
|
168
169
|
"yuv.smart-search.combinator.as-well-as": "as well as",
|
|
169
170
|
"yuv.smart-search.condition.edit-aria": "Edit condition: {{label}}",
|
|
171
|
+
"yuv.smart-search.condition.mark-dynamic": "Make this a fill-out field",
|
|
170
172
|
"yuv.smart-search.condition.remove": "Remove condition",
|
|
173
|
+
"yuv.smart-search.condition.unmark-dynamic": "Remove from fill-out fields",
|
|
174
|
+
"yuv.smart-search.condition.unset-value": "value missing",
|
|
171
175
|
"yuv.smart-search.confirm": "Confirm",
|
|
176
|
+
"yuv.smart-search.mode.empty": "No fill-out fields. Mark conditions with the bolt icon to add them here.",
|
|
177
|
+
"yuv.smart-search.mode.essentials": "Essentials",
|
|
178
|
+
"yuv.smart-search.mode.full": "Full Form",
|
|
179
|
+
"yuv.smart-search.mode.label": "Search mode",
|
|
172
180
|
"yuv.smart-search.date-preset.this-month": "This month",
|
|
173
181
|
"yuv.smart-search.date-preset.this-week": "This week",
|
|
174
182
|
"yuv.smart-search.date-preset.this-year": "This year",
|
|
@@ -183,7 +191,6 @@
|
|
|
183
191
|
"yuv.smart-search.fulltext.types.all": "All types",
|
|
184
192
|
"yuv.smart-search.fulltext.types.label": "Limit to types",
|
|
185
193
|
"yuv.smart-search.operator.change": "Change operator",
|
|
186
|
-
"yuv.smart-search.operator.contains": "contains",
|
|
187
194
|
"yuv.smart-search.operator.empty": "is empty",
|
|
188
195
|
"yuv.smart-search.operator.eq-false": "= false",
|
|
189
196
|
"yuv.smart-search.operator.eq-true": "= true",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuuvis/client-framework",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.2",
|
|
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.9",
|
|
9
9
|
"@angular/core": "^21.2.9",
|
|
10
10
|
"angular-gridster2": "^21.0.1",
|
|
11
|
-
"@yuuvis/client-core": "^3.8.
|
|
12
|
-
"@yuuvis/client-shell-core": "^3.8.
|
|
13
|
-
"@yuuvis/client-components": "^3.8.
|
|
11
|
+
"@yuuvis/client-core": "^3.8.2",
|
|
12
|
+
"@yuuvis/client-shell-core": "^3.8.2",
|
|
13
|
+
"@yuuvis/client-components": "^3.8.2",
|
|
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.7",
|
|
19
19
|
"@ngrx/signals": "^21.1.0",
|
|
20
|
-
"@yuuvis/material": "^3.8.
|
|
20
|
+
"@yuuvis/material": "^3.8.2",
|
|
21
21
|
"@yuuvis/media-viewer": "^3.0.4",
|
|
22
22
|
"angular-split": "^20.0.0",
|
|
23
23
|
"vis-network": "^10.0.2",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import * as _yuuvis_client_core from '@yuuvis/client-core';
|
|
2
|
-
import { GenericObjectType, ObjectTypeField } from '@yuuvis/client-core';
|
|
3
|
-
import * as _yuuvis_client_framework_smart_search from '@yuuvis/client-framework/smart-search';
|
|
4
1
|
import * as _angular_core from '@angular/core';
|
|
5
2
|
import { FormControl } from '@angular/forms';
|
|
3
|
+
import * as _yuuvis_client_core from '@yuuvis/client-core';
|
|
4
|
+
import { ObjectTypeField, GenericObjectType } from '@yuuvis/client-core';
|
|
5
|
+
import * as _yuuvis_client_framework_smart_search from '@yuuvis/client-framework/smart-search';
|
|
6
6
|
import { MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
|
|
7
7
|
import { RendererDirectiveInput } from '@yuuvis/client-framework/renderer';
|
|
8
8
|
|
|
@@ -27,6 +27,13 @@ interface FieldCondition {
|
|
|
27
27
|
value: string | string[];
|
|
28
28
|
/** Full human-readable label for the chip (`"Name like foo"`). */
|
|
29
29
|
conditionLabel: string;
|
|
30
|
+
/**
|
|
31
|
+
* Marked by the user as a *dynamic* condition: it is surfaced in the generated
|
|
32
|
+
* fill-out form (see form mode) so its value can be supplied/overridden at run time
|
|
33
|
+
* without rebuilding the query. Purely a builder annotation — it does not affect the
|
|
34
|
+
* emitted query on its own.
|
|
35
|
+
*/
|
|
36
|
+
dynamic?: boolean;
|
|
30
37
|
}
|
|
31
38
|
/**
|
|
32
39
|
* A parenthesized sub-expression with its own AND/OR combinator. Groups can
|
|
@@ -117,6 +124,26 @@ interface SmartSearchState {
|
|
|
117
124
|
fulltext?: FulltextSearch;
|
|
118
125
|
}
|
|
119
126
|
|
|
127
|
+
/**
|
|
128
|
+
* A single row of the generated fill-out form: the dynamic condition it edits, its
|
|
129
|
+
* resolved value-editor field definition (or `null` to fall back to a plain text input)
|
|
130
|
+
* and the `FormControl` bound to the value widget.
|
|
131
|
+
*/
|
|
132
|
+
interface DynamicFormField {
|
|
133
|
+
condition: FieldCondition;
|
|
134
|
+
def: ObjectTypeField | null;
|
|
135
|
+
control: FormControl;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* A block's worth of dynamic form rows. The generated fill-out form mirrors the builder's
|
|
139
|
+
* block layout: each block contributes a muted header listing its target types, followed by
|
|
140
|
+
* the dynamic conditions ({@link DynamicFormField}s) collected from anywhere within that block.
|
|
141
|
+
* Blocks with no dynamic conditions are omitted.
|
|
142
|
+
*/
|
|
143
|
+
interface DynamicFormBlock {
|
|
144
|
+
block: SearchBlock;
|
|
145
|
+
fields: DynamicFormField[];
|
|
146
|
+
}
|
|
120
147
|
/**
|
|
121
148
|
* State + mutators for SmartSearch, shared between the host component and the
|
|
122
149
|
* recursive `SmartSearchGroupComponent`. Provided at the host component level
|
|
@@ -160,6 +187,25 @@ declare class SmartSearchEditController {
|
|
|
160
187
|
inputTerm: _angular_core.WritableSignal<string>;
|
|
161
188
|
/** The whole-object full-text search unit (independent of the condition blocks). */
|
|
162
189
|
fulltext: _angular_core.WritableSignal<FulltextSearch>;
|
|
190
|
+
/** Whether the dynamic-conditions feature is enabled (mirrors the host `supportDynamicConditions` input). */
|
|
191
|
+
supportDynamic: _angular_core.WritableSignal<boolean>;
|
|
192
|
+
/**
|
|
193
|
+
* Form mode: replace the builder with a generated form of the user-marked dynamic
|
|
194
|
+
* conditions. View state only — the template ({@link blocks}) is never mutated; the
|
|
195
|
+
* form's values are overlaid onto the dynamic conditions to drive {@link cmisQuery},
|
|
196
|
+
* so the template stays reusable.
|
|
197
|
+
*/
|
|
198
|
+
formMode: _angular_core.WritableSignal<boolean>;
|
|
199
|
+
/** The dynamic conditions surfaced as form rows; rebuilt on each {@link enterFormMode}. */
|
|
200
|
+
formFields: _angular_core.WritableSignal<DynamicFormField[]>;
|
|
201
|
+
/**
|
|
202
|
+
* The dynamic form rows grouped by their owning block (each carrying a muted header of
|
|
203
|
+
* target types); rebuilt on each {@link enterFormMode}. Blocks combine with `OR`
|
|
204
|
+
* ("as well as"), matching the builder.
|
|
205
|
+
*/
|
|
206
|
+
formBlocks: _angular_core.WritableSignal<DynamicFormBlock[]>;
|
|
207
|
+
/** Whether any condition is marked dynamic (gates the form-mode toggle). */
|
|
208
|
+
hasDynamicConditions: _angular_core.Signal<boolean>;
|
|
163
209
|
objectTypes: _angular_core.Signal<GenericObjectType[]>;
|
|
164
210
|
/** Fields for the active top-level block, used by the field-step suggestions. */
|
|
165
211
|
activeBlockFields: _angular_core.Signal<SuggestionItem[]>;
|
|
@@ -187,6 +233,20 @@ declare class SmartSearchEditController {
|
|
|
187
233
|
loadState(state: SmartSearchState): void;
|
|
188
234
|
/** Reset all search state back to its initial empty values. */
|
|
189
235
|
reset(): void;
|
|
236
|
+
/** Mark or unmark a condition as dynamic (immutably replaces the node in its container). */
|
|
237
|
+
setConditionDynamic(container: ConditionContainer, condition: FieldCondition, dynamic: boolean): void;
|
|
238
|
+
/**
|
|
239
|
+
* Enter form mode: collect every dynamic condition, resolve its value editor and seed a
|
|
240
|
+
* `FormControl` with its current value. The blocks themselves are left untouched — the
|
|
241
|
+
* form's edits are overlaid via {@link setFormValue} / {@link cmisQuery}.
|
|
242
|
+
*/
|
|
243
|
+
enterFormMode(): void;
|
|
244
|
+
/** Leave form mode and discard the transient form state (the template is untouched). */
|
|
245
|
+
exitFormMode(): void;
|
|
246
|
+
/** Toggle form mode (rebuilds the form rows on each entry). */
|
|
247
|
+
toggleFormMode(): void;
|
|
248
|
+
/** Record a value entered in the form for a dynamic condition (drives the overlaid {@link cmisQuery}). */
|
|
249
|
+
setFormValue(condition: FieldCondition, raw: unknown): void;
|
|
190
250
|
/** Set the full-text search term. */
|
|
191
251
|
setFulltextTerm(term: string): void;
|
|
192
252
|
/** Set the full-text search scope (`all` / `metadata` / `content`). */
|
|
@@ -244,7 +304,11 @@ declare class SmartSearchEditController {
|
|
|
244
304
|
* original verbatim at its original index.
|
|
245
305
|
*/
|
|
246
306
|
restoreEditingSnapshot(): void;
|
|
247
|
-
/**
|
|
307
|
+
/**
|
|
308
|
+
* Whether the in-progress condition has all parts needed to be committed. A value
|
|
309
|
+
* is *not* required: a field + operator with a blank value commits as an unset
|
|
310
|
+
* placeholder (see {@link isConditionUnset}).
|
|
311
|
+
*/
|
|
248
312
|
isConditionComplete(): boolean;
|
|
249
313
|
/** The operators available for a field's internal type, as autocomplete items. */
|
|
250
314
|
operatorsForField(field: SuggestionItem): SuggestionItem[];
|
|
@@ -262,6 +326,20 @@ declare class SmartSearchEditController {
|
|
|
262
326
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SmartSearchEditController>;
|
|
263
327
|
}
|
|
264
328
|
|
|
329
|
+
/**
|
|
330
|
+
* Operators that carry their own meaning and need no value step: date presets,
|
|
331
|
+
* the boolean `= true/false` shortcuts, and the null checks (`empty`/`not_empty`).
|
|
332
|
+
* The build flow commits these immediately instead of advancing to the value editor.
|
|
333
|
+
*/
|
|
334
|
+
declare function isValuelessOperator(operator: string): boolean;
|
|
335
|
+
/**
|
|
336
|
+
* Whether a condition is an *unset placeholder*: it uses a value-requiring operator
|
|
337
|
+
* (eq / like / gt / …) but carries no value yet. Such conditions are kept in the tree
|
|
338
|
+
* — so a saved query can act as a fill-in template — but contribute nothing to the
|
|
339
|
+
* emitted CMIS query. An empty value is unambiguously "unset" here because null-checks
|
|
340
|
+
* have their own `empty` / `not_empty` operators (offered on every queryable type).
|
|
341
|
+
*/
|
|
342
|
+
declare function isConditionUnset(cond: FieldCondition): boolean;
|
|
265
343
|
/**
|
|
266
344
|
* Recursively render a condition node. Groups produce parenthesized
|
|
267
345
|
* sub-expressions; empty groups contribute nothing; single-child groups
|
|
@@ -350,6 +428,13 @@ declare class SmartSearchComponent {
|
|
|
350
428
|
* table columns alike.
|
|
351
429
|
*/
|
|
352
430
|
skipProperties: _angular_core.InputSignal<string[]>;
|
|
431
|
+
/**
|
|
432
|
+
* Enables the **dynamic conditions** feature. When `true`, each committed condition can
|
|
433
|
+
* be marked dynamic and a form-mode toggle appears that swaps the builder for a generated
|
|
434
|
+
* fill-out form of those conditions. Off by default — the builder then behaves exactly as
|
|
435
|
+
* it does without the feature.
|
|
436
|
+
*/
|
|
437
|
+
supportDynamicConditions: _angular_core.InputSignal<boolean>;
|
|
353
438
|
/**
|
|
354
439
|
* Emits the current CMIS query string whenever the search changes. An empty
|
|
355
440
|
* string is emitted for an empty search (including the initial seed), so
|
|
@@ -402,6 +487,18 @@ declare class SmartSearchComponent {
|
|
|
402
487
|
readonly fulltext: _angular_core.WritableSignal<_yuuvis_client_framework_smart_search.FulltextSearch>;
|
|
403
488
|
readonly objectTypes: _angular_core.Signal<_yuuvis_client_core.GenericObjectType[]>;
|
|
404
489
|
readonly activeBlockFields: _angular_core.Signal<SuggestionItem[]>;
|
|
490
|
+
readonly formMode: _angular_core.WritableSignal<boolean>;
|
|
491
|
+
readonly formFields: _angular_core.WritableSignal<DynamicFormField[]>;
|
|
492
|
+
readonly formBlocks: _angular_core.WritableSignal<DynamicFormBlock[]>;
|
|
493
|
+
readonly hasDynamicConditions: _angular_core.Signal<boolean>;
|
|
494
|
+
/** Whether a committed condition is an unset placeholder (drives the chip's "fill me" affordance). */
|
|
495
|
+
isUnset: typeof isConditionUnset;
|
|
496
|
+
/**
|
|
497
|
+
* Whether an operator carries its own meaning and has no value input (`is empty`,
|
|
498
|
+
* `is not empty`, date presets). Such conditions can't be made dynamic — there is
|
|
499
|
+
* nothing to fill out in the form.
|
|
500
|
+
*/
|
|
501
|
+
isValueless: typeof isValuelessOperator;
|
|
405
502
|
/**
|
|
406
503
|
* Selected ids for the type multi-select. Falls back to the `ALL_TYPES`
|
|
407
504
|
* sentinel when no concrete type is picked (empty selection = no restriction).
|
|
@@ -430,6 +527,18 @@ declare class SmartSearchComponent {
|
|
|
430
527
|
loadState(state: SmartSearchState): void;
|
|
431
528
|
/** Clear the whole search: discard all blocks, conditions and the full-text term. */
|
|
432
529
|
clear(): void;
|
|
530
|
+
/**
|
|
531
|
+
* Toggle form mode: swap the builder for a generated fill-out form of the user-marked
|
|
532
|
+
* dynamic conditions. The template is left intact — the form's values are overlaid onto
|
|
533
|
+
* the query. No-op unless {@link supportDynamicConditions} is set.
|
|
534
|
+
*/
|
|
535
|
+
toggleFormMode(): void;
|
|
536
|
+
/** Enter form mode ("Essentials") — generated fill-out form of the dynamic conditions. */
|
|
537
|
+
enterFormMode(): void;
|
|
538
|
+
/** Leave form mode ("Full Form") — back to the full builder search. */
|
|
539
|
+
exitFormMode(): void;
|
|
540
|
+
/** Mark/unmark a committed condition as dynamic (surfaced in the fill-out form). */
|
|
541
|
+
toggleDynamic(container: ConditionContainer, condition: FieldCondition): void;
|
|
433
542
|
/**
|
|
434
543
|
* Set the top-level combinator joining the query units (the full-text unit and
|
|
435
544
|
* the type blocks). Kept for state round-tripping; the UI currently always
|
|
@@ -530,7 +639,7 @@ declare class SmartSearchComponent {
|
|
|
530
639
|
*/
|
|
531
640
|
getObjectTypeField(item: SuggestionItem | null): ObjectTypeField | null;
|
|
532
641
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartSearchComponent, never>;
|
|
533
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartSearchComponent, "yuv-smart-search", never, { "types": { "alias": "types"; "required": false; "isSignal": true; }; "skipProperties": { "alias": "skipProperties"; "required": false; "isSignal": true; }; }, { "queryChange": "queryChange"; }, never, never, true, never>;
|
|
642
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartSearchComponent, "yuv-smart-search", never, { "types": { "alias": "types"; "required": false; "isSignal": true; }; "skipProperties": { "alias": "skipProperties"; "required": false; "isSignal": true; }; "supportDynamicConditions": { "alias": "supportDynamicConditions"; "required": false; "isSignal": true; }; }, { "queryChange": "queryChange"; }, never, never, true, never>;
|
|
534
643
|
}
|
|
535
644
|
|
|
536
645
|
declare class YuvSmartSearchModule {
|
|
@@ -898,7 +898,7 @@ declare class PwaUpdateService {
|
|
|
898
898
|
* - Automatically listens to BackendService HTTP activity (debounced) to extend sessions
|
|
899
899
|
* - Extends backend session by calling `/api-web/api/idm/whoami` endpoint` (skipped when triggered by HTTP activity)
|
|
900
900
|
* - User activity (mouse, keyboard, scroll) inside a defined window will auto-extend the session
|
|
901
|
-
* - Displays a
|
|
901
|
+
* - Displays a blocking countdown dialog shortly before expiry; user can extend from the dialog
|
|
902
902
|
* - Broadcasts `SessionExtended` / `SessionLogout` to keep tabs in sync
|
|
903
903
|
*
|
|
904
904
|
* Setup options
|
|
@@ -943,7 +943,6 @@ declare class PwaUpdateService {
|
|
|
943
943
|
*/
|
|
944
944
|
declare class SessionService {
|
|
945
945
|
#private;
|
|
946
|
-
private translate;
|
|
947
946
|
/**
|
|
948
947
|
* Initializes cross-tab listeners and activity hooks.
|
|
949
948
|
*
|
|
@@ -1008,7 +1007,6 @@ declare class SessionService {
|
|
|
1008
1007
|
private setupHttpDebounce;
|
|
1009
1008
|
private setupUserActivityTracking;
|
|
1010
1009
|
private resetAllTimers;
|
|
1011
|
-
private getExpiresAt;
|
|
1012
1010
|
private setExpiresAt;
|
|
1013
1011
|
private clearTimers;
|
|
1014
1012
|
static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
|