@xiriframework/xiri-ng 0.2.44 → 0.2.46
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 +1251 -1024
- package/fesm2022/xiriframework-xiri-ng.mjs.map +1 -1
- package/package.json +10 -12
- package/skills/xiri-ng-expert/SKILL.md +2 -0
- package/skills/xiri-ng-expert/references/form-fields.md +16 -1
- package/types/xiriframework-xiri-ng.d.ts +377 -263
- package/types/xiriframework-xiri-ng.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xiriframework/xiri-ng",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.46",
|
|
4
4
|
"description": "Angular UI component library for the Xiri Framework",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -20,17 +20,15 @@
|
|
|
20
20
|
"tslib": "^2.8.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@angular/
|
|
24
|
-
"@angular/
|
|
25
|
-
"@angular/
|
|
26
|
-
"@angular/
|
|
27
|
-
"@angular/
|
|
28
|
-
"@angular/
|
|
29
|
-
"@angular/
|
|
30
|
-
"@angular/
|
|
31
|
-
"@angular/
|
|
32
|
-
"@angular/forms": "^21.2",
|
|
33
|
-
"@angular/material-date-fns-adapter": "^21.2",
|
|
23
|
+
"@angular/compiler": "^22.0",
|
|
24
|
+
"@angular/platform-browser": "^22.0",
|
|
25
|
+
"@angular/router": "^22.0",
|
|
26
|
+
"@angular/common": "^22.0",
|
|
27
|
+
"@angular/core": "^22.0",
|
|
28
|
+
"@angular/material": "^22.0",
|
|
29
|
+
"@angular/cdk": "^22.0",
|
|
30
|
+
"@angular/forms": "^22.0",
|
|
31
|
+
"@angular/material-date-fns-adapter": "^22.0",
|
|
34
32
|
"date-fns": "^4.3",
|
|
35
33
|
"@date-fns/tz": "^1.5",
|
|
36
34
|
"material-symbols": ">=0.44",
|
|
@@ -249,6 +249,8 @@ buttons: XiriButton[] = [
|
|
|
249
249
|
|
|
250
250
|
`action`: `'api' | 'dialog' | 'download' | 'link' | 'back' | 'close' | 'return' | 'menu' | …`.
|
|
251
251
|
|
|
252
|
+
**Navigations-Links mit Query-String:** `action: 'link'` sowie alle URL-basierten Navigations-Links (`cardlink.link`, `links`/`list`/`sidenav`/`breadcrumb`-Items, Tabellen-Link-Felder) akzeptieren URLs mit Query-String, z. B. `/Admin/Devices/Table?config=98`. Die interne `xiriUrl`-Pipe wandelt den String in eine `UrlTree`; der `?…`-Teil wird korrekt zu Route-Query-Params geparst (vorher wurde `?` als literales Segment percent-encodiert → 404). Kein separates `queryParams`-Feld nötig — alles steht im URL-String. Gilt **nicht** für `action: 'href'` (externer Link, roher String).
|
|
253
|
+
|
|
252
254
|
**Selbst-pollender Button + Button-Patch:** Enthält die Antwort (api oder Dialog) `poll` (ms) + `pollUrl`, pollt der Button selbsttätig den Status und zeigt Spinner/Countdown bzw. `text` im Button, bis eine Antwort ohne `poll` kommt. Jede Antwort darf zudem ein `button`-Objekt (`text/color/icon/type/hint/disabled`) mitschicken, das den Button verändert (z. B. am Ende „Erledigt ✓"/grün/disabled). Backend: `response.NewReturnPoll(...).WithText(...).WithButton(...)`. Details: `references/components.md`.
|
|
253
255
|
|
|
254
256
|
`data?: Record<string, any>` — Custom-Payload, das beim Klick mit `filterData` gemerged in den POST-Body geht (für `action: 'api'` / `'download'`). Der Backend-Builder (`xiri-go`) setzt das via `button.WithData(...)`. Beispiel: CSV-Download-Button hat `data: { _csv: true }`, das Backend liest das Flag in `LoadFilterData` und schaltet auf CSV-Output.
|
|
@@ -219,10 +219,12 @@ Array = **UND**-Verknüpfung:
|
|
|
219
219
|
|
|
220
220
|
```typescript
|
|
221
221
|
export interface XiriFormFieldSelectOption {
|
|
222
|
-
id: number;
|
|
222
|
+
id: number | string;
|
|
223
223
|
name: string;
|
|
224
224
|
disabled?: boolean;
|
|
225
225
|
color?: XiriColor;
|
|
226
|
+
isGroup?: boolean; // markiert einen Gruppen-/Elternknoten (treeselect)
|
|
227
|
+
children?: XiriFormFieldSelectOption[]; // verschachtelte Optionen → Hierarchie für treeselect
|
|
226
228
|
}
|
|
227
229
|
```
|
|
228
230
|
|
|
@@ -237,6 +239,19 @@ Inline (statisch):
|
|
|
237
239
|
]}
|
|
238
240
|
```
|
|
239
241
|
|
|
242
|
+
Hierarchisch (`treeselect` — Optionen über `children` verschachteln; auswählbar sind die Blattknoten, `isGroup` markiert Elternknoten):
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
{ id: 'region', type: 'treeselect', name: 'Region',
|
|
246
|
+
list: [
|
|
247
|
+
{ id: 'eu', name: 'Europa', isGroup: true, children: [
|
|
248
|
+
{ id: 'at', name: 'Österreich' },
|
|
249
|
+
{ id: 'de', name: 'Deutschland' },
|
|
250
|
+
]},
|
|
251
|
+
{ id: 'us', name: 'USA' },
|
|
252
|
+
]}
|
|
253
|
+
```
|
|
254
|
+
|
|
240
255
|
Per Backend (`model` oder `select` mit `url`):
|
|
241
256
|
|
|
242
257
|
```typescript
|