@praxisui/list 8.0.0-beta.3 → 8.0.0-beta.31

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/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import * as rxjs from 'rxjs';
2
2
  import { BehaviorSubject, Observable } from 'rxjs';
3
3
  import * as i0 from '@angular/core';
4
- import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck, Provider } from '@angular/core';
4
+ import { OnInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ChangeDetectorRef, DoCheck, AfterViewInit, Provider } from '@angular/core';
5
5
  import { MatSelectionListChange } from '@angular/material/list';
6
+ import { MatPaginatorSelectConfig, PageEvent } from '@angular/material/paginator';
6
7
  import { FormGroup, FormControl } from '@angular/forms';
7
8
  import * as _praxisui_core from '@praxisui/core';
8
- import { JsonLogicExpression, LocalizationConfig, AiCapability, RichBlockNode, GlobalActionCatalogEntry, SurfaceOpenPayload, RichPresenterNode, RichComposeNode, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog } from '@praxisui/core';
9
- import { BaseAiAdapter, PatchResult } from '@praxisui/ai';
9
+ import { PraxisExportFormat, PraxisExportScope, PraxisRuntimeConditionalEffectRule, JsonLogicExpression, GlobalActionRef, LocalizationConfig, AiCapability, PraxisDataQueryContext, RichBlockNode, GlobalActionCatalogEntry, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, RichPresenterNode, RichComposeNode, ComponentDocMeta, AiCapabilityCategory, AiValueKind, AiCapabilityCatalog, ComponentAuthoringManifest } from '@praxisui/core';
10
+ import { BaseAiAdapter, AiResponseCompileResult, PatchResult, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
10
11
  import { SettingsValueProvider } from '@praxisui/settings-panel';
11
12
 
12
13
  type TemplateType = 'text' | 'icon' | 'image' | 'chip' | 'rating' | 'currency' | 'date' | 'html' | 'slot' | 'metric' | 'compose' | 'component';
@@ -117,6 +118,31 @@ interface ListExpansionSectionDef {
117
118
  }
118
119
  type ListTemplatingSlot = 'leading' | 'primary' | 'secondary' | 'meta' | 'trailing' | 'identity' | 'balance' | 'limit' | 'risk' | 'alerts' | 'owner';
119
120
  type ListRowLayoutSlot = ListTemplatingSlot | 'actions' | 'expand';
121
+ interface ListItemStyleEffect {
122
+ kind?: 'item-style';
123
+ class?: string;
124
+ style?: string;
125
+ border?: string;
126
+ background?: string;
127
+ }
128
+ interface ListSlotOverrideEffect {
129
+ kind?: 'slot-override';
130
+ template?: TemplateDef;
131
+ class?: string;
132
+ style?: string;
133
+ hide?: boolean;
134
+ }
135
+ interface ListItemStyleRule extends Omit<PraxisRuntimeConditionalEffectRule<ListItemStyleEffect>, 'condition' | 'effects'>, ListItemStyleEffect {
136
+ id: string;
137
+ condition?: JsonLogicExpression | null;
138
+ effects?: ListItemStyleEffect[];
139
+ }
140
+ interface ListSlotOverrideRule extends Omit<PraxisRuntimeConditionalEffectRule<ListSlotOverrideEffect>, 'condition' | 'effects'>, ListSlotOverrideEffect {
141
+ id: string;
142
+ slot: ListTemplatingSlot;
143
+ condition?: JsonLogicExpression | null;
144
+ effects?: ListSlotOverrideEffect[];
145
+ }
120
146
  interface PraxisListConfig {
121
147
  id?: string;
122
148
  dataSource?: {
@@ -176,6 +202,7 @@ interface PraxisListConfig {
176
202
  compareBy?: string;
177
203
  return?: 'value' | 'item' | 'id';
178
204
  };
205
+ export?: PraxisListExportConfig;
179
206
  interaction?: {
180
207
  expandable?: boolean;
181
208
  expandTrigger?: 'row' | 'icon' | 'row+icon';
@@ -210,23 +237,8 @@ interface PraxisListConfig {
210
237
  };
211
238
  };
212
239
  rules?: {
213
- itemStyles?: Array<{
214
- id: string;
215
- condition?: JsonLogicExpression | null;
216
- class?: string;
217
- style?: string;
218
- border?: string;
219
- background?: string;
220
- }>;
221
- slotOverrides?: Array<{
222
- id: string;
223
- slot: ListTemplatingSlot;
224
- condition?: JsonLogicExpression | null;
225
- template?: TemplateDef;
226
- class?: string;
227
- style?: string;
228
- hide?: boolean;
229
- }>;
240
+ itemStyles?: ListItemStyleRule[];
241
+ slotOverrides?: ListSlotOverrideRule[];
230
242
  };
231
243
  expansion?: {
232
244
  sections?: ListExpansionSectionDef[];
@@ -277,8 +289,7 @@ interface PraxisListConfig {
277
289
  buttonVariant?: 'stroked' | 'raised' | 'flat';
278
290
  showIf?: JsonLogicExpression | null;
279
291
  emitPayload?: 'item' | 'id' | 'value';
280
- command?: string;
281
- globalPayload?: any;
292
+ globalAction?: GlobalActionRef;
282
293
  emitLocal?: boolean;
283
294
  showLoading?: boolean;
284
295
  placement?: 'actions' | 'trailing';
@@ -310,9 +321,22 @@ interface PraxisListConfig {
310
321
  itemClick?: string;
311
322
  actionClick?: string;
312
323
  selectionChange?: string;
324
+ exportAction?: string;
313
325
  loaded?: string;
314
326
  };
315
327
  }
328
+ interface PraxisListExportConfig {
329
+ enabled?: boolean;
330
+ formats?: PraxisExportFormat[];
331
+ general?: {
332
+ scope?: PraxisExportScope;
333
+ includeHeaders?: boolean;
334
+ maxRows?: number;
335
+ defaultFileName?: string;
336
+ includeFields?: string[] | 'all';
337
+ applyFormatting?: boolean;
338
+ };
339
+ }
316
340
  interface ListItemEvent {
317
341
  item: any;
318
342
  index: number;
@@ -365,8 +389,15 @@ declare class ListDataService<T = any> {
365
389
  nextPage(): void;
366
390
  prevPage(): void;
367
391
  setPageSize(size: number): void;
392
+ setPage(pageNumber: number, pageSize: number): void;
368
393
  setSort(sort: string[]): void;
369
394
  setQuery(q: Record<string, any>): void;
395
+ getPageStateSnapshot(): {
396
+ pageNumber: number;
397
+ pageSize: number;
398
+ sort?: string[];
399
+ };
400
+ getQuerySnapshot(): Record<string, any>;
370
401
  groupedStream(): Observable<ListSection<T>[]>;
371
402
  private buildConfigSignature;
372
403
  private buildLocalDataSignature;
@@ -381,17 +412,32 @@ declare class ListDataService<T = any> {
381
412
  declare class ListAiAdapter extends BaseAiAdapter<PraxisListConfig> {
382
413
  private list;
383
414
  componentName: string;
415
+ componentId: string;
416
+ componentType: string;
384
417
  constructor(list: PraxisList);
385
418
  getCurrentConfig(): PraxisListConfig;
386
419
  getCapabilities(): AiCapability[];
387
420
  getRuntimeState(): Record<string, any>;
421
+ getDataProfile(): Record<string, any>;
422
+ getSchemaFields(): Record<string, any>[];
423
+ getAuthoringContext(): Record<string, any>;
388
424
  createSnapshot(): PraxisListConfig;
425
+ compileAiResponse(response: Record<string, unknown>): AiResponseCompileResult | null;
389
426
  restoreSnapshot(snapshot: PraxisListConfig): Promise<void>;
390
427
  applyPatch(patch: Partial<PraxisListConfig>, _intent?: string): Promise<PatchResult>;
391
428
  private applyConfig;
392
429
  private smartMergeListConfig;
393
430
  private sanitizePatch;
394
431
  private cloneConfig;
432
+ private coerceComponentEditPlanOperations;
433
+ private coerceOperationInput;
434
+ private applyManifestEffects;
435
+ private resolveSetValue;
436
+ private mergeAtPath;
437
+ private setAtPath;
438
+ private readAtPath;
439
+ private asRecord;
440
+ private trimToUndefined;
395
441
  }
396
442
 
397
443
  interface ListRowLayoutColumnViewModel {
@@ -404,6 +450,11 @@ interface ListRowLayoutColumnViewModel {
404
450
  class?: string;
405
451
  style?: string;
406
452
  }
453
+ interface ListCardDetailSlotViewModel {
454
+ slot: ListTemplatingSlot;
455
+ label: string;
456
+ node: Record<string, any>;
457
+ }
407
458
  declare class PraxisList implements OnInit, OnChanges, OnDestroy {
408
459
  private static nextSkinScopeId;
409
460
  private customizationEnabled;
@@ -411,12 +462,15 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
411
462
  config: PraxisListConfig;
412
463
  listId: string;
413
464
  componentInstanceId?: string;
465
+ configPersistenceStrategy: 'local-first' | 'input-first';
466
+ queryContext?: PraxisDataQueryContext | null;
414
467
  form?: FormGroup | null;
415
468
  set enableCustomization(value: boolean);
416
469
  get enableCustomization(): boolean;
417
470
  itemClick: EventEmitter<ListItemEvent>;
418
471
  actionClick: EventEmitter<ListActionEvent>;
419
472
  selectionChange: EventEmitter<ListSelectionEvent>;
473
+ exportAction: EventEmitter<any>;
420
474
  items$: rxjs.Observable<any[]>;
421
475
  sections$: rxjs.Observable<ListSection<any>[]>;
422
476
  loading$: rxjs.Observable<boolean>;
@@ -427,6 +481,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
427
481
  sort?: string[];
428
482
  }>;
429
483
  private lastQuery;
484
+ private lastRuntimeQueryContextSignature;
430
485
  private search$;
431
486
  get layoutLines(): number;
432
487
  boundControl: FormControl<unknown | unknown[] | null>;
@@ -435,6 +490,13 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
435
490
  inlineCss: string;
436
491
  readonly cspNonce: string | null;
437
492
  aiAdapter: ListAiAdapter;
493
+ aiAssistantOpen: boolean;
494
+ aiAssistantPrompt: string;
495
+ aiAssistantViewState: PraxisAssistantTurnViewState | null;
496
+ aiAssistantLayout: PraxisAssistantShellLayout;
497
+ readonly aiAssistantLabels: Partial<PraxisAssistantShellLabels>;
498
+ private aiAssistantController;
499
+ private aiAssistantStateSubscription;
438
500
  private readonly storage;
439
501
  private readonly skin;
440
502
  private inferredForPath;
@@ -448,6 +510,14 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
448
510
  private readonly logger;
449
511
  private readonly jsonLogic;
450
512
  private readonly i18n;
513
+ private readonly collectionExport;
514
+ private readonly paginatorIntl;
515
+ private readonly snackBar;
516
+ private readonly aiApi;
517
+ private readonly assistantSessions;
518
+ private readonly aiTurnOrchestrator;
519
+ private readonly aiAssistantSessionEffect;
520
+ readonly paginatorSelectConfig: MatPaginatorSelectConfig;
451
521
  private readonly logContext;
452
522
  private readonly route;
453
523
  private readonly globalActions;
@@ -464,6 +534,8 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
464
534
  private readonly destroy$;
465
535
  actionLoadingState: Record<string, boolean>;
466
536
  private expandedItemKeys;
537
+ exportBusy: boolean;
538
+ exportStatusMessage: string;
467
539
  private readonly listRuleContextOptions;
468
540
  ngOnInit(): void;
469
541
  ngOnChanges(changes: SimpleChanges): void;
@@ -495,6 +567,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
495
567
  itemRuleStyle(item: any): string | undefined;
496
568
  rowLayoutItemStyle(item: any): string | undefined;
497
569
  rowLayoutItemClass(item: any): string | undefined;
570
+ private resolveItemStyleEffect;
571
+ private resolveSlotOverrideEffect;
572
+ private firstConditionalEffect;
498
573
  hasRowLayoutGrid(): boolean;
499
574
  rowLayoutColumns(): ListRowLayoutColumnViewModel[];
500
575
  rowLayoutTrackColumn(index: number, column: ListRowLayoutColumnViewModel): string;
@@ -503,6 +578,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
503
578
  rowLayoutColumnClass(column: ListRowLayoutColumnViewModel): string | undefined;
504
579
  rowLayoutColumnStyle(column: ListRowLayoutColumnViewModel): string | undefined;
505
580
  rowLayoutSlot(item: any, slot: string): Record<string, any> | null;
581
+ cardDetailSlots(item: any): ListCardDetailSlotViewModel[];
582
+ private humanizeSlotLabel;
583
+ private hasDisplayableNodeValue;
506
584
  rowLayoutHasSlot(slot: ListRowLayoutSlot): boolean;
507
585
  rowLayoutImageAlt(slot: string): string;
508
586
  simpleRichContentNodes(node: Record<string, any> | null | undefined, options?: {
@@ -561,8 +639,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
561
639
  buttonVariant?: "stroked" | "raised" | "flat";
562
640
  showIf?: JsonLogicExpression | null;
563
641
  emitPayload?: "item" | "id" | "value";
564
- command?: string;
565
- globalPayload?: any;
642
+ globalAction?: GlobalActionRef;
566
643
  emitLocal?: boolean;
567
644
  showLoading?: boolean;
568
645
  placement?: "actions" | "trailing";
@@ -582,16 +659,65 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
582
659
  expansionRegionAriaLabel(item: any): string;
583
660
  emptyStateLabel(): string;
584
661
  onActionClick(ev: MouseEvent, actionId: string, item: any, index: number): Promise<void>;
585
- private isGlobalCommand;
586
662
  private resolveActionPayload;
587
663
  private resolveTemplate;
664
+ private isDeferredTemplateExpressionKey;
588
665
  private resolveStringTemplate;
589
666
  private lookup;
590
667
  onSelectionChange(_change: MatSelectionListChange): void;
668
+ listExportFormats(): PraxisExportFormat[];
669
+ exportIcon(format: PraxisExportFormat): string;
670
+ onExportAction(format: PraxisExportFormat): Promise<void>;
671
+ private buildListExportRequest;
672
+ private resolveEffectiveExportScope;
673
+ private buildListExportSelection;
674
+ private resolveListExportLoadedItems;
675
+ private buildListExportFields;
676
+ private collectListExportFieldKeys;
677
+ private normalizeListSelectionValue;
678
+ private resolveListSelectionKey;
679
+ private hasListExportQuery;
680
+ private getListQuerySnapshot;
681
+ private getListPageStateSnapshot;
682
+ private resolveListExportTotal;
683
+ private parseListExportSort;
684
+ private downloadExportResult;
685
+ private triggerExportDownload;
686
+ private showExportFeedback;
687
+ private resolveExportFileName;
688
+ private getExportFileExtension;
689
+ private getExportMimeType;
690
+ private cloneForExportEvent;
591
691
  openConfigEditor(): void;
692
+ openAiAssistant(): void;
693
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
694
+ closeAiAssistant(): void;
695
+ onAiAssistantPromptChange(prompt: string): void;
696
+ onAiAssistantSubmit(prompt: string): void;
697
+ onAiAssistantApply(): void;
698
+ onAiAssistantRetry(): void;
699
+ onAiAssistantCancel(): void;
700
+ onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
701
+ onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
702
+ onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
703
+ onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
704
+ private initializeAiAssistantController;
705
+ private buildAiAssistantContextItems;
706
+ private buildAiAssistantContextSnapshot;
707
+ private syncAiAssistantSession;
708
+ private hasAiAssistantSessionState;
709
+ private resolveAiAssistantSessionId;
710
+ private resolveAiAssistantOwnerId;
711
+ private resolveAiAssistantRouteKey;
712
+ private resolveAiAssistantSummary;
713
+ private resolveAiAssistantBadge;
714
+ private resolveAiAssistantIcon;
592
715
  nextPage(): void;
593
716
  prevPage(): void;
594
717
  setPageSize(ps: number): void;
718
+ onPageChange(event: PageEvent): void;
719
+ listPageSizeOptions(): number[];
720
+ remoteTotalLabel(total: number | null | undefined): string;
595
721
  onSortChange(val: string): void;
596
722
  onSearchInput(val: string): void;
597
723
  sortOptionValue(op: any): string;
@@ -604,8 +730,12 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
604
730
  pageNumber: number;
605
731
  pageSize: number;
606
732
  }, total: number): number;
733
+ private syncPaginatorIntl;
734
+ private formatPaginatorRangeLabel;
735
+ private isEnglishLocaleValue;
607
736
  applyConfigFromAdapter(newCfg: PraxisListConfig): void;
608
737
  private applyAuthoringPayload;
738
+ private applyRuntimeQueryContext;
609
739
  private buildListEditorRuntimeContext;
610
740
  private executeListEditorApplyPlan;
611
741
  private storageKey;
@@ -615,6 +745,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
615
745
  private executeSchemaInferenceForPlan;
616
746
  private evalSlot;
617
747
  private resolveSlotTemplate;
748
+ private resolveLocalDataFallbackTemplate;
749
+ private isLocalDataPreviewItem;
750
+ private firstPresentItemKey;
618
751
  private evaluateTemplateNode;
619
752
  private buildUnsupportedComposeNode;
620
753
  private buildRuntimeComponentView;
@@ -669,19 +802,19 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
669
802
  private mergePlainObjects;
670
803
  private buildActionLoadingKey;
671
804
  private ensureActionItemObjectId;
672
- private warnGlobalCommandUnavailableOnce;
673
805
  private buildLogOptions;
674
806
  private toggleExpanded;
675
807
  private syncExpansionState;
676
808
  private itemExpansionKey;
677
- private t;
809
+ t(key: string, fallback: string): string;
810
+ private tWithLocale;
678
811
  private ensureExpansionItemObjectId;
679
812
  private sanitizeDomId;
680
813
  private evaluateExpansionExpr;
681
814
  private normalizeExpansionItems;
682
815
  private normalizeKeyValueItems;
683
816
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisList, never>;
684
- static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; }, never, never, true, never>;
817
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisList, "praxis-list", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": true; }; "componentInstanceId": { "alias": "componentInstanceId"; "required": false; }; "configPersistenceStrategy": { "alias": "configPersistenceStrategy"; "required": false; }; "queryContext": { "alias": "queryContext"; "required": false; }; "form": { "alias": "form"; "required": false; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; }; }, { "itemClick": "itemClick"; "actionClick": "actionClick"; "selectionChange": "selectionChange"; "exportAction": "exportAction"; }, never, never, true, never>;
685
818
  static ngAcceptInputType_enableCustomization: unknown;
686
819
  }
687
820
 
@@ -1294,18 +1427,24 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1294
1427
  ensureConfirmation(action: any): void;
1295
1428
  setConfirmationField(action: any, field: 'title' | 'message', value: string): void;
1296
1429
  applyConfirmationPreset(action: any, type?: 'danger' | 'warning' | 'info' | ''): void;
1297
- isGlobalPayloadInvalid(payload: any): boolean;
1298
- applyGlobalPayloadExample(action: any): void;
1299
- globalPayloadExampleHint(action: any): string;
1300
- globalPayloadSchemaTooltip(action: any): string;
1430
+ applyGlobalActionPayloadExample(action: any): void;
1431
+ globalActionPayloadExampleHint(action: any): string;
1432
+ globalActionPayloadSchemaTooltip(action: any): string;
1433
+ onActionGlobalActionIdChange(action: any, actionId: string): void;
1434
+ getGlobalActionPayloadText(action: {
1435
+ globalAction?: GlobalActionRef;
1436
+ }): string;
1437
+ onGlobalActionPayloadTextChange(action: any, value: string): void;
1438
+ isGlobalActionPayloadInvalid(action: {
1439
+ globalAction?: GlobalActionRef;
1440
+ }): boolean;
1301
1441
  isSurfaceOpenCommand(action: {
1302
- command?: string;
1442
+ globalAction?: GlobalActionRef;
1303
1443
  }): boolean;
1304
- getSurfaceOpenGlobalPayload(action: {
1305
- command?: string;
1306
- globalPayload?: string;
1444
+ getSurfaceOpenGlobalActionPayload(action: {
1445
+ globalAction?: GlobalActionRef;
1307
1446
  }): SurfaceOpenPayload;
1308
- onSurfaceOpenGlobalPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1447
+ onSurfaceOpenGlobalActionPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1309
1448
  onGlobalActionSelected(id?: string): void;
1310
1449
  private addGlobalActionFromCatalog;
1311
1450
  metaTypeConfig(type?: string): {
@@ -1365,6 +1504,11 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1365
1504
  private getGlobalActionEntryLabel;
1366
1505
  private getGlobalActionEntryDescription;
1367
1506
  private getGlobalActionSchema;
1507
+ getGlobalActionId(action: {
1508
+ globalAction?: GlobalActionRef;
1509
+ }): string;
1510
+ private parseGlobalActionPayloadText;
1511
+ private looksLikeJsonPayload;
1368
1512
  private normalizeSurfaceOpenPayload;
1369
1513
  verify(): void;
1370
1514
  inferFromFields(): void;
@@ -1382,6 +1526,35 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1382
1526
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisListConfigEditor, "praxis-list-config-editor", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": false; }; }, {}, never, never, true, never>;
1383
1527
  }
1384
1528
 
1529
+ interface PraxisListWidgetEditorInputs {
1530
+ config?: PraxisListConfig | null;
1531
+ listId?: string;
1532
+ [key: string]: unknown;
1533
+ }
1534
+ interface PraxisListWidgetEditorValue {
1535
+ inputs: PraxisListWidgetEditorInputs;
1536
+ }
1537
+ declare class PraxisListWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
1538
+ inputs: PraxisListWidgetEditorInputs | null;
1539
+ widgetKey?: string;
1540
+ listEditor?: PraxisListConfigEditor;
1541
+ readonly isDirty$: BehaviorSubject<boolean>;
1542
+ readonly isValid$: BehaviorSubject<boolean>;
1543
+ readonly isBusy$: BehaviorSubject<boolean>;
1544
+ private readonly subscription;
1545
+ get config(): PraxisListConfig;
1546
+ get listId(): string | undefined;
1547
+ ngAfterViewInit(): void;
1548
+ ngOnDestroy(): void;
1549
+ getSettingsValue(): PraxisListWidgetEditorValue;
1550
+ onSave(): PraxisListWidgetEditorValue;
1551
+ reset(): void;
1552
+ private initializeChildEditor;
1553
+ private buildValue;
1554
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisListWidgetConfigEditor, never>;
1555
+ static ɵcmp: i0.ɵɵComponentDeclaration<PraxisListWidgetConfigEditor, "praxis-list-widget-config-editor", never, { "inputs": { "alias": "inputs"; "required": false; }; "widgetKey": { "alias": "widgetKey"; "required": false; }; }, {}, never, never, true, never>;
1556
+ }
1557
+
1385
1558
  declare function createListAuthoringDocument(source: {
1386
1559
  config?: unknown;
1387
1560
  }): ListAuthoringDocument;
@@ -1424,8 +1597,9 @@ interface TemplateEvaluatorOptions {
1424
1597
  declare function evalExpr(expr: string, ctx: any, options?: TemplateEvaluatorOptions): string;
1425
1598
  /**
1426
1599
  * Evaluate a template definition with basic pipe support.
1427
- * Supported pipes:
1600
+ * Supported top-level pipes:
1428
1601
  * - bool:TrueLabel:FalseLabel (maps truthy/falsey values to provided labels)
1602
+ * - map:key=Label,... (maps scalar values to labels)
1429
1603
  */
1430
1604
  declare function evaluateTemplate(def: TemplateDef | undefined, item: any, options?: TemplateEvaluatorOptions): {
1431
1605
  type: string;
@@ -1458,10 +1632,14 @@ declare function providePraxisListMetadata(): Provider;
1458
1632
  declare module '@praxisui/core' {
1459
1633
  interface AiCapabilityCategoryMap {
1460
1634
  meta: true;
1635
+ export: true;
1461
1636
  skin: true;
1462
1637
  selection: true;
1463
1638
  templating: true;
1464
1639
  actions: true;
1640
+ interaction: true;
1641
+ expansion: true;
1642
+ rules: true;
1465
1643
  ui: true;
1466
1644
  i18n: true;
1467
1645
  a11y: true;
@@ -1477,6 +1655,8 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
1477
1655
  }
1478
1656
  declare const LIST_AI_CAPABILITIES: CapabilityCatalog;
1479
1657
 
1658
+ declare const PRAXIS_LIST_AUTHORING_MANIFEST: ComponentAuthoringManifest;
1659
+
1480
1660
  type DemoScenario = 'operations' | 'executive-expansion' | 'catalog' | 'empty';
1481
1661
  type DemoVariant = 'list' | 'cards' | 'tiles';
1482
1662
  type DemoDensity = 'default' | 'comfortable' | 'compact';
@@ -1642,14 +1822,8 @@ declare class PraxisListDocPageComponent {
1642
1822
  class?: string;
1643
1823
  inlineStyle?: string;
1644
1824
  } | undefined;
1645
- id?: string;
1646
- interaction?: {
1647
- expandable?: boolean;
1648
- expandTrigger?: "row" | "icon" | "row+icon";
1649
- expandMode?: "single" | "multiple";
1650
- expandPlacement?: "expand" | "trailing";
1651
- };
1652
- templating?: {
1825
+ templating: {
1826
+ statusPosition: "top-right";
1653
1827
  leading?: TemplateDef;
1654
1828
  primary?: TemplateDef;
1655
1829
  secondary?: TemplateDef;
@@ -1663,7 +1837,6 @@ declare class PraxisListDocPageComponent {
1663
1837
  owner?: TemplateDef;
1664
1838
  metaPlacement?: "side" | "line";
1665
1839
  metaPrefixIcon?: string;
1666
- statusPosition?: "inline" | "top-right";
1667
1840
  chipColorMap?: Record<string, string>;
1668
1841
  chipLabelMap?: Record<string, string>;
1669
1842
  iconColorMap?: Record<string, string>;
@@ -1676,24 +1849,17 @@ declare class PraxisListDocPageComponent {
1676
1849
  count?: number;
1677
1850
  };
1678
1851
  };
1852
+ id?: string;
1853
+ export?: PraxisListExportConfig;
1854
+ interaction?: {
1855
+ expandable?: boolean;
1856
+ expandTrigger?: "row" | "icon" | "row+icon";
1857
+ expandMode?: "single" | "multiple";
1858
+ expandPlacement?: "expand" | "trailing";
1859
+ };
1679
1860
  rules?: {
1680
- itemStyles?: Array<{
1681
- id: string;
1682
- condition?: _praxisui_core.JsonLogicExpression | null;
1683
- class?: string;
1684
- style?: string;
1685
- border?: string;
1686
- background?: string;
1687
- }>;
1688
- slotOverrides?: Array<{
1689
- id: string;
1690
- slot: ListTemplatingSlot;
1691
- condition?: _praxisui_core.JsonLogicExpression | null;
1692
- template?: TemplateDef;
1693
- class?: string;
1694
- style?: string;
1695
- hide?: boolean;
1696
- }>;
1861
+ itemStyles?: ListItemStyleRule[];
1862
+ slotOverrides?: ListSlotOverrideRule[];
1697
1863
  };
1698
1864
  expansion?: {
1699
1865
  sections?: ListExpansionSectionDef[];
@@ -1744,8 +1910,7 @@ declare class PraxisListDocPageComponent {
1744
1910
  buttonVariant?: "stroked" | "raised" | "flat";
1745
1911
  showIf?: _praxisui_core.JsonLogicExpression | null;
1746
1912
  emitPayload?: "item" | "id" | "value";
1747
- command?: string;
1748
- globalPayload?: any;
1913
+ globalAction?: _praxisui_core.GlobalActionRef;
1749
1914
  emitLocal?: boolean;
1750
1915
  showLoading?: boolean;
1751
1916
  placement?: "actions" | "trailing";
@@ -1777,6 +1942,7 @@ declare class PraxisListDocPageComponent {
1777
1942
  itemClick?: string;
1778
1943
  actionClick?: string;
1779
1944
  selectionChange?: string;
1945
+ exportAction?: string;
1780
1946
  loaded?: string;
1781
1947
  };
1782
1948
  };
@@ -1813,6 +1979,13 @@ declare const PRAXIS_LIST_EN_US: {
1813
1979
  readonly collapseDetails: "Collapse details";
1814
1980
  readonly itemDetails: "Item details";
1815
1981
  readonly emptyState: "No items available";
1982
+ readonly 'pagination.itemsPerPage': "Items per page:";
1983
+ readonly 'pagination.nextPage': "Next page";
1984
+ readonly 'pagination.previousPage': "Previous page";
1985
+ readonly 'pagination.firstPage': "First page";
1986
+ readonly 'pagination.lastPage': "Last page";
1987
+ readonly 'pagination.total': "Total";
1988
+ readonly 'export.button': "Export";
1816
1989
  readonly Data: "Data";
1817
1990
  readonly Actions: "Actions";
1818
1991
  readonly Layout: "Layout";
@@ -1838,7 +2011,7 @@ declare const PRAXIS_LIST_EN_US: {
1838
2011
  readonly 'Global action (Praxis)': "Global action (Praxis)";
1839
2012
  readonly '-- Select --': "-- Select --";
1840
2013
  readonly 'No global action registered.': "No global action registered.";
1841
- readonly 'Select to add with a global `command`.': "Select to add with a global `command`.";
2014
+ readonly 'Select to add with a structured global action.': "Select to add with a structured global action.";
1842
2015
  readonly 'Action type': "Action type";
1843
2016
  readonly Icon: "Icon";
1844
2017
  readonly Button: "Button";
@@ -1872,7 +2045,7 @@ declare const PRAXIS_LIST_EN_US: {
1872
2045
  readonly 'Emit local event too': "Emit local event too";
1873
2046
  readonly JSON: "JSON";
1874
2047
  readonly ID: "ID";
1875
- readonly 'Command (global)': "Command (global)";
2048
+ readonly 'Global action': "Global action";
1876
2049
  readonly Catalog: "Catalog";
1877
2050
  readonly Danger: "Danger";
1878
2051
  readonly Warning: "Warning";
@@ -2041,6 +2214,13 @@ declare const PRAXIS_LIST_PT_BR: {
2041
2214
  readonly collapseDetails: "Recolher detalhes";
2042
2215
  readonly itemDetails: "Detalhes do item";
2043
2216
  readonly emptyState: "Nenhum item disponível";
2217
+ readonly 'pagination.itemsPerPage': "Itens por página:";
2218
+ readonly 'pagination.nextPage': "Próxima página";
2219
+ readonly 'pagination.previousPage': "Página anterior";
2220
+ readonly 'pagination.firstPage': "Primeira página";
2221
+ readonly 'pagination.lastPage': "Última página";
2222
+ readonly 'pagination.total': "Total";
2223
+ readonly 'export.button': "Exportar";
2044
2224
  readonly Data: "Dados";
2045
2225
  readonly Actions: "Ações";
2046
2226
  readonly Layout: "Layout";
@@ -2066,7 +2246,7 @@ declare const PRAXIS_LIST_PT_BR: {
2066
2246
  readonly 'Global action (Praxis)': "Ação global (Praxis)";
2067
2247
  readonly '-- Select --': "-- Selecionar --";
2068
2248
  readonly 'No global action registered.': "Nenhuma ação global registrada.";
2069
- readonly 'Select to add with a global `command`.': "Selecione para adicionar com `command` global.";
2249
+ readonly 'Select to add with a structured global action.': "Selecione para adicionar com uma ação global estruturada.";
2070
2250
  readonly 'Action type': "Tipo de ação";
2071
2251
  readonly Icon: "Ícone";
2072
2252
  readonly Button: "Botão";
@@ -2100,7 +2280,7 @@ declare const PRAXIS_LIST_PT_BR: {
2100
2280
  readonly 'Emit local event too': "Emitir evento local também";
2101
2281
  readonly JSON: "JSON";
2102
2282
  readonly ID: "ID";
2103
- readonly 'Command (global)': "Comando (global)";
2283
+ readonly 'Global action': "Ação global";
2104
2284
  readonly Catalog: "Catálogo";
2105
2285
  readonly Danger: "Perigo";
2106
2286
  readonly Warning: "Aviso";
@@ -2260,5 +2440,5 @@ declare const PRAXIS_LIST_PT_BR: {
2260
2440
  readonly 'CSS class example (add this to your global styles):': "Exemplo de classe CSS (adicione isto aos seus estilos globais):";
2261
2441
  };
2262
2442
 
2263
- export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, inferListAuthoringDocument, inferTemplatingFromSchema, isListTemplateSupportedByRichContentP0, mapListTemplateToRichContentP0, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
2264
- export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListProjectionContext, ListRichContentP0Node, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListTemplatingSlot, ListValidationContext, PraxisListConfig, PraxisListI18nConfig, TemplateDef, TemplateEvaluatorOptions, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };
2443
+ export { ExecutiveAlertsComponent, ExecutiveBadgeComponent, ExecutiveOwnerComponent, LIST_AI_CAPABILITIES, ListDataService, ListSkinService, PRAXIS_LIST_AUTHORING_MANIFEST, PRAXIS_LIST_COMPONENT_METADATA, PRAXIS_LIST_EN_US, PRAXIS_LIST_I18N_NAMESPACE, PRAXIS_LIST_PT_BR, PraxisList, PraxisListConfigEditor, PraxisListDocPageComponent, PraxisListJsonConfigEditorComponent, PraxisListWidgetConfigEditor, adaptSelection, buildListApplyPlan, createListAuthoringDocument, evalExpr, evaluateTemplate, inferListAuthoringDocument, inferTemplatingFromSchema, isListTemplateSupportedByRichContentP0, mapListTemplateToRichContentP0, normalizeListActionPayloads, normalizeListAuthoringDocument, normalizeListConfig, parseLegacyOrListDocument, projectListAuthoringDocument, providePraxisListI18n, providePraxisListMetadata, serializeListAuthoringDocument, toCanonicalListConfig, validateListAuthoringDocument };
2444
+ export type { Capability, CapabilityCatalog, CapabilityCategory, EditorDiagnostic, EditorDocument, ExecutiveAlert, JsonEditorEvent, JsonValidationResult, ListActionEvent, ListApplyPlan, ListAuthoringDocument, ListExpansionSectionDef, ListExpansionSectionType, ListFeatureDef, ListItemEvent, ListItemStyleEffect, ListItemStyleRule, ListProjectionContext, ListRichContentP0Node, ListRowLayoutSlot, ListRuntimeContext, ListSchemaInferencePlan, ListSection, ListSelectionEvent, ListSlotOverrideEffect, ListSlotOverrideRule, ListTemplatingSlot, ListValidationContext, PraxisListConfig, PraxisListExportConfig, PraxisListI18nConfig, PraxisListWidgetEditorInputs, PraxisListWidgetEditorValue, TemplateDef, TemplateEvaluatorOptions, TemplateFeatureDef, TemplateType, TemplatingFeatureDef, ValueKind };
package/package.json CHANGED
@@ -1,13 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "8.0.0-beta.3",
3
+ "version": "8.0.0-beta.31",
4
4
  "description": "List components and helpers for Praxis UI.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=16 <21",
7
7
  "@angular/core": ">=16 <21",
8
8
  "@angular/material": ">=16 <21",
9
- "@praxisui/dynamic-fields": "^8.0.0-beta.3",
10
- "rxjs": ">=7 <9"
9
+ "@praxisui/dynamic-fields": "^8.0.0-beta.31",
10
+ "rxjs": ">=7 <9",
11
+ "@angular/forms": ">=16 <21",
12
+ "@angular/router": ">=16 <21",
13
+ "@praxisui/ai": "^8.0.0-beta.31",
14
+ "@praxisui/core": "^8.0.0-beta.31",
15
+ "@praxisui/rich-content": "^8.0.0-beta.31",
16
+ "@praxisui/settings-panel": "^8.0.0-beta.31"
11
17
  },
12
18
  "dependencies": {
13
19
  "tslib": "^2.3.0",