@praxisui/list 8.0.0-beta.9 → 8.0.0-beta.90

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,17 +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;
588
669
  private isDeferredTemplateExpressionKey;
589
670
  private resolveStringTemplate;
590
671
  private lookup;
591
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;
592
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;
593
720
  nextPage(): void;
594
721
  prevPage(): void;
595
722
  setPageSize(ps: number): void;
723
+ onPageChange(event: PageEvent): void;
724
+ listPageSizeOptions(): number[];
725
+ remoteTotalLabel(total: number | null | undefined): string;
596
726
  onSortChange(val: string): void;
597
727
  onSearchInput(val: string): void;
598
728
  sortOptionValue(op: any): string;
@@ -605,8 +735,12 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
605
735
  pageNumber: number;
606
736
  pageSize: number;
607
737
  }, total: number): number;
738
+ private syncPaginatorIntl;
739
+ private formatPaginatorRangeLabel;
740
+ private isEnglishLocaleValue;
608
741
  applyConfigFromAdapter(newCfg: PraxisListConfig): void;
609
742
  private applyAuthoringPayload;
743
+ private applyRuntimeQueryContext;
610
744
  private buildListEditorRuntimeContext;
611
745
  private executeListEditorApplyPlan;
612
746
  private storageKey;
@@ -616,6 +750,9 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
616
750
  private executeSchemaInferenceForPlan;
617
751
  private evalSlot;
618
752
  private resolveSlotTemplate;
753
+ private resolveLocalDataFallbackTemplate;
754
+ private isLocalDataPreviewItem;
755
+ private firstPresentItemKey;
619
756
  private evaluateTemplateNode;
620
757
  private buildUnsupportedComposeNode;
621
758
  private buildRuntimeComponentView;
@@ -660,7 +797,7 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
660
797
  ratingIconStyle(def?: any): string;
661
798
  ratingRange(def?: any): number[];
662
799
  trackBySection: (_: number, s: ListSection<any>) => string | number;
663
- trackByItem: (i: number, it: any) => any;
800
+ trackByItem: (i: number, it: any) => string | number | boolean;
664
801
  isActionLoading(actionId: string, item: any, index: number): boolean;
665
802
  private evaluateActionVisibility;
666
803
  private evaluateRuntimeCondition;
@@ -670,19 +807,21 @@ declare class PraxisList implements OnInit, OnChanges, OnDestroy {
670
807
  private mergePlainObjects;
671
808
  private buildActionLoadingKey;
672
809
  private ensureActionItemObjectId;
673
- private warnGlobalCommandUnavailableOnce;
674
810
  private buildLogOptions;
675
811
  private toggleExpanded;
676
812
  private syncExpansionState;
677
813
  private itemExpansionKey;
678
- private t;
814
+ private itemStableKey;
815
+ private isStablePrimitiveKey;
816
+ t(key: string, fallback: string): string;
817
+ private tWithLocale;
679
818
  private ensureExpansionItemObjectId;
680
819
  private sanitizeDomId;
681
820
  private evaluateExpansionExpr;
682
821
  private normalizeExpansionItems;
683
822
  private normalizeKeyValueItems;
684
823
  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>;
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>;
686
825
  static ngAcceptInputType_enableCustomization: unknown;
687
826
  }
688
827
 
@@ -1295,18 +1434,24 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1295
1434
  ensureConfirmation(action: any): void;
1296
1435
  setConfirmationField(action: any, field: 'title' | 'message', value: string): void;
1297
1436
  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;
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;
1302
1448
  isSurfaceOpenCommand(action: {
1303
- command?: string;
1449
+ globalAction?: GlobalActionRef;
1304
1450
  }): boolean;
