@praxisui/list 8.0.0-beta.4 → 8.0.0-beta.41

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,16 +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;
665
+ private isDeferredTemplateExpressionKey;
588
666
  private resolveStringTemplate;
589
667
  private lookup;
590
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;
591
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;
592
716
  nextPage(): void;
593
717
  prevPage(): void;
594
718
  setPageSize(ps: number): void;
719
+ onPageChange(event: PageEvent): void;
720
+ listPageSizeOptions(): number[];
721
+ remoteTotalLabel(total: number | null | undefined): string;
595
722
  onSortChange(val: string): void;
596
723
  onSearchInput(val: string): void;
597
724
  sortOptionValue(op: any): string;
@@ -604,8 +731,12 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
604
731
  pageNumber: number;
605
732
  pageSize: number;
606
733
  }, total: number): number;
734
+ private syncPaginatorIntl;
735
+ private formatPaginatorRangeLabel;
736
+ private isEnglishLocaleValue;
607
737
  applyConfigFromAdapter(newCfg: PraxisListConfig): void;
608
738
  private applyAuthoringPayload;
739
+ private applyRuntimeQueryContext;
609
740
  private buildListEditorRuntimeContext;
610
741
  private executeListEditorApplyPlan;
611
742
  private storageKey;
@@ -615,6 +746,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
615
746
  private executeSchemaInferenceForPlan;
616
747
  private evalSlot;
617
748
  private resolveSlotTemplate;
749
+ private resolveLocalDataFallbackTemplate;
750
+ private isLocalDataPreviewItem;
751
+ private firstPresentItemKey;
618
752
  private evaluateTemplateNode;
619
753
  private buildUnsupportedComposeNode;
620
754
  private buildRuntimeComponentView;
@@ -669,19 +803,19 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
669
803
  private mergePlainObjects;
670
804
  private buildActionLoadingKey;
671
805
  private ensureActionItemObjectId;
672
- private warnGlobalCommandUnavailableOnce;
673
806
  private buildLogOptions;
674
807
  private toggleExpanded;
675
808
  private syncExpansionState;
676
809
  private itemExpansionKey;
677
- private t;
810
+ t(key: string, fallback: string): string;
811
+ private tWithLocale;
678
812
  private ensureExpansionItemObjectId;
679
813
  private sanitizeDomId;
680
814
  private evaluateExpansionExpr;
681
815
  private normalizeExpansionItems;
682
816
  private normalizeKeyValueItems;
683
817
  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>;
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>;
685
819
  static ngAcceptInputType_enableCustomization: unknown;
686
820
  }
687
821
 
@@ -1294,18 +1428,24 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1294
1428
  ensureConfirmation(action: any): void;
1295
1429
  setConfirmationField(action: any, field: 'title' | 'message', value: string): void;
1296
1430
  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;
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;
1301
1442
  isSurfaceOpenCommand(action: {
1302
- command?: string;
1443
+ globalAction?: GlobalActionRef;
1303
1444
  }): boolean;
