@praxisui/list 8.0.0-beta.1 → 8.0.0-beta.100

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,10 +390,18 @@ 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;
404
+ private buildRequestSignature;
372
405
  private buildLocalDataSignature;
373
406
  private ensureObjectId;
374
407
  private safeSerialize;
@@ -381,17 +414,32 @@ declare class ListDataService<T = any> {
381
414
  declare class ListAiAdapter extends BaseAiAdapter<PraxisListConfig> {
382
415
  private list;
383
416
  componentName: string;
417
+ componentId: string;
418
+ componentType: string;
384
419
  constructor(list: PraxisList);
385
420
  getCurrentConfig(): PraxisListConfig;
386
421
  getCapabilities(): AiCapability[];
387
422
  getRuntimeState(): Record<string, any>;
423
+ getDataProfile(): Record<string, any>;
424
+ getSchemaFields(): Record<string, any>[];
425
+ getAuthoringContext(): Record<string, any>;
388
426
  createSnapshot(): PraxisListConfig;
427
+ compileAiResponse(response: Record<string, unknown>): AiResponseCompileResult | null;
389
428
  restoreSnapshot(snapshot: PraxisListConfig): Promise<void>;
390
429
  applyPatch(patch: Partial<PraxisListConfig>, _intent?: string): Promise<PatchResult>;
391
430
  private applyConfig;
392
431
  private smartMergeListConfig;
393
432
  private sanitizePatch;
394
433
  private cloneConfig;
434
+ private coerceComponentEditPlanOperations;
435
+ private coerceOperationInput;
436
+ private applyManifestEffects;
437
+ private resolveSetValue;
438
+ private mergeAtPath;
439
+ private setAtPath;
440
+ private readAtPath;
441
+ private asRecord;
442
+ private trimToUndefined;
395
443
  }
396
444
 
397
445
  interface ListRowLayoutColumnViewModel {
@@ -404,6 +452,11 @@ interface ListRowLayoutColumnViewModel {
404
452
  class?: string;
405
453
  style?: string;
406
454
  }
455
+ interface ListCardDetailSlotViewModel {
456
+ slot: ListTemplatingSlot;
457
+ label: string;
458
+ node: Record<string, any>;
459
+ }
407
460
  declare class PraxisList implements OnInit, OnChanges, OnDestroy {
408
461
  private static nextSkinScopeId;
409
462
  private customizationEnabled;
@@ -411,12 +464,17 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
411
464
  config: PraxisListConfig;
412
465
  listId: string;
413
466
  componentInstanceId?: string;
467
+ configPersistenceStrategy: 'local-first' | 'input-first';
468
+ private runtimeQueryContext?;
469
+ set queryContext(value: PraxisDataQueryContext | null | undefined);
470
+ get queryContext(): PraxisDataQueryContext | null | undefined;
414
471
  form?: FormGroup | null;
415
472
  set enableCustomization(value: boolean);
416
473
  get enableCustomization(): boolean;
417
474
  itemClick: EventEmitter<ListItemEvent>;
418
475
  actionClick: EventEmitter<ListActionEvent>;
419
476
  selectionChange: EventEmitter<ListSelectionEvent>;
477
+ exportAction: EventEmitter<any>;
420
478
  items$: rxjs.Observable<any[]>;
421
479
  sections$: rxjs.Observable<ListSection<any>[]>;
422
480
  loading$: rxjs.Observable<boolean>;
@@ -427,6 +485,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
427
485
  sort?: string[];
428
486
  }>;
429
487
  private lastQuery;
488
+ private lastRuntimeQueryContextSignature;
430
489
  private search$;
431
490
  get layoutLines(): number;
432
491
  boundControl: FormControl<unknown | unknown[] | null>;
@@ -435,6 +494,13 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
435
494
  inlineCss: string;
436
495
  readonly cspNonce: string | null;
437
496
  aiAdapter: ListAiAdapter;
497
+ aiAssistantOpen: boolean;
498
+ aiAssistantPrompt: string;
499
+ aiAssistantViewState: PraxisAssistantTurnViewState | null;
500
+ aiAssistantLayout: PraxisAssistantShellLayout;
501
+ readonly aiAssistantLabels: Partial<PraxisAssistantShellLabels>;
502
+ private aiAssistantController;
503
+ private aiAssistantStateSubscription;
438
504
  private readonly storage;
439
505
  private readonly skin;
440
506
  private inferredForPath;
@@ -448,6 +514,14 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
448
514
  private readonly logger;
449
515
  private readonly jsonLogic;
450
516
  private readonly i18n;
517
+ private readonly collectionExport;
518
+ private readonly paginatorIntl;
519
+ private readonly snackBar;
520
+ private readonly aiApi;
521
+ private readonly assistantSessions;
522
+ private readonly aiTurnOrchestrator;
523
+ private readonly aiAssistantSessionEffect;
524
+ readonly paginatorSelectConfig: MatPaginatorSelectConfig;
451
525
  private readonly logContext;
452
526
  private readonly route;
453
527
  private readonly globalActions;
@@ -464,6 +538,8 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
464
538
  private readonly destroy$;
465
539
  actionLoadingState: Record<string, boolean>;
466
540
  private expandedItemKeys;
541
+ exportBusy: boolean;
542
+ exportStatusMessage: string;
467
543
  private readonly listRuleContextOptions;
468
544
  ngOnInit(): void;
469
545
  ngOnChanges(changes: SimpleChanges): void;
@@ -495,6 +571,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
495
571
  itemRuleStyle(item: any): string | undefined;
496
572
  rowLayoutItemStyle(item: any): string | undefined;
497
573
  rowLayoutItemClass(item: any): string | undefined;
574
+ private resolveItemStyleEffect;
575
+ private resolveSlotOverrideEffect;
576
+ private firstConditionalEffect;
498
577
  hasRowLayoutGrid(): boolean;
499
578
  rowLayoutColumns(): ListRowLayoutColumnViewModel[];
500
579
  rowLayoutTrackColumn(index: number, column: ListRowLayoutColumnViewModel): string;
@@ -503,6 +582,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
503
582
  rowLayoutColumnClass(column: ListRowLayoutColumnViewModel): string | undefined;
504
583
  rowLayoutColumnStyle(column: ListRowLayoutColumnViewModel): string | undefined;
505
584
  rowLayoutSlot(item: any, slot: string): Record<string, any> | null;
585
+ cardDetailSlots(item: any): ListCardDetailSlotViewModel[];
586
+ private humanizeSlotLabel;
587
+ private hasDisplayableNodeValue;
506
588
  rowLayoutHasSlot(slot: ListRowLayoutSlot): boolean;
507
589
  rowLayoutImageAlt(slot: string): string;
508
590
  simpleRichContentNodes(node: Record<string, any> | null | undefined, options?: {
@@ -535,6 +617,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
535
617
  private buildMetricView;
536
618
  private buildComposeView;
537
619
  private buildMetricProgress;
620
+ private isEmptyComposeNode;
538
621
  private metricLayout;
539
622
  private metricAlign;
540
623
  private metricIconPosition;
@@ -561,8 +644,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
561
644
  buttonVariant?: "stroked" | "raised" | "flat";
562
645
  showIf?: JsonLogicExpression | null;
563
646
  emitPayload?: "item" | "id" | "value";
564
- command?: string;
565
- globalPayload?: any;
647
+ globalAction?: GlobalActionRef;
566
648
  emitLocal?: boolean;
567
649
  showLoading?: boolean;
568
650
  placement?: "actions" | "trailing";
@@ -582,16 +664,65 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
582
664
  expansionRegionAriaLabel(item: any): string;
583
665
  emptyStateLabel(): string;
584
666
  onActionClick(ev: MouseEvent, actionId: string, item: any, index: number): Promise<void>;
585
- private isGlobalCommand;
586
667
  private resolveActionPayload;
587
668
  private resolveTemplate;
669
+ private isDeferredTemplateExpressionKey;
588
670
  private resolveStringTemplate;
589
671
  private lookup;
590
672
  onSelectionChange(_change: MatSelectionListChange): void;
673
+ listExportFormats(): PraxisExportFormat[];
674
+ exportIcon(format: PraxisExportFormat): string;
675
+ onExportAction(format: PraxisExportFormat): Promise<void>;
676
+ private buildListExportRequest;
677
+ private resolveEffectiveExportScope;
678
+ private buildListExportSelection;
679
+ private resolveListExportLoadedItems;
680
+ private buildListExportFields;
681
+ private collectListExportFieldKeys;
682
+ private normalizeListSelectionValue;
683
+ private resolveListSelectionKey;
684
+ private hasListExportQuery;
685
+ private getListQuerySnapshot;
686
+ private getListPageStateSnapshot;
687
+ private resolveListExportTotal;
688
+ private parseListExportSort;
689
+ private downloadExportResult;
690
+ private triggerExportDownload;
691
+ private showExportFeedback;
692
+ private resolveExportFileName;
693
+ private getExportFileExtension;
694
+ private getExportMimeType;
695
+ private cloneForExportEvent;
591
696
  openConfigEditor(): void;
697
+ openAiAssistant(): void;
698
+ openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
699
+ closeAiAssistant(): void;
700
+ onAiAssistantPromptChange(prompt: string): void;
701
+ onAiAssistantSubmit(prompt: string): void;
702
+ onAiAssistantApply(): void;
703
+ onAiAssistantRetry(): void;
704
+ onAiAssistantCancel(): void;
705
+ onAiAssistantQuickReply(reply: PraxisAssistantShellQuickReply): void;
706
+ onAiAssistantEditMessage(message: PraxisAssistantShellMessage): void;
707
+ onAiAssistantResendMessage(message: PraxisAssistantShellMessage): void;
708
+ onAiAssistantLayoutChange(layout: PraxisAssistantShellLayout): void;
709
+ private initializeAiAssistantController;
710
+ private buildAiAssistantContextItems;
711
+ private buildAiAssistantContextSnapshot;
712
+ private syncAiAssistantSession;
713
+ private hasAiAssistantSessionState;
714
+ private resolveAiAssistantSessionId;
715
+ private resolveAiAssistantOwnerId;
716
+ private resolveAiAssistantRouteKey;
717
+ private resolveAiAssistantSummary;
718
+ private resolveAiAssistantBadge;
719
+ private resolveAiAssistantIcon;
592
720
  nextPage(): void;
593
721
  prevPage(): void;
594
722
  setPageSize(ps: number): void;
723
+ onPageChange(event: PageEvent): void;
724
+ listPageSizeOptions(): number[];
725
+ remoteTotalLabel(total: number | null | undefined): string;
595
726
  onSortChange(val: string): void;
596
727
  onSearchInput(val: string): void;
597
728
  sortOptionValue(op: any): string;
@@ -604,8 +735,12 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
604
735
  pageNumber: number;
605
736
  pageSize: number;
606
737
  }, total: number): number;
738
+ private syncPaginatorIntl;
739
+ private formatPaginatorRangeLabel;
740
+ private isEnglishLocaleValue;
607
741
  applyConfigFromAdapter(newCfg: PraxisListConfig): void;
608
742
  private applyAuthoringPayload;
743
+ private applyRuntimeQueryContext;
609
744
  private buildListEditorRuntimeContext;
610
745
  private executeListEditorApplyPlan;
611
746
  private storageKey;
@@ -615,6 +750,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
615
750
  private executeSchemaInferenceForPlan;
616
751
  private evalSlot;
617
752
  private resolveSlotTemplate;
753
+ private resolveLocalDataFallbackTemplate;
754
+ private isLocalDataPreviewItem;
755
+ private firstPresentItemKey;
618
756
  private evaluateTemplateNode;
619
757
  private buildUnsupportedComposeNode;
620
758
  private buildRuntimeComponentView;
@@ -659,7 +797,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
659
797
  ratingIconStyle(def?: any): string;
660
798
  ratingRange(def?: any): number[];
661
799
  trackBySection: (_: number, s: ListSection<any>) => string | number;
662
- trackByItem: (i: number, it: any) => any;
800
+ trackByItem: (i: number, it: any) => string | number | boolean;
663
801
  isActionLoading(actionId: string, item: any, index: number): boolean;
664
802
  private evaluateActionVisibility;
665
803
  private evaluateRuntimeCondition;
@@ -669,19 +807,21 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
669
807
  private mergePlainObjects;
670
808
  private buildActionLoadingKey;
671
809
  private ensureActionItemObjectId;
672
- private warnGlobalCommandUnavailableOnce;
673
810
  private buildLogOptions;
674
811
  private toggleExpanded;
675
812
  private syncExpansionState;
676
813
  private itemExpansionKey;
677
- private t;
814
+ private itemStableKey;
815
+ private isStablePrimitiveKey;
816
+ t(key: string, fallback: string): string;
817
+ private tWithLocale;
678
818
  private ensureExpansionItemObjectId;
679
819
  private sanitizeDomId;
680
820
  private evaluateExpansionExpr;
681
821
  private normalizeExpansionItems;
682
822
  private normalizeKeyValueItems;
683
823
  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>;
824
+ 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
825
  static ngAcceptInputType_enableCustomization: unknown;
686
826
  }
687
827
 
@@ -1294,18 +1434,24 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1294
1434
  ensureConfirmation(action: any): void;
1295
1435
  setConfirmationField(action: any, field: 'title' | 'message', value: string): void;
1296
1436
  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;
1437
+ applyGlobalActionPayloadExample(action: any): void;
1438
+ globalActionPayloadExampleHint(action: any): string;
1439
+ globalActionPayloadSchemaTooltip(action: any): string;
1440
+ onActionGlobalActionIdChange(action: any, actionId: string): void;
1441
+ getGlobalActionPayloadText(action: {
1442
+ globalAction?: GlobalActionRef;
1443
+ }): string;
1444
+ onGlobalActionPayloadTextChange(action: any, value: string): void;
1445
+ isGlobalActionPayloadInvalid(action: {
1446
+ globalAction?: GlobalActionRef;
1447
+ }): boolean;
1301
1448
  isSurfaceOpenCommand(action: {
1302
- command?: string;
1449
+ globalAction?: GlobalActionRef;
1303
1450
  }): boolean;
1304
- getSurfaceOpenGlobalPayload(action: {
1305
- command?: string;
1306
- globalPayload?: string;
1451
+ getSurfaceOpenGlobalActionPayload(action: {
1452
+ globalAction?: GlobalActionRef;
1307
1453
  }): SurfaceOpenPayload;
1308
- onSurfaceOpenGlobalPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1454
+ onSurfaceOpenGlobalActionPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1309
1455
  onGlobalActionSelected(id?: string): void;
1310
1456
  private addGlobalActionFromCatalog;
1311
1457
  metaTypeConfig(type?: string): {
@@ -1365,6 +1511,11 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1365
1511
  private getGlobalActionEntryLabel;
1366
1512
  private getGlobalActionEntryDescription;
1367
1513
  private getGlobalActionSchema;
1514
+ getGlobalActionId(action: {
1515
+ globalAction?: GlobalActionRef;
1516
+ }): string;
1517
+ private parseGlobalActionPayloadText;
1518
+ private looksLikeJsonPayload;
1368
1519
  private normalizeSurfaceOpenPayload;
1369
1520
  verify(): void;
1370
1521
  inferFromFields(): void;
@@ -1382,6 +1533,35 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1382
1533
  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
1534
  }
1384
1535
 
1536
+ interface PraxisListWidgetEditorInputs {
1537
+ config?: PraxisListConfig | null;
1538
+ listId?: string;
1539
+ [key: string]: unknown;
1540
+ }
1541
+ interface PraxisListWidgetEditorValue {
1542
+ inputs: PraxisListWidgetEditorInputs;
1543
+ }
1544
+ declare class PraxisListWidgetConfigEditor implements SettingsValueProvider$1, AfterViewInit, OnDestroy {
1545
+ inputs: PraxisListWidgetEditorInputs | null;
1546
+ widgetKey?: string;
1547
+ listEditor?: PraxisListConfigEditor;
1548
+ readonly isDirty$: BehaviorSubject<boolean>;
1549
+ readonly isValid$: BehaviorSubject<boolean>;
1550
+ readonly isBusy$: BehaviorSubject<boolean>;
1551
+ private readonly subscription;
1552
+ get config(): PraxisListConfig;
1553
+ get listId(): string | undefined;
1554
+ ngAfterViewInit(): void;
1555
+ ngOnDestroy(): void;
1556
+ getSettingsValue(): PraxisListWidgetEditorValue;
1557
+ onSave(): PraxisListWidgetEditorValue;
1558
+ reset(): void;
1559
+ private initializeChildEditor;
1560
+ private buildValue;
1561
+ static ɵfac: i0.ɵɵFactoryDeclaration<PraxisListWidgetConfigEditor, never>;
1562
+ 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>;
1563
+ }
1564
+
1385
1565
  declare function createListAuthoringDocument(source: {
1386
1566
  config?: unknown;
1387
1567
  }): ListAuthoringDocument;
@@ -1424,8 +1604,9 @@ interface TemplateEvaluatorOptions {
1424
1604
  declare function evalExpr(expr: string, ctx: any, options?: TemplateEvaluatorOptions): string;
1425
1605
  /**
1426
1606
  * Evaluate a template definition with basic pipe support.
1427
- * Supported pipes:
1607
+ * Supported top-level pipes:
1428
1608
  * - bool:TrueLabel:FalseLabel (maps truthy/falsey values to provided labels)
1609
+ * - map:key=Label,... (maps scalar values to labels)
1429
1610
  */
1430
1611
  declare function evaluateTemplate(def: TemplateDef | undefined, item: any, options?: TemplateEvaluatorOptions): {
1431
1612
  type: string;
@@ -1458,10 +1639,14 @@ declare function providePraxisListMetadata(): Provider;
1458
1639
  declare module '@praxisui/core' {
1459
1640
  interface AiCapabilityCategoryMap {
1460
1641
  meta: true;
1642
+ export: true;
1461
1643
  skin: true;
1462
1644
  selection: true;
1463
1645
  templating: true;
1464
1646
  actions: true;
1647
+ interaction: true;
1648
+ expansion: true;
1649
+ rules: true;
1465
1650
  ui: true;
1466
1651
  i18n: true;
1467
1652
  a11y: true;
@@ -1477,6 +1662,8 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
1477
1662
  }
1478
1663
  declare const LIST_AI_CAPABILITIES: CapabilityCatalog;
1479
1664
 
1665
+ declare const PRAXIS_LIST_AUTHORING_MANIFEST: ComponentAuthoringManifest;
1666
+
1480
1667
  type DemoScenario = 'operations' | 'executive-expansion' | 'catalog' | 'empty';
1481
1668
  type DemoVariant = 'list' | 'cards' | 'tiles';
1482
1669
  type DemoDensity = 'default' | 'comfortable' | 'compact';
@@ -1606,7 +1793,7 @@ declare class PraxisListDocPageComponent {
1606
1793
  rowLayout?: {
1607
1794
  type?: "grid" | "flex";
1608
1795
  columns?: Array<{
1609
- slot: ListRowLayoutSlot;
1796
+ slot: _praxisui_list.ListRowLayoutSlot;
1610
1797
  width?: string;
1611
1798
  minWidth?: string;
1612
1799
  maxWidth?: string;
@@ -1642,61 +1829,47 @@ declare class PraxisListDocPageComponent {
1642
1829
  class?: string;
1643
1830
  inlineStyle?: string;
1644
1831
  } | 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;
1832
+ templating: {
1833
+ statusPosition: "top-right";
1834
+ leading?: _praxisui_list.TemplateDef;
1835
+ primary?: _praxisui_list.TemplateDef;
1836
+ secondary?: _praxisui_list.TemplateDef;
1837
+ meta?: _praxisui_list.TemplateDef;
1838
+ trailing?: _praxisui_list.TemplateDef;
1839
+ identity?: _praxisui_list.TemplateDef;
1840
+ balance?: _praxisui_list.TemplateDef;
1841
+ limit?: _praxisui_list.TemplateDef;
1842
+ risk?: _praxisui_list.TemplateDef;
1843
+ alerts?: _praxisui_list.TemplateDef;
1844
+ owner?: _praxisui_list.TemplateDef;
1664
1845
  metaPlacement?: "side" | "line";
1665
1846
  metaPrefixIcon?: string;
1666
- statusPosition?: "inline" | "top-right";
1667
1847
  chipColorMap?: Record<string, string>;
1668
1848
  chipLabelMap?: Record<string, string>;
1669
1849
  iconColorMap?: Record<string, string>;
1670
- features?: TemplatingFeatureDef[];
1850
+ features?: _praxisui_list.TemplatingFeatureDef[];
1671
1851
  featuresVisible?: boolean;
1672
1852
  featuresMode?: "icons+labels" | "icons-only" | "labels-only";
1673
- sectionHeader?: TemplateDef;
1674
- emptyState?: TemplateDef;
1853
+ sectionHeader?: _praxisui_list.TemplateDef;
1854
+ emptyState?: _praxisui_list.TemplateDef;
1675
1855
  skeleton?: {
1676
1856
  count?: number;
1677
1857
  };
1678
1858
  };
1859
+ id?: string;
1860
+ export?: _praxisui_list.PraxisListExportConfig;
1861
+ interaction?: {
1862
+ expandable?: boolean;
1863
+ expandTrigger?: "row" | "icon" | "row+icon";
1864
+ expandMode?: "single" | "multiple";
1865
+ expandPlacement?: "expand" | "trailing";
1866
+ };
1679
1867
  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
- }>;
1868
+ itemStyles?: _praxisui_list.ListItemStyleRule[];
1869
+ slotOverrides?: _praxisui_list.ListSlotOverrideRule[];
1697
1870
  };
1698
1871
  expansion?: {
1699
- sections?: ListExpansionSectionDef[];
1872
+ sections?: _praxisui_list.ListExpansionSectionDef[];
1700
1873
  dataSource?: {
1701
1874
  mode?: "inline" | "resource" | "resourcePath";
1702
1875
  resource?: {
@@ -1731,8 +1904,8 @@ declare class PraxisListDocPageComponent {
1731
1904
  padding?: string;
1732
1905
  class?: string;
1733
1906
  style?: string;
1734
- loadingTemplate?: TemplateDef;
1735
- errorTemplate?: TemplateDef;
1907
+ loadingTemplate?: _praxisui_list.TemplateDef;
1908
+ errorTemplate?: _praxisui_list.TemplateDef;
1736
1909
  };
1737
1910
  };
1738
1911
  actions?: Array<{
@@ -1744,8 +1917,7 @@ declare class PraxisListDocPageComponent {
1744
1917
  buttonVariant?: "stroked" | "raised" | "flat";
1745
1918
  showIf?: _praxisui_core.JsonLogicExpression | null;
1746
1919
  emitPayload?: "item" | "id" | "value";
1747
- command?: string;
1748
- globalPayload?: any;
1920
+ globalAction?: _praxisui_core.GlobalActionRef;
1749
1921
  emitLocal?: boolean;
1750
1922
  showLoading?: boolean;
1751
1923
  placement?: "actions" | "trailing";
@@ -1755,7 +1927,7 @@ declare class PraxisListDocPageComponent {
1755
1927
  type?: "danger" | "warning" | "info";
1756
1928
  };
1757
1929
  }>;
1758
- i18n?: PraxisListI18nConfig;
1930
+ i18n?: _praxisui_list.PraxisListI18nConfig;
1759
1931
  ui?: {
1760
1932
  showSearch?: boolean;
1761
1933
  searchField?: string;
@@ -1777,6 +1949,7 @@ declare class PraxisListDocPageComponent {
1777
1949
  itemClick?: string;
1778
1950
  actionClick?: string;
1779
1951
  selectionChange?: string;
1952
+ exportAction?: string;
1780
1953
  loaded?: string;
1781
1954
  };
1782
1955
  };
@@ -1813,6 +1986,13 @@ declare const PRAXIS_LIST_EN_US: {
1813
1986
  readonly collapseDetails: "Collapse details";
1814
1987
  readonly itemDetails: "Item details";
1815
1988
  readonly emptyState: "No items available";
1989
+ readonly 'pagination.itemsPerPage': "Items per page:";
1990
+ readonly 'pagination.nextPage': "Next page";
1991
+ readonly 'pagination.previousPage': "Previous page";
1992
+ readonly 'pagination.firstPage': "First page";
1993
+ readonly 'pagination.lastPage': "Last page";
1994
+ readonly 'pagination.total': "Total";
1995
+ readonly 'export.button': "Export";
1816
1996
  readonly Data: "Data";
1817
1997
  readonly Actions: "Actions";
1818
1998
  readonly Layout: "Layout";
@@ -1838,7 +2018,7 @@ declare const PRAXIS_LIST_EN_US: {
1838
2018
  readonly 'Global action (Praxis)': "Global action (Praxis)";
1839
2019
  readonly '-- Select --': "-- Select --";
1840
2020
  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`.";
2021
+ readonly 'Select to add with a structured global action.': "Select to add with a structured global action.";
1842
2022
  readonly 'Action type': "Action type";
1843
2023
  readonly Icon: "Icon";
1844
2024
  readonly Button: "Button";
@@ -1872,7 +2052,7 @@ declare const PRAXIS_LIST_EN_US: {
1872
2052
  readonly 'Emit local event too': "Emit local event too";
1873
2053
  readonly JSON: "JSON";
1874
2054
  readonly ID: "ID";
1875
- readonly 'Command (global)': "Command (global)";
2055
+ readonly 'Global action': "Global action";
1876
2056
  readonly Catalog: "Catalog";
1877
2057
  readonly Danger: "Danger";
1878
2058
  readonly Warning: "Warning";
@@ -2041,6 +2221,13 @@ declare const PRAXIS_LIST_PT_BR: {
2041
2221
  readonly collapseDetails: "Recolher detalhes";
2042
2222
  readonly itemDetails: "Detalhes do item";
2043
2223
  readonly emptyState: "Nenhum item disponível";
2224
+ readonly 'pagination.itemsPerPage': "Itens por página:";
2225
+ readonly 'pagination.nextPage': "Próxima página";
2226
+ readonly 'pagination.previousPage': "Página anterior";
2227
+ readonly 'pagination.firstPage': "Primeira página";
2228
+ readonly 'pagination.lastPage': "Última página";
2229
+ readonly 'pagination.total': "Total";
2230
+ readonly 'export.button': "Exportar";
2044
2231
  readonly Data: "Dados";
2045
2232
  readonly Actions: "Ações";
2046
2233
  readonly Layout: "Layout";
@@ -2066,7 +2253,7 @@ declare const PRAXIS_LIST_PT_BR: {
2066
2253
  readonly 'Global action (Praxis)': "Ação global (Praxis)";
2067
2254
  readonly '-- Select --': "-- Selecionar --";
2068
2255
  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.";
2256
+ readonly 'Select to add with a structured global action.': "Selecione para adicionar com uma ação global estruturada.";
2070
2257
  readonly 'Action type': "Tipo de ação";
2071
2258
  readonly Icon: "Ícone";
2072
2259
  readonly Button: "Botão";
@@ -2100,7 +2287,7 @@ declare const PRAXIS_LIST_PT_BR: {
2100
2287
  readonly 'Emit local event too': "Emitir evento local também";
2101
2288
  readonly JSON: "JSON";
2102
2289
  readonly ID: "ID";
2103
- readonly 'Command (global)': "Comando (global)";
2290
+ readonly 'Global action': "Ação global";
2104
2291
  readonly Catalog: "Catálogo";
2105
2292
  readonly Danger: "Perigo";
2106
2293
  readonly Warning: "Aviso";
@@ -2260,5 +2447,5 @@ declare const PRAXIS_LIST_PT_BR: {
2260
2447
  readonly 'CSS class example (add this to your global styles):': "Exemplo de classe CSS (adicione isto aos seus estilos globais):";
2261
2448
  };
2262
2449
 
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 };
2450
+ 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 };
2451
+ 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 };