1305
- getSurfaceOpenGlobalPayload(action: {
1306
- command?: string;
1307
- globalPayload?: string;
1451
+ getSurfaceOpenGlobalActionPayload(action: {
1452
+ globalAction?: GlobalActionRef;
1308
1453
  }): SurfaceOpenPayload;
1309
- onSurfaceOpenGlobalPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1454
+ onSurfaceOpenGlobalActionPayloadChange(action: any, payload: SurfaceOpenPayload): void;
1310
1455
  onGlobalActionSelected(id?: string): void;
1311
1456
  private addGlobalActionFromCatalog;
1312
1457
  metaTypeConfig(type?: string): {
@@ -1366,6 +1511,11 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1366
1511
  private getGlobalActionEntryLabel;
1367
1512
  private getGlobalActionEntryDescription;
1368
1513
  private getGlobalActionSchema;
1514
+ getGlobalActionId(action: {
1515
+ globalAction?: GlobalActionRef;
1516
+ }): string;
1517
+ private parseGlobalActionPayloadText;
1518
+ private looksLikeJsonPayload;
1369
1519
  private normalizeSurfaceOpenPayload;
1370
1520
  verify(): void;
1371
1521
  inferFromFields(): void;
@@ -1383,6 +1533,35 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1383
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>;
1384
1534
  }
1385
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
+
1386
1565
  declare function createListAuthoringDocument(source: {
1387
1566
  config?: unknown;
1388
1567
  }): ListAuthoringDocument;
@@ -1425,8 +1604,9 @@ interface TemplateEvaluatorOptions {
1425
1604
  declare function evalExpr(expr: string, ctx: any, options?: TemplateEvaluatorOptions): string;
1426
1605
  /**
1427
1606
  * Evaluate a template definition with basic pipe support.
1428
- * Supported pipes:
1607
+ * Supported top-level pipes:
1429
1608
  * - bool:TrueLabel:FalseLabel (maps truthy/falsey values to provided labels)
1609
+ * - map:key=Label,... (maps scalar values to labels)
1430
1610
  */
1431
1611
  declare function evaluateTemplate(def: TemplateDef | undefined, item: any, options?: TemplateEvaluatorOptions): {
1432
1612
  type: string;
@@ -1459,10 +1639,14 @@ declare function providePraxisListMetadata(): Provider;
1459
1639
  declare module '@praxisui/core' {
1460
1640
  interface AiCapabilityCategoryMap {
1461
1641
  meta: true;
1642
+ export: true;
1462
1643
  skin: true;
1463
1644
  selection: true;
1464
1645
  templating: true;
1465
1646
  actions: true;
1647
+ interaction: true;
1648
+ expansion: true;
1649
+ rules: true;
1466
1650
  ui: true;
1467
1651
  i18n: true;
1468
1652
  a11y: true;
@@ -1478,6 +1662,8 @@ interface CapabilityCatalog extends AiCapabilityCatalog {
1478
1662
  }
1479
1663
  declare const LIST_AI_CAPABILITIES: CapabilityCatalog;
1480
1664
 
1665
+ declare const PRAXIS_LIST_AUTHORING_MANIFEST: ComponentAuthoringManifest;
1666
+
1481
1667
  type DemoScenario = 'operations' | 'executive-expansion' | 'catalog' | 'empty';
1482
1668
  type DemoVariant = 'list' | 'cards' | 'tiles';
1483
1669
  type DemoDensity = 'default' | 'comfortable' | 'compact';
@@ -1607,7 +1793,7 @@ declare class PraxisListDocPageComponent {
1607
1793
  rowLayout?: {
1608
1794
  type?: "grid" | "flex";
1609
1795
  columns?: Array<{
1610
- slot: ListRowLayoutSlot;
1796
+ slot: _praxisui_list.ListRowLayoutSlot;
1611
1797
  width?: string;
1612
1798
  minWidth?: string;
1613
1799
  maxWidth?: string;
@@ -1643,61 +1829,47 @@ declare class PraxisListDocPageComponent {
1643
1829
  class?: string;
1644
1830
  inlineStyle?: string;
1645
1831
  } | 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;
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;
1665
1845
  metaPlacement?: "side" | "line";
1666
1846
  metaPrefixIcon?: string;
1667
- statusPosition?: "inline" | "top-right";
1668
1847
  chipColorMap?: Record<string, string>;
1669
1848
  chipLabelMap?: Record<string, string>;
1670
1849
  iconColorMap?: Record<string, string>;
1671
- features?: TemplatingFeatureDef[];
1850
+ features?: _praxisui_list.TemplatingFeatureDef[];
1672
1851
  featuresVisible?: boolean;
1673
1852
  featuresMode?: "icons+labels" | "icons-only" | "labels-only";
1674
- sectionHeader?: TemplateDef;
1675
- emptyState?: TemplateDef;
1853
+ sectionHeader?: _praxisui_list.TemplateDef;
1854
+ emptyState?: _praxisui_list.TemplateDef;
1676
1855
  skeleton?: {
1677
1856
  count?: number;
1678
1857
  };
1679
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
+ };
1680
1867
  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
- }>;
1868
+ itemStyles?: _praxisui_list.ListItemStyleRule[];
1869
+ slotOverrides?: _praxisui_list.ListSlotOverrideRule[];
1698
1870
  };
1699
1871
  expansion?: {
1700
- sections?: ListExpansionSectionDef[];
1872
+ sections?: _praxisui_list.ListExpansionSectionDef[];
1701
1873
  dataSource?: {
1702
1874
  mode?: "inline" | "resource" | "resourcePath";
1703
1875
  resource?: {
@@ -1732,8 +1904,8 @@ declare class PraxisListDocPageComponent {
1732
1904
  padding?: string;
1733
1905
  class?: string;
1734
1906
  style?: string;
1735
- loadingTemplate?: TemplateDef;
1736
- errorTemplate?: TemplateDef;
1907
+ loadingTemplate?: _praxisui_list.TemplateDef;
1908
+ errorTemplate?: _praxisui_list.TemplateDef;
1737
1909
  };
1738
1910
  };
1739
1911
  actions?: Array<{
@@ -1745,8 +1917,7 @@ declare class PraxisListDocPageComponent {
1745
1917
  buttonVariant?: "stroked" | "raised" | "flat";
1746
1918
  showIf?: _praxisui_core.JsonLogicExpression | null;
1747
1919
  emitPayload?: "item" | "id" | "value";
1748
- command?: string;
1749
- globalPayload?: any;
1920
+ globalAction?: _praxisui_core.GlobalActionRef;
1750
1921
  emitLocal?: boolean;
1751
1922
  showLoading?: boolean;
1752
1923
  placement?: "actions" | "trailing";
@@ -1756,7 +1927,7 @@ declare class PraxisListDocPageComponent {
1756
1927
  type?: "danger" | "warning" | "info";
1757
1928
  };
1758
1929
  }>;
1759
- i18n?: PraxisListI18nConfig;
1930
+ i18n?: _praxisui_list.PraxisListI18nConfig;
1760
1931
  ui?: {
1761
1932
  showSearch?: boolean;
1762
1933
  searchField?: string;
@@ -1778,6 +1949,7 @@ declare class PraxisListDocPageComponent {
1778
1949
  itemClick?: string;
1779
1950
  actionClick?: string;
1780
1951
  selectionChange?: string;
1952
+ exportAction?: string;
1781
1953
  loaded?: string;
1782
1954
  };
1783
1955
  };
@@ -1814,6 +1986,13 @@ declare const PRAXIS_LIST_EN_US: {
1814
1986
  readonly collapseDetails: "Collapse details";
1815
1987
  readonly itemDetails: "Item details";
1816
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";
1817
1996
  readonly Data: "Data";
1818
1997
  readonly Actions: "Actions";
1819
1998
  readonly Layout: "Layout";
@@ -1839,7 +2018,7 @@ declare const PRAXIS_LIST_EN_US: {
1839
2018
  readonly 'Global action (Praxis)': "Global action (Praxis)";
1840
2019
  readonly '-- Select --': "-- Select --";
1841
2020
  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`.";
2021
+ readonly 'Select to add with a structured global action.': "Select to add with a structured global action.";
1843
2022
  readonly 'Action type': "Action type";
1844
2023
  readonly Icon: "Icon";
1845
2024
  readonly Button: "Button";
@@ -1873,7 +2052,7 @@ declare const PRAXIS_LIST_EN_US: {
1873
2052
  readonly 'Emit local event too': "Emit local event too";
1874
2053
  readonly JSON: "JSON";
1875
2054
  readonly ID: "ID";
1876
- readonly 'Command (global)': "Command (global)";
2055
+ readonly 'Global action': "Global action";
1877
2056
  readonly Catalog: "Catalog";
1878
2057
  readonly Danger: "Danger";
1879
2058
  readonly Warning: "Warning";
@@ -2042,6 +2221,13 @@ declare const PRAXIS_LIST_PT_BR: {
2042
2221
  readonly collapseDetails: "Recolher detalhes";
2043
2222
  readonly itemDetails: "Detalhes do item";
2044
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";
2045
2231
  readonly Data: "Dados";
2046
2232
  readonly Actions: "Ações";
2047
2233
  readonly Layout: "Layout";
@@ -2067,7 +2253,7 @@ declare const PRAXIS_LIST_PT_BR: {
2067
2253
  readonly 'Global action (Praxis)': "Ação global (Praxis)";
2068
2254
  readonly '-- Select --': "-- Selecionar --";
2069
2255
  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.";
2256
+ readonly 'Select to add with a structured global action.': "Selecione para adicionar com uma ação global estruturada.";
2071
2257
  readonly 'Action type': "Tipo de ação";
2072
2258
  readonly Icon: "Ícone";
2073
2259
  readonly Button: "Botão";
@@ -2101,7 +2287,7 @@ declare const PRAXIS_LIST_PT_BR: {
2101
2287
  readonly 'Emit local event too': "Emitir evento local também";
2102
2288
  readonly JSON: "JSON";
2103
2289
  readonly ID: "ID";
2104
- readonly 'Command (global)': "Comando (global)";
2290
+ readonly 'Global action': "Ação global";
2105
2291
  readonly Catalog: "Catálogo";
2106
2292
  readonly Danger: "Perigo";
2107
2293
  readonly Warning: "Aviso";
@@ -2261,5 +2447,5 @@ declare const PRAXIS_LIST_PT_BR: {
2261
2447
  readonly 'CSS class example (add this to your global styles):': "Exemplo de classe CSS (adicione isto aos seus estilos globais):";
2262
2448
  };
2263
2449
 
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 };
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 };