1304
- getSurfaceOpenGlobalPayload(action: {
1305
- command?: string;
1306
- globalPayload?: string;
1445
+ getSurfaceOpenGlobalActionPayload(action: {
1446
+ globalAction?: GlobalActionRef;
1307
1447
  }): SurfaceOpenPayload;
1308
- onSurfaceOpenGlobalPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1448
+ onSurfaceOpenGlobalActionPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1309
1449
  onGlobalActionSelected(id?: string): void;
1310
1450
  private addGlobalActionFromCatalog;
1311
1451
  metaTypeConfig(type?: string): {
@@ -1365,6 +1505,11 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1365
1505
  private getGlobalActionEntryLabel;
1366
1506
  private getGlobalActionEntryDescription;
1367
1507
  private getGlobalActionSchema;
1508
+ getGlobalActionId(action: {
1509
+ globalAction?: GlobalActionRef;
1510
+ }): string;
1511
+ private parseGlobalActionPayloadText;
1512
+ private looksLikeJsonPayload;
1368
1513
  private normalizeSurfaceOpenPayload;
1369
1514
  verify(): void;
1370
1515
  inferFromFields(): void;
@@ -1382,6 +1527,35 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1382
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>;
1383
1528
  }
1384
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
+
1385
1559
  declare function createListAuthoringDocument(source: {
1386
1560
  config?: unknown;
1387
1561
  }): ListAuthoringDocument;
@@ -1424,8 +1598,9 @@ interface TemplateEvaluatorOptions {
1424
1598
  declare function evalExpr(expr: string, ctx: any, options?: TemplateEvaluatorOptions): string;
1425
1599
  /**
1426
1600
  * Evaluate a template definition with basic pipe support.
1427
- * Supported pipes:
1601
+ * Supported top-level pipes:
1428
1602
  * - bool:TrueLabel:FalseLabel (maps truthy/falsey values to provided labels)
1603
+ * - map:key=Label,... (maps scalar values to labels)
1429
1604
  */
1430
1605
  declare function evaluateTemplate(def: TemplateDef | undefined, item: any, options?: TemplateEvaluatorOptions): {
1431
1606
  type: string;
@@ -1458,10 +1633,14 @@ declare function providePraxisListMetadata(): Provider;
1458
1633
  declare module '@praxisui/core' {
1459
1634
  interface AiCapabilityCategoryMap {
1460
1635
  meta: true;
1636
+ export: true;
1461
1637
  skin: true;
1462
1638
  selection: true;
1463
1639
  templating: true;
1464
1640
  actions: true;
1641
+ interaction: true;
1642
+ expansion: true;
1643
+ rules: true;
1465
1644
  ui: true;
1466
1645
  i18n: true;
1467
1646
  a11y: true;
@@ -1477,6 +1656,8 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
1477
1656
  }
1478
1657
  declare const LIST_AI_CAPABILITIES: CapabilityCatalog;
1479
1658
 
1659
+ declare const PRAXIS_LIST_AUTHORING_MANIFEST: ComponentAuthoringManifest;
1660
+
1480
1661
  type DemoScenario = 'operations' | 'executive-expansion' | 'catalog' | 'empty';
1481
1662
  type DemoVariant = 'list' | 'cards' | 'tiles';
1482
1663
  type DemoDensity = 'default' | 'comfortable' | 'compact';
@@ -1606,7 +1787,7 @@ declare class PraxisListDocPageComponent {
1606
1787
  rowLayout?: {
1607
1788
  type?: "grid" | "flex";
1608
1789
  columns?: Array<{
1609
- slot: ListRowLayoutSlot;
1790
+ slot: _praxisui_list.ListRowLayoutSlot;
1610
1791
  width?: string;
1611
1792
  minWidth?: string;
1612
1793
  maxWidth?: string;
@@ -1642,61 +1823,47 @@ declare class PraxisListDocPageComponent {
1642
1823
  class?: string;
1643
1824
  inlineStyle?: string;
1644
1825
  } | 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?: {
1653
- leading?: TemplateDef;
1654
- primary?: TemplateDef;
1655
- secondary?: TemplateDef;
1656
- meta?: TemplateDef;
1657
- trailing?: TemplateDef;
1658
- identity?: TemplateDef;
1659
- balance?: TemplateDef;
1660
- limit?: TemplateDef;
1661
- risk?: TemplateDef;
1662
- alerts?: TemplateDef;
1663
- 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;
1664
1839
  metaPlacement?: "side" | "line";
1665
1840
  metaPrefixIcon?: string;
1666
- statusPosition?: "inline" | "top-right";
1667
1841
  chipColorMap?: Record<string, string>;
1668
1842
  chipLabelMap?: Record<string, string>;
1669
1843
  iconColorMap?: Record<string, string>;
1670
- features?: TemplatingFeatureDef[];
1844
+ features?: _praxisui_list.TemplatingFeatureDef[];
1671
1845
  featuresVisible?: boolean;
1672
1846
  featuresMode?: "icons+labels" | "icons-only" | "labels-only";
1673
- sectionHeader?: TemplateDef;
1674
- emptyState?: TemplateDef;
1847
+ sectionHeader?: _praxisui_list.TemplateDef;
1848
+ emptyState?: _praxisui_list.TemplateDef;
1675
1849
  skeleton?: {
1676
1850
  count?: number;
1677
1851
  };
1678
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
+ };
1679
1861
  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
- }>;
1862
+ itemStyles?: _praxisui_list.ListItemStyleRule[];
1863
+ slotOverrides?: _praxisui_list.ListSlotOverrideRule[];
1697
1864
  };
1698
1865
  expansion?: {
1699
- sections?: ListExpansionSectionDef[];
1866
+ sections?: _praxisui_list.ListExpansionSectionDef[];
1700
1867
  dataSource?: {
1701
1868
  mode?: "inline" | "resource" | "resourcePath";
1702
1869
  resource?: {
@@ -1731,8 +1898,8 @@ declare class PraxisListDocPageComponent {
1731
1898
  padding?: string;
1732
1899
  class?: string;
1733
1900
  style?: string;
1734
- loadingTemplate?: TemplateDef;
1735
- errorTemplate?: TemplateDef;
1901
+ loadingTemplate?: _praxisui_list.TemplateDef;
1902
+ errorTemplate?: _praxisui_list.TemplateDef;
1736
1903
  };
1737
1904
  };
1738
1905
  actions?: Array<{
@@ -1744,8 +1911,7 @@ declare class PraxisListDocPageComponent {
1744
1911
  buttonVariant?: "stroked" | "raised" | "flat";
1745
1912
  showIf?: _praxisui_core.JsonLogicExpression | null;
1746
1913
  emitPayload?: "item" | "id" | "value";
1747
- command?: string;
1748
- globalPayload?: any;
1914
+ globalAction?: _praxisui_core.GlobalActionRef;
1749
1915
  emitLocal?: boolean;
1750
1916
  showLoading?: boolean;
1751
1917
  placement?: "actions" | "trailing";
@@ -1755,7 +1921,7 @@ declare class PraxisListDocPageComponent {
1755
1921
  type?: "danger" | "warning" | "info";
1756
1922
  };
1757
1923
  }>;
1758
- i18n?: PraxisListI18nConfig;
1924
+ i18n?: _praxisui_list.PraxisListI18nConfig;
1759
1925
  ui?: {
1760
1926
  showSearch?: boolean;
1761
1927
  searchField?: string;
@@ -1777,6 +1943,7 @@ declare class PraxisListDocPageComponent {
1777
1943
  itemClick?: string;
1778
1944
  actionClick?: string;
1779
1945
  selectionChange?: string;
1946
+ exportAction?: string;
1780
1947
  loaded?: string;
1781
1948
  };
1782
1949
  };
@@ -1813,6 +1980,13 @@ declare const PRAXIS_LIST_EN_US: {
1813
1980
  readonly collapseDetails: "Collapse details";
1814
1981
  readonly itemDetails: "Item details";
1815
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";
1816
1990
  readonly Data: "Data";
1817
1991
  readonly Actions: "Actions";
1818
1992
  readonly Layout: "Layout";
@@ -1838,7 +2012,7 @@ declare const PRAXIS_LIST_EN_US: {
1838
2012
  readonly 'Global action (Praxis)': "Global action (Praxis)";
1839
2013
  readonly '-- Select --': "-- Select --";
1840
2014
  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`.";
2015
+ readonly 'Select to add with a structured global action.': "Select to add with a structured global action.";
1842
2016
  readonly 'Action type': "Action type";
1843
2017
  readonly Icon: "Icon";
1844
2018
  readonly Button: "Button";
@@ -1872,7 +2046,7 @@ declare const PRAXIS_LIST_EN_US: {
1872
2046
  readonly 'Emit local event too': "Emit local event too";
1873
2047
  readonly JSON: "JSON";
1874
2048
  readonly ID: "ID";
1875
- readonly 'Command (global)': "Command (global)";
2049
+ readonly 'Global action': "Global action";
1876
2050
  readonly Catalog: "Catalog";
1877
2051
  readonly Danger: "Danger";
1878
2052
  readonly Warning: "Warning";
@@ -2041,6 +2215,13 @@ declare const PRAXIS_LIST_PT_BR: {
2041
2215
  readonly collapseDetails: "Recolher detalhes";
2042
2216
  readonly itemDetails: "Detalhes do item";
2043
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";
2044
2225
  readonly Data: "Dados";
2045
2226
  readonly Actions: "Ações";
2046
2227
  readonly Layout: "Layout";
@@ -2066,7 +2247,7 @@ declare const PRAXIS_LIST_PT_BR: {
2066
2247
  readonly 'Global action (Praxis)': "Ação global (Praxis)";
2067
2248
  readonly '-- Select --': "-- Selecionar --";
2068
2249
  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.";
2250
+ readonly 'Select to add with a structured global action.': "Selecione para adicionar com uma ação global estruturada.";
2070
2251
  readonly 'Action type': "Tipo de ação";
2071
2252
  readonly Icon: "Ícone";
2072
2253
  readonly Button: "Botão";
@@ -2100,7 +2281,7 @@ declare const PRAXIS_LIST_PT_BR: {
2100
2281
  readonly 'Emit local event too': "Emitir evento local também";
2101
2282
  readonly JSON: "JSON";
2102
2283
  readonly ID: "ID";
2103
- readonly 'Command (global)': "Comando (global)";
2284
+ readonly 'Global action': "Ação global";
2104
2285
  readonly Catalog: "Catálogo";
2105
2286
  readonly Danger: "Perigo";
2106
2287
  readonly Warning: "Aviso";
@@ -2260,5 +2441,5 @@ declare const PRAXIS_LIST_PT_BR: {
2260
2441
  readonly 'CSS class example (add this to your global styles):': "Exemplo de classe CSS (adicione isto aos seus estilos globais):";
2261
2442
  };
2262
2443
 
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 };
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 };