@xiriframework/xiri-ng 0.4.13 → 0.4.15
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/xiriframework-xiri-ng.mjs +546 -86
- package/fesm2022/xiriframework-xiri-ng.mjs.map +1 -1
- package/package.json +1 -1
- package/skills/xiri-ng-expert/SKILL.md +28 -4
- package/skills/xiri-ng-expert/references/components.md +5 -0
- package/skills/xiri-ng-expert/references/dyncomponent.md +11 -11
- package/skills/xiri-ng-expert/references/form-fields.md +63 -12
- package/skills/xiri-ng-expert/references/table.md +3 -0
- package/types/xiriframework-xiri-ng.d.ts +93 -10
- package/types/xiriframework-xiri-ng.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: xiri-ng-expert
|
|
3
|
-
description: Experte für die xiri-ng Angular-Library. Verwende diesen Skill IMMER wenn Angular-Code geschrieben wird der @xiriframework/xiri-ng importiert, oder wenn der User nach xiri-Komponenten (xiri-dyncomponent, xiri-form-fields, xiri-table, xiri-card usw.), XiriDataService, XiriSnackbarService, provideXiriServices, Form-Feldern mit showWhen-Bedingungen
|
|
3
|
+
description: Experte für die xiri-ng Angular-Library. Verwende diesen Skill IMMER wenn Angular-Code geschrieben wird der @xiriframework/xiri-ng importiert, oder wenn der User nach xiri-Komponenten (xiri-dyncomponent, xiri-form-fields, xiri-table, xiri-card usw.), XiriDataService, XiriSnackbarService, provideXiriServices, Form-Feldern mit showWhen-Bedingungen, reloadOn-Abhängigkeiten oder Textfeld-Vorschlägen (Autocomplete mit Freitext: list/url/searchWith) (Optionen vom Server nachladen), addUrl („+“-Button legt neue Option per Dialog an), oder Server-Side-Tables fragt.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# xiri-ng Expert
|
|
@@ -133,6 +133,7 @@ Verfügbare `type`-Werte: `text`, `email`, `password`, `textarea`, `number`, `bo
|
|
|
133
133
|
`display` = `'full' | 'line' | 'small'` — Layout-Modus.
|
|
134
134
|
|
|
135
135
|
**showWhen-Operators:** `equals`, `notEquals`, `contains`, `greaterThan`, `lessThan`, `in`, `notEmpty`.
|
|
136
|
+
Versteckte Felder sind disabled: kein Wert im Submit, keine Validierung (ab 0.4.14; Details `references/form-fields.md`).
|
|
136
137
|
|
|
137
138
|
**reloadOn — Inhalt vom Server nachladen.** Während `showWhen` ein Feld nur ein- und ausblendet,
|
|
138
139
|
lädt `reloadOn` seinen Inhalt neu, sobald sich ein anderes Feld ändert:
|
|
@@ -146,13 +147,30 @@ Beides ist Pflicht. Die Komponente postet **nur die Trigger-Werte** (`{departmen
|
|
|
146
147
|
entprellt, ein Request pro URL, `switchMap`) und erwartet
|
|
147
148
|
`{ "fields": { "team": { "list": [...], "required": true } } }`. Ein Reload läuft zusätzlich immer
|
|
148
149
|
einmal direkt nach dem Aufbau der Controls. Werte, die die neue `list` noch anbietet, bleiben
|
|
149
|
-
erhalten (rekursiv über `children`), der Rest wird verworfen — außer bei `chips`
|
|
150
|
-
`url`, deren Liste
|
|
150
|
+
erhalten (rekursiv über `children`), der Rest wird verworfen — außer bei `chips`, `text` (Liste sind
|
|
151
|
+
nur Vorschläge) und Selects mit `url`, deren Liste der statische Sockel ist.
|
|
151
152
|
|
|
152
153
|
Patchbar sind `list`, `name`, `hint`, `class`, `required`, `disabled`, `hide`, `search`, `min`,
|
|
153
|
-
`max`, `params` — jeweils nur mit passendem Typ. `value`, `type`, `id` und `
|
|
154
|
+
`max`, `params` — jeweils nur mit passendem Typ. `value`, `type`, `id`, `url` und `searchWith` bewusst nicht.
|
|
154
155
|
Details und Grenzen in `references/form-fields.md`.
|
|
155
156
|
|
|
157
|
+
**Vorschläge am Textfeld (mat-autocomplete, Freitext bleibt).** Ein `text`-Feld mit `list` und/oder
|
|
158
|
+
`url` zeigt beim Tippen ein Vorschlags-Panel; eingetippt werden darf trotzdem alles:
|
|
159
|
+
|
|
160
|
+
```typescript
|
|
161
|
+
{ id: 'city', type: 'text', name: 'Stadt',
|
|
162
|
+
list: [ { id: 'Wien', name: 'Wien' }, { id: 'Graz', name: 'Graz' } ], // lokal gefiltert
|
|
163
|
+
url: 'City/Suggest', searchWith: [ 'country' ] } // beim Tippen nachladen
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
`list` wird lokal gefiltert (`id === name`), `url` wird 200 ms entprellt per
|
|
167
|
+
`POST { search: 'gr', country: 3 }` gefragt — `searchWith` nennt Feld-IDs derselben Form, deren
|
|
168
|
+
aktueller Wert mitgeht (nur enabled Felder) — und erwartet `[{ id, name }]`; eingesetzt wird `name`,
|
|
169
|
+
Servertreffer hängen hinter den lokalen. Enter/Blur übernehmen nie automatisch, ein `reloadOn`-Patch
|
|
170
|
+
der `list` löscht den Text nicht. Kommen die Vorschläge erst per Reload, initial `list: []` setzen,
|
|
171
|
+
sonst rendert die Komponente ein normales Textfeld und tauscht das Input beim Patch aus. Go:
|
|
172
|
+
`field.NewTextField(...).SetSuggestions(...)` / `.SetSuggestionsURL(u, ids...)` + `builder.BindSuggest`.
|
|
173
|
+
|
|
156
174
|
**addUrl — neue Option per Dialog anlegen.** `select`, `multiselect`/`treeselect`, `object`/`model`
|
|
157
175
|
und `chips` bekommen mit `addUrl` einen „+“-Button neben dem Feld:
|
|
158
176
|
|
|
@@ -189,6 +207,9 @@ submit() {
|
|
|
189
207
|
|
|
190
208
|
Lädt Felder + Buttons vom Backend, submit → POST → response-handler navigiert/refresht.
|
|
191
209
|
|
|
210
|
+
Fehler: ein 400 mit `{error, fields?: {id: message}}` (xiri-go `response.NewErrorResponseFromError`) zeigt jede
|
|
211
|
+
Feldmeldung als `mat-error` am Feld, der Banner bleibt leer; ohne `fields` erscheint `error` als Banner (`xiri-error`).
|
|
212
|
+
|
|
192
213
|
## xiri-table — volle Datentabelle
|
|
193
214
|
|
|
194
215
|
```html
|
|
@@ -462,5 +483,8 @@ edit(row: any) {
|
|
|
462
483
|
- Nicht `reloadOn` ohne `reloadUrl` (oder umgekehrt) — eine halbe Deklaration wird ignoriert
|
|
463
484
|
- Nicht `url` **und** `reloadOn` auf demselben treeselect — mit `url` lädt es seinen Baum selbst
|
|
464
485
|
per GET und ignoriert die gepatchte `list`
|
|
486
|
+
- Kein `select` oder `chips`, wenn der Wert frei getippt werden darf und die Liste nur hilft —
|
|
487
|
+
`type: 'text'` mit `list` und/oder `url` (+ `searchWith`). Ein normales Textfeld ohne beides bleibt
|
|
488
|
+
ohne Autocomplete-Trigger; Vorschläge, die erst per `reloadOn` kommen, brauchen initial `list: []`
|
|
465
489
|
- Keinen eigenen „Neu anlegen“-Button neben ein Select bauen — `addUrl` am Feld, der Dialog-POST
|
|
466
490
|
antwortet mit `created: { id, name }`
|
|
@@ -20,6 +20,11 @@ interface XiriFormSettings {
|
|
|
20
20
|
|
|
21
21
|
Outputs: keine.
|
|
22
22
|
|
|
23
|
+
Fehlerantworten (HTTP 400/403/404/0) landen als `XiriFormServiceError { error: string; fields?: Record<string, string> }`
|
|
24
|
+
im Formular: `fields` (xiri-go `response.NewErrorResponseFromError`, Feld-ID → Meldung) gehen als `serverErrors` an
|
|
25
|
+
`xiri-form-fields` und erscheinen als `mat-error` am Feld, der Fehler-Banner bleibt dann leer. Ohne `fields` steht `error`
|
|
26
|
+
im Banner (`xiri-error`). Signals: `fieldErrors()`, `error()`.
|
|
27
|
+
|
|
23
28
|
### xiri-dialog (via MatDialog)
|
|
24
29
|
|
|
25
30
|
```typescript
|
|
@@ -31,19 +31,19 @@ export interface XiriDynData {
|
|
|
31
31
|
mode?: string; // Nur für 'barchart': 'simple' | 'stacked' | 'heatmap'
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
| 'stat' | 'empty-state' | 'timeline'
|
|
41
|
-
| 'page-header' | 'section' | 'divider'
|
|
42
|
-
| 'stat-grid' | 'toolbar' | 'description-list'
|
|
43
|
-
| 'barchart' | 'linechart' | 'piechart' | 'gaugechart'
|
|
44
|
-
| 'heatmap' | 'calendar' | 'tree' | 'sankey' | 'gantt';
|
|
34
|
+
// Einzige Quelle aller type-Werte; die Union wird daraus abgeleitet.
|
|
35
|
+
export const XIRI_COMPONENT_TYPES = ['card', 'buttonline', 'table', 'cardlink', /* … */ 'status', 'callout'] as const;
|
|
36
|
+
export type XiriDynDataType = typeof XIRI_COMPONENT_TYPES[number];
|
|
37
|
+
|
|
38
|
+
// Maschinenlesbarer Katalog (Name, Kategorie, Demo-Route, goBuilder, Keywords) je Typ.
|
|
39
|
+
export const COMPONENT_CATALOG: readonly XiriCatalogEntry[];
|
|
45
40
|
```
|
|
46
41
|
|
|
42
|
+
`XIRI_COMPONENT_TYPES`, `COMPONENT_CATALOG` und `XiriCatalogEntry` sind exportiert. Der Katalog ist
|
|
43
|
+
maschinenlesbar: Agenten und Tools können ihn importieren, um zu erfahren, welche `type`-Werte der
|
|
44
|
+
Renderer kennt und welche davon xiri-go ausgibt (`goBuilder`; Gegenstück `core.ComponentTypes()`).
|
|
45
|
+
`catalog-parity.spec.ts` prüft Renderer-`@case`, Vertrag und Katalog gegeneinander.
|
|
46
|
+
|
|
47
47
|
## Mapping type → Komponente
|
|
48
48
|
|
|
49
49
|
| `type` | Rendered Component | `data` = Settings-Interface |
|
|
@@ -15,8 +15,14 @@ Renderer für `XiriFormField[]`. Baut intern eine `UntypedFormGroup` mit Reactiv
|
|
|
15
15
|
@input display: XiriFormFieldDisplay = 'full' // 'full' | 'line' | 'small'
|
|
16
16
|
@input disabled: boolean = false
|
|
17
17
|
@input check: Observable<void> = null // Trigger für Revalidierung
|
|
18
|
+
@input serverErrors: Record<string, string> | null = null // Validierungsfehler pro Feld-ID vom Server
|
|
18
19
|
```
|
|
19
20
|
|
|
21
|
+
`serverErrors` trägt die `fields` einer 400-Antwort (xiri-go `response.NewErrorResponseFromError`,
|
|
22
|
+
`{id: message}`). Jede Meldung erscheint als `mat-error` am Feld und verschwindet bei der nächsten
|
|
23
|
+
Eingabe; unbekannte IDs werden ignoriert. `xiri-form` setzt den Input automatisch aus
|
|
24
|
+
`XiriFormServiceError.fields` und lässt den Fehler-Banner dann leer.
|
|
25
|
+
|
|
20
26
|
### Outputs
|
|
21
27
|
|
|
22
28
|
```typescript
|
|
@@ -80,7 +86,7 @@ export interface XiriFormField {
|
|
|
80
86
|
// --- State ---
|
|
81
87
|
hide?: boolean;
|
|
82
88
|
required?: boolean;
|
|
83
|
-
disabled?: boolean; //
|
|
89
|
+
disabled?: boolean; // Control beim Aufbau disabled, Feld fällt aus formGroup.value (s.u.)
|
|
84
90
|
collapsible?: boolean; // header
|
|
85
91
|
collapsed?: boolean; // header initial
|
|
86
92
|
|
|
@@ -109,6 +115,10 @@ export interface XiriFormField {
|
|
|
109
115
|
// --- Conditional Display ---
|
|
110
116
|
showWhen?: XiriFormFieldCondition | XiriFormFieldCondition[];
|
|
111
117
|
|
|
118
|
+
// --- Text: Vorschläge (mat-autocomplete, Freitext bleibt) ---
|
|
119
|
+
// list (id === name) lokal gefiltert; url beim Tippen: POST {search, <searchWith-Felder>} -> [{id, name}]
|
|
120
|
+
searchWith?: string[]; // Feld-IDs derselben Form, deren aktueller (enabled) Wert mitgeht
|
|
121
|
+
|
|
112
122
|
// --- Server-driven content ---
|
|
113
123
|
reloadOn?: string[]; // Feld-IDs, deren Änderung dieses Feld neu lädt
|
|
114
124
|
reloadUrl?: string; // Endpoint für den Reload (beides oder keins)
|
|
@@ -122,22 +132,25 @@ export interface XiriFormField {
|
|
|
122
132
|
}
|
|
123
133
|
```
|
|
124
134
|
|
|
125
|
-
**`disabled`
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
135
|
+
**`disabled` (ab 0.4.14).** Ein Feld mit `disabled: true` bekommt beim Aufbau ein **disabled FormControl** —
|
|
136
|
+
bei allen Feldtypen, auch `text`, `select`, `bool`, `timelimit`. Es fällt damit aus `formGroup.value`
|
|
137
|
+
(kein Wert im Submit-Body) und aus der Validierung; xiri-go bindet für den Key ohnehin nie den
|
|
138
|
+
Request-Wert, sondern den Default. `formGroup.get(id).disable()` von außen, das `disabled`-Input der
|
|
139
|
+
ganzen `xiri-form-fields` und ein `disabled` aus einem `reloadOn`-Patch verhalten sich gleich. Wer einen
|
|
140
|
+
Server-Wert nur anzeigen will, nimmt ein `info`-Feld.
|
|
131
141
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
142
|
+
Eine bewusste Ausnahme vom „kein Wert“: **Reload-Trigger** gehen über `getRawValue()`, ein disabled
|
|
143
|
+
Trigger-Feld steuert also weiterhin abhängige Listen. Eine FormGroup, deren Controls **alle** disabled sind
|
|
144
|
+
(nur gesperrte Felder, oder gesperrte plus per `showWhen` versteckte), ist bei Angular `DISABLED` statt `VALID`
|
|
145
|
+
(`valid === false`, `invalid === false`) und liefert alle Werte als Rohwert; `xiri-form`, `xiri-dialog`,
|
|
146
|
+
`xiri-query` und `xiri-stepper` normalisieren das über `formState()` zu gültig mit Payload `{}` — ein
|
|
147
|
+
Anzeige-Formular bleibt absendbar, und versteckte Werte gehen nie zum Server (der `showWhen` nicht kennt).
|
|
135
148
|
|
|
136
149
|
### Feld-Typen
|
|
137
150
|
|
|
138
151
|
| `type` | Rendered als | Wichtige Properties |
|
|
139
152
|
| --------------- | ------------------------------------------------- | ---------------------------------- |
|
|
140
|
-
| `text`
|
|
153
|
+
| `text` | Mat-Input, mit `list`/`url` plus mat-autocomplete | `subtype` (email/url), `pattern`, `list`, `url`, `searchWith` (Vorschläge) |
|
|
141
154
|
| `email` | Mat-Input type=email | |
|
|
142
155
|
| `password` | Mat-Input type=password | `pwdhide` |
|
|
143
156
|
| `textarea` | Mat-Textarea | `rows` |
|
|
@@ -232,6 +245,44 @@ Array = **UND**-Verknüpfung:
|
|
|
232
245
|
]}
|
|
233
246
|
```
|
|
234
247
|
|
|
248
|
+
**Laufzeitverhalten (ab 0.4.14):** Ein per `showWhen` verstecktes Feld wird im FormGroup **disabled**.
|
|
249
|
+
Es fehlt damit in `formGroup.value` und im Submit-Body, und seine Validatoren zählen nicht — ein
|
|
250
|
+
verstecktes Pflichtfeld blockiert den Submit nicht. Wird es wieder sichtbar, wird es enabled und
|
|
251
|
+
behält seinen letzten Wert; ein vom Backend gesetztes `disabled: true` oder das globale
|
|
252
|
+
`disabled`-Input bleiben dabei bestehen. Felder in **eingeklappten Sections** gelten nicht als
|
|
253
|
+
versteckt und bleiben enabled. Bedingungen lesen `control.value` direkt, ein disabled Trigger-Feld
|
|
254
|
+
funktioniert also weiterhin als Trigger. Server-seitig bindet xiri-go für den fehlenden Key den
|
|
255
|
+
Konstruktor-Default.
|
|
256
|
+
|
|
257
|
+
### Vorschläge am Textfeld — `list`, `url`, `searchWith`
|
|
258
|
+
|
|
259
|
+
Ein `text`-Feld mit `list` und/oder `url` bekommt ein `mat-autocomplete`-Panel (`XiriSuggestDirective`,
|
|
260
|
+
exportiert). Der Wert bleibt ein freier String — die Directive schreibt nie ins Control, eine Auswahl
|
|
261
|
+
setzt `name` ein.
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
{ id: 'city', type: 'text', name: 'Stadt',
|
|
265
|
+
list: [ { id: 'Wien', name: 'Wien' }, { id: 'Graz', name: 'Graz' } ],
|
|
266
|
+
url: 'City/Suggest', searchWith: [ 'country' ] }
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
- `list` wird lokal case-insensitiv nach `name` gefiltert und ist per `reloadOn` patchbar; der Patch
|
|
270
|
+
erreicht das offene Panel sofort und löscht den getippten Text nicht.
|
|
271
|
+
- `url`: 200 ms nach der letzten Eingabe `POST url { ...kontext, search }`; eine neue Eingabe bricht
|
|
272
|
+
Timer und laufenden Request ab, alte Antworten landen nie. Leere Eingabe fragt nicht an. Antwort
|
|
273
|
+
`[{ id, name }]`, Elemente ohne String-`name` werden verworfen, Treffer hängen hinter den lokalen,
|
|
274
|
+
Duplikate (nach `name`) fallen weg. Fokus allein löst keine Suche aus.
|
|
275
|
+
- `searchWith`: Feld-IDs derselben Form (flache Schlüssel); mitgeschickt wird der Wert zur Request-Zeit,
|
|
276
|
+
nur von enabled Controls. `search` ist reserviert. Nicht patchbar (wie `url`).
|
|
277
|
+
- Ohne `list`/`url` bleibt das Textfeld unverändert (DefaultValueAccessor, kein Autocomplete-Trigger).
|
|
278
|
+
Deshalb: kommen die Vorschläge erst per `reloadOn`, initial `list: []` liefern — sonst wechselt beim
|
|
279
|
+
Patch der Template-Zweig und das fokussierte Input wird ersetzt.
|
|
280
|
+
- Enter/Blur übernehmen nie automatisch einen Vorschlag (`requireSelection`, `autoActiveFirstOption`,
|
|
281
|
+
`autoSelectActiveOption` sind explizit `false`, unabhängig von `MAT_AUTOCOMPLETE_DEFAULT_OPTIONS`).
|
|
282
|
+
Ist das Control disabled, sind die Optionen disabled.
|
|
283
|
+
- Go: `field.NewTextField(...).SetSuggestions("Wien", "Graz")`, `.SetSuggestionsURL(u, "country")`,
|
|
284
|
+
Handler `builder.BindSuggest(c, country)` (siehe xiri-go-expert).
|
|
285
|
+
|
|
235
286
|
### reloadOn — Inhalt vom Server nachladen
|
|
236
287
|
|
|
237
288
|
`showWhen` blendet ein Feld ein und aus. `reloadOn` lädt seinen **Inhalt** neu, sobald sich ein
|
|
@@ -270,7 +321,7 @@ Nach einem `list`-Patch behält das Feld alle Werte, die die neue Liste noch anb
|
|
|
270
321
|
(rekursiv über `children`), und verwirft die übrigen. Ein `value` im Patch wird ignoriert — der
|
|
271
322
|
Wert gehört dem Client.
|
|
272
323
|
|
|
273
|
-
Nicht geprunt wird, wo die Liste nicht autoritativ ist: bei `chips` (nur Vorschläge) und bei
|
|
324
|
+
Nicht geprunt wird, wo die Liste nicht autoritativ ist: bei `chips` und `text` (nur Vorschläge) und bei
|
|
274
325
|
Selects mit `url` (dort ist `list` nur der statische Sockel der Server-Suche).
|
|
275
326
|
|
|
276
327
|
**Patchbare Properties**
|
|
@@ -201,6 +201,8 @@ export interface XiriTableField {
|
|
|
201
201
|
|
|
202
202
|
buttons?: XiriButton[]; // Action-Buttons in der Zelle
|
|
203
203
|
icons?: { icon: string; color?: string; hint?: string }[];
|
|
204
|
+
// format 'icon': row[id] wählt das Icon; row[id + 'Hint'] (xiri-go
|
|
205
|
+
// WithRowHint) überschreibt ab 0.4.14 den Icon-hint als Tooltip pro Zeile
|
|
204
206
|
|
|
205
207
|
display?: string; // CSS-Klasse auf <td>
|
|
206
208
|
header?: string; // Custom Header-Text (falls ≠ name)
|
|
@@ -385,6 +387,7 @@ tableSettings: XiriTableSettings = {
|
|
|
385
387
|
{ icon: 'check_circle', color: 'success', hint: 'Aktiv' },
|
|
386
388
|
{ icon: 'cancel', color: 'warn', hint: 'Inaktiv' },
|
|
387
389
|
]},
|
|
390
|
+
// Row mit { status: 0, statusHint: 'Aktiv seit 08:12' } zeigt den Row-Hint statt 'Aktiv'
|
|
388
391
|
{ id: 'count', name: 'Anzahl', format: 'number',
|
|
389
392
|
webformat: 'integer', align: 'right', footer: 'sum' },
|
|
390
393
|
{ id: 'note', name: 'Notiz', editable: true, inputType: 'text' },
|
|
@@ -108,6 +108,7 @@ interface XiriFormField {
|
|
|
108
108
|
url?: string;
|
|
109
109
|
search?: boolean;
|
|
110
110
|
serverSideSearch?: boolean;
|
|
111
|
+
searchWith?: string[];
|
|
111
112
|
params?: Record<string, unknown>;
|
|
112
113
|
rows?: number;
|
|
113
114
|
accept?: string;
|
|
@@ -141,6 +142,7 @@ declare class XiriFormFieldsComponent implements OnInit {
|
|
|
141
142
|
disabled: _angular_core.InputSignal<boolean>;
|
|
142
143
|
formChange: _angular_core.OutputEmitterRef<UntypedFormGroup>;
|
|
143
144
|
check: _angular_core.InputSignal<Observable<void> | null>;
|
|
145
|
+
serverErrors: _angular_core.InputSignal<Record<string, string> | null>;
|
|
144
146
|
formGroup: UntypedFormGroup;
|
|
145
147
|
private lastValue;
|
|
146
148
|
private _fields;
|
|
@@ -163,6 +165,7 @@ declare class XiriFormFieldsComponent implements OnInit {
|
|
|
163
165
|
private fetchPatches;
|
|
164
166
|
protected openAdd(id: string): void;
|
|
165
167
|
private addOption;
|
|
168
|
+
private applyServerError;
|
|
166
169
|
private applyPatch;
|
|
167
170
|
private pruneValue;
|
|
168
171
|
fields: _angular_core.Signal<XiriFormField[] | null>;
|
|
@@ -170,12 +173,14 @@ declare class XiriFormFieldsComponent implements OnInit {
|
|
|
170
173
|
private bindValidations;
|
|
171
174
|
private validateAllFormFields;
|
|
172
175
|
isFieldVisible(field: XiriFormField): boolean;
|
|
176
|
+
private matchesShowWhen;
|
|
177
|
+
private syncConditionalControls;
|
|
173
178
|
toggleSection(header: XiriFormField): void;
|
|
174
179
|
isSectionCollapsed(headerId: string): boolean;
|
|
175
180
|
private isInCollapsedSection;
|
|
176
181
|
private evaluateCondition;
|
|
177
182
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<XiriFormFieldsComponent, never>;
|
|
178
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriFormFieldsComponent, "xiri-form-fields", never, { "form": { "alias": "form"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "check": { "alias": "check"; "required": false; "isSignal": true; }; }, { "formChange": "formChange"; }, never, never, true, never>;
|
|
183
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriFormFieldsComponent, "xiri-form-fields", never, { "form": { "alias": "form"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "check": { "alias": "check"; "required": false; "isSignal": true; }; "serverErrors": { "alias": "serverErrors"; "required": false; "isSignal": true; }; }, { "formChange": "formChange"; }, never, never, true, never>;
|
|
179
184
|
}
|
|
180
185
|
|
|
181
186
|
type XiriSelectPredicate = (filter: string, element: XiriFormFieldSelectOption) => boolean;
|
|
@@ -221,6 +226,37 @@ declare class XiriSelectDirective implements OnInit, OnDestroy {
|
|
|
221
226
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<XiriSelectDirective, "[xiriSelect]", ["xiriSelect"], { "predicate": { "alias": "predicate"; "required": false; "isSignal": true; }; "compare": { "alias": "compare"; "required": false; "isSignal": true; }; "serverSideSearch": { "alias": "serverSideSearch"; "required": false; "isSignal": true; }; "serverUrl": { "alias": "serverUrl"; "required": false; "isSignal": true; }; "serverParams": { "alias": "serverParams"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
222
227
|
}
|
|
223
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Vorschläge für ein Textfeld (mat-autocomplete): `field.list` wird lokal gefiltert, bei `field.url`
|
|
231
|
+
* wird beim Tippen nachgeladen (POST {search, <searchWith-Felder>} -> [{id, name}]). Freie Eingabe
|
|
232
|
+
* bleibt immer erlaubt - die Directive schreibt nie ins Control, sie liefert nur `options()`.
|
|
233
|
+
*
|
|
234
|
+
* Bewusst über DOM-Events statt control.valueChanges: form-fields tauscht Controls bei Formular-
|
|
235
|
+
* ersetzung aus, die Directive überlebt dank `track field.id` - ein gegriffenes Control wäre alt.
|
|
236
|
+
*/
|
|
237
|
+
declare class XiriSuggestDirective {
|
|
238
|
+
field: _angular_core.InputSignal<XiriFormField>;
|
|
239
|
+
private search;
|
|
240
|
+
private remote;
|
|
241
|
+
/** Jeder next() startet die Remote-Kette neu und bricht die vorige ab. */
|
|
242
|
+
private typed$;
|
|
243
|
+
private dataService;
|
|
244
|
+
/** Das formGroup von form-fields; optional, damit die Directive auch an einem nackten Input läuft. */
|
|
245
|
+
private formGroupDir;
|
|
246
|
+
/** Was das Panel zeigt: lokale Treffer, dann Servertreffer, nach name dedupliziert. */
|
|
247
|
+
options: _angular_core.Signal<XiriFormFieldSelectOption[]>;
|
|
248
|
+
constructor();
|
|
249
|
+
onInput(event: Event): void;
|
|
250
|
+
/** Fokus richtet den lokalen Filter am sichtbaren Wert aus und verwirft bei geändertem Wert alte
|
|
251
|
+
* Servertreffer - ohne Request: form-fields fokussiert auch programmatisch. */
|
|
252
|
+
onFocus(event: Event): void;
|
|
253
|
+
private reset;
|
|
254
|
+
/** Aktuelle Werte der searchWith-Felder (flache Schlüssel, nur enabled), zur Request-Zeit gelesen. */
|
|
255
|
+
private contextValues;
|
|
256
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<XiriSuggestDirective, never>;
|
|
257
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<XiriSuggestDirective, "input[xiriSuggest]", ["xiriSuggest"], { "field": { "alias": "xiriSuggest"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
258
|
+
}
|
|
259
|
+
|
|
224
260
|
interface XiriButton {
|
|
225
261
|
text: string;
|
|
226
262
|
type: string;
|
|
@@ -353,6 +389,8 @@ interface XiriTableField {
|
|
|
353
389
|
editableOptionsUrl?: string;
|
|
354
390
|
editableOptionsSearch?: boolean;
|
|
355
391
|
editableSearchUrl?: string;
|
|
392
|
+
/** Go builder: cells of this column are { d: display, v: raw value } objects (see table/cell.ts); the value names the kind of v. */
|
|
393
|
+
cellObject?: 'string' | 'number';
|
|
356
394
|
}
|
|
357
395
|
|
|
358
396
|
/** A single table row: a map of column id → cell value (value shapes vary by column format). */
|
|
@@ -373,6 +411,8 @@ declare class XiriRawTableComponent {
|
|
|
373
411
|
dataSource: MatTableDataSource<XiriRawTableRow, _angular_material_paginator.MatPaginator>;
|
|
374
412
|
tableClass: _angular_core.WritableSignal<string>;
|
|
375
413
|
constructor();
|
|
414
|
+
cellText(row: XiriRawTableRow, column: XiriTableField): unknown;
|
|
415
|
+
cellLines(row: XiriRawTableRow, column: XiriTableField): unknown[];
|
|
376
416
|
private loadFields;
|
|
377
417
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<XiriRawTableComponent, never>;
|
|
378
418
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriRawTableComponent, "xiri-raw-table", never, { "settings": { "alias": "settings"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -412,6 +452,8 @@ interface XiriTreeMeta {
|
|
|
412
452
|
childCount: number;
|
|
413
453
|
dimmed?: boolean;
|
|
414
454
|
}
|
|
455
|
+
/** Resolves the value a tree column sorts its siblings by (see sortValue in cell.ts). */
|
|
456
|
+
type XiriTreeSortKey = (row: XiriTableRow) => string | number;
|
|
415
457
|
declare class XiriTableTreeService {
|
|
416
458
|
private localStorage;
|
|
417
459
|
private config;
|
|
@@ -428,8 +470,8 @@ declare class XiriTableTreeService {
|
|
|
428
470
|
get hasAddSub(): boolean;
|
|
429
471
|
/** Initialises the service from the table's tree settings. treeColumn falls back to firstColumnId. */
|
|
430
472
|
init(config: XiriTableTreeSettings, firstColumnId: string): void;
|
|
431
|
-
/** Builds the tree from flat rows and initialises the expand-state. */
|
|
432
|
-
build(rows: XiriTableRow[]): void;
|
|
473
|
+
/** Builds the tree from flat rows and initialises the expand-state. keyOf defaults to the raw tree-column value. */
|
|
474
|
+
build(rows: XiriTableRow[], keyOf?: XiriTreeSortKey): void;
|
|
433
475
|
/** Returns the visible rows: search projection when searching, otherwise the expand-state flatten. */
|
|
434
476
|
visibleRows(matches?: (row: XiriTableRow) => boolean): XiriTableRow[];
|
|
435
477
|
/**
|
|
@@ -480,6 +522,9 @@ declare class XiriTableInlineEditService {
|
|
|
480
522
|
searching: _angular_core.WritableSignal<boolean>;
|
|
481
523
|
displayedOptions: _angular_core.WritableSignal<EditableOption[]>;
|
|
482
524
|
private editingOriginalValue;
|
|
525
|
+
private editDraft;
|
|
526
|
+
private editStart;
|
|
527
|
+
private hasUrl;
|
|
483
528
|
private editSeq;
|
|
484
529
|
private editableOptionsSub;
|
|
485
530
|
private optionCache;
|
|
@@ -502,8 +547,14 @@ declare class XiriTableInlineEditService {
|
|
|
502
547
|
onDataUpdate: () => void;
|
|
503
548
|
onCallReturn: (result: unknown) => void;
|
|
504
549
|
isRowLive: (row: XiriTableRow) => boolean;
|
|
550
|
+
hasUrl: () => boolean;
|
|
505
551
|
}): void;
|
|
506
552
|
start(row: XiriTableRow, column: XiriTableField, skipSavingCheck?: boolean): void;
|
|
553
|
+
/** Value the inline editor shows: the draft of a cellObject cell while editing, else v, else the cell. */
|
|
554
|
+
editValue(row: XiriTableRow, column: XiriTableField): XiriTableCellValue;
|
|
555
|
+
setEditValue(row: XiriTableRow, column: XiriTableField, value: XiriTableCellValue): void;
|
|
556
|
+
/** compareWith for mat-select: option values are strings, v of a duration cell is a number. */
|
|
557
|
+
compareEditValue(a: unknown, b: unknown): boolean;
|
|
507
558
|
/** Sets up the search box + subscription for searchable inline-edit selects. */
|
|
508
559
|
private initSearch;
|
|
509
560
|
/** Runs the search: server-side POST when editableSearchUrl is set, otherwise local label filter. */
|
|
@@ -540,7 +591,12 @@ declare class XiriButtonlineComponent {
|
|
|
540
591
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriButtonlineComponent, "xiri-buttonline", never, { "settings": { "alias": "settings"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterData": { "alias": "filterData"; "required": false; "isSignal": true; }; }, { "result": "result"; }, never, never, true, never>;
|
|
541
592
|
}
|
|
542
593
|
|
|
543
|
-
|
|
594
|
+
/**
|
|
595
|
+
* Vertrag über alle "type"-Werte, die xiri-dyncomponent rendert. Einzige Quelle für die Union
|
|
596
|
+
* XiriDynDataType und den COMPONENT_CATALOG; xiri-go führt dieselbe Liste als core.ComponentTypes().
|
|
597
|
+
*/
|
|
598
|
+
declare const XIRI_COMPONENT_TYPES: readonly ["card", "buttonline", "table", "cardlink", "links", "form", "query", "stepper", "header", "list", "spacer", "container", "infopoint", "multiprogress", "progress", "imagetext", "tabs", "expansion", "infotext", "html", "stat", "empty-state", "timeline", "page-header", "section", "divider", "stat-grid", "multi-stat", "toolbar", "description-list", "barchart", "linechart", "piechart", "gaugechart", "bulletchart", "heatmap", "calendar", "tree", "sankey", "gantt", "status", "callout"];
|
|
599
|
+
type XiriDynDataType = typeof XIRI_COMPONENT_TYPES[number];
|
|
544
600
|
interface XiriDynData {
|
|
545
601
|
id?: number;
|
|
546
602
|
type: XiriDynDataType | (string & {});
|
|
@@ -733,11 +789,15 @@ declare class XiriTableComponent implements OnInit, OnDestroy {
|
|
|
733
789
|
private makeApiCall;
|
|
734
790
|
buttonReturn(event: XiriButtonResult): void;
|
|
735
791
|
private callReturn;
|
|
792
|
+
private onTableUpdate;
|
|
736
793
|
private refreshPanel;
|
|
737
794
|
private getSelectionIDs;
|
|
738
795
|
startInlineEdit(row: XiriTableRow, column: XiriTableField, skipSavingCheck?: boolean): void;
|
|
739
796
|
cancelInlineEdit(): void;
|
|
740
797
|
saveInlineEdit(row: XiriTableRow, column: XiriTableField): void;
|
|
798
|
+
editValue(row: XiriTableRow, column: XiriTableField): XiriTableCellValue;
|
|
799
|
+
setEditValue(row: XiriTableRow, column: XiriTableField, value: XiriTableCellValue): void;
|
|
800
|
+
compareEditValue: (a: unknown, b: unknown) => boolean;
|
|
741
801
|
isEditing(row: XiriTableRow, fieldId: string): boolean;
|
|
742
802
|
isSaving(row: XiriTableRow, fieldId: string): boolean;
|
|
743
803
|
onInlineEditKeydown(event: KeyboardEvent, row: XiriTableRow, column: XiriTableField): void;
|
|
@@ -751,6 +811,10 @@ declare class XiriTableComponent implements OnInit, OnDestroy {
|
|
|
751
811
|
pasteInput($event: ClipboardEvent, row: XiriTableRow, column: XiriTableField): false | null;
|
|
752
812
|
saveInputData(): void;
|
|
753
813
|
private getSortingDataAccessor;
|
|
814
|
+
/** Display part of a cell (see cell.ts); used by every cell template. */
|
|
815
|
+
cellText(row: XiriTableRow, column: XiriTableField): XiriTableCellValue;
|
|
816
|
+
/** Display lines of a text2/textn cell. */
|
|
817
|
+
cellLines(row: XiriTableRow, column: XiriTableField): XiriTableCellValue[];
|
|
754
818
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<XiriTableComponent, never>;
|
|
755
819
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriTableComponent, "xiri-table", never, { "dyncomponent": { "alias": "dyncomponent"; "required": false; "isSignal": true; }; "settings": { "alias": "settings"; "required": true; "isSignal": true; }; "filterData": { "alias": "filterData"; "required": false; "isSignal": true; }; }, { "clickedRow": "clickedRow"; }, never, never, true, never>;
|
|
756
820
|
}
|
|
@@ -772,6 +836,7 @@ declare class XiriFormComponent implements OnInit {
|
|
|
772
836
|
loadingButton: _angular_core.WritableSignal<XiriButton | null>;
|
|
773
837
|
done: _angular_core.WritableSignal<boolean>;
|
|
774
838
|
error: _angular_core.WritableSignal<string>;
|
|
839
|
+
fieldErrors: _angular_core.WritableSignal<Record<string, string> | null>;
|
|
775
840
|
private url;
|
|
776
841
|
buttons: XiriButton[];
|
|
777
842
|
private extra;
|
|
@@ -788,6 +853,12 @@ declare class XiriFormComponent implements OnInit {
|
|
|
788
853
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriFormComponent, "xiri-form", never, { "settings": { "alias": "settings"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
789
854
|
}
|
|
790
855
|
|
|
856
|
+
interface XiriFormChangeLike {
|
|
857
|
+
valid: boolean;
|
|
858
|
+
disabled?: boolean;
|
|
859
|
+
value: Record<string, unknown> | null;
|
|
860
|
+
}
|
|
861
|
+
|
|
791
862
|
type XiriDialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
792
863
|
interface XiriDialogSettings {
|
|
793
864
|
url?: string;
|
|
@@ -849,10 +920,7 @@ declare class XiriDialogComponent implements OnDestroy {
|
|
|
849
920
|
download(data: unknown, tab?: Window | null): void;
|
|
850
921
|
clickButton(button: XiriButton): void;
|
|
851
922
|
private startSend;
|
|
852
|
-
formChanged(event:
|
|
853
|
-
valid: boolean;
|
|
854
|
-
value: Record<string, unknown> | null;
|
|
855
|
-
}): void;
|
|
923
|
+
formChanged(event: XiriFormChangeLike): void;
|
|
856
924
|
ngOnDestroy(): void;
|
|
857
925
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<XiriDialogComponent, never>;
|
|
858
926
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriDialogComponent, "xiri-dialog", never, {}, {}, never, never, true, never>;
|
|
@@ -911,6 +979,7 @@ interface XiriQueryResultCount {
|
|
|
911
979
|
}
|
|
912
980
|
interface XiriQueryFormChangeEvent {
|
|
913
981
|
valid: boolean;
|
|
982
|
+
disabled?: boolean;
|
|
914
983
|
value: Record<string, unknown> | null;
|
|
915
984
|
pristine?: boolean;
|
|
916
985
|
}
|
|
@@ -1057,6 +1126,18 @@ declare class XiriDynComponentComponent {
|
|
|
1057
1126
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<XiriDynComponentComponent, "xiri-dyncomponent", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; "filterData": { "alias": "filterData"; "required": false; "isSignal": true; }; "dyncomponent": { "alias": "dyncomponent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1058
1127
|
}
|
|
1059
1128
|
|
|
1129
|
+
interface XiriCatalogEntry {
|
|
1130
|
+
readonly type: XiriDynDataType;
|
|
1131
|
+
readonly name: string;
|
|
1132
|
+
readonly category: string;
|
|
1133
|
+
readonly angular: boolean;
|
|
1134
|
+
readonly dyncomponent: boolean;
|
|
1135
|
+
readonly goBuilder: boolean;
|
|
1136
|
+
readonly route: string;
|
|
1137
|
+
readonly keywords: readonly string[];
|
|
1138
|
+
}
|
|
1139
|
+
declare const COMPONENT_CATALOG: readonly XiriCatalogEntry[];
|
|
1140
|
+
|
|
1060
1141
|
interface XiriCardlinkSettings {
|
|
1061
1142
|
link: string;
|
|
1062
1143
|
icon?: string;
|
|
@@ -1129,6 +1210,7 @@ interface XiriStepperStep {
|
|
|
1129
1210
|
}
|
|
1130
1211
|
interface XiriStepperFormChangeEvent {
|
|
1131
1212
|
valid: boolean;
|
|
1213
|
+
disabled?: boolean;
|
|
1132
1214
|
value: Record<string, unknown> | null;
|
|
1133
1215
|
pristine?: boolean;
|
|
1134
1216
|
}
|
|
@@ -2606,6 +2688,7 @@ interface XiriFormServiceData {
|
|
|
2606
2688
|
}
|
|
2607
2689
|
interface XiriFormServiceError {
|
|
2608
2690
|
error: string;
|
|
2691
|
+
fields?: Record<string, string>;
|
|
2609
2692
|
}
|
|
2610
2693
|
declare class XiriFormService {
|
|
2611
2694
|
private dataService;
|
|
@@ -2790,6 +2873,6 @@ declare class XiriDownloadService {
|
|
|
2790
2873
|
|
|
2791
2874
|
declare function provideXiriServices(config: Partial<XiriDataServiceConfig>): EnvironmentProviders;
|
|
2792
2875
|
|
|
2793
|
-
export { COLOR_CSS_VAR, DEFAULT_COMPARE, DEFAULT_PREDICATE, FALLBACK_COLORS, SafehtmlPipe, ThemeService, XIRI_PANEL_HOST, XiriAlertComponent, XiriBarChartComponent, XiriBreadcrumbComponent, XiriBulletChartComponent, XiriButtonComponent, XiriButtonlineComponent, XiriButtonstyleComponent, XiriCalendarComponent, XiriCalloutComponent, XiriCardComponent, XiriCardlinkComponent, XiriColsDirective, XiriDataService, XiriDataServiceConfig, XiriDescriptionListComponent, XiriDialogComponent, XiriDividerComponent, XiriDoneComponent, XiriDownloadService, XiriDynComponentComponent, XiriEchartsHostComponent, XiriEmptyStateComponent, XiriErrorComponent, XiriExpansionComponent, XiriExpansionPanelDirective, XiriFormComponent, XiriFormFieldsComponent, XiriFormService, XiriGanttComponent, XiriGaugeChartComponent, XiriHeaderComponent, XiriHeatmapComponent, XiriImagetextComponent, XiriInfopointComponent, XiriLineChartComponent, XiriLinksComponent, XiriListComponent, XiriLocalStorageService, XiriLocaleService, XiriMultiStatComponent, XiriMultiprogressComponent, XiriPageHeaderComponent, XiriPieChartComponent, XiriProgressComponent, XiriQueryComponent, XiriRawTableComponent, XiriResponseHandlerService, XiriSankeyComponent, XiriSearchComponent, XiriSectionComponent, XiriSelectDirective, XiriSessionStorageService, XiriSidenavComponent, XiriSidepanelComponent, XiriSidepanelRef, XiriSidepanelService, XiriSkeletonComponent, XiriSnackbarService, XiriStatComponent, XiriStatGridComponent, XiriStatusComponent, XiriStepperComponent, XiriTableComponent, XiriTabsComponent, XiriTimelineComponent, XiriToolbarComponent, XiriTreeComponent, XiriUrlPipe, colsToClasses, createPanelLoader, defaultXiriDataServiceConfig, escapeHtml, notifyThemeChanged, provideXiriServices, resolveColor };
|
|
2794
|
-
export type { ThemeMode, XiriAlertConfig, XiriBarChartBar, XiriBarChartMode, XiriBarChartPoint, XiriBarChartSegment, XiriBarChartSettings, XiriBreadcrumbItem, XiriBulletChartSettings, XiriButton, XiriButtonResponse, XiriButtonResult, XiriButtonlineSettings, XiriCalendarCell, XiriCalendarSettings, XiriCalloutSettings, XiriCalloutTone, XiriCardSettings, XiriCardlinkSettings, XiriColor, XiriCols, XiriDescriptionListItem, XiriDescriptionListSettings, XiriDialogResponse, XiriDialogSettings, XiriDialogSize, XiriDividerSettings, XiriDynData, XiriDynDataType, XiriEchartsCallbackParams, XiriEchartsClick, XiriEchartsRenderItemApi, XiriEchartsTooltipParams, XiriEmptyStateSettings, XiriExpansionPanelSettings, XiriExpansionSettings, XiriExtendedColor, XiriFormField, XiriFormFieldCondition, XiriFormFieldConditionOperator, XiriFormFieldDisplay, XiriFormFieldSelectOption, XiriFormServiceData, XiriFormServiceError, XiriFormServiceReturn, XiriFormSettings, XiriFormValidator, XiriGanttSettings, XiriGanttTask, XiriGaugeChartSettings, XiriHeaderSettings, XiriHeatmapCell, XiriHeatmapSettings, XiriImagetextSettings, XiriInfopointSettings, XiriLanguage, XiriLanguageDefinition, XiriLineChartLine, XiriLineChartSettings, XiriLinksSettings, XiriListItem, XiriListSection, XiriListSettings, XiriMultiStatSettings, XiriMultiprogressItem, XiriMultiprogressSettings, XiriNavigationField, XiriPageHeaderSettings, XiriPanelHost, XiriPieChartSettings, XiriPieChartSlice, XiriProgressSettings, XiriQueryActiveFilter, XiriQueryFormChangeEvent, XiriQueryResultCount, XiriQuerySettings, XiriRawTableRow, XiriRawTableSettings, XiriSankeyLink, XiriSankeyNode, XiriSankeySettings, XiriSectionSettings, XiriSelectCompare, XiriSelectPredicate, XiriSidebarSettings, XiriSidepanelConfig, XiriSkeletonType, XiriSnackbarType, XiriStatGridSettings, XiriStatSettings, XiriStatTrend, XiriStatusSettings, XiriStatusTone, XiriStatusVariant, XiriStepperFormChangeEvent, XiriStepperResponse, XiriStepperSettings, XiriStepperStep, XiriTabSettings, XiriTableCellValue, XiriTableEmptyState, XiriTableField, XiriTableOptions, XiriTableResponse, XiriTableRow, XiriTableSettings, XiriTableTreeSettings, XiriTabsSettings, XiriTagChip, XiriThemeColor, XiriTimelineItem, XiriTimelineSettings, XiriToolbarSearchConfig, XiriToolbarSettings, XiriTreeNode, XiriTreeSettings, XiriUrl, XiriValidationMessages };
|
|
2876
|
+
export { COLOR_CSS_VAR, COMPONENT_CATALOG, DEFAULT_COMPARE, DEFAULT_PREDICATE, FALLBACK_COLORS, SafehtmlPipe, ThemeService, XIRI_COMPONENT_TYPES, XIRI_PANEL_HOST, XiriAlertComponent, XiriBarChartComponent, XiriBreadcrumbComponent, XiriBulletChartComponent, XiriButtonComponent, XiriButtonlineComponent, XiriButtonstyleComponent, XiriCalendarComponent, XiriCalloutComponent, XiriCardComponent, XiriCardlinkComponent, XiriColsDirective, XiriDataService, XiriDataServiceConfig, XiriDescriptionListComponent, XiriDialogComponent, XiriDividerComponent, XiriDoneComponent, XiriDownloadService, XiriDynComponentComponent, XiriEchartsHostComponent, XiriEmptyStateComponent, XiriErrorComponent, XiriExpansionComponent, XiriExpansionPanelDirective, XiriFormComponent, XiriFormFieldsComponent, XiriFormService, XiriGanttComponent, XiriGaugeChartComponent, XiriHeaderComponent, XiriHeatmapComponent, XiriImagetextComponent, XiriInfopointComponent, XiriLineChartComponent, XiriLinksComponent, XiriListComponent, XiriLocalStorageService, XiriLocaleService, XiriMultiStatComponent, XiriMultiprogressComponent, XiriPageHeaderComponent, XiriPieChartComponent, XiriProgressComponent, XiriQueryComponent, XiriRawTableComponent, XiriResponseHandlerService, XiriSankeyComponent, XiriSearchComponent, XiriSectionComponent, XiriSelectDirective, XiriSessionStorageService, XiriSidenavComponent, XiriSidepanelComponent, XiriSidepanelRef, XiriSidepanelService, XiriSkeletonComponent, XiriSnackbarService, XiriStatComponent, XiriStatGridComponent, XiriStatusComponent, XiriStepperComponent, XiriSuggestDirective, XiriTableComponent, XiriTabsComponent, XiriTimelineComponent, XiriToolbarComponent, XiriTreeComponent, XiriUrlPipe, colsToClasses, createPanelLoader, defaultXiriDataServiceConfig, escapeHtml, notifyThemeChanged, provideXiriServices, resolveColor };
|
|
2877
|
+
export type { ThemeMode, XiriAlertConfig, XiriBarChartBar, XiriBarChartMode, XiriBarChartPoint, XiriBarChartSegment, XiriBarChartSettings, XiriBreadcrumbItem, XiriBulletChartSettings, XiriButton, XiriButtonResponse, XiriButtonResult, XiriButtonlineSettings, XiriCalendarCell, XiriCalendarSettings, XiriCalloutSettings, XiriCalloutTone, XiriCardSettings, XiriCardlinkSettings, XiriCatalogEntry, XiriColor, XiriCols, XiriDescriptionListItem, XiriDescriptionListSettings, XiriDialogResponse, XiriDialogSettings, XiriDialogSize, XiriDividerSettings, XiriDynData, XiriDynDataType, XiriEchartsCallbackParams, XiriEchartsClick, XiriEchartsRenderItemApi, XiriEchartsTooltipParams, XiriEmptyStateSettings, XiriExpansionPanelSettings, XiriExpansionSettings, XiriExtendedColor, XiriFormField, XiriFormFieldCondition, XiriFormFieldConditionOperator, XiriFormFieldDisplay, XiriFormFieldSelectOption, XiriFormServiceData, XiriFormServiceError, XiriFormServiceReturn, XiriFormSettings, XiriFormValidator, XiriGanttSettings, XiriGanttTask, XiriGaugeChartSettings, XiriHeaderSettings, XiriHeatmapCell, XiriHeatmapSettings, XiriImagetextSettings, XiriInfopointSettings, XiriLanguage, XiriLanguageDefinition, XiriLineChartLine, XiriLineChartSettings, XiriLinksSettings, XiriListItem, XiriListSection, XiriListSettings, XiriMultiStatSettings, XiriMultiprogressItem, XiriMultiprogressSettings, XiriNavigationField, XiriPageHeaderSettings, XiriPanelHost, XiriPieChartSettings, XiriPieChartSlice, XiriProgressSettings, XiriQueryActiveFilter, XiriQueryFormChangeEvent, XiriQueryResultCount, XiriQuerySettings, XiriRawTableRow, XiriRawTableSettings, XiriSankeyLink, XiriSankeyNode, XiriSankeySettings, XiriSectionSettings, XiriSelectCompare, XiriSelectPredicate, XiriSidebarSettings, XiriSidepanelConfig, XiriSkeletonType, XiriSnackbarType, XiriStatGridSettings, XiriStatSettings, XiriStatTrend, XiriStatusSettings, XiriStatusTone, XiriStatusVariant, XiriStepperFormChangeEvent, XiriStepperResponse, XiriStepperSettings, XiriStepperStep, XiriTabSettings, XiriTableCellValue, XiriTableEmptyState, XiriTableField, XiriTableOptions, XiriTableResponse, XiriTableRow, XiriTableSettings, XiriTableTreeSettings, XiriTabsSettings, XiriTagChip, XiriThemeColor, XiriTimelineItem, XiriTimelineSettings, XiriToolbarSearchConfig, XiriToolbarSettings, XiriTreeNode, XiriTreeSettings, XiriUrl, XiriValidationMessages };
|
|
2795
2878
|
//# sourceMappingURL=xiriframework-xiri-ng.d.ts.map
|