@praxisui/list 8.0.0-beta.8 → 8.0.0-beta.81

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