@praxisui/list 9.0.67 → 9.0.68-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@praxisui/list",
3
- "version": "9.0.67",
3
+ "version": "9.0.68-rc.1",
4
4
  "description": "List components and helpers for Praxis UI.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
8
  "@angular/material": "^21.0.0",
9
- "@praxisui/dynamic-fields": "^9.0.67",
9
+ "@praxisui/dynamic-fields": "^9.0.68-rc.1",
10
10
  "rxjs": ">=7 <9",
11
11
  "@angular/forms": "^21.0.0",
12
12
  "@angular/router": "^21.0.0",
13
- "@praxisui/ai": "^9.0.67",
14
- "@praxisui/core": "^9.0.67",
15
- "@praxisui/rich-content": "^9.0.67",
16
- "@praxisui/settings-panel": "^9.0.67"
13
+ "@praxisui/ai": "^9.0.68-rc.1",
14
+ "@praxisui/core": "^9.0.68-rc.1",
15
+ "@praxisui/rich-content": "^9.0.68-rc.1",
16
+ "@praxisui/settings-panel": "^9.0.68-rc.1"
17
17
  },
18
18
  "dependencies": {
19
19
  "tslib": "^2.3.0",
@@ -183,6 +183,7 @@ Este arquivo foi adaptado para o padrao canonico atual sem remover conteudo tecn
183
183
  | `actionClick` | `ListActionEvent` | acao local de item, global com `emitLocal=true` ou acao de `rich-content` hospedado | Partial | `rich-content` inclui `payload?` e `source='rich-content'`. |
184
184
  | `selectionChange` | `ListSelectionEvent` | alteração pelo controle explícito de seleção da linha | Partial | Preserva binding e payload; a superfície usa checkbox/radio. |
185
185
  | `exportAction` | `any` | resultado ou erro de exportacao de colecao | Active | Usa `PraxisCollectionExportService`. |
186
+ | `configPatchChange` | `{ inputPatch: { config: PraxisListConfig } }` | Apply/Save válido do editor nativo ou authoring por adapter | Active | Atualiza a página autorada; não emite hidratação, inferência, filtros ou seleção runtime. |
186
187
 
187
188
  ### External side channels
188
189
 
@@ -376,7 +377,7 @@ Quatro superficies governam o componente:
376
377
  1. **Documento de autoria (`ListAuthoringDocument`)**: envelope persistivel e canônico para editor visual, editor JSON, host runtime e fluxos futuros de IA/playground.
377
378
  2. **Config canônica projetada (`PraxisListConfig`)**: dados, layout, skin, selecao, templating, acoes e UI.
378
379
  3. **Inputs externos**: `listId`, `componentInstanceId`, `form` e `enableCustomization`.
379
- 4. **Outputs**: `itemClick`, `actionClick`, `selectionChange`, `exportAction`.
380
+ 4. **Outputs**: `itemClick`, `actionClick`, `selectionChange`, `exportAction`, `configPatchChange`.
380
381
  5. **Side channels**: persistencia assinc, settings panel, global action bus e AI adapter.
381
382
 
382
383
  #### Integracao com ecossistema Praxis
@@ -427,6 +428,9 @@ Antes de liberar para producao:
427
428
  | `actionClick` | `ListActionEvent` | acao local de item (ou global com `emitLocal=true`) |
428
429
  | `selectionChange` | `ListSelectionEvent` | alteração pelo checkbox/radio explícito da linha |
429
430
  | `exportAction` | `any` | exportacao concluida, delegada ou com erro |
431
+ | `configPatchChange` | `{ inputPatch: { config: PraxisListConfig } }` | Apply/Save válido ou authoring por adapter; snapshot independente para o host |
432
+
433
+ O editor hospedado oferece **Origem da configuração** para o input existente `configPersistenceStrategy`: **Configuração da página** (`input-first`), **Preferências individuais da lista** (`local-first`) e **Configuração temporária** (`volatile`). Para páginas compostas, escolha `input-first` para evitar que preferências antigas sobreponham o documento salvo da página. Apply, Save e Reset preservam essa escolha e os demais inputs.
430
434
 
431
435
  #### Data mode and flow
432
436
 
@@ -5,7 +5,7 @@ import { OnInit, OnChanges, AfterViewInit, OnDestroy, EventEmitter, SimpleChange
5
5
  import { MatPaginatorSelectConfig, PageEvent } from '@angular/material/paginator';
6
6
  import { FormGroup, FormControl } from '@angular/forms';
7
7
  import * as _praxisui_core from '@praxisui/core';
8
- import { PraxisExportFormat, PraxisExportScope, PraxisRuntimeConditionalEffectRule, JsonLogicExpression, RichContentDocument, ResourceRecordOpenRef, GlobalActionRef, LocalizationConfig, AiCapability, PraxisDataQueryContext, RichBlockNode, RichBlockHostCapabilities, GlobalActionCatalogEntry, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, RichPresenterNode, RichComposeNode, ComponentDocMeta, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
8
+ import { PraxisExportFormat, PraxisExportScope, PraxisRuntimeConditionalEffectRule, JsonLogicExpression, RichContentDocument, ResourceRecordOpenRef, GlobalActionRef, LocalizationConfig, AiCapability, PraxisDataQueryContext, RichBlockNode, RichBlockHostCapabilities, SurfaceOpenActionEditorComponent, GlobalActionCatalogEntry, SurfaceOpenPayload, SettingsValueProvider as SettingsValueProvider$1, RichPresenterNode, RichComposeNode, ComponentDocMeta, AiCapabilityCategory, AiCapabilityCatalog, AiValueKind, ComponentAuthoringManifest } from '@praxisui/core';
9
9
  import { BaseAiAdapter, AiResponseCompileResult, PatchResult, PraxisAssistantTurnViewState, PraxisAssistantShellLayout, PraxisAssistantShellLabels, PraxisAssistantSessionSnapshot, PraxisAssistantShellQuickReply, PraxisAssistantShellMessage } from '@praxisui/ai';
10
10
  import { SettingsValueProvider } from '@praxisui/settings-panel';
11
11
  import * as _praxisui_list from '@praxisui/list';
@@ -492,6 +492,11 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
492
492
  actionClick: EventEmitter<ListActionEvent>;
493
493
  selectionChange: EventEmitter<ListSelectionEvent>;
494
494
  exportAction: EventEmitter<any>;
495
+ readonly configPatchChange: i0.OutputEmitterRef<{
496
+ inputPatch: {
497
+ config: PraxisListConfig;
498
+ };
499
+ }>;
495
500
  items$: rxjs.Observable<any[]>;
496
501
  sections$: rxjs.Observable<ListSection<any>[]>;
497
502
  loading$: rxjs.Observable<boolean>;
@@ -512,6 +517,9 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
512
517
  skinClasses: string;
513
518
  inlineCss: string;
514
519
  readonly cspNonce: string | null;
520
+ private readonly hostElement;
521
+ private readonly renderer;
522
+ private skinStyleElement?;
515
523
  aiAdapter: ListAiAdapter;
516
524
  aiAssistantOpen: boolean;
517
525
  aiAssistantPrompt: string;
@@ -571,6 +579,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
571
579
  private setupSearch;
572
580
  private persistConfig;
573
581
  private applySkins;
582
+ private syncSkinStyle;
574
583
  isListVariant(): boolean;
575
584
  isCardsVariant(): boolean;
576
585
  isTilesVariant(): boolean;
@@ -730,6 +739,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
730
739
  private getExportMimeType;
731
740
  private cloneForExportEvent;
732
741
  openConfigEditor(): void;
742
+ private openConfigEditorPanel;
733
743
  openAiAssistant(): void;
734
744
  openAiAssistantFromSession(session: PraxisAssistantSessionSnapshot): void;
735
745
  closeAiAssistant(): void;
@@ -869,7 +879,7 @@ declare class PraxisList implements OnInit, OnChanges, AfterViewInit, OnDestroy
869
879
  private normalizeExpansionItems;
870
880
  private normalizeKeyValueItems;
871
881
  static ɵfac: i0.ɵɵFactoryDeclaration<PraxisList, never>;
872
- 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>;
882
+ 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"; "configPatchChange": "configPatchChange"; }, never, never, true, never>;
873
883
  static ngAcceptInputType_enableCustomization: unknown;
874
884
  }
875
885
 
@@ -1219,6 +1229,10 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1219
1229
  listId?: string;
1220
1230
  document: ListAuthoringDocument;
1221
1231
  working: NormalizedListConfig;
1232
+ private readonly invalidSurfaceDrafts;
1233
+ private jsonEditorIsValid;
1234
+ get hasInvalidSurfaceDraft(): boolean;
1235
+ onSurfaceDraftValidity(source: SurfaceOpenActionEditorComponent, valid: boolean): void;
1222
1236
  isDirty$: BehaviorSubject<boolean>;
1223
1237
  isValid$: BehaviorSubject<boolean>;
1224
1238
  isBusy$: BehaviorSubject<boolean>;
@@ -1699,6 +1713,7 @@ declare class PraxisListConfigEditor implements SettingsValueProvider, DoCheck {
1699
1713
  static ɵcmp: i0.ɵɵComponentDeclaration<PraxisListConfigEditor, "praxis-list-config-editor", never, { "config": { "alias": "config"; "required": false; }; "listId": { "alias": "listId"; "required": false; }; }, {}, never, never, true, never>;
1700
1714
  }
1701
1715
 
1716
+ type PersistenceStrategy = 'input-first' | 'local-first' | 'volatile';
1702
1717
  interface PraxisListWidgetEditorInputs {
1703
1718
  config?: PraxisListConfig | null;
1704
1719
  listId?: string;
@@ -1715,6 +1730,15 @@ declare class PraxisListWidgetConfigEditor implements SettingsValueProvider$1, A
1715
1730
  readonly isValid$: BehaviorSubject<boolean>;
1716
1731
  readonly isBusy$: BehaviorSubject<boolean>;
1717
1732
  private readonly subscription;
1733
+ private readonly i18n;
1734
+ private childDirty;
1735
+ private persistenceOverride?;
1736
+ private savedPersistenceStrategy?;
1737
+ get persistenceStrategy(): PersistenceStrategy;
1738
+ private get persistenceBaseline();
1739
+ setPersistenceStrategy(value: PersistenceStrategy): void;
1740
+ tx(key: string): string;
1741
+ private publishDirty;
1718
1742
  get config(): PraxisListConfig;
1719
1743
  get listId(): string | undefined;
1720
1744
  ngAfterViewInit(): void;
@@ -2149,6 +2173,13 @@ declare class PraxisListDocPageComponent {
2149
2173
  }
2150
2174
 
2151
2175
  declare const PRAXIS_LIST_EN_US: {
2176
+ readonly "configurationSource.label": "Configuration source";
2177
+ readonly "configurationSource.page": "Page configuration";
2178
+ readonly "configurationSource.individual": "Individual list preferences";
2179
+ readonly "configurationSource.temporary": "Temporary configuration";
2180
+ readonly "configurationSource.input-first.help": "The page defines appearance and content. Recommended when composing a page in Page Builder.";
2181
+ readonly "configurationSource.local-first.help": "Saved list preferences can override the page configuration when loading.";
2182
+ readonly "configurationSource.volatile.help": "Uses the supplied configuration without reading or writing individual preferences. The page can still be saved.";
2152
2183
  readonly configEdit: "Edit configuration";
2153
2184
  readonly expandDetails: "Expand details";
2154
2185
  readonly collapseDetails: "Collapse details";
@@ -2528,6 +2559,13 @@ declare const PRAXIS_LIST_I18N_NAMESPACE = "praxis-list";
2528
2559
  declare function providePraxisListI18n(): i0.Provider[];
2529
2560
 
2530
2561
  declare const PRAXIS_LIST_PT_BR: {
2562
+ readonly "configurationSource.label": "Origem da configuração";
2563
+ readonly "configurationSource.page": "Configuração da página";
2564
+ readonly "configurationSource.individual": "Preferências individuais da lista";
2565
+ readonly "configurationSource.temporary": "Configuração temporária";
2566
+ readonly "configurationSource.input-first.help": "A página define a aparência e o conteúdo. Recomendado ao montar uma página no Page Builder.";
2567
+ readonly "configurationSource.local-first.help": "As preferências salvas desta lista podem substituir a configuração da página ao carregar.";
2568
+ readonly "configurationSource.volatile.help": "Usa a configuração recebida sem ler ou gravar preferências individuais. A página ainda pode ser salva.";
2531
2569
  readonly configEdit: "Editar configurações";
2532
2570
  readonly expandDetails: "Expandir detalhes";
2533
2571
  readonly collapseDetails: "Recolher detalhes";